diff --git a/CMakeLists.txt b/CMakeLists.txt index 5d9e7c879c9..93206a28bf0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -212,6 +212,9 @@ option(FLB_CUSTOM_CALYPTIA "Enable Calyptia Support" Yes) # Config formats option(FLB_CONFIG_YAML "Enable YAML config format" Yes) +option(FLB_BENCHMARKS "Enable benchmarks" No) + + # List of plugins available and defaults for each option include(cmake/plugins_options.cmake) @@ -316,6 +319,7 @@ if(FLB_DEV) set(FLB_HTTP_SERVER On) set(FLB_HTTP_CLIENT_DEBUG On) set(FLB_TESTS_INTERNAL On) + set(FLB_BENCHMARKS On) endif() if(FLB_TRACE) @@ -578,6 +582,9 @@ endif() # ring buffer library add_subdirectory(${FLB_PATH_LIB_RING_BUFFER} EXCLUDE_FROM_ALL) +# yyson +add_subdirectory(${FLB_PATH_LIB_YYJSON} EXCLUDE_FROM_ALL) + # Avro if(FLB_AVRO_ENCODER) # jansson @@ -1054,6 +1061,10 @@ else() FLB_DEFINITION_VAL(FLB_MSGPACK_TO_JSON_REALLOC_BUFFER_SIZE ${FLB_MSGPACK_TO_JSON_REALLOC_BUFFER_SIZE}) endif() +if (FLB_BENCHMARKS) + add_subdirectory(benchmarks) +endif() + # Build tools/xxd-c add_subdirectory(tools/xxd-c) diff --git a/benchmarks/CMakeLists.txt b/benchmarks/CMakeLists.txt new file mode 100644 index 00000000000..b52a8d9db1a --- /dev/null +++ b/benchmarks/CMakeLists.txt @@ -0,0 +1,6 @@ +add_executable(flb-bench-pack_json pack_json.c) +target_link_libraries(flb-bench-pack_json + fluent-bit-static + ${CMAKE_THREAD_LIBS_INIT} +) + diff --git a/benchmarks/pack_json.c b/benchmarks/pack_json.c new file mode 100644 index 00000000000..faff5f2ffd3 --- /dev/null +++ b/benchmarks/pack_json.c @@ -0,0 +1,175 @@ +#include +#include +#include +#include + +#include +#include + +#define ITERATIONS 100000 + +static long diff_ns(struct timespec *s, struct timespec *e) +{ + return (e->tv_sec - s->tv_sec) * 1000000000L + (e->tv_nsec - s->tv_nsec); +} + +static int compare_encoders_output(char *json, size_t len) +{ + int ret; + + int root_type1; + char *out_buf1; + size_t out_size1 = 0; + + int root_type2; + char *out_buf2; + size_t out_size2 = 0; + + struct flb_pack_opts opts = {0}; + + /* jsmn */ + opts.backend = FLB_PACK_JSON_BACKEND_JSMN; + ret = flb_pack_json_ext(json, len, &out_buf1, &out_size1, &root_type1, &opts); + if (ret != 0) { + fprintf(stderr, "error jsmn\n"); + return -1; + } + fprintf(stderr, "jsmn records count: %d\n", flb_mp_count(out_buf1, out_size1)); + + /* yyjson */ + opts.backend = FLB_PACK_JSON_BACKEND_YYJSON; + ret = flb_pack_json_ext(json, len, &out_buf2, &out_size2, &root_type2, &opts); + if (ret != 0) { + fprintf(stderr, "error yyjson\n"); + flb_free(out_buf1); + return -1; + } + + if (out_size1 != out_size2 || memcmp(out_buf1, out_buf2, out_size1) != 0) { + fprintf(stderr, "msgpack mismatch between jsmn and yyjson\n"); + fprintf(stderr, "jsmn size: %zu, yyjson size: %zu\n", out_size1, out_size2); + flb_free(out_buf1); + flb_free(out_buf2); + return -1; + } + + flb_free(out_buf1); + flb_free(out_buf2); + return 0; +} + +int main(int argc, char **argv) +{ + int i; + int ret; + size_t len; + struct timespec ts, te; + long d_jsmn, d_yyjson; + char *mp_buf; + size_t mp_size; + struct flb_pack_opts opts = {0}; + int root_type; + char *json; + int iterations = 100; + char *log_file = NULL; + int opt; + uint64_t total_bytes; + double mibps_jsmn; + double mibps_yyjson; + double ratio; + double reduction; + + /* Parse command-line options */ + while ((opt = getopt(argc, argv, "i:f:")) != -1) { + switch (opt) { + case 'i': + iterations = atoi(optarg); + if (iterations <= 0) { + fprintf(stderr, "Invalid value for -i (iterations): %s\n", optarg); + return 1; + } + break; + case 'f': + log_file = optarg; + break; + default: + fprintf(stderr, "Usage: %s -f log_file [-i iterations]\n", argv[0]); + return 1; + } + } + + if (log_file == NULL) { + fprintf(stderr, "Error: log file (-f) is required.\n"); + fprintf(stderr, "Usage: %s -f log_file [-i iterations]\n", argv[0]); + return 1; + } + + ret = flb_utils_read_file(log_file, &json, &len); + if (ret != 0) { + fprintf(stderr, "error reading %s\n", log_file); + return 1; + } + + printf("Comparing encoders output: "); + ret = compare_encoders_output(json, len); + if (ret != 0) { + printf("failed\n"); + free(json); + exit(EXIT_FAILURE); + } + printf("ok\n\n"); + + printf("Benchmarking JSON packing to msgpack\n"); + printf("-------------------------------------------\n\n"); + printf("Iterations : %d\n", iterations); + printf("JSON size : %zu bytes\n", len); + printf("-------------------------------------------\n\n"); + + /* JSMN */ + opts.backend = FLB_PACK_JSON_BACKEND_JSMN; + clock_gettime(CLOCK_MONOTONIC, &ts); + for (i = 0; i < iterations; i++) { + ret = flb_pack_json_ext(json, len, &mp_buf, &mp_size, &root_type, &opts); + if (ret != 0) { + fprintf(stderr, "error jsmn\n"); + free(json); + return 1; + } + flb_free(mp_buf); + } + clock_gettime(CLOCK_MONOTONIC, &te); + d_jsmn = diff_ns(&ts, &te); + + /* YYJSON */ + opts.backend = FLB_PACK_JSON_BACKEND_YYJSON; + clock_gettime(CLOCK_MONOTONIC, &ts); + for (i = 0; i < iterations; i++) { + ret = flb_pack_json_ext(json, len, &mp_buf, &mp_size, &root_type, &opts); + if (ret != 0) { + fprintf(stderr, "error yyjson\n"); + free(json); + return 1; + } + flb_free(mp_buf); + } + clock_gettime(CLOCK_MONOTONIC, &te); + d_yyjson = diff_ns(&ts, &te); + + + total_bytes = (uint64_t) len * (uint64_t) iterations; + + mibps_jsmn = (double) total_bytes / d_jsmn * 1e9 / (1024.0 * 1024.0); + mibps_yyjson = (double) total_bytes / d_yyjson * 1e9 / (1024.0 * 1024.0); + + ratio = (double) d_jsmn / (double) d_yyjson; + reduction = (double) (d_jsmn - d_yyjson) * 100.0 / (double) d_jsmn; + + printf("-------------------------------------------\n"); + printf("old encoder : %ld ns | %.2f MiB/s\n", d_jsmn, mibps_jsmn); + printf("new encoder : %ld ns | %.2f MiB/s\n", d_yyjson, mibps_yyjson); + printf("-------------------------------------------\n"); + printf("Speedup : %.2fx (time -%.2f%%)\n", ratio, reduction); + + free(json); + return 0; +} diff --git a/benchmarks/utf8_surrogate_bench_10k.ndjson b/benchmarks/utf8_surrogate_bench_10k.ndjson new file mode 100644 index 00000000000..4a76388e940 --- /dev/null +++ b/benchmarks/utf8_surrogate_bench_10k.ndjson @@ -0,0 +1,10000 @@ +{"timestamp": "2024-01-01T00:00:02Z", "level": "info", "message": "Test case 1: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:00:03Z", "level": "info", "message": "Test case 2: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:00:04Z", "level": "info", "message": "Test case 3: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:00:05Z", "level": "info", "message": "Test case 4: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:00:06Z", "level": "info", "message": "Test case 5: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:00:07Z", "level": "info", "message": "Test case 6: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:00:08Z", "level": "info", "message": "Test case 7: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:00:09Z", "level": "info", "message": "Test case 8: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:00:10Z", "level": "info", "message": "Test case 9: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:00:11Z", "level": "info", "message": "Test case 10: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 10, "data": "wIA="} +{"timestamp": "2024-01-01T00:00:12Z", "level": "info", "message": "Test case 11: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 11, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:00:13Z", "level": "info", "message": "Test case 12: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 12, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:00:14Z", "level": "info", "message": "Test case 13: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 13, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:00:15Z", "level": "info", "message": "Test case 14: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 14, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:00:16Z", "level": "info", "message": "Test case 15: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 15, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:00:17Z", "level": "info", "message": "Test case 16: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 16, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:00:18Z", "level": "info", "message": "Test case 17: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 17, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:00:19Z", "level": "info", "message": "Test case 18: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 18, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:00:20Z", "level": "info", "message": "Test case 19: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 19, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:00:21Z", "level": "info", "message": "Test case 20: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 20, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:00:22Z", "level": "info", "message": "Test case 21: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 21, "data": "4ICA"} +{"timestamp": "2024-01-01T00:00:23Z", "level": "info", "message": "Test case 22: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 22, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:00:24Z", "level": "info", "message": "Test case 23: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 23, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:00:25Z", "level": "info", "message": "Test case 24: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 24, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:00:26Z", "level": "info", "message": "Test case 25: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 25, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:00:27Z", "level": "info", "message": "Test case 26: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 26, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:00:28Z", "level": "info", "message": "Test case 27: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 27, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:00:29Z", "level": "info", "message": "Test case 28: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 28, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:00:30Z", "level": "info", "message": "Test case 29: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 29, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:00:31Z", "level": "info", "message": "Test case 30: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 30, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:00:32Z", "level": "info", "message": "Test case 31: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 31, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:00:33Z", "level": "info", "message": "Test case 32: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 32, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:00:34Z", "level": "info", "message": "Test case 33: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 33, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:00:35Z", "level": "info", "message": "Test case 34: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 34, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:00:36Z", "level": "info", "message": "Test case 35: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 35, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:00:37Z", "level": "info", "message": "Test case 36: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 36, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:00:38Z", "level": "info", "message": "Test case 37: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 37, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:00:39Z", "level": "info", "message": "Test case 38: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 38, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:00:40Z", "level": "info", "message": "Test case 39: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 39, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:00:41Z", "level": "info", "message": "Test case 40: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 40, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:00:42Z", "level": "info", "message": "Test case 41: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 41, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:00:43Z", "level": "info", "message": "Test case 42: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 42, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:00:44Z", "level": "info", "message": "Test case 43: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 43, "data": "4iih"} +{"timestamp": "2024-01-01T00:00:45Z", "level": "info", "message": "Test case 44: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 44, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:00:46Z", "level": "info", "message": "Test case 45: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 45, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:00:47Z", "level": "info", "message": "Test case 46: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 46, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:00:48Z", "level": "info", "message": "Test case 47: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 47, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:00:49Z", "level": "info", "message": "Test case 48: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 48, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:00:50Z", "level": "info", "message": "Test case 49: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 49, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:00:51Z", "level": "info", "message": "Test case 50: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 50, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:00:52Z", "level": "info", "message": "Test case 51: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 51, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:00:53Z", "level": "info", "message": "Test case 52: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 52, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:00:54Z", "level": "info", "message": "Test case 53: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 53, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:00:55Z", "level": "info", "message": "Test case 54: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 54, "data": "wg=="} +{"timestamp": "2024-01-01T00:00:56Z", "level": "info", "message": "Test case 55: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 55, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:00:57Z", "level": "info", "message": "Test case 56: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 56, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:00:58Z", "level": "info", "message": "Test case 57: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 57, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:00:59Z", "level": "info", "message": "Test case 58: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 58, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:01:00Z", "level": "info", "message": "Test case 59: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 59, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:01:01Z", "level": "info", "message": "Test case 60: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 60, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:01:02Z", "level": "info", "message": "Test case 61: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 61, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:01:03Z", "level": "info", "message": "Test case 62: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 62, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:01:04Z", "level": "info", "message": "Test case 63: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 63, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:01:05Z", "level": "info", "message": "Test case 64: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 64, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:01:06Z", "level": "info", "message": "Test case 65: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 65, "data": "wIA="} +{"timestamp": "2024-01-01T00:01:07Z", "level": "info", "message": "Test case 66: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 66, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:01:08Z", "level": "info", "message": "Test case 67: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 67, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:01:09Z", "level": "info", "message": "Test case 68: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 68, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:01:10Z", "level": "info", "message": "Test case 69: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 69, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:01:11Z", "level": "info", "message": "Test case 70: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 70, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:01:12Z", "level": "info", "message": "Test case 71: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 71, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:01:13Z", "level": "info", "message": "Test case 72: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 72, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:01:14Z", "level": "info", "message": "Test case 73: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 73, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:01:15Z", "level": "info", "message": "Test case 74: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 74, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:01:16Z", "level": "info", "message": "Test case 75: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 75, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:01:17Z", "level": "info", "message": "Test case 76: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 76, "data": "4ICA"} +{"timestamp": "2024-01-01T00:01:18Z", "level": "info", "message": "Test case 77: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 77, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:01:19Z", "level": "info", "message": "Test case 78: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 78, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:01:20Z", "level": "info", "message": "Test case 79: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 79, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:01:21Z", "level": "info", "message": "Test case 80: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 80, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:01:22Z", "level": "info", "message": "Test case 81: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 81, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:01:23Z", "level": "info", "message": "Test case 82: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 82, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:01:24Z", "level": "info", "message": "Test case 83: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 83, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:01:25Z", "level": "info", "message": "Test case 84: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 84, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:01:26Z", "level": "info", "message": "Test case 85: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 85, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:01:27Z", "level": "info", "message": "Test case 86: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 86, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:01:28Z", "level": "info", "message": "Test case 87: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 87, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:01:29Z", "level": "info", "message": "Test case 88: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 88, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:01:30Z", "level": "info", "message": "Test case 89: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 89, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:01:31Z", "level": "info", "message": "Test case 90: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 90, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:01:32Z", "level": "info", "message": "Test case 91: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 91, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:01:33Z", "level": "info", "message": "Test case 92: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 92, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:01:34Z", "level": "info", "message": "Test case 93: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 93, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:01:35Z", "level": "info", "message": "Test case 94: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 94, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:01:36Z", "level": "info", "message": "Test case 95: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 95, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:01:37Z", "level": "info", "message": "Test case 96: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 96, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:01:38Z", "level": "info", "message": "Test case 97: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 97, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:01:39Z", "level": "info", "message": "Test case 98: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 98, "data": "4iih"} +{"timestamp": "2024-01-01T00:01:40Z", "level": "info", "message": "Test case 99: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 99, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:01:41Z", "level": "info", "message": "Test case 100: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 100, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:01:42Z", "level": "info", "message": "Test case 101: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 101, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:01:43Z", "level": "info", "message": "Test case 102: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 102, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:01:44Z", "level": "info", "message": "Test case 103: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 103, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:01:45Z", "level": "info", "message": "Test case 104: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 104, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:01:46Z", "level": "info", "message": "Test case 105: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 105, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:01:47Z", "level": "info", "message": "Test case 106: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 106, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:01:48Z", "level": "info", "message": "Test case 107: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 107, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:01:49Z", "level": "info", "message": "Test case 108: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 108, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:01:50Z", "level": "info", "message": "Test case 109: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 109, "data": "wg=="} +{"timestamp": "2024-01-01T00:01:51Z", "level": "info", "message": "Test case 110: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 110, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:01:52Z", "level": "info", "message": "Test case 111: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 111, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:01:53Z", "level": "info", "message": "Test case 112: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 112, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:01:54Z", "level": "info", "message": "Test case 113: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 113, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:01:55Z", "level": "info", "message": "Test case 114: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 114, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:01:56Z", "level": "info", "message": "Test case 115: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 115, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:01:57Z", "level": "info", "message": "Test case 116: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 116, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:01:58Z", "level": "info", "message": "Test case 117: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 117, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:01:59Z", "level": "info", "message": "Test case 118: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 118, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:02:00Z", "level": "info", "message": "Test case 119: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 119, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:02:01Z", "level": "info", "message": "Test case 120: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 120, "data": "wIA="} +{"timestamp": "2024-01-01T00:02:02Z", "level": "info", "message": "Test case 121: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 121, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:02:03Z", "level": "info", "message": "Test case 122: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 122, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:02:04Z", "level": "info", "message": "Test case 123: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 123, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:02:05Z", "level": "info", "message": "Test case 124: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 124, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:02:06Z", "level": "info", "message": "Test case 125: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 125, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:02:07Z", "level": "info", "message": "Test case 126: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 126, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:02:08Z", "level": "info", "message": "Test case 127: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 127, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:02:09Z", "level": "info", "message": "Test case 128: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 128, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:02:10Z", "level": "info", "message": "Test case 129: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 129, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:02:11Z", "level": "info", "message": "Test case 130: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 130, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:02:12Z", "level": "info", "message": "Test case 131: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 131, "data": "4ICA"} +{"timestamp": "2024-01-01T00:02:13Z", "level": "info", "message": "Test case 132: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 132, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:02:14Z", "level": "info", "message": "Test case 133: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 133, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:02:15Z", "level": "info", "message": "Test case 134: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 134, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:02:16Z", "level": "info", "message": "Test case 135: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 135, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:02:17Z", "level": "info", "message": "Test case 136: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 136, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:02:18Z", "level": "info", "message": "Test case 137: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 137, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:02:19Z", "level": "info", "message": "Test case 138: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 138, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:02:20Z", "level": "info", "message": "Test case 139: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 139, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:02:21Z", "level": "info", "message": "Test case 140: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 140, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:02:22Z", "level": "info", "message": "Test case 141: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 141, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:02:23Z", "level": "info", "message": "Test case 142: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 142, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:02:24Z", "level": "info", "message": "Test case 143: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 143, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:02:25Z", "level": "info", "message": "Test case 144: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 144, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:02:26Z", "level": "info", "message": "Test case 145: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 145, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:02:27Z", "level": "info", "message": "Test case 146: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 146, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:02:28Z", "level": "info", "message": "Test case 147: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 147, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:02:29Z", "level": "info", "message": "Test case 148: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 148, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:02:30Z", "level": "info", "message": "Test case 149: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 149, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:02:31Z", "level": "info", "message": "Test case 150: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 150, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:02:32Z", "level": "info", "message": "Test case 151: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 151, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:02:33Z", "level": "info", "message": "Test case 152: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 152, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:02:34Z", "level": "info", "message": "Test case 153: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 153, "data": "4iih"} +{"timestamp": "2024-01-01T00:02:35Z", "level": "info", "message": "Test case 154: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 154, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:02:36Z", "level": "info", "message": "Test case 155: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 155, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:02:37Z", "level": "info", "message": "Test case 156: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 156, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:02:38Z", "level": "info", "message": "Test case 157: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 157, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:02:39Z", "level": "info", "message": "Test case 158: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 158, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:02:40Z", "level": "info", "message": "Test case 159: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 159, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:02:41Z", "level": "info", "message": "Test case 160: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 160, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:02:42Z", "level": "info", "message": "Test case 161: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 161, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:02:43Z", "level": "info", "message": "Test case 162: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 162, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:02:44Z", "level": "info", "message": "Test case 163: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 163, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:02:45Z", "level": "info", "message": "Test case 164: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 164, "data": "wg=="} +{"timestamp": "2024-01-01T00:02:46Z", "level": "info", "message": "Test case 165: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 165, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:02:47Z", "level": "info", "message": "Test case 166: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 166, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:02:48Z", "level": "info", "message": "Test case 167: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 167, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:02:49Z", "level": "info", "message": "Test case 168: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 168, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:02:50Z", "level": "info", "message": "Test case 169: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 169, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:02:51Z", "level": "info", "message": "Test case 170: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 170, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:02:52Z", "level": "info", "message": "Test case 171: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 171, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:02:53Z", "level": "info", "message": "Test case 172: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 172, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:02:54Z", "level": "info", "message": "Test case 173: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 173, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:02:55Z", "level": "info", "message": "Test case 174: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 174, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:02:56Z", "level": "info", "message": "Test case 175: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 175, "data": "wIA="} +{"timestamp": "2024-01-01T00:02:57Z", "level": "info", "message": "Test case 176: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 176, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:02:58Z", "level": "info", "message": "Test case 177: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 177, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:02:59Z", "level": "info", "message": "Test case 178: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 178, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:03:00Z", "level": "info", "message": "Test case 179: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 179, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:03:01Z", "level": "info", "message": "Test case 180: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 180, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:03:02Z", "level": "info", "message": "Test case 181: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 181, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:03:03Z", "level": "info", "message": "Test case 182: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 182, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:03:04Z", "level": "info", "message": "Test case 183: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 183, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:03:05Z", "level": "info", "message": "Test case 184: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 184, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:03:06Z", "level": "info", "message": "Test case 185: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 185, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:03:07Z", "level": "info", "message": "Test case 186: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 186, "data": "4ICA"} +{"timestamp": "2024-01-01T00:03:08Z", "level": "info", "message": "Test case 187: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 187, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:03:09Z", "level": "info", "message": "Test case 188: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 188, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:03:10Z", "level": "info", "message": "Test case 189: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 189, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:03:11Z", "level": "info", "message": "Test case 190: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 190, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:03:12Z", "level": "info", "message": "Test case 191: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 191, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:03:13Z", "level": "info", "message": "Test case 192: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 192, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:03:14Z", "level": "info", "message": "Test case 193: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 193, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:03:15Z", "level": "info", "message": "Test case 194: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 194, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:03:16Z", "level": "info", "message": "Test case 195: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 195, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:03:17Z", "level": "info", "message": "Test case 196: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 196, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:03:18Z", "level": "info", "message": "Test case 197: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 197, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:03:19Z", "level": "info", "message": "Test case 198: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 198, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:03:20Z", "level": "info", "message": "Test case 199: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 199, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:03:21Z", "level": "info", "message": "Test case 200: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 200, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:03:22Z", "level": "info", "message": "Test case 201: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 201, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:03:23Z", "level": "info", "message": "Test case 202: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 202, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:03:24Z", "level": "info", "message": "Test case 203: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 203, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:03:25Z", "level": "info", "message": "Test case 204: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 204, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:03:26Z", "level": "info", "message": "Test case 205: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 205, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:03:27Z", "level": "info", "message": "Test case 206: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 206, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:03:28Z", "level": "info", "message": "Test case 207: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 207, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:03:29Z", "level": "info", "message": "Test case 208: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 208, "data": "4iih"} +{"timestamp": "2024-01-01T00:03:30Z", "level": "info", "message": "Test case 209: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 209, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:03:31Z", "level": "info", "message": "Test case 210: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 210, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:03:32Z", "level": "info", "message": "Test case 211: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 211, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:03:33Z", "level": "info", "message": "Test case 212: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 212, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:03:34Z", "level": "info", "message": "Test case 213: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 213, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:03:35Z", "level": "info", "message": "Test case 214: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 214, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:03:36Z", "level": "info", "message": "Test case 215: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 215, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:03:37Z", "level": "info", "message": "Test case 216: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 216, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:03:38Z", "level": "info", "message": "Test case 217: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 217, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:03:39Z", "level": "info", "message": "Test case 218: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 218, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:03:40Z", "level": "info", "message": "Test case 219: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 219, "data": "wg=="} +{"timestamp": "2024-01-01T00:03:41Z", "level": "info", "message": "Test case 220: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 220, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:03:42Z", "level": "info", "message": "Test case 221: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 221, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:03:43Z", "level": "info", "message": "Test case 222: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 222, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:03:44Z", "level": "info", "message": "Test case 223: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 223, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:03:45Z", "level": "info", "message": "Test case 224: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 224, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:03:46Z", "level": "info", "message": "Test case 225: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 225, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:03:47Z", "level": "info", "message": "Test case 226: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 226, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:03:48Z", "level": "info", "message": "Test case 227: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 227, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:03:49Z", "level": "info", "message": "Test case 228: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 228, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:03:50Z", "level": "info", "message": "Test case 229: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 229, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:03:51Z", "level": "info", "message": "Test case 230: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 230, "data": "wIA="} +{"timestamp": "2024-01-01T00:03:52Z", "level": "info", "message": "Test case 231: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 231, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:03:53Z", "level": "info", "message": "Test case 232: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 232, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:03:54Z", "level": "info", "message": "Test case 233: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 233, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:03:55Z", "level": "info", "message": "Test case 234: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 234, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:03:56Z", "level": "info", "message": "Test case 235: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 235, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:03:57Z", "level": "info", "message": "Test case 236: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 236, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:03:58Z", "level": "info", "message": "Test case 237: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 237, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:03:59Z", "level": "info", "message": "Test case 238: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 238, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:04:00Z", "level": "info", "message": "Test case 239: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 239, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:04:01Z", "level": "info", "message": "Test case 240: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 240, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:04:02Z", "level": "info", "message": "Test case 241: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 241, "data": "4ICA"} +{"timestamp": "2024-01-01T00:04:03Z", "level": "info", "message": "Test case 242: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 242, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:04:04Z", "level": "info", "message": "Test case 243: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 243, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:04:05Z", "level": "info", "message": "Test case 244: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 244, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:04:06Z", "level": "info", "message": "Test case 245: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 245, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:04:07Z", "level": "info", "message": "Test case 246: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 246, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:04:08Z", "level": "info", "message": "Test case 247: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 247, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:04:09Z", "level": "info", "message": "Test case 248: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 248, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:04:10Z", "level": "info", "message": "Test case 249: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 249, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:04:11Z", "level": "info", "message": "Test case 250: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 250, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:04:12Z", "level": "info", "message": "Test case 251: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 251, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:04:13Z", "level": "info", "message": "Test case 252: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 252, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:04:14Z", "level": "info", "message": "Test case 253: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 253, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:04:15Z", "level": "info", "message": "Test case 254: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 254, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:04:16Z", "level": "info", "message": "Test case 255: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 255, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:04:17Z", "level": "info", "message": "Test case 256: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 256, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:04:18Z", "level": "info", "message": "Test case 257: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 257, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:04:19Z", "level": "info", "message": "Test case 258: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 258, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:04:20Z", "level": "info", "message": "Test case 259: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 259, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:04:21Z", "level": "info", "message": "Test case 260: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 260, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:04:22Z", "level": "info", "message": "Test case 261: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 261, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:04:23Z", "level": "info", "message": "Test case 262: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 262, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:04:24Z", "level": "info", "message": "Test case 263: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 263, "data": "4iih"} +{"timestamp": "2024-01-01T00:04:25Z", "level": "info", "message": "Test case 264: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 264, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:04:26Z", "level": "info", "message": "Test case 265: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 265, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:04:27Z", "level": "info", "message": "Test case 266: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 266, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:04:28Z", "level": "info", "message": "Test case 267: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 267, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:04:29Z", "level": "info", "message": "Test case 268: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 268, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:04:30Z", "level": "info", "message": "Test case 269: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 269, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:04:31Z", "level": "info", "message": "Test case 270: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 270, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:04:32Z", "level": "info", "message": "Test case 271: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 271, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:04:33Z", "level": "info", "message": "Test case 272: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 272, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:04:34Z", "level": "info", "message": "Test case 273: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 273, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:04:35Z", "level": "info", "message": "Test case 274: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 274, "data": "wg=="} +{"timestamp": "2024-01-01T00:04:36Z", "level": "info", "message": "Test case 275: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 275, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:04:37Z", "level": "info", "message": "Test case 276: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 276, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:04:38Z", "level": "info", "message": "Test case 277: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 277, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:04:39Z", "level": "info", "message": "Test case 278: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 278, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:04:40Z", "level": "info", "message": "Test case 279: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 279, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:04:41Z", "level": "info", "message": "Test case 280: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 280, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:04:42Z", "level": "info", "message": "Test case 281: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 281, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:04:43Z", "level": "info", "message": "Test case 282: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 282, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:04:44Z", "level": "info", "message": "Test case 283: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 283, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:04:45Z", "level": "info", "message": "Test case 284: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 284, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:04:46Z", "level": "info", "message": "Test case 285: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 285, "data": "wIA="} +{"timestamp": "2024-01-01T00:04:47Z", "level": "info", "message": "Test case 286: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 286, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:04:48Z", "level": "info", "message": "Test case 287: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 287, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:04:49Z", "level": "info", "message": "Test case 288: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 288, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:04:50Z", "level": "info", "message": "Test case 289: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 289, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:04:51Z", "level": "info", "message": "Test case 290: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 290, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:04:52Z", "level": "info", "message": "Test case 291: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 291, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:04:53Z", "level": "info", "message": "Test case 292: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 292, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:04:54Z", "level": "info", "message": "Test case 293: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 293, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:04:55Z", "level": "info", "message": "Test case 294: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 294, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:04:56Z", "level": "info", "message": "Test case 295: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 295, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:04:57Z", "level": "info", "message": "Test case 296: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 296, "data": "4ICA"} +{"timestamp": "2024-01-01T00:04:58Z", "level": "info", "message": "Test case 297: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 297, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:04:59Z", "level": "info", "message": "Test case 298: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 298, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:05:00Z", "level": "info", "message": "Test case 299: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 299, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:05:01Z", "level": "info", "message": "Test case 300: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 300, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:05:02Z", "level": "info", "message": "Test case 301: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 301, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:05:03Z", "level": "info", "message": "Test case 302: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 302, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:05:04Z", "level": "info", "message": "Test case 303: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 303, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:05:05Z", "level": "info", "message": "Test case 304: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 304, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:05:06Z", "level": "info", "message": "Test case 305: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 305, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:05:07Z", "level": "info", "message": "Test case 306: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 306, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:05:08Z", "level": "info", "message": "Test case 307: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 307, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:05:09Z", "level": "info", "message": "Test case 308: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 308, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:05:10Z", "level": "info", "message": "Test case 309: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 309, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:05:11Z", "level": "info", "message": "Test case 310: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 310, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:05:12Z", "level": "info", "message": "Test case 311: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 311, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:05:13Z", "level": "info", "message": "Test case 312: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 312, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:05:14Z", "level": "info", "message": "Test case 313: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 313, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:05:15Z", "level": "info", "message": "Test case 314: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 314, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:05:16Z", "level": "info", "message": "Test case 315: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 315, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:05:17Z", "level": "info", "message": "Test case 316: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 316, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:05:18Z", "level": "info", "message": "Test case 317: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 317, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:05:19Z", "level": "info", "message": "Test case 318: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 318, "data": "4iih"} +{"timestamp": "2024-01-01T00:05:20Z", "level": "info", "message": "Test case 319: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 319, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:05:21Z", "level": "info", "message": "Test case 320: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 320, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:05:22Z", "level": "info", "message": "Test case 321: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 321, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:05:23Z", "level": "info", "message": "Test case 322: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 322, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:05:24Z", "level": "info", "message": "Test case 323: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 323, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:05:25Z", "level": "info", "message": "Test case 324: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 324, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:05:26Z", "level": "info", "message": "Test case 325: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 325, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:05:27Z", "level": "info", "message": "Test case 326: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 326, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:05:28Z", "level": "info", "message": "Test case 327: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 327, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:05:29Z", "level": "info", "message": "Test case 328: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 328, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:05:30Z", "level": "info", "message": "Test case 329: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 329, "data": "wg=="} +{"timestamp": "2024-01-01T00:05:31Z", "level": "info", "message": "Test case 330: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 330, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:05:32Z", "level": "info", "message": "Test case 331: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 331, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:05:33Z", "level": "info", "message": "Test case 332: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 332, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:05:34Z", "level": "info", "message": "Test case 333: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 333, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:05:35Z", "level": "info", "message": "Test case 334: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 334, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:05:36Z", "level": "info", "message": "Test case 335: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 335, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:05:37Z", "level": "info", "message": "Test case 336: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 336, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:05:38Z", "level": "info", "message": "Test case 337: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 337, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:05:39Z", "level": "info", "message": "Test case 338: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 338, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:05:40Z", "level": "info", "message": "Test case 339: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 339, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:05:41Z", "level": "info", "message": "Test case 340: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 340, "data": "wIA="} +{"timestamp": "2024-01-01T00:05:42Z", "level": "info", "message": "Test case 341: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 341, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:05:43Z", "level": "info", "message": "Test case 342: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 342, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:05:44Z", "level": "info", "message": "Test case 343: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 343, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:05:45Z", "level": "info", "message": "Test case 344: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 344, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:05:46Z", "level": "info", "message": "Test case 345: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 345, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:05:47Z", "level": "info", "message": "Test case 346: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 346, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:05:48Z", "level": "info", "message": "Test case 347: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 347, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:05:49Z", "level": "info", "message": "Test case 348: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 348, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:05:50Z", "level": "info", "message": "Test case 349: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 349, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:05:51Z", "level": "info", "message": "Test case 350: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 350, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:05:52Z", "level": "info", "message": "Test case 351: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 351, "data": "4ICA"} +{"timestamp": "2024-01-01T00:05:53Z", "level": "info", "message": "Test case 352: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 352, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:05:54Z", "level": "info", "message": "Test case 353: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 353, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:05:55Z", "level": "info", "message": "Test case 354: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 354, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:05:56Z", "level": "info", "message": "Test case 355: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 355, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:05:57Z", "level": "info", "message": "Test case 356: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 356, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:05:58Z", "level": "info", "message": "Test case 357: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 357, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:05:59Z", "level": "info", "message": "Test case 358: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 358, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:06:00Z", "level": "info", "message": "Test case 359: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 359, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:06:01Z", "level": "info", "message": "Test case 360: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 360, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:06:02Z", "level": "info", "message": "Test case 361: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 361, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:06:03Z", "level": "info", "message": "Test case 362: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 362, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:06:04Z", "level": "info", "message": "Test case 363: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 363, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:06:05Z", "level": "info", "message": "Test case 364: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 364, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:06:06Z", "level": "info", "message": "Test case 365: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 365, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:06:07Z", "level": "info", "message": "Test case 366: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 366, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:06:08Z", "level": "info", "message": "Test case 367: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 367, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:06:09Z", "level": "info", "message": "Test case 368: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 368, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:06:10Z", "level": "info", "message": "Test case 369: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 369, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:06:11Z", "level": "info", "message": "Test case 370: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 370, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:06:12Z", "level": "info", "message": "Test case 371: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 371, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:06:13Z", "level": "info", "message": "Test case 372: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 372, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:06:14Z", "level": "info", "message": "Test case 373: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 373, "data": "4iih"} +{"timestamp": "2024-01-01T00:06:15Z", "level": "info", "message": "Test case 374: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 374, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:06:16Z", "level": "info", "message": "Test case 375: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 375, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:06:17Z", "level": "info", "message": "Test case 376: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 376, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:06:18Z", "level": "info", "message": "Test case 377: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 377, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:06:19Z", "level": "info", "message": "Test case 378: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 378, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:06:20Z", "level": "info", "message": "Test case 379: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 379, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:06:21Z", "level": "info", "message": "Test case 380: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 380, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:06:22Z", "level": "info", "message": "Test case 381: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 381, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:06:23Z", "level": "info", "message": "Test case 382: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 382, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:06:24Z", "level": "info", "message": "Test case 383: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 383, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:06:25Z", "level": "info", "message": "Test case 384: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 384, "data": "wg=="} +{"timestamp": "2024-01-01T00:06:26Z", "level": "info", "message": "Test case 385: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 385, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:06:27Z", "level": "info", "message": "Test case 386: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 386, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:06:28Z", "level": "info", "message": "Test case 387: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 387, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:06:29Z", "level": "info", "message": "Test case 388: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 388, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:06:30Z", "level": "info", "message": "Test case 389: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 389, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:06:31Z", "level": "info", "message": "Test case 390: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 390, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:06:32Z", "level": "info", "message": "Test case 391: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 391, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:06:33Z", "level": "info", "message": "Test case 392: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 392, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:06:34Z", "level": "info", "message": "Test case 393: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 393, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:06:35Z", "level": "info", "message": "Test case 394: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 394, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:06:36Z", "level": "info", "message": "Test case 395: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 395, "data": "wIA="} +{"timestamp": "2024-01-01T00:06:37Z", "level": "info", "message": "Test case 396: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 396, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:06:38Z", "level": "info", "message": "Test case 397: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 397, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:06:39Z", "level": "info", "message": "Test case 398: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 398, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:06:40Z", "level": "info", "message": "Test case 399: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 399, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:06:41Z", "level": "info", "message": "Test case 400: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 400, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:06:42Z", "level": "info", "message": "Test case 401: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 401, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:06:43Z", "level": "info", "message": "Test case 402: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 402, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:06:44Z", "level": "info", "message": "Test case 403: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 403, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:06:45Z", "level": "info", "message": "Test case 404: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 404, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:06:46Z", "level": "info", "message": "Test case 405: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 405, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:06:47Z", "level": "info", "message": "Test case 406: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 406, "data": "4ICA"} +{"timestamp": "2024-01-01T00:06:48Z", "level": "info", "message": "Test case 407: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 407, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:06:49Z", "level": "info", "message": "Test case 408: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 408, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:06:50Z", "level": "info", "message": "Test case 409: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 409, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:06:51Z", "level": "info", "message": "Test case 410: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 410, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:06:52Z", "level": "info", "message": "Test case 411: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 411, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:06:53Z", "level": "info", "message": "Test case 412: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 412, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:06:54Z", "level": "info", "message": "Test case 413: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 413, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:06:55Z", "level": "info", "message": "Test case 414: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 414, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:06:56Z", "level": "info", "message": "Test case 415: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 415, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:06:57Z", "level": "info", "message": "Test case 416: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 416, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:06:58Z", "level": "info", "message": "Test case 417: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 417, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:06:59Z", "level": "info", "message": "Test case 418: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 418, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:07:00Z", "level": "info", "message": "Test case 419: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 419, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:07:01Z", "level": "info", "message": "Test case 420: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 420, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:07:02Z", "level": "info", "message": "Test case 421: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 421, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:07:03Z", "level": "info", "message": "Test case 422: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 422, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:07:04Z", "level": "info", "message": "Test case 423: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 423, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:07:05Z", "level": "info", "message": "Test case 424: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 424, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:07:06Z", "level": "info", "message": "Test case 425: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 425, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:07:07Z", "level": "info", "message": "Test case 426: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 426, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:07:08Z", "level": "info", "message": "Test case 427: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 427, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:07:09Z", "level": "info", "message": "Test case 428: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 428, "data": "4iih"} +{"timestamp": "2024-01-01T00:07:10Z", "level": "info", "message": "Test case 429: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 429, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:07:11Z", "level": "info", "message": "Test case 430: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 430, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:07:12Z", "level": "info", "message": "Test case 431: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 431, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:07:13Z", "level": "info", "message": "Test case 432: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 432, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:07:14Z", "level": "info", "message": "Test case 433: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 433, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:07:15Z", "level": "info", "message": "Test case 434: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 434, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:07:16Z", "level": "info", "message": "Test case 435: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 435, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:07:17Z", "level": "info", "message": "Test case 436: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 436, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:07:18Z", "level": "info", "message": "Test case 437: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 437, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:07:19Z", "level": "info", "message": "Test case 438: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 438, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:07:20Z", "level": "info", "message": "Test case 439: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 439, "data": "wg=="} +{"timestamp": "2024-01-01T00:07:21Z", "level": "info", "message": "Test case 440: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 440, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:07:22Z", "level": "info", "message": "Test case 441: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 441, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:07:23Z", "level": "info", "message": "Test case 442: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 442, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:07:24Z", "level": "info", "message": "Test case 443: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 443, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:07:25Z", "level": "info", "message": "Test case 444: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 444, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:07:26Z", "level": "info", "message": "Test case 445: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 445, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:07:27Z", "level": "info", "message": "Test case 446: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 446, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:07:28Z", "level": "info", "message": "Test case 447: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 447, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:07:29Z", "level": "info", "message": "Test case 448: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 448, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:07:30Z", "level": "info", "message": "Test case 449: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 449, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:07:31Z", "level": "info", "message": "Test case 450: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 450, "data": "wIA="} +{"timestamp": "2024-01-01T00:07:32Z", "level": "info", "message": "Test case 451: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 451, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:07:33Z", "level": "info", "message": "Test case 452: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 452, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:07:34Z", "level": "info", "message": "Test case 453: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 453, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:07:35Z", "level": "info", "message": "Test case 454: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 454, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:07:36Z", "level": "info", "message": "Test case 455: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 455, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:07:37Z", "level": "info", "message": "Test case 456: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 456, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:07:38Z", "level": "info", "message": "Test case 457: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 457, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:07:39Z", "level": "info", "message": "Test case 458: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 458, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:07:40Z", "level": "info", "message": "Test case 459: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 459, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:07:41Z", "level": "info", "message": "Test case 460: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 460, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:07:42Z", "level": "info", "message": "Test case 461: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 461, "data": "4ICA"} +{"timestamp": "2024-01-01T00:07:43Z", "level": "info", "message": "Test case 462: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 462, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:07:44Z", "level": "info", "message": "Test case 463: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 463, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:07:45Z", "level": "info", "message": "Test case 464: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 464, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:07:46Z", "level": "info", "message": "Test case 465: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 465, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:07:47Z", "level": "info", "message": "Test case 466: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 466, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:07:48Z", "level": "info", "message": "Test case 467: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 467, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:07:49Z", "level": "info", "message": "Test case 468: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 468, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:07:50Z", "level": "info", "message": "Test case 469: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 469, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:07:51Z", "level": "info", "message": "Test case 470: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 470, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:07:52Z", "level": "info", "message": "Test case 471: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 471, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:07:53Z", "level": "info", "message": "Test case 472: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 472, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:07:54Z", "level": "info", "message": "Test case 473: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 473, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:07:55Z", "level": "info", "message": "Test case 474: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 474, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:07:56Z", "level": "info", "message": "Test case 475: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 475, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:07:57Z", "level": "info", "message": "Test case 476: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 476, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:07:58Z", "level": "info", "message": "Test case 477: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 477, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:07:59Z", "level": "info", "message": "Test case 478: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 478, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:08:00Z", "level": "info", "message": "Test case 479: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 479, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:08:01Z", "level": "info", "message": "Test case 480: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 480, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:08:02Z", "level": "info", "message": "Test case 481: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 481, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:08:03Z", "level": "info", "message": "Test case 482: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 482, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:08:04Z", "level": "info", "message": "Test case 483: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 483, "data": "4iih"} +{"timestamp": "2024-01-01T00:08:05Z", "level": "info", "message": "Test case 484: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 484, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:08:06Z", "level": "info", "message": "Test case 485: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 485, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:08:07Z", "level": "info", "message": "Test case 486: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 486, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:08:08Z", "level": "info", "message": "Test case 487: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 487, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:08:09Z", "level": "info", "message": "Test case 488: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 488, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:08:10Z", "level": "info", "message": "Test case 489: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 489, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:08:11Z", "level": "info", "message": "Test case 490: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 490, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:08:12Z", "level": "info", "message": "Test case 491: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 491, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:08:13Z", "level": "info", "message": "Test case 492: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 492, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:08:14Z", "level": "info", "message": "Test case 493: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 493, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:08:15Z", "level": "info", "message": "Test case 494: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 494, "data": "wg=="} +{"timestamp": "2024-01-01T00:08:16Z", "level": "info", "message": "Test case 495: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 495, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:08:17Z", "level": "info", "message": "Test case 496: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 496, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:08:18Z", "level": "info", "message": "Test case 497: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 497, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:08:19Z", "level": "info", "message": "Test case 498: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 498, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:08:20Z", "level": "info", "message": "Test case 499: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 499, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:08:21Z", "level": "info", "message": "Test case 500: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 500, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:08:22Z", "level": "info", "message": "Test case 501: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 501, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:08:23Z", "level": "info", "message": "Test case 502: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 502, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:08:24Z", "level": "info", "message": "Test case 503: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 503, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:08:25Z", "level": "info", "message": "Test case 504: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 504, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:08:26Z", "level": "info", "message": "Test case 505: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 505, "data": "wIA="} +{"timestamp": "2024-01-01T00:08:27Z", "level": "info", "message": "Test case 506: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 506, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:08:28Z", "level": "info", "message": "Test case 507: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 507, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:08:29Z", "level": "info", "message": "Test case 508: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 508, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:08:30Z", "level": "info", "message": "Test case 509: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 509, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:08:31Z", "level": "info", "message": "Test case 510: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 510, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:08:32Z", "level": "info", "message": "Test case 511: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 511, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:08:33Z", "level": "info", "message": "Test case 512: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 512, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:08:34Z", "level": "info", "message": "Test case 513: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 513, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:08:35Z", "level": "info", "message": "Test case 514: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 514, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:08:36Z", "level": "info", "message": "Test case 515: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 515, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:08:37Z", "level": "info", "message": "Test case 516: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 516, "data": "4ICA"} +{"timestamp": "2024-01-01T00:08:38Z", "level": "info", "message": "Test case 517: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 517, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:08:39Z", "level": "info", "message": "Test case 518: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 518, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:08:40Z", "level": "info", "message": "Test case 519: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 519, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:08:41Z", "level": "info", "message": "Test case 520: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 520, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:08:42Z", "level": "info", "message": "Test case 521: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 521, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:08:43Z", "level": "info", "message": "Test case 522: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 522, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:08:44Z", "level": "info", "message": "Test case 523: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 523, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:08:45Z", "level": "info", "message": "Test case 524: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 524, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:08:46Z", "level": "info", "message": "Test case 525: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 525, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:08:47Z", "level": "info", "message": "Test case 526: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 526, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:08:48Z", "level": "info", "message": "Test case 527: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 527, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:08:49Z", "level": "info", "message": "Test case 528: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 528, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:08:50Z", "level": "info", "message": "Test case 529: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 529, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:08:51Z", "level": "info", "message": "Test case 530: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 530, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:08:52Z", "level": "info", "message": "Test case 531: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 531, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:08:53Z", "level": "info", "message": "Test case 532: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 532, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:08:54Z", "level": "info", "message": "Test case 533: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 533, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:08:55Z", "level": "info", "message": "Test case 534: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 534, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:08:56Z", "level": "info", "message": "Test case 535: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 535, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:08:57Z", "level": "info", "message": "Test case 536: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 536, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:08:58Z", "level": "info", "message": "Test case 537: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 537, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:08:59Z", "level": "info", "message": "Test case 538: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 538, "data": "4iih"} +{"timestamp": "2024-01-01T00:09:00Z", "level": "info", "message": "Test case 539: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 539, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:09:01Z", "level": "info", "message": "Test case 540: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 540, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:09:02Z", "level": "info", "message": "Test case 541: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 541, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:09:03Z", "level": "info", "message": "Test case 542: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 542, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:09:04Z", "level": "info", "message": "Test case 543: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 543, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:09:05Z", "level": "info", "message": "Test case 544: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 544, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:09:06Z", "level": "info", "message": "Test case 545: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 545, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:09:07Z", "level": "info", "message": "Test case 546: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 546, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:09:08Z", "level": "info", "message": "Test case 547: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 547, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:09:09Z", "level": "info", "message": "Test case 548: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 548, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:09:10Z", "level": "info", "message": "Test case 549: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 549, "data": "wg=="} +{"timestamp": "2024-01-01T00:09:11Z", "level": "info", "message": "Test case 550: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 550, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:09:12Z", "level": "info", "message": "Test case 551: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 551, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:09:13Z", "level": "info", "message": "Test case 552: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 552, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:09:14Z", "level": "info", "message": "Test case 553: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 553, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:09:15Z", "level": "info", "message": "Test case 554: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 554, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:09:16Z", "level": "info", "message": "Test case 555: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 555, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:09:17Z", "level": "info", "message": "Test case 556: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 556, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:09:18Z", "level": "info", "message": "Test case 557: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 557, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:09:19Z", "level": "info", "message": "Test case 558: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 558, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:09:20Z", "level": "info", "message": "Test case 559: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 559, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:09:21Z", "level": "info", "message": "Test case 560: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 560, "data": "wIA="} +{"timestamp": "2024-01-01T00:09:22Z", "level": "info", "message": "Test case 561: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 561, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:09:23Z", "level": "info", "message": "Test case 562: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 562, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:09:24Z", "level": "info", "message": "Test case 563: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 563, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:09:25Z", "level": "info", "message": "Test case 564: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 564, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:09:26Z", "level": "info", "message": "Test case 565: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 565, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:09:27Z", "level": "info", "message": "Test case 566: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 566, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:09:28Z", "level": "info", "message": "Test case 567: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 567, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:09:29Z", "level": "info", "message": "Test case 568: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 568, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:09:30Z", "level": "info", "message": "Test case 569: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 569, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:09:31Z", "level": "info", "message": "Test case 570: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 570, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:09:32Z", "level": "info", "message": "Test case 571: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 571, "data": "4ICA"} +{"timestamp": "2024-01-01T00:09:33Z", "level": "info", "message": "Test case 572: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 572, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:09:34Z", "level": "info", "message": "Test case 573: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 573, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:09:35Z", "level": "info", "message": "Test case 574: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 574, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:09:36Z", "level": "info", "message": "Test case 575: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 575, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:09:37Z", "level": "info", "message": "Test case 576: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 576, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:09:38Z", "level": "info", "message": "Test case 577: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 577, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:09:39Z", "level": "info", "message": "Test case 578: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 578, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:09:40Z", "level": "info", "message": "Test case 579: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 579, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:09:41Z", "level": "info", "message": "Test case 580: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 580, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:09:42Z", "level": "info", "message": "Test case 581: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 581, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:09:43Z", "level": "info", "message": "Test case 582: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 582, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:09:44Z", "level": "info", "message": "Test case 583: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 583, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:09:45Z", "level": "info", "message": "Test case 584: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 584, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:09:46Z", "level": "info", "message": "Test case 585: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 585, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:09:47Z", "level": "info", "message": "Test case 586: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 586, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:09:48Z", "level": "info", "message": "Test case 587: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 587, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:09:49Z", "level": "info", "message": "Test case 588: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 588, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:09:50Z", "level": "info", "message": "Test case 589: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 589, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:09:51Z", "level": "info", "message": "Test case 590: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 590, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:09:52Z", "level": "info", "message": "Test case 591: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 591, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:09:53Z", "level": "info", "message": "Test case 592: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 592, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:09:54Z", "level": "info", "message": "Test case 593: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 593, "data": "4iih"} +{"timestamp": "2024-01-01T00:09:55Z", "level": "info", "message": "Test case 594: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 594, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:09:56Z", "level": "info", "message": "Test case 595: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 595, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:09:57Z", "level": "info", "message": "Test case 596: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 596, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:09:58Z", "level": "info", "message": "Test case 597: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 597, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:09:59Z", "level": "info", "message": "Test case 598: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 598, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:10:00Z", "level": "info", "message": "Test case 599: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 599, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:10:01Z", "level": "info", "message": "Test case 600: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 600, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:10:02Z", "level": "info", "message": "Test case 601: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 601, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:10:03Z", "level": "info", "message": "Test case 602: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 602, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:10:04Z", "level": "info", "message": "Test case 603: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 603, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:10:05Z", "level": "info", "message": "Test case 604: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 604, "data": "wg=="} +{"timestamp": "2024-01-01T00:10:06Z", "level": "info", "message": "Test case 605: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 605, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:10:07Z", "level": "info", "message": "Test case 606: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 606, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:10:08Z", "level": "info", "message": "Test case 607: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 607, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:10:09Z", "level": "info", "message": "Test case 608: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 608, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:10:10Z", "level": "info", "message": "Test case 609: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 609, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:10:11Z", "level": "info", "message": "Test case 610: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 610, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:10:12Z", "level": "info", "message": "Test case 611: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 611, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:10:13Z", "level": "info", "message": "Test case 612: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 612, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:10:14Z", "level": "info", "message": "Test case 613: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 613, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:10:15Z", "level": "info", "message": "Test case 614: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 614, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:10:16Z", "level": "info", "message": "Test case 615: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 615, "data": "wIA="} +{"timestamp": "2024-01-01T00:10:17Z", "level": "info", "message": "Test case 616: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 616, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:10:18Z", "level": "info", "message": "Test case 617: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 617, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:10:19Z", "level": "info", "message": "Test case 618: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 618, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:10:20Z", "level": "info", "message": "Test case 619: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 619, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:10:21Z", "level": "info", "message": "Test case 620: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 620, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:10:22Z", "level": "info", "message": "Test case 621: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 621, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:10:23Z", "level": "info", "message": "Test case 622: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 622, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:10:24Z", "level": "info", "message": "Test case 623: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 623, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:10:25Z", "level": "info", "message": "Test case 624: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 624, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:10:26Z", "level": "info", "message": "Test case 625: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 625, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:10:27Z", "level": "info", "message": "Test case 626: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 626, "data": "4ICA"} +{"timestamp": "2024-01-01T00:10:28Z", "level": "info", "message": "Test case 627: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 627, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:10:29Z", "level": "info", "message": "Test case 628: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 628, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:10:30Z", "level": "info", "message": "Test case 629: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 629, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:10:31Z", "level": "info", "message": "Test case 630: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 630, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:10:32Z", "level": "info", "message": "Test case 631: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 631, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:10:33Z", "level": "info", "message": "Test case 632: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 632, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:10:34Z", "level": "info", "message": "Test case 633: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 633, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:10:35Z", "level": "info", "message": "Test case 634: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 634, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:10:36Z", "level": "info", "message": "Test case 635: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 635, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:10:37Z", "level": "info", "message": "Test case 636: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 636, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:10:38Z", "level": "info", "message": "Test case 637: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 637, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:10:39Z", "level": "info", "message": "Test case 638: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 638, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:10:40Z", "level": "info", "message": "Test case 639: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 639, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:10:41Z", "level": "info", "message": "Test case 640: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 640, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:10:42Z", "level": "info", "message": "Test case 641: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 641, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:10:43Z", "level": "info", "message": "Test case 642: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 642, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:10:44Z", "level": "info", "message": "Test case 643: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 643, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:10:45Z", "level": "info", "message": "Test case 644: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 644, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:10:46Z", "level": "info", "message": "Test case 645: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 645, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:10:47Z", "level": "info", "message": "Test case 646: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 646, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:10:48Z", "level": "info", "message": "Test case 647: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 647, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:10:49Z", "level": "info", "message": "Test case 648: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 648, "data": "4iih"} +{"timestamp": "2024-01-01T00:10:50Z", "level": "info", "message": "Test case 649: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 649, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:10:51Z", "level": "info", "message": "Test case 650: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 650, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:10:52Z", "level": "info", "message": "Test case 651: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 651, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:10:53Z", "level": "info", "message": "Test case 652: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 652, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:10:54Z", "level": "info", "message": "Test case 653: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 653, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:10:55Z", "level": "info", "message": "Test case 654: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 654, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:10:56Z", "level": "info", "message": "Test case 655: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 655, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:10:57Z", "level": "info", "message": "Test case 656: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 656, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:10:58Z", "level": "info", "message": "Test case 657: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 657, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:10:59Z", "level": "info", "message": "Test case 658: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 658, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:11:00Z", "level": "info", "message": "Test case 659: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 659, "data": "wg=="} +{"timestamp": "2024-01-01T00:11:01Z", "level": "info", "message": "Test case 660: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 660, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:11:02Z", "level": "info", "message": "Test case 661: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 661, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:11:03Z", "level": "info", "message": "Test case 662: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 662, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:11:04Z", "level": "info", "message": "Test case 663: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 663, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:11:05Z", "level": "info", "message": "Test case 664: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 664, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:11:06Z", "level": "info", "message": "Test case 665: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 665, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:11:07Z", "level": "info", "message": "Test case 666: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 666, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:11:08Z", "level": "info", "message": "Test case 667: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 667, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:11:09Z", "level": "info", "message": "Test case 668: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 668, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:11:10Z", "level": "info", "message": "Test case 669: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 669, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:11:11Z", "level": "info", "message": "Test case 670: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 670, "data": "wIA="} +{"timestamp": "2024-01-01T00:11:12Z", "level": "info", "message": "Test case 671: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 671, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:11:13Z", "level": "info", "message": "Test case 672: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 672, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:11:14Z", "level": "info", "message": "Test case 673: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 673, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:11:15Z", "level": "info", "message": "Test case 674: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 674, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:11:16Z", "level": "info", "message": "Test case 675: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 675, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:11:17Z", "level": "info", "message": "Test case 676: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 676, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:11:18Z", "level": "info", "message": "Test case 677: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 677, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:11:19Z", "level": "info", "message": "Test case 678: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 678, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:11:20Z", "level": "info", "message": "Test case 679: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 679, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:11:21Z", "level": "info", "message": "Test case 680: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 680, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:11:22Z", "level": "info", "message": "Test case 681: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 681, "data": "4ICA"} +{"timestamp": "2024-01-01T00:11:23Z", "level": "info", "message": "Test case 682: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 682, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:11:24Z", "level": "info", "message": "Test case 683: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 683, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:11:25Z", "level": "info", "message": "Test case 684: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 684, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:11:26Z", "level": "info", "message": "Test case 685: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 685, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:11:27Z", "level": "info", "message": "Test case 686: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 686, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:11:28Z", "level": "info", "message": "Test case 687: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 687, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:11:29Z", "level": "info", "message": "Test case 688: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 688, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:11:30Z", "level": "info", "message": "Test case 689: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 689, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:11:31Z", "level": "info", "message": "Test case 690: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 690, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:11:32Z", "level": "info", "message": "Test case 691: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 691, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:11:33Z", "level": "info", "message": "Test case 692: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 692, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:11:34Z", "level": "info", "message": "Test case 693: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 693, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:11:35Z", "level": "info", "message": "Test case 694: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 694, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:11:36Z", "level": "info", "message": "Test case 695: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 695, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:11:37Z", "level": "info", "message": "Test case 696: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 696, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:11:38Z", "level": "info", "message": "Test case 697: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 697, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:11:39Z", "level": "info", "message": "Test case 698: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 698, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:11:40Z", "level": "info", "message": "Test case 699: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 699, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:11:41Z", "level": "info", "message": "Test case 700: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 700, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:11:42Z", "level": "info", "message": "Test case 701: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 701, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:11:43Z", "level": "info", "message": "Test case 702: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 702, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:11:44Z", "level": "info", "message": "Test case 703: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 703, "data": "4iih"} +{"timestamp": "2024-01-01T00:11:45Z", "level": "info", "message": "Test case 704: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 704, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:11:46Z", "level": "info", "message": "Test case 705: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 705, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:11:47Z", "level": "info", "message": "Test case 706: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 706, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:11:48Z", "level": "info", "message": "Test case 707: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 707, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:11:49Z", "level": "info", "message": "Test case 708: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 708, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:11:50Z", "level": "info", "message": "Test case 709: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 709, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:11:51Z", "level": "info", "message": "Test case 710: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 710, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:11:52Z", "level": "info", "message": "Test case 711: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 711, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:11:53Z", "level": "info", "message": "Test case 712: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 712, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:11:54Z", "level": "info", "message": "Test case 713: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 713, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:11:55Z", "level": "info", "message": "Test case 714: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 714, "data": "wg=="} +{"timestamp": "2024-01-01T00:11:56Z", "level": "info", "message": "Test case 715: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 715, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:11:57Z", "level": "info", "message": "Test case 716: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 716, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:11:58Z", "level": "info", "message": "Test case 717: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 717, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:11:59Z", "level": "info", "message": "Test case 718: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 718, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:12:00Z", "level": "info", "message": "Test case 719: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 719, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:12:01Z", "level": "info", "message": "Test case 720: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 720, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:12:02Z", "level": "info", "message": "Test case 721: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 721, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:12:03Z", "level": "info", "message": "Test case 722: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 722, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:12:04Z", "level": "info", "message": "Test case 723: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 723, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:12:05Z", "level": "info", "message": "Test case 724: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 724, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:12:06Z", "level": "info", "message": "Test case 725: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 725, "data": "wIA="} +{"timestamp": "2024-01-01T00:12:07Z", "level": "info", "message": "Test case 726: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 726, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:12:08Z", "level": "info", "message": "Test case 727: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 727, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:12:09Z", "level": "info", "message": "Test case 728: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 728, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:12:10Z", "level": "info", "message": "Test case 729: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 729, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:12:11Z", "level": "info", "message": "Test case 730: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 730, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:12:12Z", "level": "info", "message": "Test case 731: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 731, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:12:13Z", "level": "info", "message": "Test case 732: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 732, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:12:14Z", "level": "info", "message": "Test case 733: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 733, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:12:15Z", "level": "info", "message": "Test case 734: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 734, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:12:16Z", "level": "info", "message": "Test case 735: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 735, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:12:17Z", "level": "info", "message": "Test case 736: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 736, "data": "4ICA"} +{"timestamp": "2024-01-01T00:12:18Z", "level": "info", "message": "Test case 737: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 737, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:12:19Z", "level": "info", "message": "Test case 738: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 738, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:12:20Z", "level": "info", "message": "Test case 739: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 739, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:12:21Z", "level": "info", "message": "Test case 740: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 740, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:12:22Z", "level": "info", "message": "Test case 741: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 741, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:12:23Z", "level": "info", "message": "Test case 742: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 742, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:12:24Z", "level": "info", "message": "Test case 743: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 743, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:12:25Z", "level": "info", "message": "Test case 744: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 744, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:12:26Z", "level": "info", "message": "Test case 745: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 745, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:12:27Z", "level": "info", "message": "Test case 746: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 746, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:12:28Z", "level": "info", "message": "Test case 747: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 747, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:12:29Z", "level": "info", "message": "Test case 748: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 748, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:12:30Z", "level": "info", "message": "Test case 749: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 749, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:12:31Z", "level": "info", "message": "Test case 750: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 750, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:12:32Z", "level": "info", "message": "Test case 751: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 751, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:12:33Z", "level": "info", "message": "Test case 752: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 752, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:12:34Z", "level": "info", "message": "Test case 753: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 753, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:12:35Z", "level": "info", "message": "Test case 754: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 754, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:12:36Z", "level": "info", "message": "Test case 755: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 755, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:12:37Z", "level": "info", "message": "Test case 756: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 756, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:12:38Z", "level": "info", "message": "Test case 757: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 757, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:12:39Z", "level": "info", "message": "Test case 758: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 758, "data": "4iih"} +{"timestamp": "2024-01-01T00:12:40Z", "level": "info", "message": "Test case 759: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 759, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:12:41Z", "level": "info", "message": "Test case 760: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 760, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:12:42Z", "level": "info", "message": "Test case 761: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 761, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:12:43Z", "level": "info", "message": "Test case 762: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 762, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:12:44Z", "level": "info", "message": "Test case 763: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 763, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:12:45Z", "level": "info", "message": "Test case 764: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 764, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:12:46Z", "level": "info", "message": "Test case 765: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 765, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:12:47Z", "level": "info", "message": "Test case 766: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 766, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:12:48Z", "level": "info", "message": "Test case 767: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 767, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:12:49Z", "level": "info", "message": "Test case 768: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 768, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:12:50Z", "level": "info", "message": "Test case 769: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 769, "data": "wg=="} +{"timestamp": "2024-01-01T00:12:51Z", "level": "info", "message": "Test case 770: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 770, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:12:52Z", "level": "info", "message": "Test case 771: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 771, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:12:53Z", "level": "info", "message": "Test case 772: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 772, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:12:54Z", "level": "info", "message": "Test case 773: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 773, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:12:55Z", "level": "info", "message": "Test case 774: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 774, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:12:56Z", "level": "info", "message": "Test case 775: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 775, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:12:57Z", "level": "info", "message": "Test case 776: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 776, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:12:58Z", "level": "info", "message": "Test case 777: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 777, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:12:59Z", "level": "info", "message": "Test case 778: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 778, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:13:00Z", "level": "info", "message": "Test case 779: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 779, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:13:01Z", "level": "info", "message": "Test case 780: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 780, "data": "wIA="} +{"timestamp": "2024-01-01T00:13:02Z", "level": "info", "message": "Test case 781: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 781, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:13:03Z", "level": "info", "message": "Test case 782: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 782, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:13:04Z", "level": "info", "message": "Test case 783: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 783, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:13:05Z", "level": "info", "message": "Test case 784: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 784, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:13:06Z", "level": "info", "message": "Test case 785: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 785, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:13:07Z", "level": "info", "message": "Test case 786: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 786, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:13:08Z", "level": "info", "message": "Test case 787: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 787, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:13:09Z", "level": "info", "message": "Test case 788: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 788, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:13:10Z", "level": "info", "message": "Test case 789: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 789, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:13:11Z", "level": "info", "message": "Test case 790: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 790, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:13:12Z", "level": "info", "message": "Test case 791: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 791, "data": "4ICA"} +{"timestamp": "2024-01-01T00:13:13Z", "level": "info", "message": "Test case 792: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 792, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:13:14Z", "level": "info", "message": "Test case 793: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 793, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:13:15Z", "level": "info", "message": "Test case 794: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 794, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:13:16Z", "level": "info", "message": "Test case 795: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 795, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:13:17Z", "level": "info", "message": "Test case 796: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 796, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:13:18Z", "level": "info", "message": "Test case 797: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 797, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:13:19Z", "level": "info", "message": "Test case 798: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 798, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:13:20Z", "level": "info", "message": "Test case 799: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 799, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:13:21Z", "level": "info", "message": "Test case 800: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 800, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:13:22Z", "level": "info", "message": "Test case 801: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 801, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:13:23Z", "level": "info", "message": "Test case 802: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 802, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:13:24Z", "level": "info", "message": "Test case 803: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 803, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:13:25Z", "level": "info", "message": "Test case 804: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 804, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:13:26Z", "level": "info", "message": "Test case 805: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 805, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:13:27Z", "level": "info", "message": "Test case 806: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 806, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:13:28Z", "level": "info", "message": "Test case 807: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 807, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:13:29Z", "level": "info", "message": "Test case 808: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 808, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:13:30Z", "level": "info", "message": "Test case 809: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 809, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:13:31Z", "level": "info", "message": "Test case 810: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 810, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:13:32Z", "level": "info", "message": "Test case 811: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 811, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:13:33Z", "level": "info", "message": "Test case 812: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 812, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:13:34Z", "level": "info", "message": "Test case 813: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 813, "data": "4iih"} +{"timestamp": "2024-01-01T00:13:35Z", "level": "info", "message": "Test case 814: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 814, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:13:36Z", "level": "info", "message": "Test case 815: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 815, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:13:37Z", "level": "info", "message": "Test case 816: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 816, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:13:38Z", "level": "info", "message": "Test case 817: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 817, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:13:39Z", "level": "info", "message": "Test case 818: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 818, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:13:40Z", "level": "info", "message": "Test case 819: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 819, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:13:41Z", "level": "info", "message": "Test case 820: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 820, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:13:42Z", "level": "info", "message": "Test case 821: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 821, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:13:43Z", "level": "info", "message": "Test case 822: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 822, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:13:44Z", "level": "info", "message": "Test case 823: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 823, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:13:45Z", "level": "info", "message": "Test case 824: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 824, "data": "wg=="} +{"timestamp": "2024-01-01T00:13:46Z", "level": "info", "message": "Test case 825: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 825, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:13:47Z", "level": "info", "message": "Test case 826: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 826, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:13:48Z", "level": "info", "message": "Test case 827: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 827, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:13:49Z", "level": "info", "message": "Test case 828: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 828, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:13:50Z", "level": "info", "message": "Test case 829: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 829, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:13:51Z", "level": "info", "message": "Test case 830: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 830, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:13:52Z", "level": "info", "message": "Test case 831: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 831, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:13:53Z", "level": "info", "message": "Test case 832: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 832, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:13:54Z", "level": "info", "message": "Test case 833: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 833, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:13:55Z", "level": "info", "message": "Test case 834: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 834, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:13:56Z", "level": "info", "message": "Test case 835: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 835, "data": "wIA="} +{"timestamp": "2024-01-01T00:13:57Z", "level": "info", "message": "Test case 836: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 836, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:13:58Z", "level": "info", "message": "Test case 837: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 837, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:13:59Z", "level": "info", "message": "Test case 838: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 838, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:14:00Z", "level": "info", "message": "Test case 839: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 839, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:14:01Z", "level": "info", "message": "Test case 840: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 840, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:14:02Z", "level": "info", "message": "Test case 841: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 841, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:14:03Z", "level": "info", "message": "Test case 842: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 842, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:14:04Z", "level": "info", "message": "Test case 843: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 843, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:14:05Z", "level": "info", "message": "Test case 844: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 844, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:14:06Z", "level": "info", "message": "Test case 845: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 845, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:14:07Z", "level": "info", "message": "Test case 846: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 846, "data": "4ICA"} +{"timestamp": "2024-01-01T00:14:08Z", "level": "info", "message": "Test case 847: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 847, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:14:09Z", "level": "info", "message": "Test case 848: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 848, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:14:10Z", "level": "info", "message": "Test case 849: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 849, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:14:11Z", "level": "info", "message": "Test case 850: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 850, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:14:12Z", "level": "info", "message": "Test case 851: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 851, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:14:13Z", "level": "info", "message": "Test case 852: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 852, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:14:14Z", "level": "info", "message": "Test case 853: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 853, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:14:15Z", "level": "info", "message": "Test case 854: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 854, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:14:16Z", "level": "info", "message": "Test case 855: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 855, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:14:17Z", "level": "info", "message": "Test case 856: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 856, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:14:18Z", "level": "info", "message": "Test case 857: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 857, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:14:19Z", "level": "info", "message": "Test case 858: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 858, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:14:20Z", "level": "info", "message": "Test case 859: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 859, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:14:21Z", "level": "info", "message": "Test case 860: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 860, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:14:22Z", "level": "info", "message": "Test case 861: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 861, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:14:23Z", "level": "info", "message": "Test case 862: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 862, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:14:24Z", "level": "info", "message": "Test case 863: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 863, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:14:25Z", "level": "info", "message": "Test case 864: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 864, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:14:26Z", "level": "info", "message": "Test case 865: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 865, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:14:27Z", "level": "info", "message": "Test case 866: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 866, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:14:28Z", "level": "info", "message": "Test case 867: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 867, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:14:29Z", "level": "info", "message": "Test case 868: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 868, "data": "4iih"} +{"timestamp": "2024-01-01T00:14:30Z", "level": "info", "message": "Test case 869: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 869, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:14:31Z", "level": "info", "message": "Test case 870: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 870, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:14:32Z", "level": "info", "message": "Test case 871: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 871, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:14:33Z", "level": "info", "message": "Test case 872: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 872, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:14:34Z", "level": "info", "message": "Test case 873: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 873, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:14:35Z", "level": "info", "message": "Test case 874: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 874, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:14:36Z", "level": "info", "message": "Test case 875: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 875, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:14:37Z", "level": "info", "message": "Test case 876: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 876, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:14:38Z", "level": "info", "message": "Test case 877: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 877, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:14:39Z", "level": "info", "message": "Test case 878: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 878, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:14:40Z", "level": "info", "message": "Test case 879: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 879, "data": "wg=="} +{"timestamp": "2024-01-01T00:14:41Z", "level": "info", "message": "Test case 880: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 880, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:14:42Z", "level": "info", "message": "Test case 881: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 881, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:14:43Z", "level": "info", "message": "Test case 882: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 882, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:14:44Z", "level": "info", "message": "Test case 883: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 883, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:14:45Z", "level": "info", "message": "Test case 884: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 884, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:14:46Z", "level": "info", "message": "Test case 885: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 885, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:14:47Z", "level": "info", "message": "Test case 886: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 886, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:14:48Z", "level": "info", "message": "Test case 887: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 887, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:14:49Z", "level": "info", "message": "Test case 888: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 888, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:14:50Z", "level": "info", "message": "Test case 889: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 889, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:14:51Z", "level": "info", "message": "Test case 890: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 890, "data": "wIA="} +{"timestamp": "2024-01-01T00:14:52Z", "level": "info", "message": "Test case 891: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 891, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:14:53Z", "level": "info", "message": "Test case 892: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 892, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:14:54Z", "level": "info", "message": "Test case 893: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 893, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:14:55Z", "level": "info", "message": "Test case 894: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 894, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:14:56Z", "level": "info", "message": "Test case 895: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 895, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:14:57Z", "level": "info", "message": "Test case 896: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 896, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:14:58Z", "level": "info", "message": "Test case 897: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 897, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:14:59Z", "level": "info", "message": "Test case 898: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 898, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:15:00Z", "level": "info", "message": "Test case 899: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 899, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:15:01Z", "level": "info", "message": "Test case 900: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 900, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:15:02Z", "level": "info", "message": "Test case 901: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 901, "data": "4ICA"} +{"timestamp": "2024-01-01T00:15:03Z", "level": "info", "message": "Test case 902: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 902, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:15:04Z", "level": "info", "message": "Test case 903: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 903, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:15:05Z", "level": "info", "message": "Test case 904: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 904, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:15:06Z", "level": "info", "message": "Test case 905: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 905, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:15:07Z", "level": "info", "message": "Test case 906: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 906, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:15:08Z", "level": "info", "message": "Test case 907: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 907, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:15:09Z", "level": "info", "message": "Test case 908: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 908, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:15:10Z", "level": "info", "message": "Test case 909: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 909, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:15:11Z", "level": "info", "message": "Test case 910: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 910, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:15:12Z", "level": "info", "message": "Test case 911: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 911, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:15:13Z", "level": "info", "message": "Test case 912: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 912, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:15:14Z", "level": "info", "message": "Test case 913: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 913, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:15:15Z", "level": "info", "message": "Test case 914: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 914, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:15:16Z", "level": "info", "message": "Test case 915: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 915, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:15:17Z", "level": "info", "message": "Test case 916: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 916, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:15:18Z", "level": "info", "message": "Test case 917: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 917, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:15:19Z", "level": "info", "message": "Test case 918: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 918, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:15:20Z", "level": "info", "message": "Test case 919: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 919, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:15:21Z", "level": "info", "message": "Test case 920: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 920, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:15:22Z", "level": "info", "message": "Test case 921: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 921, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:15:23Z", "level": "info", "message": "Test case 922: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 922, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:15:24Z", "level": "info", "message": "Test case 923: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 923, "data": "4iih"} +{"timestamp": "2024-01-01T00:15:25Z", "level": "info", "message": "Test case 924: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 924, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:15:26Z", "level": "info", "message": "Test case 925: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 925, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:15:27Z", "level": "info", "message": "Test case 926: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 926, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:15:28Z", "level": "info", "message": "Test case 927: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 927, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:15:29Z", "level": "info", "message": "Test case 928: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 928, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:15:30Z", "level": "info", "message": "Test case 929: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 929, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:15:31Z", "level": "info", "message": "Test case 930: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 930, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:15:32Z", "level": "info", "message": "Test case 931: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 931, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:15:33Z", "level": "info", "message": "Test case 932: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 932, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:15:34Z", "level": "info", "message": "Test case 933: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 933, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:15:35Z", "level": "info", "message": "Test case 934: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 934, "data": "wg=="} +{"timestamp": "2024-01-01T00:15:36Z", "level": "info", "message": "Test case 935: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 935, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:15:37Z", "level": "info", "message": "Test case 936: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 936, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:15:38Z", "level": "info", "message": "Test case 937: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 937, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:15:39Z", "level": "info", "message": "Test case 938: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 938, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:15:40Z", "level": "info", "message": "Test case 939: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 939, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:15:41Z", "level": "info", "message": "Test case 940: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 940, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:15:42Z", "level": "info", "message": "Test case 941: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 941, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:15:43Z", "level": "info", "message": "Test case 942: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 942, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:15:44Z", "level": "info", "message": "Test case 943: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 943, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:15:45Z", "level": "info", "message": "Test case 944: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 944, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:15:46Z", "level": "info", "message": "Test case 945: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 945, "data": "wIA="} +{"timestamp": "2024-01-01T00:15:47Z", "level": "info", "message": "Test case 946: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 946, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:15:48Z", "level": "info", "message": "Test case 947: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 947, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:15:49Z", "level": "info", "message": "Test case 948: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 948, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:15:50Z", "level": "info", "message": "Test case 949: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 949, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:15:51Z", "level": "info", "message": "Test case 950: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 950, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:15:52Z", "level": "info", "message": "Test case 951: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 951, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:15:53Z", "level": "info", "message": "Test case 952: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 952, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:15:54Z", "level": "info", "message": "Test case 953: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 953, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:15:55Z", "level": "info", "message": "Test case 954: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 954, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:15:56Z", "level": "info", "message": "Test case 955: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 955, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:15:57Z", "level": "info", "message": "Test case 956: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 956, "data": "4ICA"} +{"timestamp": "2024-01-01T00:15:58Z", "level": "info", "message": "Test case 957: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 957, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:15:59Z", "level": "info", "message": "Test case 958: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 958, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:16:00Z", "level": "info", "message": "Test case 959: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 959, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:16:01Z", "level": "info", "message": "Test case 960: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 960, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:16:02Z", "level": "info", "message": "Test case 961: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 961, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:16:03Z", "level": "info", "message": "Test case 962: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 962, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:16:04Z", "level": "info", "message": "Test case 963: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 963, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:16:05Z", "level": "info", "message": "Test case 964: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 964, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:16:06Z", "level": "info", "message": "Test case 965: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 965, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:16:07Z", "level": "info", "message": "Test case 966: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 966, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:16:08Z", "level": "info", "message": "Test case 967: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 967, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:16:09Z", "level": "info", "message": "Test case 968: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 968, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:16:10Z", "level": "info", "message": "Test case 969: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 969, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:16:11Z", "level": "info", "message": "Test case 970: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 970, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:16:12Z", "level": "info", "message": "Test case 971: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 971, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:16:13Z", "level": "info", "message": "Test case 972: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 972, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:16:14Z", "level": "info", "message": "Test case 973: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 973, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:16:15Z", "level": "info", "message": "Test case 974: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 974, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:16:16Z", "level": "info", "message": "Test case 975: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 975, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:16:17Z", "level": "info", "message": "Test case 976: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 976, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:16:18Z", "level": "info", "message": "Test case 977: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 977, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:16:19Z", "level": "info", "message": "Test case 978: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 978, "data": "4iih"} +{"timestamp": "2024-01-01T00:16:20Z", "level": "info", "message": "Test case 979: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 979, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:16:21Z", "level": "info", "message": "Test case 980: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 980, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:16:22Z", "level": "info", "message": "Test case 981: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 981, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:16:23Z", "level": "info", "message": "Test case 982: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 982, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:16:24Z", "level": "info", "message": "Test case 983: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 983, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:16:25Z", "level": "info", "message": "Test case 984: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 984, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:16:26Z", "level": "info", "message": "Test case 985: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 985, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:16:27Z", "level": "info", "message": "Test case 986: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 986, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:16:28Z", "level": "info", "message": "Test case 987: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 987, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:16:29Z", "level": "info", "message": "Test case 988: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 988, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:16:30Z", "level": "info", "message": "Test case 989: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 989, "data": "wg=="} +{"timestamp": "2024-01-01T00:16:31Z", "level": "info", "message": "Test case 990: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 990, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:16:32Z", "level": "info", "message": "Test case 991: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 991, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:16:33Z", "level": "info", "message": "Test case 992: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 992, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:16:34Z", "level": "info", "message": "Test case 993: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 993, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:16:35Z", "level": "info", "message": "Test case 994: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 994, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:16:36Z", "level": "info", "message": "Test case 995: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 995, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:16:37Z", "level": "info", "message": "Test case 996: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 996, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:16:38Z", "level": "info", "message": "Test case 997: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 997, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:16:39Z", "level": "info", "message": "Test case 998: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 998, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:16:40Z", "level": "info", "message": "Test case 999: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 999, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:16:41Z", "level": "info", "message": "Test case 1000: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1000, "data": "wIA="} +{"timestamp": "2024-01-01T00:16:42Z", "level": "info", "message": "Test case 1001: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1001, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:16:43Z", "level": "info", "message": "Test case 1002: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1002, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:16:44Z", "level": "info", "message": "Test case 1003: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1003, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:16:45Z", "level": "info", "message": "Test case 1004: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1004, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:16:46Z", "level": "info", "message": "Test case 1005: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1005, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:16:47Z", "level": "info", "message": "Test case 1006: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1006, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:16:48Z", "level": "info", "message": "Test case 1007: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1007, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:16:49Z", "level": "info", "message": "Test case 1008: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1008, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:16:50Z", "level": "info", "message": "Test case 1009: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1009, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:16:51Z", "level": "info", "message": "Test case 1010: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1010, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:16:52Z", "level": "info", "message": "Test case 1011: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1011, "data": "4ICA"} +{"timestamp": "2024-01-01T00:16:53Z", "level": "info", "message": "Test case 1012: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1012, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:16:54Z", "level": "info", "message": "Test case 1013: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1013, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:16:55Z", "level": "info", "message": "Test case 1014: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1014, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:16:56Z", "level": "info", "message": "Test case 1015: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1015, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:16:57Z", "level": "info", "message": "Test case 1016: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1016, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:16:58Z", "level": "info", "message": "Test case 1017: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1017, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:16:59Z", "level": "info", "message": "Test case 1018: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1018, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:17:00Z", "level": "info", "message": "Test case 1019: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1019, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:17:01Z", "level": "info", "message": "Test case 1020: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1020, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:17:02Z", "level": "info", "message": "Test case 1021: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1021, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:17:03Z", "level": "info", "message": "Test case 1022: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1022, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:17:04Z", "level": "info", "message": "Test case 1023: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1023, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:17:05Z", "level": "info", "message": "Test case 1024: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1024, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:17:06Z", "level": "info", "message": "Test case 1025: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1025, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:17:07Z", "level": "info", "message": "Test case 1026: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1026, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:17:08Z", "level": "info", "message": "Test case 1027: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1027, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:17:09Z", "level": "info", "message": "Test case 1028: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1028, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:17:10Z", "level": "info", "message": "Test case 1029: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1029, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:17:11Z", "level": "info", "message": "Test case 1030: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1030, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:17:12Z", "level": "info", "message": "Test case 1031: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1031, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:17:13Z", "level": "info", "message": "Test case 1032: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1032, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:17:14Z", "level": "info", "message": "Test case 1033: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1033, "data": "4iih"} +{"timestamp": "2024-01-01T00:17:15Z", "level": "info", "message": "Test case 1034: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1034, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:17:16Z", "level": "info", "message": "Test case 1035: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1035, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:17:17Z", "level": "info", "message": "Test case 1036: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1036, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:17:18Z", "level": "info", "message": "Test case 1037: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1037, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:17:19Z", "level": "info", "message": "Test case 1038: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1038, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:17:20Z", "level": "info", "message": "Test case 1039: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1039, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:17:21Z", "level": "info", "message": "Test case 1040: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1040, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:17:22Z", "level": "info", "message": "Test case 1041: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1041, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:17:23Z", "level": "info", "message": "Test case 1042: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1042, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:17:24Z", "level": "info", "message": "Test case 1043: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1043, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:17:25Z", "level": "info", "message": "Test case 1044: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1044, "data": "wg=="} +{"timestamp": "2024-01-01T00:17:26Z", "level": "info", "message": "Test case 1045: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1045, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:17:27Z", "level": "info", "message": "Test case 1046: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1046, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:17:28Z", "level": "info", "message": "Test case 1047: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1047, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:17:29Z", "level": "info", "message": "Test case 1048: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1048, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:17:30Z", "level": "info", "message": "Test case 1049: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1049, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:17:31Z", "level": "info", "message": "Test case 1050: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1050, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:17:32Z", "level": "info", "message": "Test case 1051: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1051, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:17:33Z", "level": "info", "message": "Test case 1052: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1052, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:17:34Z", "level": "info", "message": "Test case 1053: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1053, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:17:35Z", "level": "info", "message": "Test case 1054: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1054, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:17:36Z", "level": "info", "message": "Test case 1055: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1055, "data": "wIA="} +{"timestamp": "2024-01-01T00:17:37Z", "level": "info", "message": "Test case 1056: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1056, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:17:38Z", "level": "info", "message": "Test case 1057: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1057, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:17:39Z", "level": "info", "message": "Test case 1058: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1058, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:17:40Z", "level": "info", "message": "Test case 1059: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1059, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:17:41Z", "level": "info", "message": "Test case 1060: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1060, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:17:42Z", "level": "info", "message": "Test case 1061: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1061, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:17:43Z", "level": "info", "message": "Test case 1062: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1062, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:17:44Z", "level": "info", "message": "Test case 1063: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1063, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:17:45Z", "level": "info", "message": "Test case 1064: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1064, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:17:46Z", "level": "info", "message": "Test case 1065: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1065, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:17:47Z", "level": "info", "message": "Test case 1066: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1066, "data": "4ICA"} +{"timestamp": "2024-01-01T00:17:48Z", "level": "info", "message": "Test case 1067: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1067, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:17:49Z", "level": "info", "message": "Test case 1068: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1068, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:17:50Z", "level": "info", "message": "Test case 1069: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1069, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:17:51Z", "level": "info", "message": "Test case 1070: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1070, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:17:52Z", "level": "info", "message": "Test case 1071: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1071, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:17:53Z", "level": "info", "message": "Test case 1072: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1072, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:17:54Z", "level": "info", "message": "Test case 1073: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1073, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:17:55Z", "level": "info", "message": "Test case 1074: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1074, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:17:56Z", "level": "info", "message": "Test case 1075: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1075, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:17:57Z", "level": "info", "message": "Test case 1076: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1076, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:17:58Z", "level": "info", "message": "Test case 1077: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1077, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:17:59Z", "level": "info", "message": "Test case 1078: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1078, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:18:00Z", "level": "info", "message": "Test case 1079: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1079, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:18:01Z", "level": "info", "message": "Test case 1080: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1080, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:18:02Z", "level": "info", "message": "Test case 1081: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1081, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:18:03Z", "level": "info", "message": "Test case 1082: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1082, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:18:04Z", "level": "info", "message": "Test case 1083: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1083, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:18:05Z", "level": "info", "message": "Test case 1084: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1084, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:18:06Z", "level": "info", "message": "Test case 1085: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1085, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:18:07Z", "level": "info", "message": "Test case 1086: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1086, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:18:08Z", "level": "info", "message": "Test case 1087: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1087, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:18:09Z", "level": "info", "message": "Test case 1088: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1088, "data": "4iih"} +{"timestamp": "2024-01-01T00:18:10Z", "level": "info", "message": "Test case 1089: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1089, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:18:11Z", "level": "info", "message": "Test case 1090: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1090, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:18:12Z", "level": "info", "message": "Test case 1091: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1091, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:18:13Z", "level": "info", "message": "Test case 1092: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1092, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:18:14Z", "level": "info", "message": "Test case 1093: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1093, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:18:15Z", "level": "info", "message": "Test case 1094: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1094, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:18:16Z", "level": "info", "message": "Test case 1095: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1095, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:18:17Z", "level": "info", "message": "Test case 1096: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1096, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:18:18Z", "level": "info", "message": "Test case 1097: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1097, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:18:19Z", "level": "info", "message": "Test case 1098: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1098, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:18:20Z", "level": "info", "message": "Test case 1099: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1099, "data": "wg=="} +{"timestamp": "2024-01-01T00:18:21Z", "level": "info", "message": "Test case 1100: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1100, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:18:22Z", "level": "info", "message": "Test case 1101: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1101, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:18:23Z", "level": "info", "message": "Test case 1102: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1102, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:18:24Z", "level": "info", "message": "Test case 1103: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1103, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:18:25Z", "level": "info", "message": "Test case 1104: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1104, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:18:26Z", "level": "info", "message": "Test case 1105: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1105, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:18:27Z", "level": "info", "message": "Test case 1106: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1106, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:18:28Z", "level": "info", "message": "Test case 1107: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1107, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:18:29Z", "level": "info", "message": "Test case 1108: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1108, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:18:30Z", "level": "info", "message": "Test case 1109: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1109, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:18:31Z", "level": "info", "message": "Test case 1110: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1110, "data": "wIA="} +{"timestamp": "2024-01-01T00:18:32Z", "level": "info", "message": "Test case 1111: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1111, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:18:33Z", "level": "info", "message": "Test case 1112: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1112, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:18:34Z", "level": "info", "message": "Test case 1113: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1113, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:18:35Z", "level": "info", "message": "Test case 1114: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1114, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:18:36Z", "level": "info", "message": "Test case 1115: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1115, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:18:37Z", "level": "info", "message": "Test case 1116: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1116, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:18:38Z", "level": "info", "message": "Test case 1117: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1117, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:18:39Z", "level": "info", "message": "Test case 1118: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1118, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:18:40Z", "level": "info", "message": "Test case 1119: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1119, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:18:41Z", "level": "info", "message": "Test case 1120: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1120, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:18:42Z", "level": "info", "message": "Test case 1121: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1121, "data": "4ICA"} +{"timestamp": "2024-01-01T00:18:43Z", "level": "info", "message": "Test case 1122: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1122, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:18:44Z", "level": "info", "message": "Test case 1123: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1123, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:18:45Z", "level": "info", "message": "Test case 1124: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1124, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:18:46Z", "level": "info", "message": "Test case 1125: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1125, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:18:47Z", "level": "info", "message": "Test case 1126: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1126, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:18:48Z", "level": "info", "message": "Test case 1127: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1127, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:18:49Z", "level": "info", "message": "Test case 1128: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1128, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:18:50Z", "level": "info", "message": "Test case 1129: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1129, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:18:51Z", "level": "info", "message": "Test case 1130: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1130, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:18:52Z", "level": "info", "message": "Test case 1131: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1131, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:18:53Z", "level": "info", "message": "Test case 1132: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1132, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:18:54Z", "level": "info", "message": "Test case 1133: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1133, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:18:55Z", "level": "info", "message": "Test case 1134: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1134, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:18:56Z", "level": "info", "message": "Test case 1135: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1135, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:18:57Z", "level": "info", "message": "Test case 1136: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1136, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:18:58Z", "level": "info", "message": "Test case 1137: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1137, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:18:59Z", "level": "info", "message": "Test case 1138: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1138, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:19:00Z", "level": "info", "message": "Test case 1139: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1139, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:19:01Z", "level": "info", "message": "Test case 1140: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1140, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:19:02Z", "level": "info", "message": "Test case 1141: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1141, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:19:03Z", "level": "info", "message": "Test case 1142: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1142, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:19:04Z", "level": "info", "message": "Test case 1143: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1143, "data": "4iih"} +{"timestamp": "2024-01-01T00:19:05Z", "level": "info", "message": "Test case 1144: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1144, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:19:06Z", "level": "info", "message": "Test case 1145: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1145, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:19:07Z", "level": "info", "message": "Test case 1146: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1146, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:19:08Z", "level": "info", "message": "Test case 1147: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1147, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:19:09Z", "level": "info", "message": "Test case 1148: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1148, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:19:10Z", "level": "info", "message": "Test case 1149: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1149, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:19:11Z", "level": "info", "message": "Test case 1150: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1150, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:19:12Z", "level": "info", "message": "Test case 1151: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1151, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:19:13Z", "level": "info", "message": "Test case 1152: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1152, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:19:14Z", "level": "info", "message": "Test case 1153: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1153, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:19:15Z", "level": "info", "message": "Test case 1154: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1154, "data": "wg=="} +{"timestamp": "2024-01-01T00:19:16Z", "level": "info", "message": "Test case 1155: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1155, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:19:17Z", "level": "info", "message": "Test case 1156: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1156, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:19:18Z", "level": "info", "message": "Test case 1157: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1157, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:19:19Z", "level": "info", "message": "Test case 1158: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1158, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:19:20Z", "level": "info", "message": "Test case 1159: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1159, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:19:21Z", "level": "info", "message": "Test case 1160: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1160, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:19:22Z", "level": "info", "message": "Test case 1161: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1161, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:19:23Z", "level": "info", "message": "Test case 1162: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1162, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:19:24Z", "level": "info", "message": "Test case 1163: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1163, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:19:25Z", "level": "info", "message": "Test case 1164: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1164, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:19:26Z", "level": "info", "message": "Test case 1165: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1165, "data": "wIA="} +{"timestamp": "2024-01-01T00:19:27Z", "level": "info", "message": "Test case 1166: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1166, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:19:28Z", "level": "info", "message": "Test case 1167: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1167, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:19:29Z", "level": "info", "message": "Test case 1168: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1168, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:19:30Z", "level": "info", "message": "Test case 1169: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1169, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:19:31Z", "level": "info", "message": "Test case 1170: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1170, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:19:32Z", "level": "info", "message": "Test case 1171: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1171, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:19:33Z", "level": "info", "message": "Test case 1172: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1172, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:19:34Z", "level": "info", "message": "Test case 1173: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1173, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:19:35Z", "level": "info", "message": "Test case 1174: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1174, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:19:36Z", "level": "info", "message": "Test case 1175: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1175, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:19:37Z", "level": "info", "message": "Test case 1176: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1176, "data": "4ICA"} +{"timestamp": "2024-01-01T00:19:38Z", "level": "info", "message": "Test case 1177: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1177, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:19:39Z", "level": "info", "message": "Test case 1178: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1178, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:19:40Z", "level": "info", "message": "Test case 1179: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1179, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:19:41Z", "level": "info", "message": "Test case 1180: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1180, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:19:42Z", "level": "info", "message": "Test case 1181: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1181, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:19:43Z", "level": "info", "message": "Test case 1182: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1182, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:19:44Z", "level": "info", "message": "Test case 1183: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1183, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:19:45Z", "level": "info", "message": "Test case 1184: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1184, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:19:46Z", "level": "info", "message": "Test case 1185: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1185, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:19:47Z", "level": "info", "message": "Test case 1186: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1186, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:19:48Z", "level": "info", "message": "Test case 1187: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1187, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:19:49Z", "level": "info", "message": "Test case 1188: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1188, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:19:50Z", "level": "info", "message": "Test case 1189: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1189, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:19:51Z", "level": "info", "message": "Test case 1190: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1190, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:19:52Z", "level": "info", "message": "Test case 1191: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1191, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:19:53Z", "level": "info", "message": "Test case 1192: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1192, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:19:54Z", "level": "info", "message": "Test case 1193: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1193, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:19:55Z", "level": "info", "message": "Test case 1194: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1194, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:19:56Z", "level": "info", "message": "Test case 1195: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1195, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:19:57Z", "level": "info", "message": "Test case 1196: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1196, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:19:58Z", "level": "info", "message": "Test case 1197: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1197, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:19:59Z", "level": "info", "message": "Test case 1198: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1198, "data": "4iih"} +{"timestamp": "2024-01-01T00:20:00Z", "level": "info", "message": "Test case 1199: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1199, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:20:01Z", "level": "info", "message": "Test case 1200: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1200, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:20:02Z", "level": "info", "message": "Test case 1201: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1201, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:20:03Z", "level": "info", "message": "Test case 1202: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1202, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:20:04Z", "level": "info", "message": "Test case 1203: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1203, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:20:05Z", "level": "info", "message": "Test case 1204: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1204, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:20:06Z", "level": "info", "message": "Test case 1205: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1205, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:20:07Z", "level": "info", "message": "Test case 1206: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1206, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:20:08Z", "level": "info", "message": "Test case 1207: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1207, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:20:09Z", "level": "info", "message": "Test case 1208: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1208, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:20:10Z", "level": "info", "message": "Test case 1209: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1209, "data": "wg=="} +{"timestamp": "2024-01-01T00:20:11Z", "level": "info", "message": "Test case 1210: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1210, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:20:12Z", "level": "info", "message": "Test case 1211: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1211, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:20:13Z", "level": "info", "message": "Test case 1212: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1212, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:20:14Z", "level": "info", "message": "Test case 1213: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1213, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:20:15Z", "level": "info", "message": "Test case 1214: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1214, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:20:16Z", "level": "info", "message": "Test case 1215: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1215, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:20:17Z", "level": "info", "message": "Test case 1216: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1216, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:20:18Z", "level": "info", "message": "Test case 1217: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1217, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:20:19Z", "level": "info", "message": "Test case 1218: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1218, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:20:20Z", "level": "info", "message": "Test case 1219: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1219, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:20:21Z", "level": "info", "message": "Test case 1220: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1220, "data": "wIA="} +{"timestamp": "2024-01-01T00:20:22Z", "level": "info", "message": "Test case 1221: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1221, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:20:23Z", "level": "info", "message": "Test case 1222: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1222, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:20:24Z", "level": "info", "message": "Test case 1223: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1223, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:20:25Z", "level": "info", "message": "Test case 1224: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1224, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:20:26Z", "level": "info", "message": "Test case 1225: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1225, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:20:27Z", "level": "info", "message": "Test case 1226: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1226, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:20:28Z", "level": "info", "message": "Test case 1227: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1227, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:20:29Z", "level": "info", "message": "Test case 1228: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1228, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:20:30Z", "level": "info", "message": "Test case 1229: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1229, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:20:31Z", "level": "info", "message": "Test case 1230: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1230, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:20:32Z", "level": "info", "message": "Test case 1231: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1231, "data": "4ICA"} +{"timestamp": "2024-01-01T00:20:33Z", "level": "info", "message": "Test case 1232: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1232, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:20:34Z", "level": "info", "message": "Test case 1233: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1233, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:20:35Z", "level": "info", "message": "Test case 1234: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1234, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:20:36Z", "level": "info", "message": "Test case 1235: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1235, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:20:37Z", "level": "info", "message": "Test case 1236: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1236, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:20:38Z", "level": "info", "message": "Test case 1237: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1237, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:20:39Z", "level": "info", "message": "Test case 1238: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1238, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:20:40Z", "level": "info", "message": "Test case 1239: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1239, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:20:41Z", "level": "info", "message": "Test case 1240: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1240, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:20:42Z", "level": "info", "message": "Test case 1241: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1241, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:20:43Z", "level": "info", "message": "Test case 1242: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1242, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:20:44Z", "level": "info", "message": "Test case 1243: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1243, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:20:45Z", "level": "info", "message": "Test case 1244: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1244, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:20:46Z", "level": "info", "message": "Test case 1245: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1245, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:20:47Z", "level": "info", "message": "Test case 1246: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1246, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:20:48Z", "level": "info", "message": "Test case 1247: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1247, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:20:49Z", "level": "info", "message": "Test case 1248: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1248, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:20:50Z", "level": "info", "message": "Test case 1249: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1249, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:20:51Z", "level": "info", "message": "Test case 1250: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1250, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:20:52Z", "level": "info", "message": "Test case 1251: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1251, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:20:53Z", "level": "info", "message": "Test case 1252: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1252, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:20:54Z", "level": "info", "message": "Test case 1253: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1253, "data": "4iih"} +{"timestamp": "2024-01-01T00:20:55Z", "level": "info", "message": "Test case 1254: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1254, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:20:56Z", "level": "info", "message": "Test case 1255: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1255, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:20:57Z", "level": "info", "message": "Test case 1256: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1256, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:20:58Z", "level": "info", "message": "Test case 1257: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1257, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:20:59Z", "level": "info", "message": "Test case 1258: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1258, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:21:00Z", "level": "info", "message": "Test case 1259: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1259, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:21:01Z", "level": "info", "message": "Test case 1260: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1260, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:21:02Z", "level": "info", "message": "Test case 1261: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1261, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:21:03Z", "level": "info", "message": "Test case 1262: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1262, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:21:04Z", "level": "info", "message": "Test case 1263: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1263, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:21:05Z", "level": "info", "message": "Test case 1264: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1264, "data": "wg=="} +{"timestamp": "2024-01-01T00:21:06Z", "level": "info", "message": "Test case 1265: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1265, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:21:07Z", "level": "info", "message": "Test case 1266: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1266, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:21:08Z", "level": "info", "message": "Test case 1267: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1267, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:21:09Z", "level": "info", "message": "Test case 1268: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1268, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:21:10Z", "level": "info", "message": "Test case 1269: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1269, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:21:11Z", "level": "info", "message": "Test case 1270: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1270, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:21:12Z", "level": "info", "message": "Test case 1271: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1271, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:21:13Z", "level": "info", "message": "Test case 1272: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1272, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:21:14Z", "level": "info", "message": "Test case 1273: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1273, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:21:15Z", "level": "info", "message": "Test case 1274: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1274, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:21:16Z", "level": "info", "message": "Test case 1275: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1275, "data": "wIA="} +{"timestamp": "2024-01-01T00:21:17Z", "level": "info", "message": "Test case 1276: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1276, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:21:18Z", "level": "info", "message": "Test case 1277: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1277, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:21:19Z", "level": "info", "message": "Test case 1278: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1278, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:21:20Z", "level": "info", "message": "Test case 1279: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1279, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:21:21Z", "level": "info", "message": "Test case 1280: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1280, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:21:22Z", "level": "info", "message": "Test case 1281: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1281, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:21:23Z", "level": "info", "message": "Test case 1282: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1282, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:21:24Z", "level": "info", "message": "Test case 1283: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1283, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:21:25Z", "level": "info", "message": "Test case 1284: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1284, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:21:26Z", "level": "info", "message": "Test case 1285: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1285, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:21:27Z", "level": "info", "message": "Test case 1286: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1286, "data": "4ICA"} +{"timestamp": "2024-01-01T00:21:28Z", "level": "info", "message": "Test case 1287: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1287, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:21:29Z", "level": "info", "message": "Test case 1288: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1288, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:21:30Z", "level": "info", "message": "Test case 1289: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1289, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:21:31Z", "level": "info", "message": "Test case 1290: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1290, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:21:32Z", "level": "info", "message": "Test case 1291: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1291, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:21:33Z", "level": "info", "message": "Test case 1292: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1292, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:21:34Z", "level": "info", "message": "Test case 1293: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1293, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:21:35Z", "level": "info", "message": "Test case 1294: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1294, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:21:36Z", "level": "info", "message": "Test case 1295: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1295, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:21:37Z", "level": "info", "message": "Test case 1296: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1296, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:21:38Z", "level": "info", "message": "Test case 1297: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1297, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:21:39Z", "level": "info", "message": "Test case 1298: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1298, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:21:40Z", "level": "info", "message": "Test case 1299: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1299, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:21:41Z", "level": "info", "message": "Test case 1300: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1300, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:21:42Z", "level": "info", "message": "Test case 1301: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1301, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:21:43Z", "level": "info", "message": "Test case 1302: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1302, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:21:44Z", "level": "info", "message": "Test case 1303: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1303, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:21:45Z", "level": "info", "message": "Test case 1304: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1304, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:21:46Z", "level": "info", "message": "Test case 1305: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1305, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:21:47Z", "level": "info", "message": "Test case 1306: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1306, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:21:48Z", "level": "info", "message": "Test case 1307: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1307, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:21:49Z", "level": "info", "message": "Test case 1308: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1308, "data": "4iih"} +{"timestamp": "2024-01-01T00:21:50Z", "level": "info", "message": "Test case 1309: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1309, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:21:51Z", "level": "info", "message": "Test case 1310: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1310, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:21:52Z", "level": "info", "message": "Test case 1311: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1311, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:21:53Z", "level": "info", "message": "Test case 1312: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1312, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:21:54Z", "level": "info", "message": "Test case 1313: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1313, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:21:55Z", "level": "info", "message": "Test case 1314: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1314, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:21:56Z", "level": "info", "message": "Test case 1315: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1315, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:21:57Z", "level": "info", "message": "Test case 1316: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1316, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:21:58Z", "level": "info", "message": "Test case 1317: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1317, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:21:59Z", "level": "info", "message": "Test case 1318: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1318, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:22:00Z", "level": "info", "message": "Test case 1319: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1319, "data": "wg=="} +{"timestamp": "2024-01-01T00:22:01Z", "level": "info", "message": "Test case 1320: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1320, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:22:02Z", "level": "info", "message": "Test case 1321: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1321, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:22:03Z", "level": "info", "message": "Test case 1322: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1322, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:22:04Z", "level": "info", "message": "Test case 1323: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1323, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:22:05Z", "level": "info", "message": "Test case 1324: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1324, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:22:06Z", "level": "info", "message": "Test case 1325: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1325, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:22:07Z", "level": "info", "message": "Test case 1326: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1326, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:22:08Z", "level": "info", "message": "Test case 1327: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1327, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:22:09Z", "level": "info", "message": "Test case 1328: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1328, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:22:10Z", "level": "info", "message": "Test case 1329: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1329, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:22:11Z", "level": "info", "message": "Test case 1330: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1330, "data": "wIA="} +{"timestamp": "2024-01-01T00:22:12Z", "level": "info", "message": "Test case 1331: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1331, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:22:13Z", "level": "info", "message": "Test case 1332: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1332, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:22:14Z", "level": "info", "message": "Test case 1333: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1333, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:22:15Z", "level": "info", "message": "Test case 1334: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1334, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:22:16Z", "level": "info", "message": "Test case 1335: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1335, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:22:17Z", "level": "info", "message": "Test case 1336: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1336, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:22:18Z", "level": "info", "message": "Test case 1337: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1337, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:22:19Z", "level": "info", "message": "Test case 1338: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1338, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:22:20Z", "level": "info", "message": "Test case 1339: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1339, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:22:21Z", "level": "info", "message": "Test case 1340: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1340, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:22:22Z", "level": "info", "message": "Test case 1341: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1341, "data": "4ICA"} +{"timestamp": "2024-01-01T00:22:23Z", "level": "info", "message": "Test case 1342: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1342, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:22:24Z", "level": "info", "message": "Test case 1343: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1343, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:22:25Z", "level": "info", "message": "Test case 1344: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1344, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:22:26Z", "level": "info", "message": "Test case 1345: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1345, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:22:27Z", "level": "info", "message": "Test case 1346: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1346, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:22:28Z", "level": "info", "message": "Test case 1347: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1347, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:22:29Z", "level": "info", "message": "Test case 1348: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1348, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:22:30Z", "level": "info", "message": "Test case 1349: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1349, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:22:31Z", "level": "info", "message": "Test case 1350: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1350, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:22:32Z", "level": "info", "message": "Test case 1351: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1351, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:22:33Z", "level": "info", "message": "Test case 1352: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1352, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:22:34Z", "level": "info", "message": "Test case 1353: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1353, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:22:35Z", "level": "info", "message": "Test case 1354: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1354, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:22:36Z", "level": "info", "message": "Test case 1355: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1355, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:22:37Z", "level": "info", "message": "Test case 1356: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1356, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:22:38Z", "level": "info", "message": "Test case 1357: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1357, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:22:39Z", "level": "info", "message": "Test case 1358: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1358, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:22:40Z", "level": "info", "message": "Test case 1359: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1359, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:22:41Z", "level": "info", "message": "Test case 1360: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1360, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:22:42Z", "level": "info", "message": "Test case 1361: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1361, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:22:43Z", "level": "info", "message": "Test case 1362: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1362, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:22:44Z", "level": "info", "message": "Test case 1363: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1363, "data": "4iih"} +{"timestamp": "2024-01-01T00:22:45Z", "level": "info", "message": "Test case 1364: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1364, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:22:46Z", "level": "info", "message": "Test case 1365: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1365, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:22:47Z", "level": "info", "message": "Test case 1366: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1366, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:22:48Z", "level": "info", "message": "Test case 1367: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1367, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:22:49Z", "level": "info", "message": "Test case 1368: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1368, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:22:50Z", "level": "info", "message": "Test case 1369: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1369, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:22:51Z", "level": "info", "message": "Test case 1370: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1370, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:22:52Z", "level": "info", "message": "Test case 1371: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1371, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:22:53Z", "level": "info", "message": "Test case 1372: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1372, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:22:54Z", "level": "info", "message": "Test case 1373: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1373, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:22:55Z", "level": "info", "message": "Test case 1374: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1374, "data": "wg=="} +{"timestamp": "2024-01-01T00:22:56Z", "level": "info", "message": "Test case 1375: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1375, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:22:57Z", "level": "info", "message": "Test case 1376: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1376, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:22:58Z", "level": "info", "message": "Test case 1377: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1377, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:22:59Z", "level": "info", "message": "Test case 1378: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1378, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:23:00Z", "level": "info", "message": "Test case 1379: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1379, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:23:01Z", "level": "info", "message": "Test case 1380: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1380, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:23:02Z", "level": "info", "message": "Test case 1381: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1381, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:23:03Z", "level": "info", "message": "Test case 1382: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1382, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:23:04Z", "level": "info", "message": "Test case 1383: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1383, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:23:05Z", "level": "info", "message": "Test case 1384: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1384, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:23:06Z", "level": "info", "message": "Test case 1385: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1385, "data": "wIA="} +{"timestamp": "2024-01-01T00:23:07Z", "level": "info", "message": "Test case 1386: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1386, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:23:08Z", "level": "info", "message": "Test case 1387: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1387, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:23:09Z", "level": "info", "message": "Test case 1388: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1388, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:23:10Z", "level": "info", "message": "Test case 1389: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1389, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:23:11Z", "level": "info", "message": "Test case 1390: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1390, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:23:12Z", "level": "info", "message": "Test case 1391: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1391, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:23:13Z", "level": "info", "message": "Test case 1392: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1392, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:23:14Z", "level": "info", "message": "Test case 1393: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1393, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:23:15Z", "level": "info", "message": "Test case 1394: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1394, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:23:16Z", "level": "info", "message": "Test case 1395: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1395, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:23:17Z", "level": "info", "message": "Test case 1396: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1396, "data": "4ICA"} +{"timestamp": "2024-01-01T00:23:18Z", "level": "info", "message": "Test case 1397: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1397, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:23:19Z", "level": "info", "message": "Test case 1398: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1398, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:23:20Z", "level": "info", "message": "Test case 1399: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1399, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:23:21Z", "level": "info", "message": "Test case 1400: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1400, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:23:22Z", "level": "info", "message": "Test case 1401: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1401, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:23:23Z", "level": "info", "message": "Test case 1402: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1402, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:23:24Z", "level": "info", "message": "Test case 1403: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1403, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:23:25Z", "level": "info", "message": "Test case 1404: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1404, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:23:26Z", "level": "info", "message": "Test case 1405: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1405, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:23:27Z", "level": "info", "message": "Test case 1406: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1406, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:23:28Z", "level": "info", "message": "Test case 1407: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1407, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:23:29Z", "level": "info", "message": "Test case 1408: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1408, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:23:30Z", "level": "info", "message": "Test case 1409: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1409, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:23:31Z", "level": "info", "message": "Test case 1410: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1410, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:23:32Z", "level": "info", "message": "Test case 1411: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1411, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:23:33Z", "level": "info", "message": "Test case 1412: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1412, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:23:34Z", "level": "info", "message": "Test case 1413: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1413, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:23:35Z", "level": "info", "message": "Test case 1414: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1414, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:23:36Z", "level": "info", "message": "Test case 1415: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1415, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:23:37Z", "level": "info", "message": "Test case 1416: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1416, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:23:38Z", "level": "info", "message": "Test case 1417: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1417, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:23:39Z", "level": "info", "message": "Test case 1418: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1418, "data": "4iih"} +{"timestamp": "2024-01-01T00:23:40Z", "level": "info", "message": "Test case 1419: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1419, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:23:41Z", "level": "info", "message": "Test case 1420: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1420, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:23:42Z", "level": "info", "message": "Test case 1421: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1421, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:23:43Z", "level": "info", "message": "Test case 1422: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1422, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:23:44Z", "level": "info", "message": "Test case 1423: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1423, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:23:45Z", "level": "info", "message": "Test case 1424: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1424, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:23:46Z", "level": "info", "message": "Test case 1425: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1425, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:23:47Z", "level": "info", "message": "Test case 1426: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1426, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:23:48Z", "level": "info", "message": "Test case 1427: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1427, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:23:49Z", "level": "info", "message": "Test case 1428: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1428, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:23:50Z", "level": "info", "message": "Test case 1429: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1429, "data": "wg=="} +{"timestamp": "2024-01-01T00:23:51Z", "level": "info", "message": "Test case 1430: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1430, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:23:52Z", "level": "info", "message": "Test case 1431: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1431, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:23:53Z", "level": "info", "message": "Test case 1432: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1432, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:23:54Z", "level": "info", "message": "Test case 1433: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1433, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:23:55Z", "level": "info", "message": "Test case 1434: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1434, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:23:56Z", "level": "info", "message": "Test case 1435: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1435, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:23:57Z", "level": "info", "message": "Test case 1436: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1436, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:23:58Z", "level": "info", "message": "Test case 1437: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1437, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:23:59Z", "level": "info", "message": "Test case 1438: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1438, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:24:00Z", "level": "info", "message": "Test case 1439: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1439, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:24:01Z", "level": "info", "message": "Test case 1440: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1440, "data": "wIA="} +{"timestamp": "2024-01-01T00:24:02Z", "level": "info", "message": "Test case 1441: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1441, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:24:03Z", "level": "info", "message": "Test case 1442: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1442, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:24:04Z", "level": "info", "message": "Test case 1443: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1443, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:24:05Z", "level": "info", "message": "Test case 1444: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1444, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:24:06Z", "level": "info", "message": "Test case 1445: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1445, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:24:07Z", "level": "info", "message": "Test case 1446: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1446, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:24:08Z", "level": "info", "message": "Test case 1447: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1447, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:24:09Z", "level": "info", "message": "Test case 1448: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1448, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:24:10Z", "level": "info", "message": "Test case 1449: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1449, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:24:11Z", "level": "info", "message": "Test case 1450: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1450, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:24:12Z", "level": "info", "message": "Test case 1451: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1451, "data": "4ICA"} +{"timestamp": "2024-01-01T00:24:13Z", "level": "info", "message": "Test case 1452: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1452, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:24:14Z", "level": "info", "message": "Test case 1453: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1453, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:24:15Z", "level": "info", "message": "Test case 1454: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1454, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:24:16Z", "level": "info", "message": "Test case 1455: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1455, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:24:17Z", "level": "info", "message": "Test case 1456: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1456, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:24:18Z", "level": "info", "message": "Test case 1457: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1457, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:24:19Z", "level": "info", "message": "Test case 1458: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1458, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:24:20Z", "level": "info", "message": "Test case 1459: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1459, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:24:21Z", "level": "info", "message": "Test case 1460: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1460, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:24:22Z", "level": "info", "message": "Test case 1461: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1461, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:24:23Z", "level": "info", "message": "Test case 1462: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1462, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:24:24Z", "level": "info", "message": "Test case 1463: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1463, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:24:25Z", "level": "info", "message": "Test case 1464: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1464, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:24:26Z", "level": "info", "message": "Test case 1465: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1465, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:24:27Z", "level": "info", "message": "Test case 1466: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1466, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:24:28Z", "level": "info", "message": "Test case 1467: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1467, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:24:29Z", "level": "info", "message": "Test case 1468: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1468, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:24:30Z", "level": "info", "message": "Test case 1469: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1469, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:24:31Z", "level": "info", "message": "Test case 1470: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1470, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:24:32Z", "level": "info", "message": "Test case 1471: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1471, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:24:33Z", "level": "info", "message": "Test case 1472: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1472, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:24:34Z", "level": "info", "message": "Test case 1473: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1473, "data": "4iih"} +{"timestamp": "2024-01-01T00:24:35Z", "level": "info", "message": "Test case 1474: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1474, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:24:36Z", "level": "info", "message": "Test case 1475: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1475, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:24:37Z", "level": "info", "message": "Test case 1476: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1476, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:24:38Z", "level": "info", "message": "Test case 1477: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1477, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:24:39Z", "level": "info", "message": "Test case 1478: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1478, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:24:40Z", "level": "info", "message": "Test case 1479: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1479, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:24:41Z", "level": "info", "message": "Test case 1480: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1480, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:24:42Z", "level": "info", "message": "Test case 1481: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1481, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:24:43Z", "level": "info", "message": "Test case 1482: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1482, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:24:44Z", "level": "info", "message": "Test case 1483: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1483, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:24:45Z", "level": "info", "message": "Test case 1484: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1484, "data": "wg=="} +{"timestamp": "2024-01-01T00:24:46Z", "level": "info", "message": "Test case 1485: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1485, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:24:47Z", "level": "info", "message": "Test case 1486: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1486, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:24:48Z", "level": "info", "message": "Test case 1487: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1487, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:24:49Z", "level": "info", "message": "Test case 1488: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1488, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:24:50Z", "level": "info", "message": "Test case 1489: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1489, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:24:51Z", "level": "info", "message": "Test case 1490: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1490, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:24:52Z", "level": "info", "message": "Test case 1491: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1491, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:24:53Z", "level": "info", "message": "Test case 1492: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1492, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:24:54Z", "level": "info", "message": "Test case 1493: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1493, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:24:55Z", "level": "info", "message": "Test case 1494: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1494, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:24:56Z", "level": "info", "message": "Test case 1495: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1495, "data": "wIA="} +{"timestamp": "2024-01-01T00:24:57Z", "level": "info", "message": "Test case 1496: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1496, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:24:58Z", "level": "info", "message": "Test case 1497: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1497, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:24:59Z", "level": "info", "message": "Test case 1498: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1498, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:25:00Z", "level": "info", "message": "Test case 1499: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1499, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:25:01Z", "level": "info", "message": "Test case 1500: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1500, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:25:02Z", "level": "info", "message": "Test case 1501: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1501, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:25:03Z", "level": "info", "message": "Test case 1502: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1502, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:25:04Z", "level": "info", "message": "Test case 1503: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1503, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:25:05Z", "level": "info", "message": "Test case 1504: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1504, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:25:06Z", "level": "info", "message": "Test case 1505: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1505, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:25:07Z", "level": "info", "message": "Test case 1506: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1506, "data": "4ICA"} +{"timestamp": "2024-01-01T00:25:08Z", "level": "info", "message": "Test case 1507: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1507, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:25:09Z", "level": "info", "message": "Test case 1508: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1508, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:25:10Z", "level": "info", "message": "Test case 1509: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1509, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:25:11Z", "level": "info", "message": "Test case 1510: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1510, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:25:12Z", "level": "info", "message": "Test case 1511: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1511, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:25:13Z", "level": "info", "message": "Test case 1512: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1512, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:25:14Z", "level": "info", "message": "Test case 1513: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1513, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:25:15Z", "level": "info", "message": "Test case 1514: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1514, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:25:16Z", "level": "info", "message": "Test case 1515: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1515, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:25:17Z", "level": "info", "message": "Test case 1516: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1516, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:25:18Z", "level": "info", "message": "Test case 1517: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1517, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:25:19Z", "level": "info", "message": "Test case 1518: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1518, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:25:20Z", "level": "info", "message": "Test case 1519: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1519, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:25:21Z", "level": "info", "message": "Test case 1520: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1520, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:25:22Z", "level": "info", "message": "Test case 1521: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1521, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:25:23Z", "level": "info", "message": "Test case 1522: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1522, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:25:24Z", "level": "info", "message": "Test case 1523: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1523, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:25:25Z", "level": "info", "message": "Test case 1524: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1524, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:25:26Z", "level": "info", "message": "Test case 1525: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1525, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:25:27Z", "level": "info", "message": "Test case 1526: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1526, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:25:28Z", "level": "info", "message": "Test case 1527: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1527, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:25:29Z", "level": "info", "message": "Test case 1528: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1528, "data": "4iih"} +{"timestamp": "2024-01-01T00:25:30Z", "level": "info", "message": "Test case 1529: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1529, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:25:31Z", "level": "info", "message": "Test case 1530: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1530, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:25:32Z", "level": "info", "message": "Test case 1531: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1531, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:25:33Z", "level": "info", "message": "Test case 1532: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1532, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:25:34Z", "level": "info", "message": "Test case 1533: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1533, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:25:35Z", "level": "info", "message": "Test case 1534: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1534, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:25:36Z", "level": "info", "message": "Test case 1535: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1535, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:25:37Z", "level": "info", "message": "Test case 1536: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1536, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:25:38Z", "level": "info", "message": "Test case 1537: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1537, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:25:39Z", "level": "info", "message": "Test case 1538: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1538, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:25:40Z", "level": "info", "message": "Test case 1539: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1539, "data": "wg=="} +{"timestamp": "2024-01-01T00:25:41Z", "level": "info", "message": "Test case 1540: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1540, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:25:42Z", "level": "info", "message": "Test case 1541: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1541, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:25:43Z", "level": "info", "message": "Test case 1542: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1542, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:25:44Z", "level": "info", "message": "Test case 1543: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1543, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:25:45Z", "level": "info", "message": "Test case 1544: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1544, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:25:46Z", "level": "info", "message": "Test case 1545: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1545, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:25:47Z", "level": "info", "message": "Test case 1546: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1546, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:25:48Z", "level": "info", "message": "Test case 1547: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1547, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:25:49Z", "level": "info", "message": "Test case 1548: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1548, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:25:50Z", "level": "info", "message": "Test case 1549: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1549, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:25:51Z", "level": "info", "message": "Test case 1550: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1550, "data": "wIA="} +{"timestamp": "2024-01-01T00:25:52Z", "level": "info", "message": "Test case 1551: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1551, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:25:53Z", "level": "info", "message": "Test case 1552: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1552, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:25:54Z", "level": "info", "message": "Test case 1553: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1553, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:25:55Z", "level": "info", "message": "Test case 1554: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1554, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:25:56Z", "level": "info", "message": "Test case 1555: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1555, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:25:57Z", "level": "info", "message": "Test case 1556: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1556, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:25:58Z", "level": "info", "message": "Test case 1557: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1557, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:25:59Z", "level": "info", "message": "Test case 1558: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1558, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:26:00Z", "level": "info", "message": "Test case 1559: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1559, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:26:01Z", "level": "info", "message": "Test case 1560: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1560, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:26:02Z", "level": "info", "message": "Test case 1561: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1561, "data": "4ICA"} +{"timestamp": "2024-01-01T00:26:03Z", "level": "info", "message": "Test case 1562: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1562, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:26:04Z", "level": "info", "message": "Test case 1563: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1563, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:26:05Z", "level": "info", "message": "Test case 1564: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1564, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:26:06Z", "level": "info", "message": "Test case 1565: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1565, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:26:07Z", "level": "info", "message": "Test case 1566: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1566, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:26:08Z", "level": "info", "message": "Test case 1567: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1567, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:26:09Z", "level": "info", "message": "Test case 1568: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1568, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:26:10Z", "level": "info", "message": "Test case 1569: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1569, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:26:11Z", "level": "info", "message": "Test case 1570: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1570, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:26:12Z", "level": "info", "message": "Test case 1571: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1571, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:26:13Z", "level": "info", "message": "Test case 1572: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1572, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:26:14Z", "level": "info", "message": "Test case 1573: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1573, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:26:15Z", "level": "info", "message": "Test case 1574: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1574, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:26:16Z", "level": "info", "message": "Test case 1575: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1575, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:26:17Z", "level": "info", "message": "Test case 1576: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1576, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:26:18Z", "level": "info", "message": "Test case 1577: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1577, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:26:19Z", "level": "info", "message": "Test case 1578: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1578, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:26:20Z", "level": "info", "message": "Test case 1579: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1579, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:26:21Z", "level": "info", "message": "Test case 1580: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1580, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:26:22Z", "level": "info", "message": "Test case 1581: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1581, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:26:23Z", "level": "info", "message": "Test case 1582: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1582, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:26:24Z", "level": "info", "message": "Test case 1583: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1583, "data": "4iih"} +{"timestamp": "2024-01-01T00:26:25Z", "level": "info", "message": "Test case 1584: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1584, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:26:26Z", "level": "info", "message": "Test case 1585: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1585, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:26:27Z", "level": "info", "message": "Test case 1586: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1586, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:26:28Z", "level": "info", "message": "Test case 1587: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1587, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:26:29Z", "level": "info", "message": "Test case 1588: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1588, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:26:30Z", "level": "info", "message": "Test case 1589: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1589, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:26:31Z", "level": "info", "message": "Test case 1590: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1590, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:26:32Z", "level": "info", "message": "Test case 1591: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1591, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:26:33Z", "level": "info", "message": "Test case 1592: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1592, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:26:34Z", "level": "info", "message": "Test case 1593: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1593, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:26:35Z", "level": "info", "message": "Test case 1594: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1594, "data": "wg=="} +{"timestamp": "2024-01-01T00:26:36Z", "level": "info", "message": "Test case 1595: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1595, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:26:37Z", "level": "info", "message": "Test case 1596: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1596, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:26:38Z", "level": "info", "message": "Test case 1597: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1597, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:26:39Z", "level": "info", "message": "Test case 1598: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1598, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:26:40Z", "level": "info", "message": "Test case 1599: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1599, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:26:41Z", "level": "info", "message": "Test case 1600: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1600, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:26:42Z", "level": "info", "message": "Test case 1601: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1601, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:26:43Z", "level": "info", "message": "Test case 1602: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1602, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:26:44Z", "level": "info", "message": "Test case 1603: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1603, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:26:45Z", "level": "info", "message": "Test case 1604: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1604, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:26:46Z", "level": "info", "message": "Test case 1605: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1605, "data": "wIA="} +{"timestamp": "2024-01-01T00:26:47Z", "level": "info", "message": "Test case 1606: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1606, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:26:48Z", "level": "info", "message": "Test case 1607: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1607, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:26:49Z", "level": "info", "message": "Test case 1608: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1608, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:26:50Z", "level": "info", "message": "Test case 1609: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1609, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:26:51Z", "level": "info", "message": "Test case 1610: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1610, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:26:52Z", "level": "info", "message": "Test case 1611: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1611, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:26:53Z", "level": "info", "message": "Test case 1612: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1612, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:26:54Z", "level": "info", "message": "Test case 1613: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1613, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:26:55Z", "level": "info", "message": "Test case 1614: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1614, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:26:56Z", "level": "info", "message": "Test case 1615: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1615, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:26:57Z", "level": "info", "message": "Test case 1616: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1616, "data": "4ICA"} +{"timestamp": "2024-01-01T00:26:58Z", "level": "info", "message": "Test case 1617: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1617, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:26:59Z", "level": "info", "message": "Test case 1618: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1618, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:27:00Z", "level": "info", "message": "Test case 1619: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1619, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:27:01Z", "level": "info", "message": "Test case 1620: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1620, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:27:02Z", "level": "info", "message": "Test case 1621: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1621, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:27:03Z", "level": "info", "message": "Test case 1622: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1622, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:27:04Z", "level": "info", "message": "Test case 1623: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1623, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:27:05Z", "level": "info", "message": "Test case 1624: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1624, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:27:06Z", "level": "info", "message": "Test case 1625: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1625, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:27:07Z", "level": "info", "message": "Test case 1626: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1626, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:27:08Z", "level": "info", "message": "Test case 1627: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1627, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:27:09Z", "level": "info", "message": "Test case 1628: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1628, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:27:10Z", "level": "info", "message": "Test case 1629: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1629, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:27:11Z", "level": "info", "message": "Test case 1630: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1630, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:27:12Z", "level": "info", "message": "Test case 1631: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1631, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:27:13Z", "level": "info", "message": "Test case 1632: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1632, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:27:14Z", "level": "info", "message": "Test case 1633: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1633, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:27:15Z", "level": "info", "message": "Test case 1634: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1634, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:27:16Z", "level": "info", "message": "Test case 1635: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1635, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:27:17Z", "level": "info", "message": "Test case 1636: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1636, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:27:18Z", "level": "info", "message": "Test case 1637: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1637, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:27:19Z", "level": "info", "message": "Test case 1638: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1638, "data": "4iih"} +{"timestamp": "2024-01-01T00:27:20Z", "level": "info", "message": "Test case 1639: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1639, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:27:21Z", "level": "info", "message": "Test case 1640: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1640, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:27:22Z", "level": "info", "message": "Test case 1641: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1641, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:27:23Z", "level": "info", "message": "Test case 1642: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1642, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:27:24Z", "level": "info", "message": "Test case 1643: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1643, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:27:25Z", "level": "info", "message": "Test case 1644: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1644, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:27:26Z", "level": "info", "message": "Test case 1645: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1645, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:27:27Z", "level": "info", "message": "Test case 1646: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1646, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:27:28Z", "level": "info", "message": "Test case 1647: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1647, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:27:29Z", "level": "info", "message": "Test case 1648: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1648, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:27:30Z", "level": "info", "message": "Test case 1649: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1649, "data": "wg=="} +{"timestamp": "2024-01-01T00:27:31Z", "level": "info", "message": "Test case 1650: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1650, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:27:32Z", "level": "info", "message": "Test case 1651: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1651, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:27:33Z", "level": "info", "message": "Test case 1652: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1652, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:27:34Z", "level": "info", "message": "Test case 1653: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1653, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:27:35Z", "level": "info", "message": "Test case 1654: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1654, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:27:36Z", "level": "info", "message": "Test case 1655: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1655, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:27:37Z", "level": "info", "message": "Test case 1656: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1656, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:27:38Z", "level": "info", "message": "Test case 1657: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1657, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:27:39Z", "level": "info", "message": "Test case 1658: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1658, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:27:40Z", "level": "info", "message": "Test case 1659: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1659, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:27:41Z", "level": "info", "message": "Test case 1660: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1660, "data": "wIA="} +{"timestamp": "2024-01-01T00:27:42Z", "level": "info", "message": "Test case 1661: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1661, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:27:43Z", "level": "info", "message": "Test case 1662: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1662, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:27:44Z", "level": "info", "message": "Test case 1663: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1663, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:27:45Z", "level": "info", "message": "Test case 1664: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1664, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:27:46Z", "level": "info", "message": "Test case 1665: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1665, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:27:47Z", "level": "info", "message": "Test case 1666: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1666, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:27:48Z", "level": "info", "message": "Test case 1667: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1667, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:27:49Z", "level": "info", "message": "Test case 1668: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1668, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:27:50Z", "level": "info", "message": "Test case 1669: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1669, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:27:51Z", "level": "info", "message": "Test case 1670: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1670, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:27:52Z", "level": "info", "message": "Test case 1671: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1671, "data": "4ICA"} +{"timestamp": "2024-01-01T00:27:53Z", "level": "info", "message": "Test case 1672: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1672, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:27:54Z", "level": "info", "message": "Test case 1673: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1673, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:27:55Z", "level": "info", "message": "Test case 1674: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1674, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:27:56Z", "level": "info", "message": "Test case 1675: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1675, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:27:57Z", "level": "info", "message": "Test case 1676: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1676, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:27:58Z", "level": "info", "message": "Test case 1677: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1677, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:27:59Z", "level": "info", "message": "Test case 1678: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1678, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:28:00Z", "level": "info", "message": "Test case 1679: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1679, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:28:01Z", "level": "info", "message": "Test case 1680: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1680, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:28:02Z", "level": "info", "message": "Test case 1681: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1681, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:28:03Z", "level": "info", "message": "Test case 1682: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1682, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:28:04Z", "level": "info", "message": "Test case 1683: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1683, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:28:05Z", "level": "info", "message": "Test case 1684: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1684, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:28:06Z", "level": "info", "message": "Test case 1685: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1685, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:28:07Z", "level": "info", "message": "Test case 1686: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1686, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:28:08Z", "level": "info", "message": "Test case 1687: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1687, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:28:09Z", "level": "info", "message": "Test case 1688: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1688, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:28:10Z", "level": "info", "message": "Test case 1689: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1689, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:28:11Z", "level": "info", "message": "Test case 1690: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1690, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:28:12Z", "level": "info", "message": "Test case 1691: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1691, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:28:13Z", "level": "info", "message": "Test case 1692: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1692, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:28:14Z", "level": "info", "message": "Test case 1693: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1693, "data": "4iih"} +{"timestamp": "2024-01-01T00:28:15Z", "level": "info", "message": "Test case 1694: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1694, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:28:16Z", "level": "info", "message": "Test case 1695: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1695, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:28:17Z", "level": "info", "message": "Test case 1696: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1696, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:28:18Z", "level": "info", "message": "Test case 1697: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1697, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:28:19Z", "level": "info", "message": "Test case 1698: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1698, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:28:20Z", "level": "info", "message": "Test case 1699: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1699, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:28:21Z", "level": "info", "message": "Test case 1700: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1700, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:28:22Z", "level": "info", "message": "Test case 1701: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1701, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:28:23Z", "level": "info", "message": "Test case 1702: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1702, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:28:24Z", "level": "info", "message": "Test case 1703: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1703, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:28:25Z", "level": "info", "message": "Test case 1704: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1704, "data": "wg=="} +{"timestamp": "2024-01-01T00:28:26Z", "level": "info", "message": "Test case 1705: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1705, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:28:27Z", "level": "info", "message": "Test case 1706: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1706, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:28:28Z", "level": "info", "message": "Test case 1707: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1707, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:28:29Z", "level": "info", "message": "Test case 1708: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1708, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:28:30Z", "level": "info", "message": "Test case 1709: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1709, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:28:31Z", "level": "info", "message": "Test case 1710: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1710, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:28:32Z", "level": "info", "message": "Test case 1711: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1711, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:28:33Z", "level": "info", "message": "Test case 1712: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1712, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:28:34Z", "level": "info", "message": "Test case 1713: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1713, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:28:35Z", "level": "info", "message": "Test case 1714: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1714, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:28:36Z", "level": "info", "message": "Test case 1715: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1715, "data": "wIA="} +{"timestamp": "2024-01-01T00:28:37Z", "level": "info", "message": "Test case 1716: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1716, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:28:38Z", "level": "info", "message": "Test case 1717: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1717, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:28:39Z", "level": "info", "message": "Test case 1718: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1718, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:28:40Z", "level": "info", "message": "Test case 1719: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1719, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:28:41Z", "level": "info", "message": "Test case 1720: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1720, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:28:42Z", "level": "info", "message": "Test case 1721: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1721, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:28:43Z", "level": "info", "message": "Test case 1722: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1722, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:28:44Z", "level": "info", "message": "Test case 1723: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1723, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:28:45Z", "level": "info", "message": "Test case 1724: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1724, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:28:46Z", "level": "info", "message": "Test case 1725: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1725, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:28:47Z", "level": "info", "message": "Test case 1726: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1726, "data": "4ICA"} +{"timestamp": "2024-01-01T00:28:48Z", "level": "info", "message": "Test case 1727: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1727, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:28:49Z", "level": "info", "message": "Test case 1728: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1728, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:28:50Z", "level": "info", "message": "Test case 1729: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1729, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:28:51Z", "level": "info", "message": "Test case 1730: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1730, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:28:52Z", "level": "info", "message": "Test case 1731: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1731, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:28:53Z", "level": "info", "message": "Test case 1732: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1732, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:28:54Z", "level": "info", "message": "Test case 1733: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1733, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:28:55Z", "level": "info", "message": "Test case 1734: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1734, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:28:56Z", "level": "info", "message": "Test case 1735: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1735, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:28:57Z", "level": "info", "message": "Test case 1736: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1736, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:28:58Z", "level": "info", "message": "Test case 1737: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1737, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:28:59Z", "level": "info", "message": "Test case 1738: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1738, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:29:00Z", "level": "info", "message": "Test case 1739: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1739, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:29:01Z", "level": "info", "message": "Test case 1740: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1740, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:29:02Z", "level": "info", "message": "Test case 1741: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1741, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:29:03Z", "level": "info", "message": "Test case 1742: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1742, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:29:04Z", "level": "info", "message": "Test case 1743: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1743, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:29:05Z", "level": "info", "message": "Test case 1744: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1744, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:29:06Z", "level": "info", "message": "Test case 1745: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1745, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:29:07Z", "level": "info", "message": "Test case 1746: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1746, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:29:08Z", "level": "info", "message": "Test case 1747: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1747, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:29:09Z", "level": "info", "message": "Test case 1748: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1748, "data": "4iih"} +{"timestamp": "2024-01-01T00:29:10Z", "level": "info", "message": "Test case 1749: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1749, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:29:11Z", "level": "info", "message": "Test case 1750: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1750, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:29:12Z", "level": "info", "message": "Test case 1751: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1751, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:29:13Z", "level": "info", "message": "Test case 1752: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1752, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:29:14Z", "level": "info", "message": "Test case 1753: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1753, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:29:15Z", "level": "info", "message": "Test case 1754: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1754, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:29:16Z", "level": "info", "message": "Test case 1755: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1755, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:29:17Z", "level": "info", "message": "Test case 1756: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1756, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:29:18Z", "level": "info", "message": "Test case 1757: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1757, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:29:19Z", "level": "info", "message": "Test case 1758: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1758, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:29:20Z", "level": "info", "message": "Test case 1759: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1759, "data": "wg=="} +{"timestamp": "2024-01-01T00:29:21Z", "level": "info", "message": "Test case 1760: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1760, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:29:22Z", "level": "info", "message": "Test case 1761: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1761, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:29:23Z", "level": "info", "message": "Test case 1762: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1762, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:29:24Z", "level": "info", "message": "Test case 1763: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1763, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:29:25Z", "level": "info", "message": "Test case 1764: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1764, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:29:26Z", "level": "info", "message": "Test case 1765: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1765, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:29:27Z", "level": "info", "message": "Test case 1766: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1766, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:29:28Z", "level": "info", "message": "Test case 1767: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1767, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:29:29Z", "level": "info", "message": "Test case 1768: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1768, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:29:30Z", "level": "info", "message": "Test case 1769: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1769, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:29:31Z", "level": "info", "message": "Test case 1770: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1770, "data": "wIA="} +{"timestamp": "2024-01-01T00:29:32Z", "level": "info", "message": "Test case 1771: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1771, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:29:33Z", "level": "info", "message": "Test case 1772: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1772, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:29:34Z", "level": "info", "message": "Test case 1773: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1773, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:29:35Z", "level": "info", "message": "Test case 1774: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1774, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:29:36Z", "level": "info", "message": "Test case 1775: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1775, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:29:37Z", "level": "info", "message": "Test case 1776: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1776, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:29:38Z", "level": "info", "message": "Test case 1777: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1777, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:29:39Z", "level": "info", "message": "Test case 1778: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1778, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:29:40Z", "level": "info", "message": "Test case 1779: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1779, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:29:41Z", "level": "info", "message": "Test case 1780: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1780, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:29:42Z", "level": "info", "message": "Test case 1781: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1781, "data": "4ICA"} +{"timestamp": "2024-01-01T00:29:43Z", "level": "info", "message": "Test case 1782: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1782, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:29:44Z", "level": "info", "message": "Test case 1783: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1783, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:29:45Z", "level": "info", "message": "Test case 1784: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1784, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:29:46Z", "level": "info", "message": "Test case 1785: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1785, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:29:47Z", "level": "info", "message": "Test case 1786: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1786, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:29:48Z", "level": "info", "message": "Test case 1787: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1787, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:29:49Z", "level": "info", "message": "Test case 1788: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1788, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:29:50Z", "level": "info", "message": "Test case 1789: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1789, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:29:51Z", "level": "info", "message": "Test case 1790: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1790, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:29:52Z", "level": "info", "message": "Test case 1791: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1791, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:29:53Z", "level": "info", "message": "Test case 1792: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1792, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:29:54Z", "level": "info", "message": "Test case 1793: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1793, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:29:55Z", "level": "info", "message": "Test case 1794: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1794, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:29:56Z", "level": "info", "message": "Test case 1795: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1795, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:29:57Z", "level": "info", "message": "Test case 1796: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1796, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:29:58Z", "level": "info", "message": "Test case 1797: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1797, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:29:59Z", "level": "info", "message": "Test case 1798: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1798, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:30:00Z", "level": "info", "message": "Test case 1799: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1799, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:30:01Z", "level": "info", "message": "Test case 1800: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1800, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:30:02Z", "level": "info", "message": "Test case 1801: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1801, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:30:03Z", "level": "info", "message": "Test case 1802: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1802, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:30:04Z", "level": "info", "message": "Test case 1803: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1803, "data": "4iih"} +{"timestamp": "2024-01-01T00:30:05Z", "level": "info", "message": "Test case 1804: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1804, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:30:06Z", "level": "info", "message": "Test case 1805: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1805, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:30:07Z", "level": "info", "message": "Test case 1806: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1806, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:30:08Z", "level": "info", "message": "Test case 1807: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1807, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:30:09Z", "level": "info", "message": "Test case 1808: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1808, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:30:10Z", "level": "info", "message": "Test case 1809: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1809, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:30:11Z", "level": "info", "message": "Test case 1810: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1810, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:30:12Z", "level": "info", "message": "Test case 1811: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1811, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:30:13Z", "level": "info", "message": "Test case 1812: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1812, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:30:14Z", "level": "info", "message": "Test case 1813: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1813, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:30:15Z", "level": "info", "message": "Test case 1814: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1814, "data": "wg=="} +{"timestamp": "2024-01-01T00:30:16Z", "level": "info", "message": "Test case 1815: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1815, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:30:17Z", "level": "info", "message": "Test case 1816: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1816, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:30:18Z", "level": "info", "message": "Test case 1817: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1817, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:30:19Z", "level": "info", "message": "Test case 1818: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1818, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:30:20Z", "level": "info", "message": "Test case 1819: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1819, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:30:21Z", "level": "info", "message": "Test case 1820: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1820, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:30:22Z", "level": "info", "message": "Test case 1821: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1821, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:30:23Z", "level": "info", "message": "Test case 1822: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1822, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:30:24Z", "level": "info", "message": "Test case 1823: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1823, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:30:25Z", "level": "info", "message": "Test case 1824: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1824, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:30:26Z", "level": "info", "message": "Test case 1825: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1825, "data": "wIA="} +{"timestamp": "2024-01-01T00:30:27Z", "level": "info", "message": "Test case 1826: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1826, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:30:28Z", "level": "info", "message": "Test case 1827: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1827, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:30:29Z", "level": "info", "message": "Test case 1828: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1828, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:30:30Z", "level": "info", "message": "Test case 1829: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1829, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:30:31Z", "level": "info", "message": "Test case 1830: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1830, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:30:32Z", "level": "info", "message": "Test case 1831: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1831, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:30:33Z", "level": "info", "message": "Test case 1832: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1832, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:30:34Z", "level": "info", "message": "Test case 1833: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1833, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:30:35Z", "level": "info", "message": "Test case 1834: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1834, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:30:36Z", "level": "info", "message": "Test case 1835: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1835, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:30:37Z", "level": "info", "message": "Test case 1836: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1836, "data": "4ICA"} +{"timestamp": "2024-01-01T00:30:38Z", "level": "info", "message": "Test case 1837: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1837, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:30:39Z", "level": "info", "message": "Test case 1838: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1838, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:30:40Z", "level": "info", "message": "Test case 1839: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1839, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:30:41Z", "level": "info", "message": "Test case 1840: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1840, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:30:42Z", "level": "info", "message": "Test case 1841: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1841, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:30:43Z", "level": "info", "message": "Test case 1842: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1842, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:30:44Z", "level": "info", "message": "Test case 1843: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1843, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:30:45Z", "level": "info", "message": "Test case 1844: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1844, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:30:46Z", "level": "info", "message": "Test case 1845: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1845, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:30:47Z", "level": "info", "message": "Test case 1846: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1846, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:30:48Z", "level": "info", "message": "Test case 1847: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1847, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:30:49Z", "level": "info", "message": "Test case 1848: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1848, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:30:50Z", "level": "info", "message": "Test case 1849: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1849, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:30:51Z", "level": "info", "message": "Test case 1850: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1850, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:30:52Z", "level": "info", "message": "Test case 1851: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1851, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:30:53Z", "level": "info", "message": "Test case 1852: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1852, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:30:54Z", "level": "info", "message": "Test case 1853: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1853, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:30:55Z", "level": "info", "message": "Test case 1854: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1854, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:30:56Z", "level": "info", "message": "Test case 1855: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1855, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:30:57Z", "level": "info", "message": "Test case 1856: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1856, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:30:58Z", "level": "info", "message": "Test case 1857: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1857, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:30:59Z", "level": "info", "message": "Test case 1858: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1858, "data": "4iih"} +{"timestamp": "2024-01-01T00:31:00Z", "level": "info", "message": "Test case 1859: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1859, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:31:01Z", "level": "info", "message": "Test case 1860: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1860, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:31:02Z", "level": "info", "message": "Test case 1861: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1861, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:31:03Z", "level": "info", "message": "Test case 1862: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1862, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:31:04Z", "level": "info", "message": "Test case 1863: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1863, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:31:05Z", "level": "info", "message": "Test case 1864: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1864, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:31:06Z", "level": "info", "message": "Test case 1865: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1865, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:31:07Z", "level": "info", "message": "Test case 1866: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1866, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:31:08Z", "level": "info", "message": "Test case 1867: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1867, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:31:09Z", "level": "info", "message": "Test case 1868: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1868, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:31:10Z", "level": "info", "message": "Test case 1869: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1869, "data": "wg=="} +{"timestamp": "2024-01-01T00:31:11Z", "level": "info", "message": "Test case 1870: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1870, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:31:12Z", "level": "info", "message": "Test case 1871: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1871, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:31:13Z", "level": "info", "message": "Test case 1872: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1872, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:31:14Z", "level": "info", "message": "Test case 1873: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1873, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:31:15Z", "level": "info", "message": "Test case 1874: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1874, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:31:16Z", "level": "info", "message": "Test case 1875: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1875, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:31:17Z", "level": "info", "message": "Test case 1876: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1876, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:31:18Z", "level": "info", "message": "Test case 1877: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1877, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:31:19Z", "level": "info", "message": "Test case 1878: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1878, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:31:20Z", "level": "info", "message": "Test case 1879: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1879, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:31:21Z", "level": "info", "message": "Test case 1880: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1880, "data": "wIA="} +{"timestamp": "2024-01-01T00:31:22Z", "level": "info", "message": "Test case 1881: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1881, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:31:23Z", "level": "info", "message": "Test case 1882: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1882, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:31:24Z", "level": "info", "message": "Test case 1883: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1883, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:31:25Z", "level": "info", "message": "Test case 1884: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1884, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:31:26Z", "level": "info", "message": "Test case 1885: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1885, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:31:27Z", "level": "info", "message": "Test case 1886: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1886, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:31:28Z", "level": "info", "message": "Test case 1887: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1887, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:31:29Z", "level": "info", "message": "Test case 1888: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1888, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:31:30Z", "level": "info", "message": "Test case 1889: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1889, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:31:31Z", "level": "info", "message": "Test case 1890: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1890, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:31:32Z", "level": "info", "message": "Test case 1891: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1891, "data": "4ICA"} +{"timestamp": "2024-01-01T00:31:33Z", "level": "info", "message": "Test case 1892: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1892, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:31:34Z", "level": "info", "message": "Test case 1893: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1893, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:31:35Z", "level": "info", "message": "Test case 1894: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1894, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:31:36Z", "level": "info", "message": "Test case 1895: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1895, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:31:37Z", "level": "info", "message": "Test case 1896: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1896, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:31:38Z", "level": "info", "message": "Test case 1897: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1897, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:31:39Z", "level": "info", "message": "Test case 1898: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1898, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:31:40Z", "level": "info", "message": "Test case 1899: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1899, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:31:41Z", "level": "info", "message": "Test case 1900: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1900, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:31:42Z", "level": "info", "message": "Test case 1901: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1901, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:31:43Z", "level": "info", "message": "Test case 1902: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1902, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:31:44Z", "level": "info", "message": "Test case 1903: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1903, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:31:45Z", "level": "info", "message": "Test case 1904: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1904, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:31:46Z", "level": "info", "message": "Test case 1905: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1905, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:31:47Z", "level": "info", "message": "Test case 1906: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1906, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:31:48Z", "level": "info", "message": "Test case 1907: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1907, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:31:49Z", "level": "info", "message": "Test case 1908: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1908, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:31:50Z", "level": "info", "message": "Test case 1909: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1909, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:31:51Z", "level": "info", "message": "Test case 1910: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1910, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:31:52Z", "level": "info", "message": "Test case 1911: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1911, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:31:53Z", "level": "info", "message": "Test case 1912: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1912, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:31:54Z", "level": "info", "message": "Test case 1913: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1913, "data": "4iih"} +{"timestamp": "2024-01-01T00:31:55Z", "level": "info", "message": "Test case 1914: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1914, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:31:56Z", "level": "info", "message": "Test case 1915: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1915, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:31:57Z", "level": "info", "message": "Test case 1916: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1916, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:31:58Z", "level": "info", "message": "Test case 1917: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1917, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:31:59Z", "level": "info", "message": "Test case 1918: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1918, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:32:00Z", "level": "info", "message": "Test case 1919: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1919, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:32:01Z", "level": "info", "message": "Test case 1920: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1920, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:32:02Z", "level": "info", "message": "Test case 1921: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1921, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:32:03Z", "level": "info", "message": "Test case 1922: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1922, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:32:04Z", "level": "info", "message": "Test case 1923: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1923, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:32:05Z", "level": "info", "message": "Test case 1924: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1924, "data": "wg=="} +{"timestamp": "2024-01-01T00:32:06Z", "level": "info", "message": "Test case 1925: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1925, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:32:07Z", "level": "info", "message": "Test case 1926: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1926, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:32:08Z", "level": "info", "message": "Test case 1927: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1927, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:32:09Z", "level": "info", "message": "Test case 1928: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1928, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:32:10Z", "level": "info", "message": "Test case 1929: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1929, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:32:11Z", "level": "info", "message": "Test case 1930: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1930, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:32:12Z", "level": "info", "message": "Test case 1931: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1931, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:32:13Z", "level": "info", "message": "Test case 1932: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1932, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:32:14Z", "level": "info", "message": "Test case 1933: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1933, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:32:15Z", "level": "info", "message": "Test case 1934: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1934, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:32:16Z", "level": "info", "message": "Test case 1935: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1935, "data": "wIA="} +{"timestamp": "2024-01-01T00:32:17Z", "level": "info", "message": "Test case 1936: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1936, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:32:18Z", "level": "info", "message": "Test case 1937: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1937, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:32:19Z", "level": "info", "message": "Test case 1938: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1938, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:32:20Z", "level": "info", "message": "Test case 1939: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1939, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:32:21Z", "level": "info", "message": "Test case 1940: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1940, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:32:22Z", "level": "info", "message": "Test case 1941: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1941, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:32:23Z", "level": "info", "message": "Test case 1942: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1942, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:32:24Z", "level": "info", "message": "Test case 1943: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1943, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:32:25Z", "level": "info", "message": "Test case 1944: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1944, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:32:26Z", "level": "info", "message": "Test case 1945: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1945, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:32:27Z", "level": "info", "message": "Test case 1946: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1946, "data": "4ICA"} +{"timestamp": "2024-01-01T00:32:28Z", "level": "info", "message": "Test case 1947: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1947, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:32:29Z", "level": "info", "message": "Test case 1948: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1948, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:32:30Z", "level": "info", "message": "Test case 1949: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1949, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:32:31Z", "level": "info", "message": "Test case 1950: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1950, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:32:32Z", "level": "info", "message": "Test case 1951: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1951, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:32:33Z", "level": "info", "message": "Test case 1952: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1952, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:32:34Z", "level": "info", "message": "Test case 1953: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1953, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:32:35Z", "level": "info", "message": "Test case 1954: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1954, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:32:36Z", "level": "info", "message": "Test case 1955: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1955, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:32:37Z", "level": "info", "message": "Test case 1956: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1956, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:32:38Z", "level": "info", "message": "Test case 1957: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1957, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:32:39Z", "level": "info", "message": "Test case 1958: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1958, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:32:40Z", "level": "info", "message": "Test case 1959: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1959, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:32:41Z", "level": "info", "message": "Test case 1960: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1960, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:32:42Z", "level": "info", "message": "Test case 1961: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1961, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:32:43Z", "level": "info", "message": "Test case 1962: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1962, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:32:44Z", "level": "info", "message": "Test case 1963: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1963, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:32:45Z", "level": "info", "message": "Test case 1964: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1964, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:32:46Z", "level": "info", "message": "Test case 1965: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1965, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:32:47Z", "level": "info", "message": "Test case 1966: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1966, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:32:48Z", "level": "info", "message": "Test case 1967: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1967, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:32:49Z", "level": "info", "message": "Test case 1968: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1968, "data": "4iih"} +{"timestamp": "2024-01-01T00:32:50Z", "level": "info", "message": "Test case 1969: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1969, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:32:51Z", "level": "info", "message": "Test case 1970: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1970, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:32:52Z", "level": "info", "message": "Test case 1971: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1971, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:32:53Z", "level": "info", "message": "Test case 1972: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1972, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:32:54Z", "level": "info", "message": "Test case 1973: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1973, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:32:55Z", "level": "info", "message": "Test case 1974: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1974, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:32:56Z", "level": "info", "message": "Test case 1975: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1975, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:32:57Z", "level": "info", "message": "Test case 1976: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1976, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:32:58Z", "level": "info", "message": "Test case 1977: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1977, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:32:59Z", "level": "info", "message": "Test case 1978: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1978, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:33:00Z", "level": "info", "message": "Test case 1979: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1979, "data": "wg=="} +{"timestamp": "2024-01-01T00:33:01Z", "level": "info", "message": "Test case 1980: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1980, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:33:02Z", "level": "info", "message": "Test case 1981: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1981, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:33:03Z", "level": "info", "message": "Test case 1982: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1982, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:33:04Z", "level": "info", "message": "Test case 1983: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1983, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:33:05Z", "level": "info", "message": "Test case 1984: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1984, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:33:06Z", "level": "info", "message": "Test case 1985: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1985, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:33:07Z", "level": "info", "message": "Test case 1986: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1986, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:33:08Z", "level": "info", "message": "Test case 1987: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1987, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:33:09Z", "level": "info", "message": "Test case 1988: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1988, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:33:10Z", "level": "info", "message": "Test case 1989: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 1989, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:33:11Z", "level": "info", "message": "Test case 1990: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 1990, "data": "wIA="} +{"timestamp": "2024-01-01T00:33:12Z", "level": "info", "message": "Test case 1991: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 1991, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:33:13Z", "level": "info", "message": "Test case 1992: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 1992, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:33:14Z", "level": "info", "message": "Test case 1993: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 1993, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:33:15Z", "level": "info", "message": "Test case 1994: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 1994, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:33:16Z", "level": "info", "message": "Test case 1995: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 1995, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:33:17Z", "level": "info", "message": "Test case 1996: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 1996, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:33:18Z", "level": "info", "message": "Test case 1997: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 1997, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:33:19Z", "level": "info", "message": "Test case 1998: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 1998, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:33:20Z", "level": "info", "message": "Test case 1999: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 1999, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:33:21Z", "level": "info", "message": "Test case 2000: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2000, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:33:22Z", "level": "info", "message": "Test case 2001: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2001, "data": "4ICA"} +{"timestamp": "2024-01-01T00:33:23Z", "level": "info", "message": "Test case 2002: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2002, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:33:24Z", "level": "info", "message": "Test case 2003: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2003, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:33:25Z", "level": "info", "message": "Test case 2004: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2004, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:33:26Z", "level": "info", "message": "Test case 2005: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2005, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:33:27Z", "level": "info", "message": "Test case 2006: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2006, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:33:28Z", "level": "info", "message": "Test case 2007: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2007, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:33:29Z", "level": "info", "message": "Test case 2008: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2008, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:33:30Z", "level": "info", "message": "Test case 2009: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2009, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:33:31Z", "level": "info", "message": "Test case 2010: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2010, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:33:32Z", "level": "info", "message": "Test case 2011: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2011, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:33:33Z", "level": "info", "message": "Test case 2012: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2012, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:33:34Z", "level": "info", "message": "Test case 2013: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2013, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:33:35Z", "level": "info", "message": "Test case 2014: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2014, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:33:36Z", "level": "info", "message": "Test case 2015: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2015, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:33:37Z", "level": "info", "message": "Test case 2016: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2016, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:33:38Z", "level": "info", "message": "Test case 2017: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2017, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:33:39Z", "level": "info", "message": "Test case 2018: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2018, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:33:40Z", "level": "info", "message": "Test case 2019: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2019, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:33:41Z", "level": "info", "message": "Test case 2020: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2020, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:33:42Z", "level": "info", "message": "Test case 2021: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2021, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:33:43Z", "level": "info", "message": "Test case 2022: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2022, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:33:44Z", "level": "info", "message": "Test case 2023: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2023, "data": "4iih"} +{"timestamp": "2024-01-01T00:33:45Z", "level": "info", "message": "Test case 2024: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2024, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:33:46Z", "level": "info", "message": "Test case 2025: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2025, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:33:47Z", "level": "info", "message": "Test case 2026: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2026, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:33:48Z", "level": "info", "message": "Test case 2027: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2027, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:33:49Z", "level": "info", "message": "Test case 2028: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2028, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:33:50Z", "level": "info", "message": "Test case 2029: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2029, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:33:51Z", "level": "info", "message": "Test case 2030: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2030, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:33:52Z", "level": "info", "message": "Test case 2031: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2031, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:33:53Z", "level": "info", "message": "Test case 2032: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2032, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:33:54Z", "level": "info", "message": "Test case 2033: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2033, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:33:55Z", "level": "info", "message": "Test case 2034: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2034, "data": "wg=="} +{"timestamp": "2024-01-01T00:33:56Z", "level": "info", "message": "Test case 2035: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2035, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:33:57Z", "level": "info", "message": "Test case 2036: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2036, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:33:58Z", "level": "info", "message": "Test case 2037: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2037, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:33:59Z", "level": "info", "message": "Test case 2038: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2038, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:34:00Z", "level": "info", "message": "Test case 2039: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2039, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:34:01Z", "level": "info", "message": "Test case 2040: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2040, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:34:02Z", "level": "info", "message": "Test case 2041: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2041, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:34:03Z", "level": "info", "message": "Test case 2042: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2042, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:34:04Z", "level": "info", "message": "Test case 2043: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2043, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:34:05Z", "level": "info", "message": "Test case 2044: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2044, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:34:06Z", "level": "info", "message": "Test case 2045: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2045, "data": "wIA="} +{"timestamp": "2024-01-01T00:34:07Z", "level": "info", "message": "Test case 2046: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2046, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:34:08Z", "level": "info", "message": "Test case 2047: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2047, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:34:09Z", "level": "info", "message": "Test case 2048: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2048, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:34:10Z", "level": "info", "message": "Test case 2049: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2049, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:34:11Z", "level": "info", "message": "Test case 2050: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2050, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:34:12Z", "level": "info", "message": "Test case 2051: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2051, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:34:13Z", "level": "info", "message": "Test case 2052: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2052, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:34:14Z", "level": "info", "message": "Test case 2053: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2053, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:34:15Z", "level": "info", "message": "Test case 2054: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2054, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:34:16Z", "level": "info", "message": "Test case 2055: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2055, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:34:17Z", "level": "info", "message": "Test case 2056: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2056, "data": "4ICA"} +{"timestamp": "2024-01-01T00:34:18Z", "level": "info", "message": "Test case 2057: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2057, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:34:19Z", "level": "info", "message": "Test case 2058: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2058, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:34:20Z", "level": "info", "message": "Test case 2059: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2059, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:34:21Z", "level": "info", "message": "Test case 2060: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2060, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:34:22Z", "level": "info", "message": "Test case 2061: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2061, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:34:23Z", "level": "info", "message": "Test case 2062: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2062, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:34:24Z", "level": "info", "message": "Test case 2063: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2063, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:34:25Z", "level": "info", "message": "Test case 2064: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2064, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:34:26Z", "level": "info", "message": "Test case 2065: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2065, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:34:27Z", "level": "info", "message": "Test case 2066: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2066, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:34:28Z", "level": "info", "message": "Test case 2067: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2067, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:34:29Z", "level": "info", "message": "Test case 2068: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2068, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:34:30Z", "level": "info", "message": "Test case 2069: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2069, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:34:31Z", "level": "info", "message": "Test case 2070: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2070, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:34:32Z", "level": "info", "message": "Test case 2071: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2071, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:34:33Z", "level": "info", "message": "Test case 2072: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2072, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:34:34Z", "level": "info", "message": "Test case 2073: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2073, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:34:35Z", "level": "info", "message": "Test case 2074: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2074, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:34:36Z", "level": "info", "message": "Test case 2075: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2075, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:34:37Z", "level": "info", "message": "Test case 2076: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2076, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:34:38Z", "level": "info", "message": "Test case 2077: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2077, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:34:39Z", "level": "info", "message": "Test case 2078: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2078, "data": "4iih"} +{"timestamp": "2024-01-01T00:34:40Z", "level": "info", "message": "Test case 2079: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2079, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:34:41Z", "level": "info", "message": "Test case 2080: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2080, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:34:42Z", "level": "info", "message": "Test case 2081: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2081, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:34:43Z", "level": "info", "message": "Test case 2082: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2082, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:34:44Z", "level": "info", "message": "Test case 2083: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2083, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:34:45Z", "level": "info", "message": "Test case 2084: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2084, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:34:46Z", "level": "info", "message": "Test case 2085: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2085, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:34:47Z", "level": "info", "message": "Test case 2086: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2086, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:34:48Z", "level": "info", "message": "Test case 2087: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2087, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:34:49Z", "level": "info", "message": "Test case 2088: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2088, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:34:50Z", "level": "info", "message": "Test case 2089: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2089, "data": "wg=="} +{"timestamp": "2024-01-01T00:34:51Z", "level": "info", "message": "Test case 2090: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2090, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:34:52Z", "level": "info", "message": "Test case 2091: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2091, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:34:53Z", "level": "info", "message": "Test case 2092: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2092, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:34:54Z", "level": "info", "message": "Test case 2093: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2093, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:34:55Z", "level": "info", "message": "Test case 2094: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2094, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:34:56Z", "level": "info", "message": "Test case 2095: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2095, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:34:57Z", "level": "info", "message": "Test case 2096: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2096, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:34:58Z", "level": "info", "message": "Test case 2097: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2097, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:34:59Z", "level": "info", "message": "Test case 2098: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2098, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:35:00Z", "level": "info", "message": "Test case 2099: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2099, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:35:01Z", "level": "info", "message": "Test case 2100: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2100, "data": "wIA="} +{"timestamp": "2024-01-01T00:35:02Z", "level": "info", "message": "Test case 2101: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2101, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:35:03Z", "level": "info", "message": "Test case 2102: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2102, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:35:04Z", "level": "info", "message": "Test case 2103: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2103, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:35:05Z", "level": "info", "message": "Test case 2104: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2104, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:35:06Z", "level": "info", "message": "Test case 2105: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2105, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:35:07Z", "level": "info", "message": "Test case 2106: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2106, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:35:08Z", "level": "info", "message": "Test case 2107: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2107, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:35:09Z", "level": "info", "message": "Test case 2108: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2108, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:35:10Z", "level": "info", "message": "Test case 2109: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2109, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:35:11Z", "level": "info", "message": "Test case 2110: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2110, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:35:12Z", "level": "info", "message": "Test case 2111: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2111, "data": "4ICA"} +{"timestamp": "2024-01-01T00:35:13Z", "level": "info", "message": "Test case 2112: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2112, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:35:14Z", "level": "info", "message": "Test case 2113: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2113, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:35:15Z", "level": "info", "message": "Test case 2114: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2114, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:35:16Z", "level": "info", "message": "Test case 2115: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2115, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:35:17Z", "level": "info", "message": "Test case 2116: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2116, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:35:18Z", "level": "info", "message": "Test case 2117: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2117, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:35:19Z", "level": "info", "message": "Test case 2118: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2118, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:35:20Z", "level": "info", "message": "Test case 2119: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2119, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:35:21Z", "level": "info", "message": "Test case 2120: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2120, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:35:22Z", "level": "info", "message": "Test case 2121: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2121, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:35:23Z", "level": "info", "message": "Test case 2122: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2122, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:35:24Z", "level": "info", "message": "Test case 2123: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2123, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:35:25Z", "level": "info", "message": "Test case 2124: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2124, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:35:26Z", "level": "info", "message": "Test case 2125: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2125, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:35:27Z", "level": "info", "message": "Test case 2126: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2126, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:35:28Z", "level": "info", "message": "Test case 2127: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2127, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:35:29Z", "level": "info", "message": "Test case 2128: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2128, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:35:30Z", "level": "info", "message": "Test case 2129: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2129, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:35:31Z", "level": "info", "message": "Test case 2130: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2130, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:35:32Z", "level": "info", "message": "Test case 2131: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2131, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:35:33Z", "level": "info", "message": "Test case 2132: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2132, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:35:34Z", "level": "info", "message": "Test case 2133: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2133, "data": "4iih"} +{"timestamp": "2024-01-01T00:35:35Z", "level": "info", "message": "Test case 2134: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2134, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:35:36Z", "level": "info", "message": "Test case 2135: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2135, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:35:37Z", "level": "info", "message": "Test case 2136: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2136, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:35:38Z", "level": "info", "message": "Test case 2137: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2137, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:35:39Z", "level": "info", "message": "Test case 2138: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2138, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:35:40Z", "level": "info", "message": "Test case 2139: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2139, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:35:41Z", "level": "info", "message": "Test case 2140: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2140, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:35:42Z", "level": "info", "message": "Test case 2141: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2141, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:35:43Z", "level": "info", "message": "Test case 2142: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2142, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:35:44Z", "level": "info", "message": "Test case 2143: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2143, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:35:45Z", "level": "info", "message": "Test case 2144: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2144, "data": "wg=="} +{"timestamp": "2024-01-01T00:35:46Z", "level": "info", "message": "Test case 2145: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2145, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:35:47Z", "level": "info", "message": "Test case 2146: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2146, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:35:48Z", "level": "info", "message": "Test case 2147: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2147, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:35:49Z", "level": "info", "message": "Test case 2148: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2148, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:35:50Z", "level": "info", "message": "Test case 2149: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2149, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:35:51Z", "level": "info", "message": "Test case 2150: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2150, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:35:52Z", "level": "info", "message": "Test case 2151: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2151, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:35:53Z", "level": "info", "message": "Test case 2152: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2152, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:35:54Z", "level": "info", "message": "Test case 2153: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2153, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:35:55Z", "level": "info", "message": "Test case 2154: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2154, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:35:56Z", "level": "info", "message": "Test case 2155: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2155, "data": "wIA="} +{"timestamp": "2024-01-01T00:35:57Z", "level": "info", "message": "Test case 2156: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2156, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:35:58Z", "level": "info", "message": "Test case 2157: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2157, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:35:59Z", "level": "info", "message": "Test case 2158: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2158, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:36:00Z", "level": "info", "message": "Test case 2159: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2159, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:36:01Z", "level": "info", "message": "Test case 2160: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2160, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:36:02Z", "level": "info", "message": "Test case 2161: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2161, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:36:03Z", "level": "info", "message": "Test case 2162: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2162, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:36:04Z", "level": "info", "message": "Test case 2163: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2163, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:36:05Z", "level": "info", "message": "Test case 2164: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2164, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:36:06Z", "level": "info", "message": "Test case 2165: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2165, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:36:07Z", "level": "info", "message": "Test case 2166: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2166, "data": "4ICA"} +{"timestamp": "2024-01-01T00:36:08Z", "level": "info", "message": "Test case 2167: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2167, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:36:09Z", "level": "info", "message": "Test case 2168: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2168, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:36:10Z", "level": "info", "message": "Test case 2169: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2169, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:36:11Z", "level": "info", "message": "Test case 2170: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2170, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:36:12Z", "level": "info", "message": "Test case 2171: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2171, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:36:13Z", "level": "info", "message": "Test case 2172: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2172, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:36:14Z", "level": "info", "message": "Test case 2173: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2173, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:36:15Z", "level": "info", "message": "Test case 2174: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2174, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:36:16Z", "level": "info", "message": "Test case 2175: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2175, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:36:17Z", "level": "info", "message": "Test case 2176: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2176, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:36:18Z", "level": "info", "message": "Test case 2177: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2177, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:36:19Z", "level": "info", "message": "Test case 2178: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2178, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:36:20Z", "level": "info", "message": "Test case 2179: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2179, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:36:21Z", "level": "info", "message": "Test case 2180: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2180, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:36:22Z", "level": "info", "message": "Test case 2181: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2181, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:36:23Z", "level": "info", "message": "Test case 2182: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2182, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:36:24Z", "level": "info", "message": "Test case 2183: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2183, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:36:25Z", "level": "info", "message": "Test case 2184: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2184, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:36:26Z", "level": "info", "message": "Test case 2185: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2185, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:36:27Z", "level": "info", "message": "Test case 2186: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2186, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:36:28Z", "level": "info", "message": "Test case 2187: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2187, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:36:29Z", "level": "info", "message": "Test case 2188: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2188, "data": "4iih"} +{"timestamp": "2024-01-01T00:36:30Z", "level": "info", "message": "Test case 2189: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2189, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:36:31Z", "level": "info", "message": "Test case 2190: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2190, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:36:32Z", "level": "info", "message": "Test case 2191: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2191, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:36:33Z", "level": "info", "message": "Test case 2192: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2192, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:36:34Z", "level": "info", "message": "Test case 2193: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2193, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:36:35Z", "level": "info", "message": "Test case 2194: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2194, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:36:36Z", "level": "info", "message": "Test case 2195: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2195, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:36:37Z", "level": "info", "message": "Test case 2196: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2196, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:36:38Z", "level": "info", "message": "Test case 2197: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2197, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:36:39Z", "level": "info", "message": "Test case 2198: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2198, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:36:40Z", "level": "info", "message": "Test case 2199: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2199, "data": "wg=="} +{"timestamp": "2024-01-01T00:36:41Z", "level": "info", "message": "Test case 2200: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2200, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:36:42Z", "level": "info", "message": "Test case 2201: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2201, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:36:43Z", "level": "info", "message": "Test case 2202: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2202, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:36:44Z", "level": "info", "message": "Test case 2203: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2203, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:36:45Z", "level": "info", "message": "Test case 2204: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2204, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:36:46Z", "level": "info", "message": "Test case 2205: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2205, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:36:47Z", "level": "info", "message": "Test case 2206: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2206, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:36:48Z", "level": "info", "message": "Test case 2207: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2207, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:36:49Z", "level": "info", "message": "Test case 2208: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2208, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:36:50Z", "level": "info", "message": "Test case 2209: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2209, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:36:51Z", "level": "info", "message": "Test case 2210: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2210, "data": "wIA="} +{"timestamp": "2024-01-01T00:36:52Z", "level": "info", "message": "Test case 2211: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2211, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:36:53Z", "level": "info", "message": "Test case 2212: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2212, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:36:54Z", "level": "info", "message": "Test case 2213: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2213, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:36:55Z", "level": "info", "message": "Test case 2214: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2214, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:36:56Z", "level": "info", "message": "Test case 2215: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2215, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:36:57Z", "level": "info", "message": "Test case 2216: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2216, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:36:58Z", "level": "info", "message": "Test case 2217: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2217, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:36:59Z", "level": "info", "message": "Test case 2218: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2218, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:37:00Z", "level": "info", "message": "Test case 2219: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2219, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:37:01Z", "level": "info", "message": "Test case 2220: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2220, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:37:02Z", "level": "info", "message": "Test case 2221: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2221, "data": "4ICA"} +{"timestamp": "2024-01-01T00:37:03Z", "level": "info", "message": "Test case 2222: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2222, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:37:04Z", "level": "info", "message": "Test case 2223: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2223, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:37:05Z", "level": "info", "message": "Test case 2224: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2224, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:37:06Z", "level": "info", "message": "Test case 2225: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2225, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:37:07Z", "level": "info", "message": "Test case 2226: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2226, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:37:08Z", "level": "info", "message": "Test case 2227: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2227, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:37:09Z", "level": "info", "message": "Test case 2228: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2228, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:37:10Z", "level": "info", "message": "Test case 2229: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2229, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:37:11Z", "level": "info", "message": "Test case 2230: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2230, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:37:12Z", "level": "info", "message": "Test case 2231: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2231, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:37:13Z", "level": "info", "message": "Test case 2232: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2232, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:37:14Z", "level": "info", "message": "Test case 2233: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2233, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:37:15Z", "level": "info", "message": "Test case 2234: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2234, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:37:16Z", "level": "info", "message": "Test case 2235: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2235, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:37:17Z", "level": "info", "message": "Test case 2236: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2236, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:37:18Z", "level": "info", "message": "Test case 2237: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2237, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:37:19Z", "level": "info", "message": "Test case 2238: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2238, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:37:20Z", "level": "info", "message": "Test case 2239: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2239, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:37:21Z", "level": "info", "message": "Test case 2240: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2240, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:37:22Z", "level": "info", "message": "Test case 2241: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2241, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:37:23Z", "level": "info", "message": "Test case 2242: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2242, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:37:24Z", "level": "info", "message": "Test case 2243: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2243, "data": "4iih"} +{"timestamp": "2024-01-01T00:37:25Z", "level": "info", "message": "Test case 2244: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2244, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:37:26Z", "level": "info", "message": "Test case 2245: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2245, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:37:27Z", "level": "info", "message": "Test case 2246: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2246, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:37:28Z", "level": "info", "message": "Test case 2247: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2247, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:37:29Z", "level": "info", "message": "Test case 2248: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2248, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:37:30Z", "level": "info", "message": "Test case 2249: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2249, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:37:31Z", "level": "info", "message": "Test case 2250: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2250, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:37:32Z", "level": "info", "message": "Test case 2251: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2251, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:37:33Z", "level": "info", "message": "Test case 2252: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2252, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:37:34Z", "level": "info", "message": "Test case 2253: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2253, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:37:35Z", "level": "info", "message": "Test case 2254: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2254, "data": "wg=="} +{"timestamp": "2024-01-01T00:37:36Z", "level": "info", "message": "Test case 2255: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2255, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:37:37Z", "level": "info", "message": "Test case 2256: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2256, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:37:38Z", "level": "info", "message": "Test case 2257: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2257, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:37:39Z", "level": "info", "message": "Test case 2258: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2258, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:37:40Z", "level": "info", "message": "Test case 2259: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2259, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:37:41Z", "level": "info", "message": "Test case 2260: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2260, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:37:42Z", "level": "info", "message": "Test case 2261: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2261, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:37:43Z", "level": "info", "message": "Test case 2262: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2262, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:37:44Z", "level": "info", "message": "Test case 2263: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2263, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:37:45Z", "level": "info", "message": "Test case 2264: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2264, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:37:46Z", "level": "info", "message": "Test case 2265: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2265, "data": "wIA="} +{"timestamp": "2024-01-01T00:37:47Z", "level": "info", "message": "Test case 2266: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2266, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:37:48Z", "level": "info", "message": "Test case 2267: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2267, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:37:49Z", "level": "info", "message": "Test case 2268: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2268, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:37:50Z", "level": "info", "message": "Test case 2269: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2269, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:37:51Z", "level": "info", "message": "Test case 2270: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2270, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:37:52Z", "level": "info", "message": "Test case 2271: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2271, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:37:53Z", "level": "info", "message": "Test case 2272: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2272, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:37:54Z", "level": "info", "message": "Test case 2273: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2273, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:37:55Z", "level": "info", "message": "Test case 2274: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2274, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:37:56Z", "level": "info", "message": "Test case 2275: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2275, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:37:57Z", "level": "info", "message": "Test case 2276: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2276, "data": "4ICA"} +{"timestamp": "2024-01-01T00:37:58Z", "level": "info", "message": "Test case 2277: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2277, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:37:59Z", "level": "info", "message": "Test case 2278: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2278, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:38:00Z", "level": "info", "message": "Test case 2279: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2279, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:38:01Z", "level": "info", "message": "Test case 2280: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2280, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:38:02Z", "level": "info", "message": "Test case 2281: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2281, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:38:03Z", "level": "info", "message": "Test case 2282: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2282, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:38:04Z", "level": "info", "message": "Test case 2283: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2283, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:38:05Z", "level": "info", "message": "Test case 2284: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2284, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:38:06Z", "level": "info", "message": "Test case 2285: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2285, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:38:07Z", "level": "info", "message": "Test case 2286: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2286, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:38:08Z", "level": "info", "message": "Test case 2287: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2287, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:38:09Z", "level": "info", "message": "Test case 2288: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2288, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:38:10Z", "level": "info", "message": "Test case 2289: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2289, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:38:11Z", "level": "info", "message": "Test case 2290: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2290, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:38:12Z", "level": "info", "message": "Test case 2291: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2291, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:38:13Z", "level": "info", "message": "Test case 2292: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2292, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:38:14Z", "level": "info", "message": "Test case 2293: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2293, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:38:15Z", "level": "info", "message": "Test case 2294: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2294, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:38:16Z", "level": "info", "message": "Test case 2295: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2295, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:38:17Z", "level": "info", "message": "Test case 2296: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2296, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:38:18Z", "level": "info", "message": "Test case 2297: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2297, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:38:19Z", "level": "info", "message": "Test case 2298: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2298, "data": "4iih"} +{"timestamp": "2024-01-01T00:38:20Z", "level": "info", "message": "Test case 2299: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2299, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:38:21Z", "level": "info", "message": "Test case 2300: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2300, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:38:22Z", "level": "info", "message": "Test case 2301: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2301, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:38:23Z", "level": "info", "message": "Test case 2302: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2302, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:38:24Z", "level": "info", "message": "Test case 2303: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2303, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:38:25Z", "level": "info", "message": "Test case 2304: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2304, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:38:26Z", "level": "info", "message": "Test case 2305: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2305, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:38:27Z", "level": "info", "message": "Test case 2306: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2306, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:38:28Z", "level": "info", "message": "Test case 2307: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2307, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:38:29Z", "level": "info", "message": "Test case 2308: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2308, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:38:30Z", "level": "info", "message": "Test case 2309: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2309, "data": "wg=="} +{"timestamp": "2024-01-01T00:38:31Z", "level": "info", "message": "Test case 2310: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2310, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:38:32Z", "level": "info", "message": "Test case 2311: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2311, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:38:33Z", "level": "info", "message": "Test case 2312: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2312, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:38:34Z", "level": "info", "message": "Test case 2313: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2313, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:38:35Z", "level": "info", "message": "Test case 2314: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2314, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:38:36Z", "level": "info", "message": "Test case 2315: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2315, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:38:37Z", "level": "info", "message": "Test case 2316: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2316, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:38:38Z", "level": "info", "message": "Test case 2317: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2317, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:38:39Z", "level": "info", "message": "Test case 2318: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2318, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:38:40Z", "level": "info", "message": "Test case 2319: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2319, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:38:41Z", "level": "info", "message": "Test case 2320: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2320, "data": "wIA="} +{"timestamp": "2024-01-01T00:38:42Z", "level": "info", "message": "Test case 2321: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2321, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:38:43Z", "level": "info", "message": "Test case 2322: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2322, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:38:44Z", "level": "info", "message": "Test case 2323: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2323, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:38:45Z", "level": "info", "message": "Test case 2324: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2324, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:38:46Z", "level": "info", "message": "Test case 2325: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2325, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:38:47Z", "level": "info", "message": "Test case 2326: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2326, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:38:48Z", "level": "info", "message": "Test case 2327: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2327, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:38:49Z", "level": "info", "message": "Test case 2328: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2328, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:38:50Z", "level": "info", "message": "Test case 2329: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2329, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:38:51Z", "level": "info", "message": "Test case 2330: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2330, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:38:52Z", "level": "info", "message": "Test case 2331: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2331, "data": "4ICA"} +{"timestamp": "2024-01-01T00:38:53Z", "level": "info", "message": "Test case 2332: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2332, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:38:54Z", "level": "info", "message": "Test case 2333: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2333, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:38:55Z", "level": "info", "message": "Test case 2334: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2334, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:38:56Z", "level": "info", "message": "Test case 2335: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2335, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:38:57Z", "level": "info", "message": "Test case 2336: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2336, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:38:58Z", "level": "info", "message": "Test case 2337: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2337, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:38:59Z", "level": "info", "message": "Test case 2338: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2338, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:39:00Z", "level": "info", "message": "Test case 2339: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2339, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:39:01Z", "level": "info", "message": "Test case 2340: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2340, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:39:02Z", "level": "info", "message": "Test case 2341: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2341, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:39:03Z", "level": "info", "message": "Test case 2342: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2342, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:39:04Z", "level": "info", "message": "Test case 2343: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2343, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:39:05Z", "level": "info", "message": "Test case 2344: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2344, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:39:06Z", "level": "info", "message": "Test case 2345: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2345, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:39:07Z", "level": "info", "message": "Test case 2346: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2346, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:39:08Z", "level": "info", "message": "Test case 2347: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2347, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:39:09Z", "level": "info", "message": "Test case 2348: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2348, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:39:10Z", "level": "info", "message": "Test case 2349: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2349, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:39:11Z", "level": "info", "message": "Test case 2350: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2350, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:39:12Z", "level": "info", "message": "Test case 2351: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2351, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:39:13Z", "level": "info", "message": "Test case 2352: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2352, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:39:14Z", "level": "info", "message": "Test case 2353: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2353, "data": "4iih"} +{"timestamp": "2024-01-01T00:39:15Z", "level": "info", "message": "Test case 2354: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2354, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:39:16Z", "level": "info", "message": "Test case 2355: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2355, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:39:17Z", "level": "info", "message": "Test case 2356: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2356, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:39:18Z", "level": "info", "message": "Test case 2357: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2357, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:39:19Z", "level": "info", "message": "Test case 2358: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2358, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:39:20Z", "level": "info", "message": "Test case 2359: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2359, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:39:21Z", "level": "info", "message": "Test case 2360: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2360, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:39:22Z", "level": "info", "message": "Test case 2361: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2361, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:39:23Z", "level": "info", "message": "Test case 2362: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2362, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:39:24Z", "level": "info", "message": "Test case 2363: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2363, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:39:25Z", "level": "info", "message": "Test case 2364: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2364, "data": "wg=="} +{"timestamp": "2024-01-01T00:39:26Z", "level": "info", "message": "Test case 2365: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2365, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:39:27Z", "level": "info", "message": "Test case 2366: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2366, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:39:28Z", "level": "info", "message": "Test case 2367: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2367, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:39:29Z", "level": "info", "message": "Test case 2368: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2368, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:39:30Z", "level": "info", "message": "Test case 2369: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2369, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:39:31Z", "level": "info", "message": "Test case 2370: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2370, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:39:32Z", "level": "info", "message": "Test case 2371: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2371, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:39:33Z", "level": "info", "message": "Test case 2372: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2372, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:39:34Z", "level": "info", "message": "Test case 2373: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2373, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:39:35Z", "level": "info", "message": "Test case 2374: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2374, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:39:36Z", "level": "info", "message": "Test case 2375: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2375, "data": "wIA="} +{"timestamp": "2024-01-01T00:39:37Z", "level": "info", "message": "Test case 2376: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2376, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:39:38Z", "level": "info", "message": "Test case 2377: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2377, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:39:39Z", "level": "info", "message": "Test case 2378: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2378, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:39:40Z", "level": "info", "message": "Test case 2379: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2379, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:39:41Z", "level": "info", "message": "Test case 2380: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2380, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:39:42Z", "level": "info", "message": "Test case 2381: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2381, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:39:43Z", "level": "info", "message": "Test case 2382: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2382, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:39:44Z", "level": "info", "message": "Test case 2383: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2383, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:39:45Z", "level": "info", "message": "Test case 2384: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2384, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:39:46Z", "level": "info", "message": "Test case 2385: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2385, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:39:47Z", "level": "info", "message": "Test case 2386: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2386, "data": "4ICA"} +{"timestamp": "2024-01-01T00:39:48Z", "level": "info", "message": "Test case 2387: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2387, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:39:49Z", "level": "info", "message": "Test case 2388: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2388, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:39:50Z", "level": "info", "message": "Test case 2389: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2389, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:39:51Z", "level": "info", "message": "Test case 2390: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2390, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:39:52Z", "level": "info", "message": "Test case 2391: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2391, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:39:53Z", "level": "info", "message": "Test case 2392: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2392, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:39:54Z", "level": "info", "message": "Test case 2393: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2393, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:39:55Z", "level": "info", "message": "Test case 2394: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2394, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:39:56Z", "level": "info", "message": "Test case 2395: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2395, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:39:57Z", "level": "info", "message": "Test case 2396: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2396, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:39:58Z", "level": "info", "message": "Test case 2397: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2397, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:39:59Z", "level": "info", "message": "Test case 2398: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2398, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:40:00Z", "level": "info", "message": "Test case 2399: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2399, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:40:01Z", "level": "info", "message": "Test case 2400: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2400, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:40:02Z", "level": "info", "message": "Test case 2401: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2401, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:40:03Z", "level": "info", "message": "Test case 2402: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2402, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:40:04Z", "level": "info", "message": "Test case 2403: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2403, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:40:05Z", "level": "info", "message": "Test case 2404: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2404, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:40:06Z", "level": "info", "message": "Test case 2405: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2405, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:40:07Z", "level": "info", "message": "Test case 2406: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2406, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:40:08Z", "level": "info", "message": "Test case 2407: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2407, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:40:09Z", "level": "info", "message": "Test case 2408: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2408, "data": "4iih"} +{"timestamp": "2024-01-01T00:40:10Z", "level": "info", "message": "Test case 2409: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2409, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:40:11Z", "level": "info", "message": "Test case 2410: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2410, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:40:12Z", "level": "info", "message": "Test case 2411: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2411, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:40:13Z", "level": "info", "message": "Test case 2412: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2412, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:40:14Z", "level": "info", "message": "Test case 2413: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2413, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:40:15Z", "level": "info", "message": "Test case 2414: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2414, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:40:16Z", "level": "info", "message": "Test case 2415: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2415, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:40:17Z", "level": "info", "message": "Test case 2416: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2416, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:40:18Z", "level": "info", "message": "Test case 2417: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2417, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:40:19Z", "level": "info", "message": "Test case 2418: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2418, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:40:20Z", "level": "info", "message": "Test case 2419: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2419, "data": "wg=="} +{"timestamp": "2024-01-01T00:40:21Z", "level": "info", "message": "Test case 2420: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2420, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:40:22Z", "level": "info", "message": "Test case 2421: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2421, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:40:23Z", "level": "info", "message": "Test case 2422: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2422, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:40:24Z", "level": "info", "message": "Test case 2423: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2423, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:40:25Z", "level": "info", "message": "Test case 2424: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2424, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:40:26Z", "level": "info", "message": "Test case 2425: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2425, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:40:27Z", "level": "info", "message": "Test case 2426: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2426, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:40:28Z", "level": "info", "message": "Test case 2427: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2427, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:40:29Z", "level": "info", "message": "Test case 2428: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2428, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:40:30Z", "level": "info", "message": "Test case 2429: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2429, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:40:31Z", "level": "info", "message": "Test case 2430: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2430, "data": "wIA="} +{"timestamp": "2024-01-01T00:40:32Z", "level": "info", "message": "Test case 2431: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2431, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:40:33Z", "level": "info", "message": "Test case 2432: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2432, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:40:34Z", "level": "info", "message": "Test case 2433: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2433, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:40:35Z", "level": "info", "message": "Test case 2434: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2434, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:40:36Z", "level": "info", "message": "Test case 2435: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2435, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:40:37Z", "level": "info", "message": "Test case 2436: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2436, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:40:38Z", "level": "info", "message": "Test case 2437: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2437, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:40:39Z", "level": "info", "message": "Test case 2438: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2438, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:40:40Z", "level": "info", "message": "Test case 2439: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2439, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:40:41Z", "level": "info", "message": "Test case 2440: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2440, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:40:42Z", "level": "info", "message": "Test case 2441: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2441, "data": "4ICA"} +{"timestamp": "2024-01-01T00:40:43Z", "level": "info", "message": "Test case 2442: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2442, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:40:44Z", "level": "info", "message": "Test case 2443: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2443, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:40:45Z", "level": "info", "message": "Test case 2444: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2444, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:40:46Z", "level": "info", "message": "Test case 2445: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2445, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:40:47Z", "level": "info", "message": "Test case 2446: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2446, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:40:48Z", "level": "info", "message": "Test case 2447: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2447, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:40:49Z", "level": "info", "message": "Test case 2448: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2448, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:40:50Z", "level": "info", "message": "Test case 2449: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2449, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:40:51Z", "level": "info", "message": "Test case 2450: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2450, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:40:52Z", "level": "info", "message": "Test case 2451: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2451, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:40:53Z", "level": "info", "message": "Test case 2452: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2452, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:40:54Z", "level": "info", "message": "Test case 2453: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2453, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:40:55Z", "level": "info", "message": "Test case 2454: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2454, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:40:56Z", "level": "info", "message": "Test case 2455: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2455, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:40:57Z", "level": "info", "message": "Test case 2456: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2456, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:40:58Z", "level": "info", "message": "Test case 2457: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2457, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:40:59Z", "level": "info", "message": "Test case 2458: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2458, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:41:00Z", "level": "info", "message": "Test case 2459: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2459, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:41:01Z", "level": "info", "message": "Test case 2460: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2460, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:41:02Z", "level": "info", "message": "Test case 2461: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2461, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:41:03Z", "level": "info", "message": "Test case 2462: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2462, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:41:04Z", "level": "info", "message": "Test case 2463: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2463, "data": "4iih"} +{"timestamp": "2024-01-01T00:41:05Z", "level": "info", "message": "Test case 2464: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2464, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:41:06Z", "level": "info", "message": "Test case 2465: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2465, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:41:07Z", "level": "info", "message": "Test case 2466: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2466, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:41:08Z", "level": "info", "message": "Test case 2467: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2467, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:41:09Z", "level": "info", "message": "Test case 2468: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2468, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:41:10Z", "level": "info", "message": "Test case 2469: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2469, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:41:11Z", "level": "info", "message": "Test case 2470: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2470, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:41:12Z", "level": "info", "message": "Test case 2471: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2471, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:41:13Z", "level": "info", "message": "Test case 2472: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2472, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:41:14Z", "level": "info", "message": "Test case 2473: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2473, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:41:15Z", "level": "info", "message": "Test case 2474: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2474, "data": "wg=="} +{"timestamp": "2024-01-01T00:41:16Z", "level": "info", "message": "Test case 2475: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2475, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:41:17Z", "level": "info", "message": "Test case 2476: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2476, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:41:18Z", "level": "info", "message": "Test case 2477: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2477, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:41:19Z", "level": "info", "message": "Test case 2478: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2478, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:41:20Z", "level": "info", "message": "Test case 2479: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2479, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:41:21Z", "level": "info", "message": "Test case 2480: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2480, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:41:22Z", "level": "info", "message": "Test case 2481: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2481, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:41:23Z", "level": "info", "message": "Test case 2482: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2482, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:41:24Z", "level": "info", "message": "Test case 2483: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2483, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:41:25Z", "level": "info", "message": "Test case 2484: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2484, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:41:26Z", "level": "info", "message": "Test case 2485: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2485, "data": "wIA="} +{"timestamp": "2024-01-01T00:41:27Z", "level": "info", "message": "Test case 2486: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2486, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:41:28Z", "level": "info", "message": "Test case 2487: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2487, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:41:29Z", "level": "info", "message": "Test case 2488: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2488, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:41:30Z", "level": "info", "message": "Test case 2489: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2489, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:41:31Z", "level": "info", "message": "Test case 2490: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2490, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:41:32Z", "level": "info", "message": "Test case 2491: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2491, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:41:33Z", "level": "info", "message": "Test case 2492: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2492, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:41:34Z", "level": "info", "message": "Test case 2493: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2493, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:41:35Z", "level": "info", "message": "Test case 2494: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2494, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:41:36Z", "level": "info", "message": "Test case 2495: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2495, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:41:37Z", "level": "info", "message": "Test case 2496: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2496, "data": "4ICA"} +{"timestamp": "2024-01-01T00:41:38Z", "level": "info", "message": "Test case 2497: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2497, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:41:39Z", "level": "info", "message": "Test case 2498: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2498, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:41:40Z", "level": "info", "message": "Test case 2499: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2499, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:41:41Z", "level": "info", "message": "Test case 2500: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2500, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:41:42Z", "level": "info", "message": "Test case 2501: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2501, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:41:43Z", "level": "info", "message": "Test case 2502: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2502, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:41:44Z", "level": "info", "message": "Test case 2503: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2503, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:41:45Z", "level": "info", "message": "Test case 2504: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2504, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:41:46Z", "level": "info", "message": "Test case 2505: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2505, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:41:47Z", "level": "info", "message": "Test case 2506: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2506, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:41:48Z", "level": "info", "message": "Test case 2507: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2507, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:41:49Z", "level": "info", "message": "Test case 2508: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2508, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:41:50Z", "level": "info", "message": "Test case 2509: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2509, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:41:51Z", "level": "info", "message": "Test case 2510: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2510, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:41:52Z", "level": "info", "message": "Test case 2511: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2511, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:41:53Z", "level": "info", "message": "Test case 2512: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2512, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:41:54Z", "level": "info", "message": "Test case 2513: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2513, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:41:55Z", "level": "info", "message": "Test case 2514: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2514, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:41:56Z", "level": "info", "message": "Test case 2515: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2515, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:41:57Z", "level": "info", "message": "Test case 2516: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2516, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:41:58Z", "level": "info", "message": "Test case 2517: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2517, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:41:59Z", "level": "info", "message": "Test case 2518: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2518, "data": "4iih"} +{"timestamp": "2024-01-01T00:42:00Z", "level": "info", "message": "Test case 2519: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2519, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:42:01Z", "level": "info", "message": "Test case 2520: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2520, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:42:02Z", "level": "info", "message": "Test case 2521: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2521, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:42:03Z", "level": "info", "message": "Test case 2522: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2522, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:42:04Z", "level": "info", "message": "Test case 2523: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2523, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:42:05Z", "level": "info", "message": "Test case 2524: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2524, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:42:06Z", "level": "info", "message": "Test case 2525: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2525, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:42:07Z", "level": "info", "message": "Test case 2526: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2526, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:42:08Z", "level": "info", "message": "Test case 2527: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2527, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:42:09Z", "level": "info", "message": "Test case 2528: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2528, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:42:10Z", "level": "info", "message": "Test case 2529: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2529, "data": "wg=="} +{"timestamp": "2024-01-01T00:42:11Z", "level": "info", "message": "Test case 2530: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2530, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:42:12Z", "level": "info", "message": "Test case 2531: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2531, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:42:13Z", "level": "info", "message": "Test case 2532: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2532, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:42:14Z", "level": "info", "message": "Test case 2533: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2533, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:42:15Z", "level": "info", "message": "Test case 2534: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2534, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:42:16Z", "level": "info", "message": "Test case 2535: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2535, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:42:17Z", "level": "info", "message": "Test case 2536: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2536, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:42:18Z", "level": "info", "message": "Test case 2537: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2537, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:42:19Z", "level": "info", "message": "Test case 2538: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2538, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:42:20Z", "level": "info", "message": "Test case 2539: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2539, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:42:21Z", "level": "info", "message": "Test case 2540: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2540, "data": "wIA="} +{"timestamp": "2024-01-01T00:42:22Z", "level": "info", "message": "Test case 2541: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2541, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:42:23Z", "level": "info", "message": "Test case 2542: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2542, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:42:24Z", "level": "info", "message": "Test case 2543: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2543, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:42:25Z", "level": "info", "message": "Test case 2544: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2544, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:42:26Z", "level": "info", "message": "Test case 2545: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2545, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:42:27Z", "level": "info", "message": "Test case 2546: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2546, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:42:28Z", "level": "info", "message": "Test case 2547: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2547, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:42:29Z", "level": "info", "message": "Test case 2548: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2548, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:42:30Z", "level": "info", "message": "Test case 2549: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2549, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:42:31Z", "level": "info", "message": "Test case 2550: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2550, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:42:32Z", "level": "info", "message": "Test case 2551: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2551, "data": "4ICA"} +{"timestamp": "2024-01-01T00:42:33Z", "level": "info", "message": "Test case 2552: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2552, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:42:34Z", "level": "info", "message": "Test case 2553: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2553, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:42:35Z", "level": "info", "message": "Test case 2554: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2554, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:42:36Z", "level": "info", "message": "Test case 2555: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2555, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:42:37Z", "level": "info", "message": "Test case 2556: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2556, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:42:38Z", "level": "info", "message": "Test case 2557: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2557, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:42:39Z", "level": "info", "message": "Test case 2558: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2558, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:42:40Z", "level": "info", "message": "Test case 2559: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2559, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:42:41Z", "level": "info", "message": "Test case 2560: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2560, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:42:42Z", "level": "info", "message": "Test case 2561: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2561, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:42:43Z", "level": "info", "message": "Test case 2562: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2562, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:42:44Z", "level": "info", "message": "Test case 2563: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2563, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:42:45Z", "level": "info", "message": "Test case 2564: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2564, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:42:46Z", "level": "info", "message": "Test case 2565: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2565, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:42:47Z", "level": "info", "message": "Test case 2566: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2566, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:42:48Z", "level": "info", "message": "Test case 2567: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2567, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:42:49Z", "level": "info", "message": "Test case 2568: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2568, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:42:50Z", "level": "info", "message": "Test case 2569: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2569, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:42:51Z", "level": "info", "message": "Test case 2570: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2570, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:42:52Z", "level": "info", "message": "Test case 2571: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2571, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:42:53Z", "level": "info", "message": "Test case 2572: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2572, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:42:54Z", "level": "info", "message": "Test case 2573: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2573, "data": "4iih"} +{"timestamp": "2024-01-01T00:42:55Z", "level": "info", "message": "Test case 2574: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2574, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:42:56Z", "level": "info", "message": "Test case 2575: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2575, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:42:57Z", "level": "info", "message": "Test case 2576: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2576, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:42:58Z", "level": "info", "message": "Test case 2577: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2577, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:42:59Z", "level": "info", "message": "Test case 2578: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2578, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:43:00Z", "level": "info", "message": "Test case 2579: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2579, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:43:01Z", "level": "info", "message": "Test case 2580: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2580, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:43:02Z", "level": "info", "message": "Test case 2581: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2581, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:43:03Z", "level": "info", "message": "Test case 2582: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2582, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:43:04Z", "level": "info", "message": "Test case 2583: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2583, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:43:05Z", "level": "info", "message": "Test case 2584: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2584, "data": "wg=="} +{"timestamp": "2024-01-01T00:43:06Z", "level": "info", "message": "Test case 2585: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2585, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:43:07Z", "level": "info", "message": "Test case 2586: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2586, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:43:08Z", "level": "info", "message": "Test case 2587: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2587, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:43:09Z", "level": "info", "message": "Test case 2588: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2588, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:43:10Z", "level": "info", "message": "Test case 2589: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2589, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:43:11Z", "level": "info", "message": "Test case 2590: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2590, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:43:12Z", "level": "info", "message": "Test case 2591: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2591, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:43:13Z", "level": "info", "message": "Test case 2592: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2592, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:43:14Z", "level": "info", "message": "Test case 2593: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2593, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:43:15Z", "level": "info", "message": "Test case 2594: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2594, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:43:16Z", "level": "info", "message": "Test case 2595: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2595, "data": "wIA="} +{"timestamp": "2024-01-01T00:43:17Z", "level": "info", "message": "Test case 2596: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2596, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:43:18Z", "level": "info", "message": "Test case 2597: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2597, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:43:19Z", "level": "info", "message": "Test case 2598: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2598, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:43:20Z", "level": "info", "message": "Test case 2599: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2599, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:43:21Z", "level": "info", "message": "Test case 2600: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2600, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:43:22Z", "level": "info", "message": "Test case 2601: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2601, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:43:23Z", "level": "info", "message": "Test case 2602: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2602, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:43:24Z", "level": "info", "message": "Test case 2603: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2603, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:43:25Z", "level": "info", "message": "Test case 2604: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2604, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:43:26Z", "level": "info", "message": "Test case 2605: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2605, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:43:27Z", "level": "info", "message": "Test case 2606: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2606, "data": "4ICA"} +{"timestamp": "2024-01-01T00:43:28Z", "level": "info", "message": "Test case 2607: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2607, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:43:29Z", "level": "info", "message": "Test case 2608: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2608, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:43:30Z", "level": "info", "message": "Test case 2609: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2609, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:43:31Z", "level": "info", "message": "Test case 2610: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2610, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:43:32Z", "level": "info", "message": "Test case 2611: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2611, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:43:33Z", "level": "info", "message": "Test case 2612: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2612, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:43:34Z", "level": "info", "message": "Test case 2613: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2613, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:43:35Z", "level": "info", "message": "Test case 2614: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2614, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:43:36Z", "level": "info", "message": "Test case 2615: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2615, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:43:37Z", "level": "info", "message": "Test case 2616: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2616, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:43:38Z", "level": "info", "message": "Test case 2617: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2617, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:43:39Z", "level": "info", "message": "Test case 2618: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2618, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:43:40Z", "level": "info", "message": "Test case 2619: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2619, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:43:41Z", "level": "info", "message": "Test case 2620: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2620, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:43:42Z", "level": "info", "message": "Test case 2621: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2621, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:43:43Z", "level": "info", "message": "Test case 2622: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2622, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:43:44Z", "level": "info", "message": "Test case 2623: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2623, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:43:45Z", "level": "info", "message": "Test case 2624: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2624, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:43:46Z", "level": "info", "message": "Test case 2625: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2625, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:43:47Z", "level": "info", "message": "Test case 2626: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2626, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:43:48Z", "level": "info", "message": "Test case 2627: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2627, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:43:49Z", "level": "info", "message": "Test case 2628: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2628, "data": "4iih"} +{"timestamp": "2024-01-01T00:43:50Z", "level": "info", "message": "Test case 2629: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2629, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:43:51Z", "level": "info", "message": "Test case 2630: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2630, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:43:52Z", "level": "info", "message": "Test case 2631: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2631, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:43:53Z", "level": "info", "message": "Test case 2632: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2632, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:43:54Z", "level": "info", "message": "Test case 2633: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2633, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:43:55Z", "level": "info", "message": "Test case 2634: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2634, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:43:56Z", "level": "info", "message": "Test case 2635: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2635, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:43:57Z", "level": "info", "message": "Test case 2636: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2636, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:43:58Z", "level": "info", "message": "Test case 2637: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2637, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:43:59Z", "level": "info", "message": "Test case 2638: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2638, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:44:00Z", "level": "info", "message": "Test case 2639: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2639, "data": "wg=="} +{"timestamp": "2024-01-01T00:44:01Z", "level": "info", "message": "Test case 2640: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2640, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:44:02Z", "level": "info", "message": "Test case 2641: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2641, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:44:03Z", "level": "info", "message": "Test case 2642: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2642, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:44:04Z", "level": "info", "message": "Test case 2643: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2643, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:44:05Z", "level": "info", "message": "Test case 2644: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2644, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:44:06Z", "level": "info", "message": "Test case 2645: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2645, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:44:07Z", "level": "info", "message": "Test case 2646: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2646, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:44:08Z", "level": "info", "message": "Test case 2647: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2647, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:44:09Z", "level": "info", "message": "Test case 2648: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2648, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:44:10Z", "level": "info", "message": "Test case 2649: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2649, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:44:11Z", "level": "info", "message": "Test case 2650: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2650, "data": "wIA="} +{"timestamp": "2024-01-01T00:44:12Z", "level": "info", "message": "Test case 2651: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2651, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:44:13Z", "level": "info", "message": "Test case 2652: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2652, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:44:14Z", "level": "info", "message": "Test case 2653: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2653, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:44:15Z", "level": "info", "message": "Test case 2654: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2654, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:44:16Z", "level": "info", "message": "Test case 2655: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2655, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:44:17Z", "level": "info", "message": "Test case 2656: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2656, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:44:18Z", "level": "info", "message": "Test case 2657: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2657, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:44:19Z", "level": "info", "message": "Test case 2658: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2658, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:44:20Z", "level": "info", "message": "Test case 2659: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2659, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:44:21Z", "level": "info", "message": "Test case 2660: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2660, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:44:22Z", "level": "info", "message": "Test case 2661: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2661, "data": "4ICA"} +{"timestamp": "2024-01-01T00:44:23Z", "level": "info", "message": "Test case 2662: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2662, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:44:24Z", "level": "info", "message": "Test case 2663: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2663, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:44:25Z", "level": "info", "message": "Test case 2664: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2664, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:44:26Z", "level": "info", "message": "Test case 2665: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2665, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:44:27Z", "level": "info", "message": "Test case 2666: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2666, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:44:28Z", "level": "info", "message": "Test case 2667: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2667, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:44:29Z", "level": "info", "message": "Test case 2668: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2668, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:44:30Z", "level": "info", "message": "Test case 2669: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2669, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:44:31Z", "level": "info", "message": "Test case 2670: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2670, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:44:32Z", "level": "info", "message": "Test case 2671: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2671, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:44:33Z", "level": "info", "message": "Test case 2672: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2672, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:44:34Z", "level": "info", "message": "Test case 2673: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2673, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:44:35Z", "level": "info", "message": "Test case 2674: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2674, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:44:36Z", "level": "info", "message": "Test case 2675: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2675, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:44:37Z", "level": "info", "message": "Test case 2676: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2676, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:44:38Z", "level": "info", "message": "Test case 2677: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2677, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:44:39Z", "level": "info", "message": "Test case 2678: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2678, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:44:40Z", "level": "info", "message": "Test case 2679: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2679, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:44:41Z", "level": "info", "message": "Test case 2680: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2680, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:44:42Z", "level": "info", "message": "Test case 2681: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2681, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:44:43Z", "level": "info", "message": "Test case 2682: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2682, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:44:44Z", "level": "info", "message": "Test case 2683: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2683, "data": "4iih"} +{"timestamp": "2024-01-01T00:44:45Z", "level": "info", "message": "Test case 2684: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2684, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:44:46Z", "level": "info", "message": "Test case 2685: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2685, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:44:47Z", "level": "info", "message": "Test case 2686: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2686, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:44:48Z", "level": "info", "message": "Test case 2687: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2687, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:44:49Z", "level": "info", "message": "Test case 2688: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2688, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:44:50Z", "level": "info", "message": "Test case 2689: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2689, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:44:51Z", "level": "info", "message": "Test case 2690: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2690, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:44:52Z", "level": "info", "message": "Test case 2691: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2691, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:44:53Z", "level": "info", "message": "Test case 2692: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2692, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:44:54Z", "level": "info", "message": "Test case 2693: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2693, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:44:55Z", "level": "info", "message": "Test case 2694: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2694, "data": "wg=="} +{"timestamp": "2024-01-01T00:44:56Z", "level": "info", "message": "Test case 2695: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2695, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:44:57Z", "level": "info", "message": "Test case 2696: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2696, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:44:58Z", "level": "info", "message": "Test case 2697: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2697, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:44:59Z", "level": "info", "message": "Test case 2698: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2698, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:45:00Z", "level": "info", "message": "Test case 2699: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2699, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:45:01Z", "level": "info", "message": "Test case 2700: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2700, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:45:02Z", "level": "info", "message": "Test case 2701: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2701, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:45:03Z", "level": "info", "message": "Test case 2702: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2702, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:45:04Z", "level": "info", "message": "Test case 2703: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2703, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:45:05Z", "level": "info", "message": "Test case 2704: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2704, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:45:06Z", "level": "info", "message": "Test case 2705: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2705, "data": "wIA="} +{"timestamp": "2024-01-01T00:45:07Z", "level": "info", "message": "Test case 2706: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2706, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:45:08Z", "level": "info", "message": "Test case 2707: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2707, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:45:09Z", "level": "info", "message": "Test case 2708: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2708, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:45:10Z", "level": "info", "message": "Test case 2709: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2709, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:45:11Z", "level": "info", "message": "Test case 2710: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2710, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:45:12Z", "level": "info", "message": "Test case 2711: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2711, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:45:13Z", "level": "info", "message": "Test case 2712: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2712, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:45:14Z", "level": "info", "message": "Test case 2713: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2713, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:45:15Z", "level": "info", "message": "Test case 2714: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2714, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:45:16Z", "level": "info", "message": "Test case 2715: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2715, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:45:17Z", "level": "info", "message": "Test case 2716: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2716, "data": "4ICA"} +{"timestamp": "2024-01-01T00:45:18Z", "level": "info", "message": "Test case 2717: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2717, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:45:19Z", "level": "info", "message": "Test case 2718: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2718, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:45:20Z", "level": "info", "message": "Test case 2719: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2719, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:45:21Z", "level": "info", "message": "Test case 2720: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2720, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:45:22Z", "level": "info", "message": "Test case 2721: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2721, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:45:23Z", "level": "info", "message": "Test case 2722: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2722, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:45:24Z", "level": "info", "message": "Test case 2723: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2723, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:45:25Z", "level": "info", "message": "Test case 2724: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2724, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:45:26Z", "level": "info", "message": "Test case 2725: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2725, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:45:27Z", "level": "info", "message": "Test case 2726: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2726, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:45:28Z", "level": "info", "message": "Test case 2727: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2727, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:45:29Z", "level": "info", "message": "Test case 2728: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2728, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:45:30Z", "level": "info", "message": "Test case 2729: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2729, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:45:31Z", "level": "info", "message": "Test case 2730: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2730, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:45:32Z", "level": "info", "message": "Test case 2731: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2731, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:45:33Z", "level": "info", "message": "Test case 2732: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2732, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:45:34Z", "level": "info", "message": "Test case 2733: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2733, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:45:35Z", "level": "info", "message": "Test case 2734: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2734, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:45:36Z", "level": "info", "message": "Test case 2735: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2735, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:45:37Z", "level": "info", "message": "Test case 2736: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2736, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:45:38Z", "level": "info", "message": "Test case 2737: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2737, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:45:39Z", "level": "info", "message": "Test case 2738: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2738, "data": "4iih"} +{"timestamp": "2024-01-01T00:45:40Z", "level": "info", "message": "Test case 2739: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2739, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:45:41Z", "level": "info", "message": "Test case 2740: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2740, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:45:42Z", "level": "info", "message": "Test case 2741: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2741, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:45:43Z", "level": "info", "message": "Test case 2742: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2742, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:45:44Z", "level": "info", "message": "Test case 2743: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2743, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:45:45Z", "level": "info", "message": "Test case 2744: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2744, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:45:46Z", "level": "info", "message": "Test case 2745: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2745, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:45:47Z", "level": "info", "message": "Test case 2746: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2746, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:45:48Z", "level": "info", "message": "Test case 2747: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2747, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:45:49Z", "level": "info", "message": "Test case 2748: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2748, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:45:50Z", "level": "info", "message": "Test case 2749: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2749, "data": "wg=="} +{"timestamp": "2024-01-01T00:45:51Z", "level": "info", "message": "Test case 2750: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2750, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:45:52Z", "level": "info", "message": "Test case 2751: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2751, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:45:53Z", "level": "info", "message": "Test case 2752: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2752, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:45:54Z", "level": "info", "message": "Test case 2753: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2753, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:45:55Z", "level": "info", "message": "Test case 2754: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2754, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:45:56Z", "level": "info", "message": "Test case 2755: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2755, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:45:57Z", "level": "info", "message": "Test case 2756: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2756, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:45:58Z", "level": "info", "message": "Test case 2757: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2757, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:45:59Z", "level": "info", "message": "Test case 2758: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2758, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:46:00Z", "level": "info", "message": "Test case 2759: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2759, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:46:01Z", "level": "info", "message": "Test case 2760: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2760, "data": "wIA="} +{"timestamp": "2024-01-01T00:46:02Z", "level": "info", "message": "Test case 2761: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2761, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:46:03Z", "level": "info", "message": "Test case 2762: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2762, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:46:04Z", "level": "info", "message": "Test case 2763: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2763, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:46:05Z", "level": "info", "message": "Test case 2764: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2764, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:46:06Z", "level": "info", "message": "Test case 2765: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2765, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:46:07Z", "level": "info", "message": "Test case 2766: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2766, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:46:08Z", "level": "info", "message": "Test case 2767: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2767, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:46:09Z", "level": "info", "message": "Test case 2768: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2768, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:46:10Z", "level": "info", "message": "Test case 2769: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2769, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:46:11Z", "level": "info", "message": "Test case 2770: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2770, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:46:12Z", "level": "info", "message": "Test case 2771: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2771, "data": "4ICA"} +{"timestamp": "2024-01-01T00:46:13Z", "level": "info", "message": "Test case 2772: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2772, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:46:14Z", "level": "info", "message": "Test case 2773: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2773, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:46:15Z", "level": "info", "message": "Test case 2774: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2774, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:46:16Z", "level": "info", "message": "Test case 2775: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2775, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:46:17Z", "level": "info", "message": "Test case 2776: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2776, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:46:18Z", "level": "info", "message": "Test case 2777: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2777, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:46:19Z", "level": "info", "message": "Test case 2778: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2778, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:46:20Z", "level": "info", "message": "Test case 2779: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2779, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:46:21Z", "level": "info", "message": "Test case 2780: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2780, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:46:22Z", "level": "info", "message": "Test case 2781: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2781, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:46:23Z", "level": "info", "message": "Test case 2782: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2782, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:46:24Z", "level": "info", "message": "Test case 2783: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2783, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:46:25Z", "level": "info", "message": "Test case 2784: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2784, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:46:26Z", "level": "info", "message": "Test case 2785: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2785, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:46:27Z", "level": "info", "message": "Test case 2786: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2786, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:46:28Z", "level": "info", "message": "Test case 2787: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2787, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:46:29Z", "level": "info", "message": "Test case 2788: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2788, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:46:30Z", "level": "info", "message": "Test case 2789: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2789, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:46:31Z", "level": "info", "message": "Test case 2790: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2790, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:46:32Z", "level": "info", "message": "Test case 2791: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2791, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:46:33Z", "level": "info", "message": "Test case 2792: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2792, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:46:34Z", "level": "info", "message": "Test case 2793: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2793, "data": "4iih"} +{"timestamp": "2024-01-01T00:46:35Z", "level": "info", "message": "Test case 2794: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2794, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:46:36Z", "level": "info", "message": "Test case 2795: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2795, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:46:37Z", "level": "info", "message": "Test case 2796: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2796, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:46:38Z", "level": "info", "message": "Test case 2797: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2797, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:46:39Z", "level": "info", "message": "Test case 2798: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2798, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:46:40Z", "level": "info", "message": "Test case 2799: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2799, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:46:41Z", "level": "info", "message": "Test case 2800: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2800, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:46:42Z", "level": "info", "message": "Test case 2801: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2801, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:46:43Z", "level": "info", "message": "Test case 2802: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2802, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:46:44Z", "level": "info", "message": "Test case 2803: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2803, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:46:45Z", "level": "info", "message": "Test case 2804: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2804, "data": "wg=="} +{"timestamp": "2024-01-01T00:46:46Z", "level": "info", "message": "Test case 2805: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2805, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:46:47Z", "level": "info", "message": "Test case 2806: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2806, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:46:48Z", "level": "info", "message": "Test case 2807: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2807, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:46:49Z", "level": "info", "message": "Test case 2808: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2808, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:46:50Z", "level": "info", "message": "Test case 2809: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2809, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:46:51Z", "level": "info", "message": "Test case 2810: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2810, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:46:52Z", "level": "info", "message": "Test case 2811: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2811, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:46:53Z", "level": "info", "message": "Test case 2812: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2812, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:46:54Z", "level": "info", "message": "Test case 2813: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2813, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:46:55Z", "level": "info", "message": "Test case 2814: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2814, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:46:56Z", "level": "info", "message": "Test case 2815: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2815, "data": "wIA="} +{"timestamp": "2024-01-01T00:46:57Z", "level": "info", "message": "Test case 2816: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2816, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:46:58Z", "level": "info", "message": "Test case 2817: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2817, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:46:59Z", "level": "info", "message": "Test case 2818: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2818, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:47:00Z", "level": "info", "message": "Test case 2819: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2819, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:47:01Z", "level": "info", "message": "Test case 2820: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2820, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:47:02Z", "level": "info", "message": "Test case 2821: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2821, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:47:03Z", "level": "info", "message": "Test case 2822: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2822, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:47:04Z", "level": "info", "message": "Test case 2823: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2823, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:47:05Z", "level": "info", "message": "Test case 2824: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2824, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:47:06Z", "level": "info", "message": "Test case 2825: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2825, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:47:07Z", "level": "info", "message": "Test case 2826: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2826, "data": "4ICA"} +{"timestamp": "2024-01-01T00:47:08Z", "level": "info", "message": "Test case 2827: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2827, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:47:09Z", "level": "info", "message": "Test case 2828: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2828, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:47:10Z", "level": "info", "message": "Test case 2829: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2829, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:47:11Z", "level": "info", "message": "Test case 2830: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2830, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:47:12Z", "level": "info", "message": "Test case 2831: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2831, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:47:13Z", "level": "info", "message": "Test case 2832: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2832, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:47:14Z", "level": "info", "message": "Test case 2833: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2833, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:47:15Z", "level": "info", "message": "Test case 2834: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2834, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:47:16Z", "level": "info", "message": "Test case 2835: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2835, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:47:17Z", "level": "info", "message": "Test case 2836: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2836, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:47:18Z", "level": "info", "message": "Test case 2837: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2837, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:47:19Z", "level": "info", "message": "Test case 2838: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2838, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:47:20Z", "level": "info", "message": "Test case 2839: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2839, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:47:21Z", "level": "info", "message": "Test case 2840: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2840, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:47:22Z", "level": "info", "message": "Test case 2841: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2841, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:47:23Z", "level": "info", "message": "Test case 2842: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2842, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:47:24Z", "level": "info", "message": "Test case 2843: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2843, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:47:25Z", "level": "info", "message": "Test case 2844: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2844, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:47:26Z", "level": "info", "message": "Test case 2845: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2845, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:47:27Z", "level": "info", "message": "Test case 2846: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2846, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:47:28Z", "level": "info", "message": "Test case 2847: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2847, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:47:29Z", "level": "info", "message": "Test case 2848: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2848, "data": "4iih"} +{"timestamp": "2024-01-01T00:47:30Z", "level": "info", "message": "Test case 2849: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2849, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:47:31Z", "level": "info", "message": "Test case 2850: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2850, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:47:32Z", "level": "info", "message": "Test case 2851: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2851, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:47:33Z", "level": "info", "message": "Test case 2852: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2852, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:47:34Z", "level": "info", "message": "Test case 2853: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2853, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:47:35Z", "level": "info", "message": "Test case 2854: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2854, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:47:36Z", "level": "info", "message": "Test case 2855: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2855, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:47:37Z", "level": "info", "message": "Test case 2856: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2856, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:47:38Z", "level": "info", "message": "Test case 2857: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2857, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:47:39Z", "level": "info", "message": "Test case 2858: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2858, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:47:40Z", "level": "info", "message": "Test case 2859: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2859, "data": "wg=="} +{"timestamp": "2024-01-01T00:47:41Z", "level": "info", "message": "Test case 2860: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2860, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:47:42Z", "level": "info", "message": "Test case 2861: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2861, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:47:43Z", "level": "info", "message": "Test case 2862: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2862, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:47:44Z", "level": "info", "message": "Test case 2863: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2863, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:47:45Z", "level": "info", "message": "Test case 2864: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2864, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:47:46Z", "level": "info", "message": "Test case 2865: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2865, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:47:47Z", "level": "info", "message": "Test case 2866: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2866, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:47:48Z", "level": "info", "message": "Test case 2867: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2867, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:47:49Z", "level": "info", "message": "Test case 2868: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2868, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:47:50Z", "level": "info", "message": "Test case 2869: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2869, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:47:51Z", "level": "info", "message": "Test case 2870: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2870, "data": "wIA="} +{"timestamp": "2024-01-01T00:47:52Z", "level": "info", "message": "Test case 2871: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2871, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:47:53Z", "level": "info", "message": "Test case 2872: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2872, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:47:54Z", "level": "info", "message": "Test case 2873: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2873, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:47:55Z", "level": "info", "message": "Test case 2874: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2874, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:47:56Z", "level": "info", "message": "Test case 2875: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2875, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:47:57Z", "level": "info", "message": "Test case 2876: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2876, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:47:58Z", "level": "info", "message": "Test case 2877: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2877, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:47:59Z", "level": "info", "message": "Test case 2878: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2878, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:48:00Z", "level": "info", "message": "Test case 2879: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2879, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:48:01Z", "level": "info", "message": "Test case 2880: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2880, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:48:02Z", "level": "info", "message": "Test case 2881: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2881, "data": "4ICA"} +{"timestamp": "2024-01-01T00:48:03Z", "level": "info", "message": "Test case 2882: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2882, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:48:04Z", "level": "info", "message": "Test case 2883: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2883, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:48:05Z", "level": "info", "message": "Test case 2884: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2884, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:48:06Z", "level": "info", "message": "Test case 2885: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2885, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:48:07Z", "level": "info", "message": "Test case 2886: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2886, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:48:08Z", "level": "info", "message": "Test case 2887: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2887, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:48:09Z", "level": "info", "message": "Test case 2888: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2888, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:48:10Z", "level": "info", "message": "Test case 2889: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2889, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:48:11Z", "level": "info", "message": "Test case 2890: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2890, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:48:12Z", "level": "info", "message": "Test case 2891: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2891, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:48:13Z", "level": "info", "message": "Test case 2892: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2892, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:48:14Z", "level": "info", "message": "Test case 2893: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2893, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:48:15Z", "level": "info", "message": "Test case 2894: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2894, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:48:16Z", "level": "info", "message": "Test case 2895: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2895, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:48:17Z", "level": "info", "message": "Test case 2896: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2896, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:48:18Z", "level": "info", "message": "Test case 2897: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2897, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:48:19Z", "level": "info", "message": "Test case 2898: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2898, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:48:20Z", "level": "info", "message": "Test case 2899: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2899, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:48:21Z", "level": "info", "message": "Test case 2900: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2900, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:48:22Z", "level": "info", "message": "Test case 2901: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2901, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:48:23Z", "level": "info", "message": "Test case 2902: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2902, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:48:24Z", "level": "info", "message": "Test case 2903: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2903, "data": "4iih"} +{"timestamp": "2024-01-01T00:48:25Z", "level": "info", "message": "Test case 2904: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2904, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:48:26Z", "level": "info", "message": "Test case 2905: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2905, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:48:27Z", "level": "info", "message": "Test case 2906: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2906, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:48:28Z", "level": "info", "message": "Test case 2907: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2907, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:48:29Z", "level": "info", "message": "Test case 2908: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2908, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:48:30Z", "level": "info", "message": "Test case 2909: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2909, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:48:31Z", "level": "info", "message": "Test case 2910: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2910, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:48:32Z", "level": "info", "message": "Test case 2911: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2911, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:48:33Z", "level": "info", "message": "Test case 2912: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2912, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:48:34Z", "level": "info", "message": "Test case 2913: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2913, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:48:35Z", "level": "info", "message": "Test case 2914: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2914, "data": "wg=="} +{"timestamp": "2024-01-01T00:48:36Z", "level": "info", "message": "Test case 2915: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2915, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:48:37Z", "level": "info", "message": "Test case 2916: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2916, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:48:38Z", "level": "info", "message": "Test case 2917: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2917, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:48:39Z", "level": "info", "message": "Test case 2918: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2918, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:48:40Z", "level": "info", "message": "Test case 2919: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2919, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:48:41Z", "level": "info", "message": "Test case 2920: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2920, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:48:42Z", "level": "info", "message": "Test case 2921: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2921, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:48:43Z", "level": "info", "message": "Test case 2922: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2922, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:48:44Z", "level": "info", "message": "Test case 2923: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2923, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:48:45Z", "level": "info", "message": "Test case 2924: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2924, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:48:46Z", "level": "info", "message": "Test case 2925: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2925, "data": "wIA="} +{"timestamp": "2024-01-01T00:48:47Z", "level": "info", "message": "Test case 2926: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2926, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:48:48Z", "level": "info", "message": "Test case 2927: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2927, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:48:49Z", "level": "info", "message": "Test case 2928: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2928, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:48:50Z", "level": "info", "message": "Test case 2929: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2929, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:48:51Z", "level": "info", "message": "Test case 2930: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2930, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:48:52Z", "level": "info", "message": "Test case 2931: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2931, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:48:53Z", "level": "info", "message": "Test case 2932: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2932, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:48:54Z", "level": "info", "message": "Test case 2933: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2933, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:48:55Z", "level": "info", "message": "Test case 2934: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2934, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:48:56Z", "level": "info", "message": "Test case 2935: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2935, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:48:57Z", "level": "info", "message": "Test case 2936: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2936, "data": "4ICA"} +{"timestamp": "2024-01-01T00:48:58Z", "level": "info", "message": "Test case 2937: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2937, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:48:59Z", "level": "info", "message": "Test case 2938: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2938, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:49:00Z", "level": "info", "message": "Test case 2939: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2939, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:49:01Z", "level": "info", "message": "Test case 2940: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2940, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:49:02Z", "level": "info", "message": "Test case 2941: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2941, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:49:03Z", "level": "info", "message": "Test case 2942: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2942, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:49:04Z", "level": "info", "message": "Test case 2943: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2943, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:49:05Z", "level": "info", "message": "Test case 2944: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2944, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:49:06Z", "level": "info", "message": "Test case 2945: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2945, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:49:07Z", "level": "info", "message": "Test case 2946: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2946, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:49:08Z", "level": "info", "message": "Test case 2947: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2947, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:49:09Z", "level": "info", "message": "Test case 2948: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2948, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:49:10Z", "level": "info", "message": "Test case 2949: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2949, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:49:11Z", "level": "info", "message": "Test case 2950: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2950, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:49:12Z", "level": "info", "message": "Test case 2951: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2951, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:49:13Z", "level": "info", "message": "Test case 2952: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2952, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:49:14Z", "level": "info", "message": "Test case 2953: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2953, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:49:15Z", "level": "info", "message": "Test case 2954: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2954, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:49:16Z", "level": "info", "message": "Test case 2955: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2955, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:49:17Z", "level": "info", "message": "Test case 2956: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2956, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:49:18Z", "level": "info", "message": "Test case 2957: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2957, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:49:19Z", "level": "info", "message": "Test case 2958: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2958, "data": "4iih"} +{"timestamp": "2024-01-01T00:49:20Z", "level": "info", "message": "Test case 2959: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2959, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:49:21Z", "level": "info", "message": "Test case 2960: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2960, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:49:22Z", "level": "info", "message": "Test case 2961: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2961, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:49:23Z", "level": "info", "message": "Test case 2962: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2962, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:49:24Z", "level": "info", "message": "Test case 2963: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2963, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:49:25Z", "level": "info", "message": "Test case 2964: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2964, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:49:26Z", "level": "info", "message": "Test case 2965: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2965, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:49:27Z", "level": "info", "message": "Test case 2966: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2966, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:49:28Z", "level": "info", "message": "Test case 2967: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2967, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:49:29Z", "level": "info", "message": "Test case 2968: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2968, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:49:30Z", "level": "info", "message": "Test case 2969: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2969, "data": "wg=="} +{"timestamp": "2024-01-01T00:49:31Z", "level": "info", "message": "Test case 2970: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2970, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:49:32Z", "level": "info", "message": "Test case 2971: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2971, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:49:33Z", "level": "info", "message": "Test case 2972: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2972, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:49:34Z", "level": "info", "message": "Test case 2973: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2973, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:49:35Z", "level": "info", "message": "Test case 2974: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2974, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:49:36Z", "level": "info", "message": "Test case 2975: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2975, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:49:37Z", "level": "info", "message": "Test case 2976: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2976, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:49:38Z", "level": "info", "message": "Test case 2977: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2977, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:49:39Z", "level": "info", "message": "Test case 2978: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2978, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:49:40Z", "level": "info", "message": "Test case 2979: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2979, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:49:41Z", "level": "info", "message": "Test case 2980: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2980, "data": "wIA="} +{"timestamp": "2024-01-01T00:49:42Z", "level": "info", "message": "Test case 2981: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2981, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:49:43Z", "level": "info", "message": "Test case 2982: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2982, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:49:44Z", "level": "info", "message": "Test case 2983: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2983, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:49:45Z", "level": "info", "message": "Test case 2984: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2984, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:49:46Z", "level": "info", "message": "Test case 2985: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2985, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:49:47Z", "level": "info", "message": "Test case 2986: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2986, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:49:48Z", "level": "info", "message": "Test case 2987: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2987, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:49:49Z", "level": "info", "message": "Test case 2988: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2988, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:49:50Z", "level": "info", "message": "Test case 2989: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 2989, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:49:51Z", "level": "info", "message": "Test case 2990: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 2990, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:49:52Z", "level": "info", "message": "Test case 2991: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 2991, "data": "4ICA"} +{"timestamp": "2024-01-01T00:49:53Z", "level": "info", "message": "Test case 2992: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 2992, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:49:54Z", "level": "info", "message": "Test case 2993: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 2993, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:49:55Z", "level": "info", "message": "Test case 2994: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 2994, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:49:56Z", "level": "info", "message": "Test case 2995: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 2995, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:49:57Z", "level": "info", "message": "Test case 2996: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 2996, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:49:58Z", "level": "info", "message": "Test case 2997: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 2997, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:49:59Z", "level": "info", "message": "Test case 2998: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 2998, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:50:00Z", "level": "info", "message": "Test case 2999: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 2999, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:50:01Z", "level": "info", "message": "Test case 3000: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3000, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:50:02Z", "level": "info", "message": "Test case 3001: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3001, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:50:03Z", "level": "info", "message": "Test case 3002: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3002, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:50:04Z", "level": "info", "message": "Test case 3003: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3003, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:50:05Z", "level": "info", "message": "Test case 3004: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3004, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:50:06Z", "level": "info", "message": "Test case 3005: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3005, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:50:07Z", "level": "info", "message": "Test case 3006: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3006, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:50:08Z", "level": "info", "message": "Test case 3007: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3007, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:50:09Z", "level": "info", "message": "Test case 3008: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3008, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:50:10Z", "level": "info", "message": "Test case 3009: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3009, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:50:11Z", "level": "info", "message": "Test case 3010: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3010, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:50:12Z", "level": "info", "message": "Test case 3011: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3011, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:50:13Z", "level": "info", "message": "Test case 3012: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3012, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:50:14Z", "level": "info", "message": "Test case 3013: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3013, "data": "4iih"} +{"timestamp": "2024-01-01T00:50:15Z", "level": "info", "message": "Test case 3014: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3014, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:50:16Z", "level": "info", "message": "Test case 3015: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3015, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:50:17Z", "level": "info", "message": "Test case 3016: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3016, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:50:18Z", "level": "info", "message": "Test case 3017: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3017, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:50:19Z", "level": "info", "message": "Test case 3018: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3018, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:50:20Z", "level": "info", "message": "Test case 3019: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3019, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:50:21Z", "level": "info", "message": "Test case 3020: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3020, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:50:22Z", "level": "info", "message": "Test case 3021: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3021, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:50:23Z", "level": "info", "message": "Test case 3022: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3022, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:50:24Z", "level": "info", "message": "Test case 3023: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3023, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:50:25Z", "level": "info", "message": "Test case 3024: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3024, "data": "wg=="} +{"timestamp": "2024-01-01T00:50:26Z", "level": "info", "message": "Test case 3025: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3025, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:50:27Z", "level": "info", "message": "Test case 3026: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3026, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:50:28Z", "level": "info", "message": "Test case 3027: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3027, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:50:29Z", "level": "info", "message": "Test case 3028: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3028, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:50:30Z", "level": "info", "message": "Test case 3029: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3029, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:50:31Z", "level": "info", "message": "Test case 3030: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3030, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:50:32Z", "level": "info", "message": "Test case 3031: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3031, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:50:33Z", "level": "info", "message": "Test case 3032: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3032, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:50:34Z", "level": "info", "message": "Test case 3033: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3033, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:50:35Z", "level": "info", "message": "Test case 3034: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3034, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:50:36Z", "level": "info", "message": "Test case 3035: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3035, "data": "wIA="} +{"timestamp": "2024-01-01T00:50:37Z", "level": "info", "message": "Test case 3036: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3036, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:50:38Z", "level": "info", "message": "Test case 3037: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3037, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:50:39Z", "level": "info", "message": "Test case 3038: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3038, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:50:40Z", "level": "info", "message": "Test case 3039: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3039, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:50:41Z", "level": "info", "message": "Test case 3040: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3040, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:50:42Z", "level": "info", "message": "Test case 3041: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3041, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:50:43Z", "level": "info", "message": "Test case 3042: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3042, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:50:44Z", "level": "info", "message": "Test case 3043: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3043, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:50:45Z", "level": "info", "message": "Test case 3044: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3044, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:50:46Z", "level": "info", "message": "Test case 3045: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3045, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:50:47Z", "level": "info", "message": "Test case 3046: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3046, "data": "4ICA"} +{"timestamp": "2024-01-01T00:50:48Z", "level": "info", "message": "Test case 3047: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3047, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:50:49Z", "level": "info", "message": "Test case 3048: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3048, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:50:50Z", "level": "info", "message": "Test case 3049: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3049, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:50:51Z", "level": "info", "message": "Test case 3050: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3050, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:50:52Z", "level": "info", "message": "Test case 3051: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3051, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:50:53Z", "level": "info", "message": "Test case 3052: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3052, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:50:54Z", "level": "info", "message": "Test case 3053: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3053, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:50:55Z", "level": "info", "message": "Test case 3054: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3054, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:50:56Z", "level": "info", "message": "Test case 3055: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3055, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:50:57Z", "level": "info", "message": "Test case 3056: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3056, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:50:58Z", "level": "info", "message": "Test case 3057: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3057, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:50:59Z", "level": "info", "message": "Test case 3058: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3058, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:51:00Z", "level": "info", "message": "Test case 3059: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3059, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:51:01Z", "level": "info", "message": "Test case 3060: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3060, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:51:02Z", "level": "info", "message": "Test case 3061: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3061, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:51:03Z", "level": "info", "message": "Test case 3062: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3062, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:51:04Z", "level": "info", "message": "Test case 3063: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3063, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:51:05Z", "level": "info", "message": "Test case 3064: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3064, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:51:06Z", "level": "info", "message": "Test case 3065: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3065, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:51:07Z", "level": "info", "message": "Test case 3066: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3066, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:51:08Z", "level": "info", "message": "Test case 3067: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3067, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:51:09Z", "level": "info", "message": "Test case 3068: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3068, "data": "4iih"} +{"timestamp": "2024-01-01T00:51:10Z", "level": "info", "message": "Test case 3069: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3069, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:51:11Z", "level": "info", "message": "Test case 3070: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3070, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:51:12Z", "level": "info", "message": "Test case 3071: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3071, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:51:13Z", "level": "info", "message": "Test case 3072: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3072, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:51:14Z", "level": "info", "message": "Test case 3073: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3073, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:51:15Z", "level": "info", "message": "Test case 3074: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3074, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:51:16Z", "level": "info", "message": "Test case 3075: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3075, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:51:17Z", "level": "info", "message": "Test case 3076: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3076, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:51:18Z", "level": "info", "message": "Test case 3077: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3077, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:51:19Z", "level": "info", "message": "Test case 3078: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3078, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:51:20Z", "level": "info", "message": "Test case 3079: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3079, "data": "wg=="} +{"timestamp": "2024-01-01T00:51:21Z", "level": "info", "message": "Test case 3080: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3080, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:51:22Z", "level": "info", "message": "Test case 3081: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3081, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:51:23Z", "level": "info", "message": "Test case 3082: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3082, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:51:24Z", "level": "info", "message": "Test case 3083: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3083, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:51:25Z", "level": "info", "message": "Test case 3084: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3084, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:51:26Z", "level": "info", "message": "Test case 3085: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3085, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:51:27Z", "level": "info", "message": "Test case 3086: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3086, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:51:28Z", "level": "info", "message": "Test case 3087: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3087, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:51:29Z", "level": "info", "message": "Test case 3088: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3088, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:51:30Z", "level": "info", "message": "Test case 3089: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3089, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:51:31Z", "level": "info", "message": "Test case 3090: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3090, "data": "wIA="} +{"timestamp": "2024-01-01T00:51:32Z", "level": "info", "message": "Test case 3091: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3091, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:51:33Z", "level": "info", "message": "Test case 3092: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3092, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:51:34Z", "level": "info", "message": "Test case 3093: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3093, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:51:35Z", "level": "info", "message": "Test case 3094: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3094, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:51:36Z", "level": "info", "message": "Test case 3095: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3095, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:51:37Z", "level": "info", "message": "Test case 3096: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3096, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:51:38Z", "level": "info", "message": "Test case 3097: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3097, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:51:39Z", "level": "info", "message": "Test case 3098: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3098, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:51:40Z", "level": "info", "message": "Test case 3099: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3099, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:51:41Z", "level": "info", "message": "Test case 3100: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3100, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:51:42Z", "level": "info", "message": "Test case 3101: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3101, "data": "4ICA"} +{"timestamp": "2024-01-01T00:51:43Z", "level": "info", "message": "Test case 3102: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3102, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:51:44Z", "level": "info", "message": "Test case 3103: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3103, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:51:45Z", "level": "info", "message": "Test case 3104: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3104, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:51:46Z", "level": "info", "message": "Test case 3105: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3105, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:51:47Z", "level": "info", "message": "Test case 3106: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3106, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:51:48Z", "level": "info", "message": "Test case 3107: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3107, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:51:49Z", "level": "info", "message": "Test case 3108: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3108, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:51:50Z", "level": "info", "message": "Test case 3109: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3109, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:51:51Z", "level": "info", "message": "Test case 3110: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3110, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:51:52Z", "level": "info", "message": "Test case 3111: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3111, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:51:53Z", "level": "info", "message": "Test case 3112: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3112, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:51:54Z", "level": "info", "message": "Test case 3113: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3113, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:51:55Z", "level": "info", "message": "Test case 3114: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3114, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:51:56Z", "level": "info", "message": "Test case 3115: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3115, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:51:57Z", "level": "info", "message": "Test case 3116: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3116, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:51:58Z", "level": "info", "message": "Test case 3117: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3117, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:51:59Z", "level": "info", "message": "Test case 3118: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3118, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:52:00Z", "level": "info", "message": "Test case 3119: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3119, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:52:01Z", "level": "info", "message": "Test case 3120: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3120, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:52:02Z", "level": "info", "message": "Test case 3121: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3121, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:52:03Z", "level": "info", "message": "Test case 3122: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3122, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:52:04Z", "level": "info", "message": "Test case 3123: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3123, "data": "4iih"} +{"timestamp": "2024-01-01T00:52:05Z", "level": "info", "message": "Test case 3124: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3124, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:52:06Z", "level": "info", "message": "Test case 3125: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3125, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:52:07Z", "level": "info", "message": "Test case 3126: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3126, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:52:08Z", "level": "info", "message": "Test case 3127: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3127, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:52:09Z", "level": "info", "message": "Test case 3128: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3128, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:52:10Z", "level": "info", "message": "Test case 3129: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3129, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:52:11Z", "level": "info", "message": "Test case 3130: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3130, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:52:12Z", "level": "info", "message": "Test case 3131: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3131, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:52:13Z", "level": "info", "message": "Test case 3132: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3132, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:52:14Z", "level": "info", "message": "Test case 3133: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3133, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:52:15Z", "level": "info", "message": "Test case 3134: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3134, "data": "wg=="} +{"timestamp": "2024-01-01T00:52:16Z", "level": "info", "message": "Test case 3135: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3135, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:52:17Z", "level": "info", "message": "Test case 3136: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3136, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:52:18Z", "level": "info", "message": "Test case 3137: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3137, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:52:19Z", "level": "info", "message": "Test case 3138: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3138, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:52:20Z", "level": "info", "message": "Test case 3139: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3139, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:52:21Z", "level": "info", "message": "Test case 3140: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3140, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:52:22Z", "level": "info", "message": "Test case 3141: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3141, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:52:23Z", "level": "info", "message": "Test case 3142: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3142, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:52:24Z", "level": "info", "message": "Test case 3143: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3143, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:52:25Z", "level": "info", "message": "Test case 3144: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3144, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:52:26Z", "level": "info", "message": "Test case 3145: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3145, "data": "wIA="} +{"timestamp": "2024-01-01T00:52:27Z", "level": "info", "message": "Test case 3146: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3146, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:52:28Z", "level": "info", "message": "Test case 3147: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3147, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:52:29Z", "level": "info", "message": "Test case 3148: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3148, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:52:30Z", "level": "info", "message": "Test case 3149: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3149, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:52:31Z", "level": "info", "message": "Test case 3150: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3150, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:52:32Z", "level": "info", "message": "Test case 3151: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3151, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:52:33Z", "level": "info", "message": "Test case 3152: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3152, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:52:34Z", "level": "info", "message": "Test case 3153: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3153, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:52:35Z", "level": "info", "message": "Test case 3154: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3154, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:52:36Z", "level": "info", "message": "Test case 3155: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3155, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:52:37Z", "level": "info", "message": "Test case 3156: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3156, "data": "4ICA"} +{"timestamp": "2024-01-01T00:52:38Z", "level": "info", "message": "Test case 3157: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3157, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:52:39Z", "level": "info", "message": "Test case 3158: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3158, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:52:40Z", "level": "info", "message": "Test case 3159: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3159, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:52:41Z", "level": "info", "message": "Test case 3160: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3160, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:52:42Z", "level": "info", "message": "Test case 3161: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3161, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:52:43Z", "level": "info", "message": "Test case 3162: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3162, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:52:44Z", "level": "info", "message": "Test case 3163: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3163, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:52:45Z", "level": "info", "message": "Test case 3164: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3164, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:52:46Z", "level": "info", "message": "Test case 3165: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3165, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:52:47Z", "level": "info", "message": "Test case 3166: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3166, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:52:48Z", "level": "info", "message": "Test case 3167: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3167, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:52:49Z", "level": "info", "message": "Test case 3168: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3168, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:52:50Z", "level": "info", "message": "Test case 3169: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3169, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:52:51Z", "level": "info", "message": "Test case 3170: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3170, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:52:52Z", "level": "info", "message": "Test case 3171: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3171, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:52:53Z", "level": "info", "message": "Test case 3172: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3172, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:52:54Z", "level": "info", "message": "Test case 3173: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3173, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:52:55Z", "level": "info", "message": "Test case 3174: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3174, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:52:56Z", "level": "info", "message": "Test case 3175: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3175, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:52:57Z", "level": "info", "message": "Test case 3176: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3176, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:52:58Z", "level": "info", "message": "Test case 3177: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3177, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:52:59Z", "level": "info", "message": "Test case 3178: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3178, "data": "4iih"} +{"timestamp": "2024-01-01T00:53:00Z", "level": "info", "message": "Test case 3179: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3179, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:53:01Z", "level": "info", "message": "Test case 3180: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3180, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:53:02Z", "level": "info", "message": "Test case 3181: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3181, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:53:03Z", "level": "info", "message": "Test case 3182: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3182, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:53:04Z", "level": "info", "message": "Test case 3183: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3183, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:53:05Z", "level": "info", "message": "Test case 3184: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3184, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:53:06Z", "level": "info", "message": "Test case 3185: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3185, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:53:07Z", "level": "info", "message": "Test case 3186: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3186, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:53:08Z", "level": "info", "message": "Test case 3187: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3187, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:53:09Z", "level": "info", "message": "Test case 3188: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3188, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:53:10Z", "level": "info", "message": "Test case 3189: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3189, "data": "wg=="} +{"timestamp": "2024-01-01T00:53:11Z", "level": "info", "message": "Test case 3190: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3190, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:53:12Z", "level": "info", "message": "Test case 3191: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3191, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:53:13Z", "level": "info", "message": "Test case 3192: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3192, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:53:14Z", "level": "info", "message": "Test case 3193: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3193, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:53:15Z", "level": "info", "message": "Test case 3194: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3194, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:53:16Z", "level": "info", "message": "Test case 3195: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3195, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:53:17Z", "level": "info", "message": "Test case 3196: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3196, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:53:18Z", "level": "info", "message": "Test case 3197: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3197, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:53:19Z", "level": "info", "message": "Test case 3198: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3198, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:53:20Z", "level": "info", "message": "Test case 3199: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3199, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:53:21Z", "level": "info", "message": "Test case 3200: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3200, "data": "wIA="} +{"timestamp": "2024-01-01T00:53:22Z", "level": "info", "message": "Test case 3201: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3201, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:53:23Z", "level": "info", "message": "Test case 3202: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3202, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:53:24Z", "level": "info", "message": "Test case 3203: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3203, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:53:25Z", "level": "info", "message": "Test case 3204: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3204, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:53:26Z", "level": "info", "message": "Test case 3205: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3205, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:53:27Z", "level": "info", "message": "Test case 3206: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3206, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:53:28Z", "level": "info", "message": "Test case 3207: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3207, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:53:29Z", "level": "info", "message": "Test case 3208: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3208, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:53:30Z", "level": "info", "message": "Test case 3209: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3209, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:53:31Z", "level": "info", "message": "Test case 3210: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3210, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:53:32Z", "level": "info", "message": "Test case 3211: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3211, "data": "4ICA"} +{"timestamp": "2024-01-01T00:53:33Z", "level": "info", "message": "Test case 3212: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3212, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:53:34Z", "level": "info", "message": "Test case 3213: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3213, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:53:35Z", "level": "info", "message": "Test case 3214: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3214, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:53:36Z", "level": "info", "message": "Test case 3215: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3215, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:53:37Z", "level": "info", "message": "Test case 3216: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3216, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:53:38Z", "level": "info", "message": "Test case 3217: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3217, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:53:39Z", "level": "info", "message": "Test case 3218: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3218, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:53:40Z", "level": "info", "message": "Test case 3219: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3219, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:53:41Z", "level": "info", "message": "Test case 3220: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3220, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:53:42Z", "level": "info", "message": "Test case 3221: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3221, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:53:43Z", "level": "info", "message": "Test case 3222: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3222, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:53:44Z", "level": "info", "message": "Test case 3223: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3223, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:53:45Z", "level": "info", "message": "Test case 3224: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3224, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:53:46Z", "level": "info", "message": "Test case 3225: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3225, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:53:47Z", "level": "info", "message": "Test case 3226: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3226, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:53:48Z", "level": "info", "message": "Test case 3227: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3227, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:53:49Z", "level": "info", "message": "Test case 3228: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3228, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:53:50Z", "level": "info", "message": "Test case 3229: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3229, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:53:51Z", "level": "info", "message": "Test case 3230: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3230, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:53:52Z", "level": "info", "message": "Test case 3231: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3231, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:53:53Z", "level": "info", "message": "Test case 3232: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3232, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:53:54Z", "level": "info", "message": "Test case 3233: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3233, "data": "4iih"} +{"timestamp": "2024-01-01T00:53:55Z", "level": "info", "message": "Test case 3234: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3234, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:53:56Z", "level": "info", "message": "Test case 3235: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3235, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:53:57Z", "level": "info", "message": "Test case 3236: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3236, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:53:58Z", "level": "info", "message": "Test case 3237: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3237, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:53:59Z", "level": "info", "message": "Test case 3238: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3238, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:54:00Z", "level": "info", "message": "Test case 3239: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3239, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:54:01Z", "level": "info", "message": "Test case 3240: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3240, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:54:02Z", "level": "info", "message": "Test case 3241: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3241, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:54:03Z", "level": "info", "message": "Test case 3242: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3242, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:54:04Z", "level": "info", "message": "Test case 3243: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3243, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:54:05Z", "level": "info", "message": "Test case 3244: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3244, "data": "wg=="} +{"timestamp": "2024-01-01T00:54:06Z", "level": "info", "message": "Test case 3245: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3245, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:54:07Z", "level": "info", "message": "Test case 3246: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3246, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:54:08Z", "level": "info", "message": "Test case 3247: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3247, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:54:09Z", "level": "info", "message": "Test case 3248: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3248, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:54:10Z", "level": "info", "message": "Test case 3249: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3249, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:54:11Z", "level": "info", "message": "Test case 3250: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3250, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:54:12Z", "level": "info", "message": "Test case 3251: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3251, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:54:13Z", "level": "info", "message": "Test case 3252: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3252, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:54:14Z", "level": "info", "message": "Test case 3253: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3253, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:54:15Z", "level": "info", "message": "Test case 3254: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3254, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:54:16Z", "level": "info", "message": "Test case 3255: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3255, "data": "wIA="} +{"timestamp": "2024-01-01T00:54:17Z", "level": "info", "message": "Test case 3256: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3256, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:54:18Z", "level": "info", "message": "Test case 3257: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3257, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:54:19Z", "level": "info", "message": "Test case 3258: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3258, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:54:20Z", "level": "info", "message": "Test case 3259: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3259, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:54:21Z", "level": "info", "message": "Test case 3260: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3260, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:54:22Z", "level": "info", "message": "Test case 3261: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3261, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:54:23Z", "level": "info", "message": "Test case 3262: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3262, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:54:24Z", "level": "info", "message": "Test case 3263: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3263, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:54:25Z", "level": "info", "message": "Test case 3264: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3264, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:54:26Z", "level": "info", "message": "Test case 3265: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3265, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:54:27Z", "level": "info", "message": "Test case 3266: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3266, "data": "4ICA"} +{"timestamp": "2024-01-01T00:54:28Z", "level": "info", "message": "Test case 3267: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3267, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:54:29Z", "level": "info", "message": "Test case 3268: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3268, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:54:30Z", "level": "info", "message": "Test case 3269: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3269, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:54:31Z", "level": "info", "message": "Test case 3270: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3270, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:54:32Z", "level": "info", "message": "Test case 3271: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3271, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:54:33Z", "level": "info", "message": "Test case 3272: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3272, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:54:34Z", "level": "info", "message": "Test case 3273: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3273, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:54:35Z", "level": "info", "message": "Test case 3274: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3274, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:54:36Z", "level": "info", "message": "Test case 3275: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3275, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:54:37Z", "level": "info", "message": "Test case 3276: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3276, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:54:38Z", "level": "info", "message": "Test case 3277: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3277, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:54:39Z", "level": "info", "message": "Test case 3278: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3278, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:54:40Z", "level": "info", "message": "Test case 3279: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3279, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:54:41Z", "level": "info", "message": "Test case 3280: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3280, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:54:42Z", "level": "info", "message": "Test case 3281: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3281, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:54:43Z", "level": "info", "message": "Test case 3282: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3282, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:54:44Z", "level": "info", "message": "Test case 3283: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3283, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:54:45Z", "level": "info", "message": "Test case 3284: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3284, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:54:46Z", "level": "info", "message": "Test case 3285: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3285, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:54:47Z", "level": "info", "message": "Test case 3286: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3286, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:54:48Z", "level": "info", "message": "Test case 3287: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3287, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:54:49Z", "level": "info", "message": "Test case 3288: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3288, "data": "4iih"} +{"timestamp": "2024-01-01T00:54:50Z", "level": "info", "message": "Test case 3289: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3289, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:54:51Z", "level": "info", "message": "Test case 3290: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3290, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:54:52Z", "level": "info", "message": "Test case 3291: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3291, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:54:53Z", "level": "info", "message": "Test case 3292: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3292, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:54:54Z", "level": "info", "message": "Test case 3293: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3293, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:54:55Z", "level": "info", "message": "Test case 3294: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3294, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:54:56Z", "level": "info", "message": "Test case 3295: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3295, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:54:57Z", "level": "info", "message": "Test case 3296: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3296, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:54:58Z", "level": "info", "message": "Test case 3297: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3297, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:54:59Z", "level": "info", "message": "Test case 3298: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3298, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:55:00Z", "level": "info", "message": "Test case 3299: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3299, "data": "wg=="} +{"timestamp": "2024-01-01T00:55:01Z", "level": "info", "message": "Test case 3300: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3300, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:55:02Z", "level": "info", "message": "Test case 3301: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3301, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:55:03Z", "level": "info", "message": "Test case 3302: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3302, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:55:04Z", "level": "info", "message": "Test case 3303: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3303, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:55:05Z", "level": "info", "message": "Test case 3304: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3304, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:55:06Z", "level": "info", "message": "Test case 3305: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3305, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:55:07Z", "level": "info", "message": "Test case 3306: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3306, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:55:08Z", "level": "info", "message": "Test case 3307: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3307, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:55:09Z", "level": "info", "message": "Test case 3308: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3308, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:55:10Z", "level": "info", "message": "Test case 3309: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3309, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:55:11Z", "level": "info", "message": "Test case 3310: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3310, "data": "wIA="} +{"timestamp": "2024-01-01T00:55:12Z", "level": "info", "message": "Test case 3311: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3311, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:55:13Z", "level": "info", "message": "Test case 3312: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3312, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:55:14Z", "level": "info", "message": "Test case 3313: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3313, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:55:15Z", "level": "info", "message": "Test case 3314: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3314, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:55:16Z", "level": "info", "message": "Test case 3315: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3315, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:55:17Z", "level": "info", "message": "Test case 3316: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3316, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:55:18Z", "level": "info", "message": "Test case 3317: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3317, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:55:19Z", "level": "info", "message": "Test case 3318: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3318, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:55:20Z", "level": "info", "message": "Test case 3319: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3319, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:55:21Z", "level": "info", "message": "Test case 3320: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3320, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:55:22Z", "level": "info", "message": "Test case 3321: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3321, "data": "4ICA"} +{"timestamp": "2024-01-01T00:55:23Z", "level": "info", "message": "Test case 3322: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3322, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:55:24Z", "level": "info", "message": "Test case 3323: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3323, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:55:25Z", "level": "info", "message": "Test case 3324: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3324, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:55:26Z", "level": "info", "message": "Test case 3325: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3325, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:55:27Z", "level": "info", "message": "Test case 3326: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3326, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:55:28Z", "level": "info", "message": "Test case 3327: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3327, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:55:29Z", "level": "info", "message": "Test case 3328: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3328, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:55:30Z", "level": "info", "message": "Test case 3329: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3329, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:55:31Z", "level": "info", "message": "Test case 3330: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3330, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:55:32Z", "level": "info", "message": "Test case 3331: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3331, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:55:33Z", "level": "info", "message": "Test case 3332: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3332, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:55:34Z", "level": "info", "message": "Test case 3333: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3333, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:55:35Z", "level": "info", "message": "Test case 3334: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3334, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:55:36Z", "level": "info", "message": "Test case 3335: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3335, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:55:37Z", "level": "info", "message": "Test case 3336: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3336, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:55:38Z", "level": "info", "message": "Test case 3337: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3337, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:55:39Z", "level": "info", "message": "Test case 3338: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3338, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:55:40Z", "level": "info", "message": "Test case 3339: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3339, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:55:41Z", "level": "info", "message": "Test case 3340: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3340, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:55:42Z", "level": "info", "message": "Test case 3341: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3341, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:55:43Z", "level": "info", "message": "Test case 3342: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3342, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:55:44Z", "level": "info", "message": "Test case 3343: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3343, "data": "4iih"} +{"timestamp": "2024-01-01T00:55:45Z", "level": "info", "message": "Test case 3344: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3344, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:55:46Z", "level": "info", "message": "Test case 3345: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3345, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:55:47Z", "level": "info", "message": "Test case 3346: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3346, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:55:48Z", "level": "info", "message": "Test case 3347: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3347, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:55:49Z", "level": "info", "message": "Test case 3348: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3348, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:55:50Z", "level": "info", "message": "Test case 3349: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3349, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:55:51Z", "level": "info", "message": "Test case 3350: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3350, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:55:52Z", "level": "info", "message": "Test case 3351: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3351, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:55:53Z", "level": "info", "message": "Test case 3352: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3352, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:55:54Z", "level": "info", "message": "Test case 3353: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3353, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:55:55Z", "level": "info", "message": "Test case 3354: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3354, "data": "wg=="} +{"timestamp": "2024-01-01T00:55:56Z", "level": "info", "message": "Test case 3355: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3355, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:55:57Z", "level": "info", "message": "Test case 3356: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3356, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:55:58Z", "level": "info", "message": "Test case 3357: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3357, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:55:59Z", "level": "info", "message": "Test case 3358: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3358, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:56:00Z", "level": "info", "message": "Test case 3359: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3359, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:56:01Z", "level": "info", "message": "Test case 3360: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3360, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:56:02Z", "level": "info", "message": "Test case 3361: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3361, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:56:03Z", "level": "info", "message": "Test case 3362: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3362, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:56:04Z", "level": "info", "message": "Test case 3363: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3363, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:56:05Z", "level": "info", "message": "Test case 3364: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3364, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:56:06Z", "level": "info", "message": "Test case 3365: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3365, "data": "wIA="} +{"timestamp": "2024-01-01T00:56:07Z", "level": "info", "message": "Test case 3366: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3366, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:56:08Z", "level": "info", "message": "Test case 3367: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3367, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:56:09Z", "level": "info", "message": "Test case 3368: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3368, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:56:10Z", "level": "info", "message": "Test case 3369: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3369, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:56:11Z", "level": "info", "message": "Test case 3370: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3370, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:56:12Z", "level": "info", "message": "Test case 3371: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3371, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:56:13Z", "level": "info", "message": "Test case 3372: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3372, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:56:14Z", "level": "info", "message": "Test case 3373: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3373, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:56:15Z", "level": "info", "message": "Test case 3374: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3374, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:56:16Z", "level": "info", "message": "Test case 3375: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3375, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:56:17Z", "level": "info", "message": "Test case 3376: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3376, "data": "4ICA"} +{"timestamp": "2024-01-01T00:56:18Z", "level": "info", "message": "Test case 3377: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3377, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:56:19Z", "level": "info", "message": "Test case 3378: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3378, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:56:20Z", "level": "info", "message": "Test case 3379: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3379, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:56:21Z", "level": "info", "message": "Test case 3380: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3380, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:56:22Z", "level": "info", "message": "Test case 3381: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3381, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:56:23Z", "level": "info", "message": "Test case 3382: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3382, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:56:24Z", "level": "info", "message": "Test case 3383: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3383, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:56:25Z", "level": "info", "message": "Test case 3384: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3384, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:56:26Z", "level": "info", "message": "Test case 3385: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3385, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:56:27Z", "level": "info", "message": "Test case 3386: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3386, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:56:28Z", "level": "info", "message": "Test case 3387: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3387, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:56:29Z", "level": "info", "message": "Test case 3388: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3388, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:56:30Z", "level": "info", "message": "Test case 3389: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3389, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:56:31Z", "level": "info", "message": "Test case 3390: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3390, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:56:32Z", "level": "info", "message": "Test case 3391: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3391, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:56:33Z", "level": "info", "message": "Test case 3392: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3392, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:56:34Z", "level": "info", "message": "Test case 3393: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3393, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:56:35Z", "level": "info", "message": "Test case 3394: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3394, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:56:36Z", "level": "info", "message": "Test case 3395: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3395, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:56:37Z", "level": "info", "message": "Test case 3396: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3396, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:56:38Z", "level": "info", "message": "Test case 3397: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3397, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:56:39Z", "level": "info", "message": "Test case 3398: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3398, "data": "4iih"} +{"timestamp": "2024-01-01T00:56:40Z", "level": "info", "message": "Test case 3399: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3399, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:56:41Z", "level": "info", "message": "Test case 3400: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3400, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:56:42Z", "level": "info", "message": "Test case 3401: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3401, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:56:43Z", "level": "info", "message": "Test case 3402: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3402, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:56:44Z", "level": "info", "message": "Test case 3403: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3403, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:56:45Z", "level": "info", "message": "Test case 3404: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3404, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:56:46Z", "level": "info", "message": "Test case 3405: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3405, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:56:47Z", "level": "info", "message": "Test case 3406: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3406, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:56:48Z", "level": "info", "message": "Test case 3407: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3407, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:56:49Z", "level": "info", "message": "Test case 3408: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3408, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:56:50Z", "level": "info", "message": "Test case 3409: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3409, "data": "wg=="} +{"timestamp": "2024-01-01T00:56:51Z", "level": "info", "message": "Test case 3410: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3410, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:56:52Z", "level": "info", "message": "Test case 3411: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3411, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:56:53Z", "level": "info", "message": "Test case 3412: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3412, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:56:54Z", "level": "info", "message": "Test case 3413: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3413, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:56:55Z", "level": "info", "message": "Test case 3414: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3414, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:56:56Z", "level": "info", "message": "Test case 3415: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3415, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:56:57Z", "level": "info", "message": "Test case 3416: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3416, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:56:58Z", "level": "info", "message": "Test case 3417: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3417, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:56:59Z", "level": "info", "message": "Test case 3418: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3418, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:57:00Z", "level": "info", "message": "Test case 3419: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3419, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:57:01Z", "level": "info", "message": "Test case 3420: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3420, "data": "wIA="} +{"timestamp": "2024-01-01T00:57:02Z", "level": "info", "message": "Test case 3421: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3421, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:57:03Z", "level": "info", "message": "Test case 3422: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3422, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:57:04Z", "level": "info", "message": "Test case 3423: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3423, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:57:05Z", "level": "info", "message": "Test case 3424: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3424, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:57:06Z", "level": "info", "message": "Test case 3425: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3425, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:57:07Z", "level": "info", "message": "Test case 3426: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3426, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:57:08Z", "level": "info", "message": "Test case 3427: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3427, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:57:09Z", "level": "info", "message": "Test case 3428: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3428, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:57:10Z", "level": "info", "message": "Test case 3429: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3429, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:57:11Z", "level": "info", "message": "Test case 3430: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3430, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:57:12Z", "level": "info", "message": "Test case 3431: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3431, "data": "4ICA"} +{"timestamp": "2024-01-01T00:57:13Z", "level": "info", "message": "Test case 3432: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3432, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:57:14Z", "level": "info", "message": "Test case 3433: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3433, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:57:15Z", "level": "info", "message": "Test case 3434: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3434, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:57:16Z", "level": "info", "message": "Test case 3435: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3435, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:57:17Z", "level": "info", "message": "Test case 3436: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3436, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:57:18Z", "level": "info", "message": "Test case 3437: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3437, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:57:19Z", "level": "info", "message": "Test case 3438: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3438, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:57:20Z", "level": "info", "message": "Test case 3439: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3439, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:57:21Z", "level": "info", "message": "Test case 3440: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3440, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:57:22Z", "level": "info", "message": "Test case 3441: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3441, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:57:23Z", "level": "info", "message": "Test case 3442: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3442, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:57:24Z", "level": "info", "message": "Test case 3443: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3443, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:57:25Z", "level": "info", "message": "Test case 3444: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3444, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:57:26Z", "level": "info", "message": "Test case 3445: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3445, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:57:27Z", "level": "info", "message": "Test case 3446: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3446, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:57:28Z", "level": "info", "message": "Test case 3447: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3447, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:57:29Z", "level": "info", "message": "Test case 3448: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3448, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:57:30Z", "level": "info", "message": "Test case 3449: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3449, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:57:31Z", "level": "info", "message": "Test case 3450: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3450, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:57:32Z", "level": "info", "message": "Test case 3451: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3451, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:57:33Z", "level": "info", "message": "Test case 3452: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3452, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:57:34Z", "level": "info", "message": "Test case 3453: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3453, "data": "4iih"} +{"timestamp": "2024-01-01T00:57:35Z", "level": "info", "message": "Test case 3454: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3454, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:57:36Z", "level": "info", "message": "Test case 3455: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3455, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:57:37Z", "level": "info", "message": "Test case 3456: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3456, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:57:38Z", "level": "info", "message": "Test case 3457: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3457, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:57:39Z", "level": "info", "message": "Test case 3458: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3458, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:57:40Z", "level": "info", "message": "Test case 3459: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3459, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:57:41Z", "level": "info", "message": "Test case 3460: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3460, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:57:42Z", "level": "info", "message": "Test case 3461: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3461, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:57:43Z", "level": "info", "message": "Test case 3462: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3462, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:57:44Z", "level": "info", "message": "Test case 3463: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3463, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:57:45Z", "level": "info", "message": "Test case 3464: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3464, "data": "wg=="} +{"timestamp": "2024-01-01T00:57:46Z", "level": "info", "message": "Test case 3465: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3465, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:57:47Z", "level": "info", "message": "Test case 3466: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3466, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:57:48Z", "level": "info", "message": "Test case 3467: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3467, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:57:49Z", "level": "info", "message": "Test case 3468: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3468, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:57:50Z", "level": "info", "message": "Test case 3469: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3469, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:57:51Z", "level": "info", "message": "Test case 3470: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3470, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:57:52Z", "level": "info", "message": "Test case 3471: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3471, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:57:53Z", "level": "info", "message": "Test case 3472: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3472, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:57:54Z", "level": "info", "message": "Test case 3473: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3473, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:57:55Z", "level": "info", "message": "Test case 3474: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3474, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:57:56Z", "level": "info", "message": "Test case 3475: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3475, "data": "wIA="} +{"timestamp": "2024-01-01T00:57:57Z", "level": "info", "message": "Test case 3476: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3476, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:57:58Z", "level": "info", "message": "Test case 3477: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3477, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:57:59Z", "level": "info", "message": "Test case 3478: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3478, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:58:00Z", "level": "info", "message": "Test case 3479: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3479, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:58:01Z", "level": "info", "message": "Test case 3480: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3480, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:58:02Z", "level": "info", "message": "Test case 3481: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3481, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:58:03Z", "level": "info", "message": "Test case 3482: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3482, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:58:04Z", "level": "info", "message": "Test case 3483: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3483, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:58:05Z", "level": "info", "message": "Test case 3484: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3484, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:58:06Z", "level": "info", "message": "Test case 3485: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3485, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:58:07Z", "level": "info", "message": "Test case 3486: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3486, "data": "4ICA"} +{"timestamp": "2024-01-01T00:58:08Z", "level": "info", "message": "Test case 3487: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3487, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:58:09Z", "level": "info", "message": "Test case 3488: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3488, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:58:10Z", "level": "info", "message": "Test case 3489: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3489, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:58:11Z", "level": "info", "message": "Test case 3490: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3490, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:58:12Z", "level": "info", "message": "Test case 3491: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3491, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:58:13Z", "level": "info", "message": "Test case 3492: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3492, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:58:14Z", "level": "info", "message": "Test case 3493: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3493, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:58:15Z", "level": "info", "message": "Test case 3494: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3494, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:58:16Z", "level": "info", "message": "Test case 3495: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3495, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:58:17Z", "level": "info", "message": "Test case 3496: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3496, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:58:18Z", "level": "info", "message": "Test case 3497: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3497, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:58:19Z", "level": "info", "message": "Test case 3498: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3498, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:58:20Z", "level": "info", "message": "Test case 3499: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3499, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:58:21Z", "level": "info", "message": "Test case 3500: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3500, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:58:22Z", "level": "info", "message": "Test case 3501: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3501, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:58:23Z", "level": "info", "message": "Test case 3502: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3502, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:58:24Z", "level": "info", "message": "Test case 3503: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3503, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:58:25Z", "level": "info", "message": "Test case 3504: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3504, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:58:26Z", "level": "info", "message": "Test case 3505: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3505, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:58:27Z", "level": "info", "message": "Test case 3506: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3506, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:58:28Z", "level": "info", "message": "Test case 3507: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3507, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:58:29Z", "level": "info", "message": "Test case 3508: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3508, "data": "4iih"} +{"timestamp": "2024-01-01T00:58:30Z", "level": "info", "message": "Test case 3509: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3509, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:58:31Z", "level": "info", "message": "Test case 3510: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3510, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:58:32Z", "level": "info", "message": "Test case 3511: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3511, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:58:33Z", "level": "info", "message": "Test case 3512: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3512, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:58:34Z", "level": "info", "message": "Test case 3513: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3513, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:58:35Z", "level": "info", "message": "Test case 3514: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3514, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:58:36Z", "level": "info", "message": "Test case 3515: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3515, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:58:37Z", "level": "info", "message": "Test case 3516: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3516, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:58:38Z", "level": "info", "message": "Test case 3517: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3517, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:58:39Z", "level": "info", "message": "Test case 3518: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3518, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:58:40Z", "level": "info", "message": "Test case 3519: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3519, "data": "wg=="} +{"timestamp": "2024-01-01T00:58:41Z", "level": "info", "message": "Test case 3520: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3520, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:58:42Z", "level": "info", "message": "Test case 3521: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3521, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:58:43Z", "level": "info", "message": "Test case 3522: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3522, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:58:44Z", "level": "info", "message": "Test case 3523: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3523, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:58:45Z", "level": "info", "message": "Test case 3524: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3524, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:58:46Z", "level": "info", "message": "Test case 3525: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3525, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:58:47Z", "level": "info", "message": "Test case 3526: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3526, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:58:48Z", "level": "info", "message": "Test case 3527: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3527, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:58:49Z", "level": "info", "message": "Test case 3528: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3528, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:58:50Z", "level": "info", "message": "Test case 3529: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3529, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:58:51Z", "level": "info", "message": "Test case 3530: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3530, "data": "wIA="} +{"timestamp": "2024-01-01T00:58:52Z", "level": "info", "message": "Test case 3531: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3531, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:58:53Z", "level": "info", "message": "Test case 3532: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3532, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:58:54Z", "level": "info", "message": "Test case 3533: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3533, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:58:55Z", "level": "info", "message": "Test case 3534: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3534, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:58:56Z", "level": "info", "message": "Test case 3535: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3535, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:58:57Z", "level": "info", "message": "Test case 3536: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3536, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:58:58Z", "level": "info", "message": "Test case 3537: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3537, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:58:59Z", "level": "info", "message": "Test case 3538: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3538, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:59:00Z", "level": "info", "message": "Test case 3539: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3539, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:59:01Z", "level": "info", "message": "Test case 3540: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3540, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:59:02Z", "level": "info", "message": "Test case 3541: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3541, "data": "4ICA"} +{"timestamp": "2024-01-01T00:59:03Z", "level": "info", "message": "Test case 3542: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3542, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:59:04Z", "level": "info", "message": "Test case 3543: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3543, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:59:05Z", "level": "info", "message": "Test case 3544: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3544, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:59:06Z", "level": "info", "message": "Test case 3545: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3545, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:59:07Z", "level": "info", "message": "Test case 3546: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3546, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:59:08Z", "level": "info", "message": "Test case 3547: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3547, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:59:09Z", "level": "info", "message": "Test case 3548: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3548, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:59:10Z", "level": "info", "message": "Test case 3549: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3549, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:59:11Z", "level": "info", "message": "Test case 3550: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3550, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:59:12Z", "level": "info", "message": "Test case 3551: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3551, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:59:13Z", "level": "info", "message": "Test case 3552: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3552, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T00:59:14Z", "level": "info", "message": "Test case 3553: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3553, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:59:15Z", "level": "info", "message": "Test case 3554: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3554, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:59:16Z", "level": "info", "message": "Test case 3555: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3555, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:59:17Z", "level": "info", "message": "Test case 3556: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3556, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:59:18Z", "level": "info", "message": "Test case 3557: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3557, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:59:19Z", "level": "info", "message": "Test case 3558: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3558, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:59:20Z", "level": "info", "message": "Test case 3559: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3559, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:59:21Z", "level": "info", "message": "Test case 3560: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3560, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:59:22Z", "level": "info", "message": "Test case 3561: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3561, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:59:23Z", "level": "info", "message": "Test case 3562: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3562, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:59:24Z", "level": "info", "message": "Test case 3563: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3563, "data": "4iih"} +{"timestamp": "2024-01-01T00:59:25Z", "level": "info", "message": "Test case 3564: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3564, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:59:26Z", "level": "info", "message": "Test case 3565: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3565, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:59:27Z", "level": "info", "message": "Test case 3566: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3566, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:59:28Z", "level": "info", "message": "Test case 3567: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3567, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:59:29Z", "level": "info", "message": "Test case 3568: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3568, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:59:30Z", "level": "info", "message": "Test case 3569: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3569, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:59:31Z", "level": "info", "message": "Test case 3570: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3570, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:59:32Z", "level": "info", "message": "Test case 3571: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3571, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:59:33Z", "level": "info", "message": "Test case 3572: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3572, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:59:34Z", "level": "info", "message": "Test case 3573: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3573, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:59:35Z", "level": "info", "message": "Test case 3574: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3574, "data": "wg=="} +{"timestamp": "2024-01-01T00:59:36Z", "level": "info", "message": "Test case 3575: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3575, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:59:37Z", "level": "info", "message": "Test case 3576: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3576, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:59:38Z", "level": "info", "message": "Test case 3577: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3577, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:59:39Z", "level": "info", "message": "Test case 3578: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3578, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:59:40Z", "level": "info", "message": "Test case 3579: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3579, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:59:41Z", "level": "info", "message": "Test case 3580: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3580, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:59:42Z", "level": "info", "message": "Test case 3581: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3581, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:59:43Z", "level": "info", "message": "Test case 3582: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3582, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:59:44Z", "level": "info", "message": "Test case 3583: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3583, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:59:45Z", "level": "info", "message": "Test case 3584: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3584, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:59:46Z", "level": "info", "message": "Test case 3585: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3585, "data": "wIA="} +{"timestamp": "2024-01-01T00:59:47Z", "level": "info", "message": "Test case 3586: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3586, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:59:48Z", "level": "info", "message": "Test case 3587: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3587, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T00:59:49Z", "level": "info", "message": "Test case 3588: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3588, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T00:59:50Z", "level": "info", "message": "Test case 3589: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3589, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T00:59:51Z", "level": "info", "message": "Test case 3590: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3590, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T00:59:52Z", "level": "info", "message": "Test case 3591: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3591, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T00:59:53Z", "level": "info", "message": "Test case 3592: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3592, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T00:59:54Z", "level": "info", "message": "Test case 3593: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3593, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T00:59:55Z", "level": "info", "message": "Test case 3594: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3594, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T00:59:56Z", "level": "info", "message": "Test case 3595: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3595, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T00:59:57Z", "level": "info", "message": "Test case 3596: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3596, "data": "4ICA"} +{"timestamp": "2024-01-01T00:59:58Z", "level": "info", "message": "Test case 3597: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3597, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T00:59:59Z", "level": "info", "message": "Test case 3598: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3598, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:00:00Z", "level": "info", "message": "Test case 3599: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3599, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:00:01Z", "level": "info", "message": "Test case 3600: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3600, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:00:02Z", "level": "info", "message": "Test case 3601: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3601, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:00:03Z", "level": "info", "message": "Test case 3602: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3602, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:00:04Z", "level": "info", "message": "Test case 3603: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3603, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:00:05Z", "level": "info", "message": "Test case 3604: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3604, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:00:06Z", "level": "info", "message": "Test case 3605: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3605, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:00:07Z", "level": "info", "message": "Test case 3606: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3606, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:00:08Z", "level": "info", "message": "Test case 3607: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3607, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:00:09Z", "level": "info", "message": "Test case 3608: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3608, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:00:10Z", "level": "info", "message": "Test case 3609: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3609, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:00:11Z", "level": "info", "message": "Test case 3610: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3610, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:00:12Z", "level": "info", "message": "Test case 3611: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3611, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:00:13Z", "level": "info", "message": "Test case 3612: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3612, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:00:14Z", "level": "info", "message": "Test case 3613: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3613, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:00:15Z", "level": "info", "message": "Test case 3614: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3614, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:00:16Z", "level": "info", "message": "Test case 3615: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3615, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:00:17Z", "level": "info", "message": "Test case 3616: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3616, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:00:18Z", "level": "info", "message": "Test case 3617: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3617, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:00:19Z", "level": "info", "message": "Test case 3618: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3618, "data": "4iih"} +{"timestamp": "2024-01-01T01:00:20Z", "level": "info", "message": "Test case 3619: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3619, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:00:21Z", "level": "info", "message": "Test case 3620: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3620, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:00:22Z", "level": "info", "message": "Test case 3621: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3621, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:00:23Z", "level": "info", "message": "Test case 3622: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3622, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:00:24Z", "level": "info", "message": "Test case 3623: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3623, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:00:25Z", "level": "info", "message": "Test case 3624: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3624, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:00:26Z", "level": "info", "message": "Test case 3625: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3625, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:00:27Z", "level": "info", "message": "Test case 3626: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3626, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:00:28Z", "level": "info", "message": "Test case 3627: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3627, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:00:29Z", "level": "info", "message": "Test case 3628: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3628, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:00:30Z", "level": "info", "message": "Test case 3629: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3629, "data": "wg=="} +{"timestamp": "2024-01-01T01:00:31Z", "level": "info", "message": "Test case 3630: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3630, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:00:32Z", "level": "info", "message": "Test case 3631: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3631, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:00:33Z", "level": "info", "message": "Test case 3632: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3632, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:00:34Z", "level": "info", "message": "Test case 3633: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3633, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:00:35Z", "level": "info", "message": "Test case 3634: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3634, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:00:36Z", "level": "info", "message": "Test case 3635: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3635, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:00:37Z", "level": "info", "message": "Test case 3636: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3636, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:00:38Z", "level": "info", "message": "Test case 3637: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3637, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:00:39Z", "level": "info", "message": "Test case 3638: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3638, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:00:40Z", "level": "info", "message": "Test case 3639: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3639, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:00:41Z", "level": "info", "message": "Test case 3640: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3640, "data": "wIA="} +{"timestamp": "2024-01-01T01:00:42Z", "level": "info", "message": "Test case 3641: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3641, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:00:43Z", "level": "info", "message": "Test case 3642: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3642, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:00:44Z", "level": "info", "message": "Test case 3643: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3643, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:00:45Z", "level": "info", "message": "Test case 3644: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3644, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:00:46Z", "level": "info", "message": "Test case 3645: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3645, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:00:47Z", "level": "info", "message": "Test case 3646: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3646, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:00:48Z", "level": "info", "message": "Test case 3647: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3647, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:00:49Z", "level": "info", "message": "Test case 3648: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3648, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:00:50Z", "level": "info", "message": "Test case 3649: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3649, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:00:51Z", "level": "info", "message": "Test case 3650: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3650, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:00:52Z", "level": "info", "message": "Test case 3651: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3651, "data": "4ICA"} +{"timestamp": "2024-01-01T01:00:53Z", "level": "info", "message": "Test case 3652: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3652, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:00:54Z", "level": "info", "message": "Test case 3653: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3653, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:00:55Z", "level": "info", "message": "Test case 3654: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3654, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:00:56Z", "level": "info", "message": "Test case 3655: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3655, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:00:57Z", "level": "info", "message": "Test case 3656: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3656, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:00:58Z", "level": "info", "message": "Test case 3657: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3657, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:00:59Z", "level": "info", "message": "Test case 3658: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3658, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:01:00Z", "level": "info", "message": "Test case 3659: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3659, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:01:01Z", "level": "info", "message": "Test case 3660: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3660, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:01:02Z", "level": "info", "message": "Test case 3661: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3661, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:01:03Z", "level": "info", "message": "Test case 3662: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3662, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:01:04Z", "level": "info", "message": "Test case 3663: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3663, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:01:05Z", "level": "info", "message": "Test case 3664: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3664, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:01:06Z", "level": "info", "message": "Test case 3665: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3665, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:01:07Z", "level": "info", "message": "Test case 3666: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3666, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:01:08Z", "level": "info", "message": "Test case 3667: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3667, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:01:09Z", "level": "info", "message": "Test case 3668: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3668, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:01:10Z", "level": "info", "message": "Test case 3669: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3669, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:01:11Z", "level": "info", "message": "Test case 3670: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3670, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:01:12Z", "level": "info", "message": "Test case 3671: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3671, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:01:13Z", "level": "info", "message": "Test case 3672: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3672, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:01:14Z", "level": "info", "message": "Test case 3673: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3673, "data": "4iih"} +{"timestamp": "2024-01-01T01:01:15Z", "level": "info", "message": "Test case 3674: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3674, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:01:16Z", "level": "info", "message": "Test case 3675: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3675, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:01:17Z", "level": "info", "message": "Test case 3676: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3676, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:01:18Z", "level": "info", "message": "Test case 3677: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3677, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:01:19Z", "level": "info", "message": "Test case 3678: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3678, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:01:20Z", "level": "info", "message": "Test case 3679: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3679, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:01:21Z", "level": "info", "message": "Test case 3680: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3680, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:01:22Z", "level": "info", "message": "Test case 3681: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3681, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:01:23Z", "level": "info", "message": "Test case 3682: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3682, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:01:24Z", "level": "info", "message": "Test case 3683: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3683, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:01:25Z", "level": "info", "message": "Test case 3684: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3684, "data": "wg=="} +{"timestamp": "2024-01-01T01:01:26Z", "level": "info", "message": "Test case 3685: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3685, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:01:27Z", "level": "info", "message": "Test case 3686: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3686, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:01:28Z", "level": "info", "message": "Test case 3687: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3687, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:01:29Z", "level": "info", "message": "Test case 3688: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3688, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:01:30Z", "level": "info", "message": "Test case 3689: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3689, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:01:31Z", "level": "info", "message": "Test case 3690: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3690, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:01:32Z", "level": "info", "message": "Test case 3691: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3691, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:01:33Z", "level": "info", "message": "Test case 3692: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3692, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:01:34Z", "level": "info", "message": "Test case 3693: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3693, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:01:35Z", "level": "info", "message": "Test case 3694: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3694, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:01:36Z", "level": "info", "message": "Test case 3695: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3695, "data": "wIA="} +{"timestamp": "2024-01-01T01:01:37Z", "level": "info", "message": "Test case 3696: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3696, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:01:38Z", "level": "info", "message": "Test case 3697: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3697, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:01:39Z", "level": "info", "message": "Test case 3698: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3698, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:01:40Z", "level": "info", "message": "Test case 3699: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3699, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:01:41Z", "level": "info", "message": "Test case 3700: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3700, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:01:42Z", "level": "info", "message": "Test case 3701: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3701, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:01:43Z", "level": "info", "message": "Test case 3702: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3702, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:01:44Z", "level": "info", "message": "Test case 3703: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3703, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:01:45Z", "level": "info", "message": "Test case 3704: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3704, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:01:46Z", "level": "info", "message": "Test case 3705: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3705, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:01:47Z", "level": "info", "message": "Test case 3706: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3706, "data": "4ICA"} +{"timestamp": "2024-01-01T01:01:48Z", "level": "info", "message": "Test case 3707: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3707, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:01:49Z", "level": "info", "message": "Test case 3708: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3708, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:01:50Z", "level": "info", "message": "Test case 3709: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3709, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:01:51Z", "level": "info", "message": "Test case 3710: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3710, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:01:52Z", "level": "info", "message": "Test case 3711: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3711, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:01:53Z", "level": "info", "message": "Test case 3712: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3712, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:01:54Z", "level": "info", "message": "Test case 3713: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3713, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:01:55Z", "level": "info", "message": "Test case 3714: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3714, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:01:56Z", "level": "info", "message": "Test case 3715: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3715, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:01:57Z", "level": "info", "message": "Test case 3716: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3716, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:01:58Z", "level": "info", "message": "Test case 3717: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3717, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:01:59Z", "level": "info", "message": "Test case 3718: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3718, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:02:00Z", "level": "info", "message": "Test case 3719: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3719, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:02:01Z", "level": "info", "message": "Test case 3720: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3720, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:02:02Z", "level": "info", "message": "Test case 3721: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3721, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:02:03Z", "level": "info", "message": "Test case 3722: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3722, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:02:04Z", "level": "info", "message": "Test case 3723: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3723, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:02:05Z", "level": "info", "message": "Test case 3724: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3724, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:02:06Z", "level": "info", "message": "Test case 3725: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3725, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:02:07Z", "level": "info", "message": "Test case 3726: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3726, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:02:08Z", "level": "info", "message": "Test case 3727: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3727, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:02:09Z", "level": "info", "message": "Test case 3728: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3728, "data": "4iih"} +{"timestamp": "2024-01-01T01:02:10Z", "level": "info", "message": "Test case 3729: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3729, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:02:11Z", "level": "info", "message": "Test case 3730: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3730, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:02:12Z", "level": "info", "message": "Test case 3731: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3731, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:02:13Z", "level": "info", "message": "Test case 3732: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3732, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:02:14Z", "level": "info", "message": "Test case 3733: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3733, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:02:15Z", "level": "info", "message": "Test case 3734: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3734, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:02:16Z", "level": "info", "message": "Test case 3735: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3735, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:02:17Z", "level": "info", "message": "Test case 3736: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3736, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:02:18Z", "level": "info", "message": "Test case 3737: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3737, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:02:19Z", "level": "info", "message": "Test case 3738: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3738, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:02:20Z", "level": "info", "message": "Test case 3739: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3739, "data": "wg=="} +{"timestamp": "2024-01-01T01:02:21Z", "level": "info", "message": "Test case 3740: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3740, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:02:22Z", "level": "info", "message": "Test case 3741: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3741, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:02:23Z", "level": "info", "message": "Test case 3742: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3742, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:02:24Z", "level": "info", "message": "Test case 3743: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3743, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:02:25Z", "level": "info", "message": "Test case 3744: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3744, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:02:26Z", "level": "info", "message": "Test case 3745: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3745, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:02:27Z", "level": "info", "message": "Test case 3746: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3746, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:02:28Z", "level": "info", "message": "Test case 3747: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3747, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:02:29Z", "level": "info", "message": "Test case 3748: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3748, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:02:30Z", "level": "info", "message": "Test case 3749: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3749, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:02:31Z", "level": "info", "message": "Test case 3750: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3750, "data": "wIA="} +{"timestamp": "2024-01-01T01:02:32Z", "level": "info", "message": "Test case 3751: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3751, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:02:33Z", "level": "info", "message": "Test case 3752: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3752, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:02:34Z", "level": "info", "message": "Test case 3753: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3753, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:02:35Z", "level": "info", "message": "Test case 3754: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3754, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:02:36Z", "level": "info", "message": "Test case 3755: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3755, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:02:37Z", "level": "info", "message": "Test case 3756: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3756, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:02:38Z", "level": "info", "message": "Test case 3757: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3757, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:02:39Z", "level": "info", "message": "Test case 3758: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3758, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:02:40Z", "level": "info", "message": "Test case 3759: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3759, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:02:41Z", "level": "info", "message": "Test case 3760: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3760, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:02:42Z", "level": "info", "message": "Test case 3761: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3761, "data": "4ICA"} +{"timestamp": "2024-01-01T01:02:43Z", "level": "info", "message": "Test case 3762: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3762, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:02:44Z", "level": "info", "message": "Test case 3763: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3763, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:02:45Z", "level": "info", "message": "Test case 3764: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3764, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:02:46Z", "level": "info", "message": "Test case 3765: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3765, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:02:47Z", "level": "info", "message": "Test case 3766: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3766, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:02:48Z", "level": "info", "message": "Test case 3767: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3767, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:02:49Z", "level": "info", "message": "Test case 3768: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3768, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:02:50Z", "level": "info", "message": "Test case 3769: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3769, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:02:51Z", "level": "info", "message": "Test case 3770: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3770, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:02:52Z", "level": "info", "message": "Test case 3771: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3771, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:02:53Z", "level": "info", "message": "Test case 3772: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3772, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:02:54Z", "level": "info", "message": "Test case 3773: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3773, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:02:55Z", "level": "info", "message": "Test case 3774: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3774, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:02:56Z", "level": "info", "message": "Test case 3775: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3775, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:02:57Z", "level": "info", "message": "Test case 3776: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3776, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:02:58Z", "level": "info", "message": "Test case 3777: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3777, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:02:59Z", "level": "info", "message": "Test case 3778: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3778, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:03:00Z", "level": "info", "message": "Test case 3779: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3779, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:03:01Z", "level": "info", "message": "Test case 3780: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3780, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:03:02Z", "level": "info", "message": "Test case 3781: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3781, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:03:03Z", "level": "info", "message": "Test case 3782: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3782, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:03:04Z", "level": "info", "message": "Test case 3783: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3783, "data": "4iih"} +{"timestamp": "2024-01-01T01:03:05Z", "level": "info", "message": "Test case 3784: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3784, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:03:06Z", "level": "info", "message": "Test case 3785: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3785, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:03:07Z", "level": "info", "message": "Test case 3786: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3786, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:03:08Z", "level": "info", "message": "Test case 3787: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3787, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:03:09Z", "level": "info", "message": "Test case 3788: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3788, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:03:10Z", "level": "info", "message": "Test case 3789: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3789, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:03:11Z", "level": "info", "message": "Test case 3790: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3790, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:03:12Z", "level": "info", "message": "Test case 3791: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3791, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:03:13Z", "level": "info", "message": "Test case 3792: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3792, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:03:14Z", "level": "info", "message": "Test case 3793: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3793, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:03:15Z", "level": "info", "message": "Test case 3794: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3794, "data": "wg=="} +{"timestamp": "2024-01-01T01:03:16Z", "level": "info", "message": "Test case 3795: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3795, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:03:17Z", "level": "info", "message": "Test case 3796: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3796, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:03:18Z", "level": "info", "message": "Test case 3797: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3797, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:03:19Z", "level": "info", "message": "Test case 3798: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3798, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:03:20Z", "level": "info", "message": "Test case 3799: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3799, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:03:21Z", "level": "info", "message": "Test case 3800: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3800, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:03:22Z", "level": "info", "message": "Test case 3801: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3801, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:03:23Z", "level": "info", "message": "Test case 3802: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3802, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:03:24Z", "level": "info", "message": "Test case 3803: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3803, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:03:25Z", "level": "info", "message": "Test case 3804: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3804, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:03:26Z", "level": "info", "message": "Test case 3805: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3805, "data": "wIA="} +{"timestamp": "2024-01-01T01:03:27Z", "level": "info", "message": "Test case 3806: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3806, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:03:28Z", "level": "info", "message": "Test case 3807: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3807, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:03:29Z", "level": "info", "message": "Test case 3808: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3808, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:03:30Z", "level": "info", "message": "Test case 3809: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3809, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:03:31Z", "level": "info", "message": "Test case 3810: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3810, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:03:32Z", "level": "info", "message": "Test case 3811: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3811, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:03:33Z", "level": "info", "message": "Test case 3812: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3812, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:03:34Z", "level": "info", "message": "Test case 3813: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3813, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:03:35Z", "level": "info", "message": "Test case 3814: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3814, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:03:36Z", "level": "info", "message": "Test case 3815: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3815, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:03:37Z", "level": "info", "message": "Test case 3816: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3816, "data": "4ICA"} +{"timestamp": "2024-01-01T01:03:38Z", "level": "info", "message": "Test case 3817: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3817, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:03:39Z", "level": "info", "message": "Test case 3818: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3818, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:03:40Z", "level": "info", "message": "Test case 3819: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3819, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:03:41Z", "level": "info", "message": "Test case 3820: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3820, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:03:42Z", "level": "info", "message": "Test case 3821: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3821, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:03:43Z", "level": "info", "message": "Test case 3822: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3822, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:03:44Z", "level": "info", "message": "Test case 3823: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3823, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:03:45Z", "level": "info", "message": "Test case 3824: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3824, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:03:46Z", "level": "info", "message": "Test case 3825: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3825, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:03:47Z", "level": "info", "message": "Test case 3826: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3826, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:03:48Z", "level": "info", "message": "Test case 3827: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3827, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:03:49Z", "level": "info", "message": "Test case 3828: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3828, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:03:50Z", "level": "info", "message": "Test case 3829: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3829, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:03:51Z", "level": "info", "message": "Test case 3830: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3830, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:03:52Z", "level": "info", "message": "Test case 3831: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3831, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:03:53Z", "level": "info", "message": "Test case 3832: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3832, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:03:54Z", "level": "info", "message": "Test case 3833: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3833, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:03:55Z", "level": "info", "message": "Test case 3834: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3834, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:03:56Z", "level": "info", "message": "Test case 3835: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3835, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:03:57Z", "level": "info", "message": "Test case 3836: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3836, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:03:58Z", "level": "info", "message": "Test case 3837: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3837, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:03:59Z", "level": "info", "message": "Test case 3838: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3838, "data": "4iih"} +{"timestamp": "2024-01-01T01:04:00Z", "level": "info", "message": "Test case 3839: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3839, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:04:01Z", "level": "info", "message": "Test case 3840: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3840, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:04:02Z", "level": "info", "message": "Test case 3841: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3841, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:04:03Z", "level": "info", "message": "Test case 3842: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3842, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:04:04Z", "level": "info", "message": "Test case 3843: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3843, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:04:05Z", "level": "info", "message": "Test case 3844: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3844, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:04:06Z", "level": "info", "message": "Test case 3845: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3845, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:04:07Z", "level": "info", "message": "Test case 3846: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3846, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:04:08Z", "level": "info", "message": "Test case 3847: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3847, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:04:09Z", "level": "info", "message": "Test case 3848: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3848, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:04:10Z", "level": "info", "message": "Test case 3849: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3849, "data": "wg=="} +{"timestamp": "2024-01-01T01:04:11Z", "level": "info", "message": "Test case 3850: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3850, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:04:12Z", "level": "info", "message": "Test case 3851: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3851, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:04:13Z", "level": "info", "message": "Test case 3852: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3852, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:04:14Z", "level": "info", "message": "Test case 3853: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3853, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:04:15Z", "level": "info", "message": "Test case 3854: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3854, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:04:16Z", "level": "info", "message": "Test case 3855: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3855, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:04:17Z", "level": "info", "message": "Test case 3856: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3856, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:04:18Z", "level": "info", "message": "Test case 3857: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3857, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:04:19Z", "level": "info", "message": "Test case 3858: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3858, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:04:20Z", "level": "info", "message": "Test case 3859: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3859, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:04:21Z", "level": "info", "message": "Test case 3860: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3860, "data": "wIA="} +{"timestamp": "2024-01-01T01:04:22Z", "level": "info", "message": "Test case 3861: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3861, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:04:23Z", "level": "info", "message": "Test case 3862: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3862, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:04:24Z", "level": "info", "message": "Test case 3863: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3863, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:04:25Z", "level": "info", "message": "Test case 3864: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3864, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:04:26Z", "level": "info", "message": "Test case 3865: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3865, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:04:27Z", "level": "info", "message": "Test case 3866: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3866, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:04:28Z", "level": "info", "message": "Test case 3867: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3867, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:04:29Z", "level": "info", "message": "Test case 3868: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3868, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:04:30Z", "level": "info", "message": "Test case 3869: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3869, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:04:31Z", "level": "info", "message": "Test case 3870: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3870, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:04:32Z", "level": "info", "message": "Test case 3871: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3871, "data": "4ICA"} +{"timestamp": "2024-01-01T01:04:33Z", "level": "info", "message": "Test case 3872: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3872, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:04:34Z", "level": "info", "message": "Test case 3873: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3873, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:04:35Z", "level": "info", "message": "Test case 3874: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3874, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:04:36Z", "level": "info", "message": "Test case 3875: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3875, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:04:37Z", "level": "info", "message": "Test case 3876: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3876, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:04:38Z", "level": "info", "message": "Test case 3877: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3877, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:04:39Z", "level": "info", "message": "Test case 3878: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3878, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:04:40Z", "level": "info", "message": "Test case 3879: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3879, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:04:41Z", "level": "info", "message": "Test case 3880: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3880, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:04:42Z", "level": "info", "message": "Test case 3881: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3881, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:04:43Z", "level": "info", "message": "Test case 3882: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3882, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:04:44Z", "level": "info", "message": "Test case 3883: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3883, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:04:45Z", "level": "info", "message": "Test case 3884: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3884, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:04:46Z", "level": "info", "message": "Test case 3885: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3885, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:04:47Z", "level": "info", "message": "Test case 3886: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3886, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:04:48Z", "level": "info", "message": "Test case 3887: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3887, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:04:49Z", "level": "info", "message": "Test case 3888: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3888, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:04:50Z", "level": "info", "message": "Test case 3889: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3889, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:04:51Z", "level": "info", "message": "Test case 3890: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3890, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:04:52Z", "level": "info", "message": "Test case 3891: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3891, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:04:53Z", "level": "info", "message": "Test case 3892: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3892, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:04:54Z", "level": "info", "message": "Test case 3893: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3893, "data": "4iih"} +{"timestamp": "2024-01-01T01:04:55Z", "level": "info", "message": "Test case 3894: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3894, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:04:56Z", "level": "info", "message": "Test case 3895: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3895, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:04:57Z", "level": "info", "message": "Test case 3896: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3896, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:04:58Z", "level": "info", "message": "Test case 3897: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3897, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:04:59Z", "level": "info", "message": "Test case 3898: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3898, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:05:00Z", "level": "info", "message": "Test case 3899: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3899, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:05:01Z", "level": "info", "message": "Test case 3900: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3900, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:05:02Z", "level": "info", "message": "Test case 3901: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3901, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:05:03Z", "level": "info", "message": "Test case 3902: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3902, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:05:04Z", "level": "info", "message": "Test case 3903: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3903, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:05:05Z", "level": "info", "message": "Test case 3904: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3904, "data": "wg=="} +{"timestamp": "2024-01-01T01:05:06Z", "level": "info", "message": "Test case 3905: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3905, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:05:07Z", "level": "info", "message": "Test case 3906: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3906, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:05:08Z", "level": "info", "message": "Test case 3907: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3907, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:05:09Z", "level": "info", "message": "Test case 3908: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3908, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:05:10Z", "level": "info", "message": "Test case 3909: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3909, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:05:11Z", "level": "info", "message": "Test case 3910: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3910, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:05:12Z", "level": "info", "message": "Test case 3911: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3911, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:05:13Z", "level": "info", "message": "Test case 3912: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3912, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:05:14Z", "level": "info", "message": "Test case 3913: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3913, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:05:15Z", "level": "info", "message": "Test case 3914: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3914, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:05:16Z", "level": "info", "message": "Test case 3915: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3915, "data": "wIA="} +{"timestamp": "2024-01-01T01:05:17Z", "level": "info", "message": "Test case 3916: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3916, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:05:18Z", "level": "info", "message": "Test case 3917: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3917, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:05:19Z", "level": "info", "message": "Test case 3918: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3918, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:05:20Z", "level": "info", "message": "Test case 3919: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3919, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:05:21Z", "level": "info", "message": "Test case 3920: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3920, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:05:22Z", "level": "info", "message": "Test case 3921: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3921, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:05:23Z", "level": "info", "message": "Test case 3922: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3922, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:05:24Z", "level": "info", "message": "Test case 3923: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3923, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:05:25Z", "level": "info", "message": "Test case 3924: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3924, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:05:26Z", "level": "info", "message": "Test case 3925: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3925, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:05:27Z", "level": "info", "message": "Test case 3926: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3926, "data": "4ICA"} +{"timestamp": "2024-01-01T01:05:28Z", "level": "info", "message": "Test case 3927: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3927, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:05:29Z", "level": "info", "message": "Test case 3928: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3928, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:05:30Z", "level": "info", "message": "Test case 3929: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3929, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:05:31Z", "level": "info", "message": "Test case 3930: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3930, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:05:32Z", "level": "info", "message": "Test case 3931: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3931, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:05:33Z", "level": "info", "message": "Test case 3932: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3932, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:05:34Z", "level": "info", "message": "Test case 3933: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3933, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:05:35Z", "level": "info", "message": "Test case 3934: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3934, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:05:36Z", "level": "info", "message": "Test case 3935: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3935, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:05:37Z", "level": "info", "message": "Test case 3936: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3936, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:05:38Z", "level": "info", "message": "Test case 3937: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3937, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:05:39Z", "level": "info", "message": "Test case 3938: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3938, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:05:40Z", "level": "info", "message": "Test case 3939: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3939, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:05:41Z", "level": "info", "message": "Test case 3940: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3940, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:05:42Z", "level": "info", "message": "Test case 3941: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3941, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:05:43Z", "level": "info", "message": "Test case 3942: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3942, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:05:44Z", "level": "info", "message": "Test case 3943: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3943, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:05:45Z", "level": "info", "message": "Test case 3944: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3944, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:05:46Z", "level": "info", "message": "Test case 3945: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3945, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:05:47Z", "level": "info", "message": "Test case 3946: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3946, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:05:48Z", "level": "info", "message": "Test case 3947: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3947, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:05:49Z", "level": "info", "message": "Test case 3948: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3948, "data": "4iih"} +{"timestamp": "2024-01-01T01:05:50Z", "level": "info", "message": "Test case 3949: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3949, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:05:51Z", "level": "info", "message": "Test case 3950: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3950, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:05:52Z", "level": "info", "message": "Test case 3951: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3951, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:05:53Z", "level": "info", "message": "Test case 3952: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3952, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:05:54Z", "level": "info", "message": "Test case 3953: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3953, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:05:55Z", "level": "info", "message": "Test case 3954: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3954, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:05:56Z", "level": "info", "message": "Test case 3955: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3955, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:05:57Z", "level": "info", "message": "Test case 3956: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3956, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:05:58Z", "level": "info", "message": "Test case 3957: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3957, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:05:59Z", "level": "info", "message": "Test case 3958: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3958, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:06:00Z", "level": "info", "message": "Test case 3959: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3959, "data": "wg=="} +{"timestamp": "2024-01-01T01:06:01Z", "level": "info", "message": "Test case 3960: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3960, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:06:02Z", "level": "info", "message": "Test case 3961: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3961, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:06:03Z", "level": "info", "message": "Test case 3962: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3962, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:06:04Z", "level": "info", "message": "Test case 3963: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3963, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:06:05Z", "level": "info", "message": "Test case 3964: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3964, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:06:06Z", "level": "info", "message": "Test case 3965: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3965, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:06:07Z", "level": "info", "message": "Test case 3966: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3966, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:06:08Z", "level": "info", "message": "Test case 3967: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3967, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:06:09Z", "level": "info", "message": "Test case 3968: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3968, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:06:10Z", "level": "info", "message": "Test case 3969: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3969, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:06:11Z", "level": "info", "message": "Test case 3970: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3970, "data": "wIA="} +{"timestamp": "2024-01-01T01:06:12Z", "level": "info", "message": "Test case 3971: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3971, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:06:13Z", "level": "info", "message": "Test case 3972: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3972, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:06:14Z", "level": "info", "message": "Test case 3973: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3973, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:06:15Z", "level": "info", "message": "Test case 3974: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3974, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:06:16Z", "level": "info", "message": "Test case 3975: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3975, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:06:17Z", "level": "info", "message": "Test case 3976: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3976, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:06:18Z", "level": "info", "message": "Test case 3977: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3977, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:06:19Z", "level": "info", "message": "Test case 3978: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3978, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:06:20Z", "level": "info", "message": "Test case 3979: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3979, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:06:21Z", "level": "info", "message": "Test case 3980: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3980, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:06:22Z", "level": "info", "message": "Test case 3981: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3981, "data": "4ICA"} +{"timestamp": "2024-01-01T01:06:23Z", "level": "info", "message": "Test case 3982: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3982, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:06:24Z", "level": "info", "message": "Test case 3983: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3983, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:06:25Z", "level": "info", "message": "Test case 3984: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3984, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:06:26Z", "level": "info", "message": "Test case 3985: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3985, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:06:27Z", "level": "info", "message": "Test case 3986: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3986, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:06:28Z", "level": "info", "message": "Test case 3987: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3987, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:06:29Z", "level": "info", "message": "Test case 3988: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3988, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:06:30Z", "level": "info", "message": "Test case 3989: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 3989, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:06:31Z", "level": "info", "message": "Test case 3990: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 3990, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:06:32Z", "level": "info", "message": "Test case 3991: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 3991, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:06:33Z", "level": "info", "message": "Test case 3992: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 3992, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:06:34Z", "level": "info", "message": "Test case 3993: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 3993, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:06:35Z", "level": "info", "message": "Test case 3994: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 3994, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:06:36Z", "level": "info", "message": "Test case 3995: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 3995, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:06:37Z", "level": "info", "message": "Test case 3996: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 3996, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:06:38Z", "level": "info", "message": "Test case 3997: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 3997, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:06:39Z", "level": "info", "message": "Test case 3998: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 3998, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:06:40Z", "level": "info", "message": "Test case 3999: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 3999, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:06:41Z", "level": "info", "message": "Test case 4000: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4000, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:06:42Z", "level": "info", "message": "Test case 4001: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4001, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:06:43Z", "level": "info", "message": "Test case 4002: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4002, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:06:44Z", "level": "info", "message": "Test case 4003: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4003, "data": "4iih"} +{"timestamp": "2024-01-01T01:06:45Z", "level": "info", "message": "Test case 4004: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4004, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:06:46Z", "level": "info", "message": "Test case 4005: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4005, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:06:47Z", "level": "info", "message": "Test case 4006: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4006, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:06:48Z", "level": "info", "message": "Test case 4007: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4007, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:06:49Z", "level": "info", "message": "Test case 4008: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4008, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:06:50Z", "level": "info", "message": "Test case 4009: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4009, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:06:51Z", "level": "info", "message": "Test case 4010: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4010, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:06:52Z", "level": "info", "message": "Test case 4011: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4011, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:06:53Z", "level": "info", "message": "Test case 4012: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4012, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:06:54Z", "level": "info", "message": "Test case 4013: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4013, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:06:55Z", "level": "info", "message": "Test case 4014: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4014, "data": "wg=="} +{"timestamp": "2024-01-01T01:06:56Z", "level": "info", "message": "Test case 4015: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4015, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:06:57Z", "level": "info", "message": "Test case 4016: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4016, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:06:58Z", "level": "info", "message": "Test case 4017: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4017, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:06:59Z", "level": "info", "message": "Test case 4018: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4018, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:07:00Z", "level": "info", "message": "Test case 4019: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4019, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:07:01Z", "level": "info", "message": "Test case 4020: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4020, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:07:02Z", "level": "info", "message": "Test case 4021: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4021, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:07:03Z", "level": "info", "message": "Test case 4022: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4022, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:07:04Z", "level": "info", "message": "Test case 4023: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4023, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:07:05Z", "level": "info", "message": "Test case 4024: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4024, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:07:06Z", "level": "info", "message": "Test case 4025: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4025, "data": "wIA="} +{"timestamp": "2024-01-01T01:07:07Z", "level": "info", "message": "Test case 4026: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4026, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:07:08Z", "level": "info", "message": "Test case 4027: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4027, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:07:09Z", "level": "info", "message": "Test case 4028: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4028, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:07:10Z", "level": "info", "message": "Test case 4029: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4029, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:07:11Z", "level": "info", "message": "Test case 4030: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4030, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:07:12Z", "level": "info", "message": "Test case 4031: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4031, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:07:13Z", "level": "info", "message": "Test case 4032: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4032, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:07:14Z", "level": "info", "message": "Test case 4033: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4033, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:07:15Z", "level": "info", "message": "Test case 4034: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4034, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:07:16Z", "level": "info", "message": "Test case 4035: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4035, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:07:17Z", "level": "info", "message": "Test case 4036: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4036, "data": "4ICA"} +{"timestamp": "2024-01-01T01:07:18Z", "level": "info", "message": "Test case 4037: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4037, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:07:19Z", "level": "info", "message": "Test case 4038: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4038, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:07:20Z", "level": "info", "message": "Test case 4039: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4039, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:07:21Z", "level": "info", "message": "Test case 4040: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4040, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:07:22Z", "level": "info", "message": "Test case 4041: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4041, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:07:23Z", "level": "info", "message": "Test case 4042: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4042, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:07:24Z", "level": "info", "message": "Test case 4043: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4043, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:07:25Z", "level": "info", "message": "Test case 4044: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4044, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:07:26Z", "level": "info", "message": "Test case 4045: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4045, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:07:27Z", "level": "info", "message": "Test case 4046: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4046, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:07:28Z", "level": "info", "message": "Test case 4047: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4047, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:07:29Z", "level": "info", "message": "Test case 4048: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4048, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:07:30Z", "level": "info", "message": "Test case 4049: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4049, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:07:31Z", "level": "info", "message": "Test case 4050: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4050, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:07:32Z", "level": "info", "message": "Test case 4051: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4051, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:07:33Z", "level": "info", "message": "Test case 4052: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4052, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:07:34Z", "level": "info", "message": "Test case 4053: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4053, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:07:35Z", "level": "info", "message": "Test case 4054: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4054, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:07:36Z", "level": "info", "message": "Test case 4055: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4055, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:07:37Z", "level": "info", "message": "Test case 4056: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4056, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:07:38Z", "level": "info", "message": "Test case 4057: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4057, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:07:39Z", "level": "info", "message": "Test case 4058: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4058, "data": "4iih"} +{"timestamp": "2024-01-01T01:07:40Z", "level": "info", "message": "Test case 4059: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4059, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:07:41Z", "level": "info", "message": "Test case 4060: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4060, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:07:42Z", "level": "info", "message": "Test case 4061: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4061, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:07:43Z", "level": "info", "message": "Test case 4062: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4062, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:07:44Z", "level": "info", "message": "Test case 4063: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4063, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:07:45Z", "level": "info", "message": "Test case 4064: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4064, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:07:46Z", "level": "info", "message": "Test case 4065: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4065, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:07:47Z", "level": "info", "message": "Test case 4066: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4066, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:07:48Z", "level": "info", "message": "Test case 4067: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4067, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:07:49Z", "level": "info", "message": "Test case 4068: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4068, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:07:50Z", "level": "info", "message": "Test case 4069: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4069, "data": "wg=="} +{"timestamp": "2024-01-01T01:07:51Z", "level": "info", "message": "Test case 4070: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4070, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:07:52Z", "level": "info", "message": "Test case 4071: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4071, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:07:53Z", "level": "info", "message": "Test case 4072: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4072, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:07:54Z", "level": "info", "message": "Test case 4073: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4073, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:07:55Z", "level": "info", "message": "Test case 4074: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4074, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:07:56Z", "level": "info", "message": "Test case 4075: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4075, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:07:57Z", "level": "info", "message": "Test case 4076: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4076, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:07:58Z", "level": "info", "message": "Test case 4077: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4077, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:07:59Z", "level": "info", "message": "Test case 4078: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4078, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:08:00Z", "level": "info", "message": "Test case 4079: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4079, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:08:01Z", "level": "info", "message": "Test case 4080: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4080, "data": "wIA="} +{"timestamp": "2024-01-01T01:08:02Z", "level": "info", "message": "Test case 4081: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4081, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:08:03Z", "level": "info", "message": "Test case 4082: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4082, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:08:04Z", "level": "info", "message": "Test case 4083: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4083, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:08:05Z", "level": "info", "message": "Test case 4084: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4084, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:08:06Z", "level": "info", "message": "Test case 4085: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4085, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:08:07Z", "level": "info", "message": "Test case 4086: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4086, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:08:08Z", "level": "info", "message": "Test case 4087: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4087, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:08:09Z", "level": "info", "message": "Test case 4088: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4088, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:08:10Z", "level": "info", "message": "Test case 4089: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4089, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:08:11Z", "level": "info", "message": "Test case 4090: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4090, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:08:12Z", "level": "info", "message": "Test case 4091: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4091, "data": "4ICA"} +{"timestamp": "2024-01-01T01:08:13Z", "level": "info", "message": "Test case 4092: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4092, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:08:14Z", "level": "info", "message": "Test case 4093: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4093, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:08:15Z", "level": "info", "message": "Test case 4094: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4094, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:08:16Z", "level": "info", "message": "Test case 4095: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4095, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:08:17Z", "level": "info", "message": "Test case 4096: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4096, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:08:18Z", "level": "info", "message": "Test case 4097: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4097, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:08:19Z", "level": "info", "message": "Test case 4098: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4098, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:08:20Z", "level": "info", "message": "Test case 4099: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4099, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:08:21Z", "level": "info", "message": "Test case 4100: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4100, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:08:22Z", "level": "info", "message": "Test case 4101: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4101, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:08:23Z", "level": "info", "message": "Test case 4102: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4102, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:08:24Z", "level": "info", "message": "Test case 4103: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4103, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:08:25Z", "level": "info", "message": "Test case 4104: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4104, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:08:26Z", "level": "info", "message": "Test case 4105: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4105, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:08:27Z", "level": "info", "message": "Test case 4106: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4106, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:08:28Z", "level": "info", "message": "Test case 4107: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4107, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:08:29Z", "level": "info", "message": "Test case 4108: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4108, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:08:30Z", "level": "info", "message": "Test case 4109: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4109, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:08:31Z", "level": "info", "message": "Test case 4110: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4110, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:08:32Z", "level": "info", "message": "Test case 4111: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4111, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:08:33Z", "level": "info", "message": "Test case 4112: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4112, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:08:34Z", "level": "info", "message": "Test case 4113: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4113, "data": "4iih"} +{"timestamp": "2024-01-01T01:08:35Z", "level": "info", "message": "Test case 4114: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4114, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:08:36Z", "level": "info", "message": "Test case 4115: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4115, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:08:37Z", "level": "info", "message": "Test case 4116: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4116, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:08:38Z", "level": "info", "message": "Test case 4117: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4117, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:08:39Z", "level": "info", "message": "Test case 4118: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4118, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:08:40Z", "level": "info", "message": "Test case 4119: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4119, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:08:41Z", "level": "info", "message": "Test case 4120: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4120, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:08:42Z", "level": "info", "message": "Test case 4121: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4121, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:08:43Z", "level": "info", "message": "Test case 4122: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4122, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:08:44Z", "level": "info", "message": "Test case 4123: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4123, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:08:45Z", "level": "info", "message": "Test case 4124: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4124, "data": "wg=="} +{"timestamp": "2024-01-01T01:08:46Z", "level": "info", "message": "Test case 4125: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4125, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:08:47Z", "level": "info", "message": "Test case 4126: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4126, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:08:48Z", "level": "info", "message": "Test case 4127: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4127, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:08:49Z", "level": "info", "message": "Test case 4128: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4128, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:08:50Z", "level": "info", "message": "Test case 4129: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4129, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:08:51Z", "level": "info", "message": "Test case 4130: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4130, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:08:52Z", "level": "info", "message": "Test case 4131: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4131, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:08:53Z", "level": "info", "message": "Test case 4132: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4132, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:08:54Z", "level": "info", "message": "Test case 4133: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4133, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:08:55Z", "level": "info", "message": "Test case 4134: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4134, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:08:56Z", "level": "info", "message": "Test case 4135: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4135, "data": "wIA="} +{"timestamp": "2024-01-01T01:08:57Z", "level": "info", "message": "Test case 4136: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4136, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:08:58Z", "level": "info", "message": "Test case 4137: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4137, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:08:59Z", "level": "info", "message": "Test case 4138: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4138, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:09:00Z", "level": "info", "message": "Test case 4139: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4139, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:09:01Z", "level": "info", "message": "Test case 4140: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4140, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:09:02Z", "level": "info", "message": "Test case 4141: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4141, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:09:03Z", "level": "info", "message": "Test case 4142: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4142, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:09:04Z", "level": "info", "message": "Test case 4143: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4143, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:09:05Z", "level": "info", "message": "Test case 4144: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4144, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:09:06Z", "level": "info", "message": "Test case 4145: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4145, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:09:07Z", "level": "info", "message": "Test case 4146: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4146, "data": "4ICA"} +{"timestamp": "2024-01-01T01:09:08Z", "level": "info", "message": "Test case 4147: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4147, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:09:09Z", "level": "info", "message": "Test case 4148: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4148, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:09:10Z", "level": "info", "message": "Test case 4149: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4149, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:09:11Z", "level": "info", "message": "Test case 4150: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4150, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:09:12Z", "level": "info", "message": "Test case 4151: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4151, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:09:13Z", "level": "info", "message": "Test case 4152: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4152, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:09:14Z", "level": "info", "message": "Test case 4153: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4153, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:09:15Z", "level": "info", "message": "Test case 4154: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4154, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:09:16Z", "level": "info", "message": "Test case 4155: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4155, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:09:17Z", "level": "info", "message": "Test case 4156: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4156, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:09:18Z", "level": "info", "message": "Test case 4157: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4157, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:09:19Z", "level": "info", "message": "Test case 4158: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4158, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:09:20Z", "level": "info", "message": "Test case 4159: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4159, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:09:21Z", "level": "info", "message": "Test case 4160: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4160, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:09:22Z", "level": "info", "message": "Test case 4161: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4161, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:09:23Z", "level": "info", "message": "Test case 4162: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4162, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:09:24Z", "level": "info", "message": "Test case 4163: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4163, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:09:25Z", "level": "info", "message": "Test case 4164: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4164, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:09:26Z", "level": "info", "message": "Test case 4165: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4165, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:09:27Z", "level": "info", "message": "Test case 4166: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4166, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:09:28Z", "level": "info", "message": "Test case 4167: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4167, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:09:29Z", "level": "info", "message": "Test case 4168: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4168, "data": "4iih"} +{"timestamp": "2024-01-01T01:09:30Z", "level": "info", "message": "Test case 4169: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4169, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:09:31Z", "level": "info", "message": "Test case 4170: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4170, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:09:32Z", "level": "info", "message": "Test case 4171: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4171, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:09:33Z", "level": "info", "message": "Test case 4172: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4172, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:09:34Z", "level": "info", "message": "Test case 4173: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4173, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:09:35Z", "level": "info", "message": "Test case 4174: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4174, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:09:36Z", "level": "info", "message": "Test case 4175: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4175, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:09:37Z", "level": "info", "message": "Test case 4176: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4176, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:09:38Z", "level": "info", "message": "Test case 4177: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4177, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:09:39Z", "level": "info", "message": "Test case 4178: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4178, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:09:40Z", "level": "info", "message": "Test case 4179: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4179, "data": "wg=="} +{"timestamp": "2024-01-01T01:09:41Z", "level": "info", "message": "Test case 4180: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4180, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:09:42Z", "level": "info", "message": "Test case 4181: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4181, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:09:43Z", "level": "info", "message": "Test case 4182: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4182, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:09:44Z", "level": "info", "message": "Test case 4183: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4183, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:09:45Z", "level": "info", "message": "Test case 4184: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4184, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:09:46Z", "level": "info", "message": "Test case 4185: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4185, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:09:47Z", "level": "info", "message": "Test case 4186: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4186, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:09:48Z", "level": "info", "message": "Test case 4187: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4187, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:09:49Z", "level": "info", "message": "Test case 4188: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4188, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:09:50Z", "level": "info", "message": "Test case 4189: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4189, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:09:51Z", "level": "info", "message": "Test case 4190: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4190, "data": "wIA="} +{"timestamp": "2024-01-01T01:09:52Z", "level": "info", "message": "Test case 4191: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4191, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:09:53Z", "level": "info", "message": "Test case 4192: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4192, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:09:54Z", "level": "info", "message": "Test case 4193: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4193, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:09:55Z", "level": "info", "message": "Test case 4194: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4194, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:09:56Z", "level": "info", "message": "Test case 4195: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4195, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:09:57Z", "level": "info", "message": "Test case 4196: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4196, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:09:58Z", "level": "info", "message": "Test case 4197: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4197, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:09:59Z", "level": "info", "message": "Test case 4198: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4198, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:10:00Z", "level": "info", "message": "Test case 4199: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4199, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:10:01Z", "level": "info", "message": "Test case 4200: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4200, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:10:02Z", "level": "info", "message": "Test case 4201: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4201, "data": "4ICA"} +{"timestamp": "2024-01-01T01:10:03Z", "level": "info", "message": "Test case 4202: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4202, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:10:04Z", "level": "info", "message": "Test case 4203: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4203, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:10:05Z", "level": "info", "message": "Test case 4204: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4204, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:10:06Z", "level": "info", "message": "Test case 4205: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4205, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:10:07Z", "level": "info", "message": "Test case 4206: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4206, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:10:08Z", "level": "info", "message": "Test case 4207: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4207, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:10:09Z", "level": "info", "message": "Test case 4208: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4208, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:10:10Z", "level": "info", "message": "Test case 4209: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4209, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:10:11Z", "level": "info", "message": "Test case 4210: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4210, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:10:12Z", "level": "info", "message": "Test case 4211: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4211, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:10:13Z", "level": "info", "message": "Test case 4212: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4212, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:10:14Z", "level": "info", "message": "Test case 4213: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4213, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:10:15Z", "level": "info", "message": "Test case 4214: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4214, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:10:16Z", "level": "info", "message": "Test case 4215: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4215, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:10:17Z", "level": "info", "message": "Test case 4216: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4216, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:10:18Z", "level": "info", "message": "Test case 4217: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4217, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:10:19Z", "level": "info", "message": "Test case 4218: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4218, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:10:20Z", "level": "info", "message": "Test case 4219: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4219, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:10:21Z", "level": "info", "message": "Test case 4220: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4220, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:10:22Z", "level": "info", "message": "Test case 4221: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4221, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:10:23Z", "level": "info", "message": "Test case 4222: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4222, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:10:24Z", "level": "info", "message": "Test case 4223: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4223, "data": "4iih"} +{"timestamp": "2024-01-01T01:10:25Z", "level": "info", "message": "Test case 4224: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4224, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:10:26Z", "level": "info", "message": "Test case 4225: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4225, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:10:27Z", "level": "info", "message": "Test case 4226: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4226, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:10:28Z", "level": "info", "message": "Test case 4227: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4227, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:10:29Z", "level": "info", "message": "Test case 4228: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4228, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:10:30Z", "level": "info", "message": "Test case 4229: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4229, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:10:31Z", "level": "info", "message": "Test case 4230: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4230, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:10:32Z", "level": "info", "message": "Test case 4231: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4231, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:10:33Z", "level": "info", "message": "Test case 4232: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4232, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:10:34Z", "level": "info", "message": "Test case 4233: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4233, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:10:35Z", "level": "info", "message": "Test case 4234: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4234, "data": "wg=="} +{"timestamp": "2024-01-01T01:10:36Z", "level": "info", "message": "Test case 4235: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4235, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:10:37Z", "level": "info", "message": "Test case 4236: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4236, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:10:38Z", "level": "info", "message": "Test case 4237: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4237, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:10:39Z", "level": "info", "message": "Test case 4238: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4238, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:10:40Z", "level": "info", "message": "Test case 4239: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4239, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:10:41Z", "level": "info", "message": "Test case 4240: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4240, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:10:42Z", "level": "info", "message": "Test case 4241: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4241, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:10:43Z", "level": "info", "message": "Test case 4242: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4242, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:10:44Z", "level": "info", "message": "Test case 4243: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4243, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:10:45Z", "level": "info", "message": "Test case 4244: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4244, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:10:46Z", "level": "info", "message": "Test case 4245: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4245, "data": "wIA="} +{"timestamp": "2024-01-01T01:10:47Z", "level": "info", "message": "Test case 4246: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4246, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:10:48Z", "level": "info", "message": "Test case 4247: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4247, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:10:49Z", "level": "info", "message": "Test case 4248: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4248, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:10:50Z", "level": "info", "message": "Test case 4249: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4249, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:10:51Z", "level": "info", "message": "Test case 4250: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4250, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:10:52Z", "level": "info", "message": "Test case 4251: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4251, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:10:53Z", "level": "info", "message": "Test case 4252: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4252, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:10:54Z", "level": "info", "message": "Test case 4253: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4253, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:10:55Z", "level": "info", "message": "Test case 4254: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4254, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:10:56Z", "level": "info", "message": "Test case 4255: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4255, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:10:57Z", "level": "info", "message": "Test case 4256: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4256, "data": "4ICA"} +{"timestamp": "2024-01-01T01:10:58Z", "level": "info", "message": "Test case 4257: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4257, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:10:59Z", "level": "info", "message": "Test case 4258: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4258, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:11:00Z", "level": "info", "message": "Test case 4259: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4259, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:11:01Z", "level": "info", "message": "Test case 4260: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4260, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:11:02Z", "level": "info", "message": "Test case 4261: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4261, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:11:03Z", "level": "info", "message": "Test case 4262: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4262, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:11:04Z", "level": "info", "message": "Test case 4263: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4263, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:11:05Z", "level": "info", "message": "Test case 4264: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4264, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:11:06Z", "level": "info", "message": "Test case 4265: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4265, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:11:07Z", "level": "info", "message": "Test case 4266: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4266, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:11:08Z", "level": "info", "message": "Test case 4267: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4267, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:11:09Z", "level": "info", "message": "Test case 4268: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4268, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:11:10Z", "level": "info", "message": "Test case 4269: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4269, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:11:11Z", "level": "info", "message": "Test case 4270: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4270, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:11:12Z", "level": "info", "message": "Test case 4271: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4271, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:11:13Z", "level": "info", "message": "Test case 4272: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4272, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:11:14Z", "level": "info", "message": "Test case 4273: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4273, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:11:15Z", "level": "info", "message": "Test case 4274: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4274, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:11:16Z", "level": "info", "message": "Test case 4275: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4275, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:11:17Z", "level": "info", "message": "Test case 4276: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4276, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:11:18Z", "level": "info", "message": "Test case 4277: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4277, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:11:19Z", "level": "info", "message": "Test case 4278: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4278, "data": "4iih"} +{"timestamp": "2024-01-01T01:11:20Z", "level": "info", "message": "Test case 4279: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4279, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:11:21Z", "level": "info", "message": "Test case 4280: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4280, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:11:22Z", "level": "info", "message": "Test case 4281: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4281, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:11:23Z", "level": "info", "message": "Test case 4282: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4282, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:11:24Z", "level": "info", "message": "Test case 4283: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4283, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:11:25Z", "level": "info", "message": "Test case 4284: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4284, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:11:26Z", "level": "info", "message": "Test case 4285: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4285, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:11:27Z", "level": "info", "message": "Test case 4286: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4286, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:11:28Z", "level": "info", "message": "Test case 4287: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4287, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:11:29Z", "level": "info", "message": "Test case 4288: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4288, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:11:30Z", "level": "info", "message": "Test case 4289: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4289, "data": "wg=="} +{"timestamp": "2024-01-01T01:11:31Z", "level": "info", "message": "Test case 4290: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4290, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:11:32Z", "level": "info", "message": "Test case 4291: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4291, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:11:33Z", "level": "info", "message": "Test case 4292: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4292, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:11:34Z", "level": "info", "message": "Test case 4293: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4293, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:11:35Z", "level": "info", "message": "Test case 4294: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4294, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:11:36Z", "level": "info", "message": "Test case 4295: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4295, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:11:37Z", "level": "info", "message": "Test case 4296: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4296, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:11:38Z", "level": "info", "message": "Test case 4297: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4297, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:11:39Z", "level": "info", "message": "Test case 4298: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4298, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:11:40Z", "level": "info", "message": "Test case 4299: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4299, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:11:41Z", "level": "info", "message": "Test case 4300: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4300, "data": "wIA="} +{"timestamp": "2024-01-01T01:11:42Z", "level": "info", "message": "Test case 4301: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4301, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:11:43Z", "level": "info", "message": "Test case 4302: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4302, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:11:44Z", "level": "info", "message": "Test case 4303: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4303, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:11:45Z", "level": "info", "message": "Test case 4304: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4304, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:11:46Z", "level": "info", "message": "Test case 4305: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4305, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:11:47Z", "level": "info", "message": "Test case 4306: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4306, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:11:48Z", "level": "info", "message": "Test case 4307: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4307, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:11:49Z", "level": "info", "message": "Test case 4308: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4308, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:11:50Z", "level": "info", "message": "Test case 4309: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4309, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:11:51Z", "level": "info", "message": "Test case 4310: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4310, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:11:52Z", "level": "info", "message": "Test case 4311: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4311, "data": "4ICA"} +{"timestamp": "2024-01-01T01:11:53Z", "level": "info", "message": "Test case 4312: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4312, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:11:54Z", "level": "info", "message": "Test case 4313: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4313, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:11:55Z", "level": "info", "message": "Test case 4314: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4314, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:11:56Z", "level": "info", "message": "Test case 4315: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4315, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:11:57Z", "level": "info", "message": "Test case 4316: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4316, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:11:58Z", "level": "info", "message": "Test case 4317: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4317, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:11:59Z", "level": "info", "message": "Test case 4318: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4318, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:12:00Z", "level": "info", "message": "Test case 4319: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4319, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:12:01Z", "level": "info", "message": "Test case 4320: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4320, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:12:02Z", "level": "info", "message": "Test case 4321: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4321, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:12:03Z", "level": "info", "message": "Test case 4322: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4322, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:12:04Z", "level": "info", "message": "Test case 4323: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4323, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:12:05Z", "level": "info", "message": "Test case 4324: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4324, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:12:06Z", "level": "info", "message": "Test case 4325: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4325, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:12:07Z", "level": "info", "message": "Test case 4326: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4326, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:12:08Z", "level": "info", "message": "Test case 4327: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4327, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:12:09Z", "level": "info", "message": "Test case 4328: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4328, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:12:10Z", "level": "info", "message": "Test case 4329: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4329, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:12:11Z", "level": "info", "message": "Test case 4330: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4330, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:12:12Z", "level": "info", "message": "Test case 4331: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4331, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:12:13Z", "level": "info", "message": "Test case 4332: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4332, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:12:14Z", "level": "info", "message": "Test case 4333: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4333, "data": "4iih"} +{"timestamp": "2024-01-01T01:12:15Z", "level": "info", "message": "Test case 4334: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4334, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:12:16Z", "level": "info", "message": "Test case 4335: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4335, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:12:17Z", "level": "info", "message": "Test case 4336: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4336, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:12:18Z", "level": "info", "message": "Test case 4337: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4337, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:12:19Z", "level": "info", "message": "Test case 4338: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4338, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:12:20Z", "level": "info", "message": "Test case 4339: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4339, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:12:21Z", "level": "info", "message": "Test case 4340: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4340, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:12:22Z", "level": "info", "message": "Test case 4341: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4341, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:12:23Z", "level": "info", "message": "Test case 4342: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4342, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:12:24Z", "level": "info", "message": "Test case 4343: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4343, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:12:25Z", "level": "info", "message": "Test case 4344: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4344, "data": "wg=="} +{"timestamp": "2024-01-01T01:12:26Z", "level": "info", "message": "Test case 4345: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4345, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:12:27Z", "level": "info", "message": "Test case 4346: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4346, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:12:28Z", "level": "info", "message": "Test case 4347: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4347, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:12:29Z", "level": "info", "message": "Test case 4348: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4348, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:12:30Z", "level": "info", "message": "Test case 4349: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4349, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:12:31Z", "level": "info", "message": "Test case 4350: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4350, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:12:32Z", "level": "info", "message": "Test case 4351: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4351, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:12:33Z", "level": "info", "message": "Test case 4352: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4352, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:12:34Z", "level": "info", "message": "Test case 4353: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4353, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:12:35Z", "level": "info", "message": "Test case 4354: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4354, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:12:36Z", "level": "info", "message": "Test case 4355: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4355, "data": "wIA="} +{"timestamp": "2024-01-01T01:12:37Z", "level": "info", "message": "Test case 4356: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4356, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:12:38Z", "level": "info", "message": "Test case 4357: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4357, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:12:39Z", "level": "info", "message": "Test case 4358: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4358, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:12:40Z", "level": "info", "message": "Test case 4359: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4359, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:12:41Z", "level": "info", "message": "Test case 4360: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4360, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:12:42Z", "level": "info", "message": "Test case 4361: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4361, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:12:43Z", "level": "info", "message": "Test case 4362: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4362, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:12:44Z", "level": "info", "message": "Test case 4363: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4363, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:12:45Z", "level": "info", "message": "Test case 4364: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4364, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:12:46Z", "level": "info", "message": "Test case 4365: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4365, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:12:47Z", "level": "info", "message": "Test case 4366: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4366, "data": "4ICA"} +{"timestamp": "2024-01-01T01:12:48Z", "level": "info", "message": "Test case 4367: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4367, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:12:49Z", "level": "info", "message": "Test case 4368: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4368, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:12:50Z", "level": "info", "message": "Test case 4369: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4369, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:12:51Z", "level": "info", "message": "Test case 4370: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4370, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:12:52Z", "level": "info", "message": "Test case 4371: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4371, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:12:53Z", "level": "info", "message": "Test case 4372: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4372, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:12:54Z", "level": "info", "message": "Test case 4373: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4373, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:12:55Z", "level": "info", "message": "Test case 4374: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4374, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:12:56Z", "level": "info", "message": "Test case 4375: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4375, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:12:57Z", "level": "info", "message": "Test case 4376: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4376, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:12:58Z", "level": "info", "message": "Test case 4377: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4377, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:12:59Z", "level": "info", "message": "Test case 4378: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4378, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:13:00Z", "level": "info", "message": "Test case 4379: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4379, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:13:01Z", "level": "info", "message": "Test case 4380: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4380, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:13:02Z", "level": "info", "message": "Test case 4381: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4381, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:13:03Z", "level": "info", "message": "Test case 4382: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4382, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:13:04Z", "level": "info", "message": "Test case 4383: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4383, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:13:05Z", "level": "info", "message": "Test case 4384: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4384, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:13:06Z", "level": "info", "message": "Test case 4385: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4385, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:13:07Z", "level": "info", "message": "Test case 4386: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4386, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:13:08Z", "level": "info", "message": "Test case 4387: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4387, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:13:09Z", "level": "info", "message": "Test case 4388: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4388, "data": "4iih"} +{"timestamp": "2024-01-01T01:13:10Z", "level": "info", "message": "Test case 4389: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4389, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:13:11Z", "level": "info", "message": "Test case 4390: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4390, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:13:12Z", "level": "info", "message": "Test case 4391: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4391, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:13:13Z", "level": "info", "message": "Test case 4392: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4392, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:13:14Z", "level": "info", "message": "Test case 4393: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4393, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:13:15Z", "level": "info", "message": "Test case 4394: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4394, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:13:16Z", "level": "info", "message": "Test case 4395: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4395, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:13:17Z", "level": "info", "message": "Test case 4396: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4396, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:13:18Z", "level": "info", "message": "Test case 4397: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4397, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:13:19Z", "level": "info", "message": "Test case 4398: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4398, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:13:20Z", "level": "info", "message": "Test case 4399: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4399, "data": "wg=="} +{"timestamp": "2024-01-01T01:13:21Z", "level": "info", "message": "Test case 4400: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4400, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:13:22Z", "level": "info", "message": "Test case 4401: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4401, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:13:23Z", "level": "info", "message": "Test case 4402: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4402, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:13:24Z", "level": "info", "message": "Test case 4403: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4403, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:13:25Z", "level": "info", "message": "Test case 4404: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4404, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:13:26Z", "level": "info", "message": "Test case 4405: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4405, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:13:27Z", "level": "info", "message": "Test case 4406: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4406, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:13:28Z", "level": "info", "message": "Test case 4407: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4407, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:13:29Z", "level": "info", "message": "Test case 4408: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4408, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:13:30Z", "level": "info", "message": "Test case 4409: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4409, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:13:31Z", "level": "info", "message": "Test case 4410: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4410, "data": "wIA="} +{"timestamp": "2024-01-01T01:13:32Z", "level": "info", "message": "Test case 4411: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4411, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:13:33Z", "level": "info", "message": "Test case 4412: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4412, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:13:34Z", "level": "info", "message": "Test case 4413: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4413, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:13:35Z", "level": "info", "message": "Test case 4414: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4414, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:13:36Z", "level": "info", "message": "Test case 4415: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4415, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:13:37Z", "level": "info", "message": "Test case 4416: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4416, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:13:38Z", "level": "info", "message": "Test case 4417: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4417, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:13:39Z", "level": "info", "message": "Test case 4418: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4418, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:13:40Z", "level": "info", "message": "Test case 4419: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4419, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:13:41Z", "level": "info", "message": "Test case 4420: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4420, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:13:42Z", "level": "info", "message": "Test case 4421: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4421, "data": "4ICA"} +{"timestamp": "2024-01-01T01:13:43Z", "level": "info", "message": "Test case 4422: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4422, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:13:44Z", "level": "info", "message": "Test case 4423: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4423, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:13:45Z", "level": "info", "message": "Test case 4424: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4424, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:13:46Z", "level": "info", "message": "Test case 4425: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4425, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:13:47Z", "level": "info", "message": "Test case 4426: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4426, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:13:48Z", "level": "info", "message": "Test case 4427: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4427, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:13:49Z", "level": "info", "message": "Test case 4428: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4428, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:13:50Z", "level": "info", "message": "Test case 4429: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4429, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:13:51Z", "level": "info", "message": "Test case 4430: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4430, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:13:52Z", "level": "info", "message": "Test case 4431: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4431, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:13:53Z", "level": "info", "message": "Test case 4432: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4432, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:13:54Z", "level": "info", "message": "Test case 4433: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4433, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:13:55Z", "level": "info", "message": "Test case 4434: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4434, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:13:56Z", "level": "info", "message": "Test case 4435: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4435, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:13:57Z", "level": "info", "message": "Test case 4436: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4436, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:13:58Z", "level": "info", "message": "Test case 4437: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4437, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:13:59Z", "level": "info", "message": "Test case 4438: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4438, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:14:00Z", "level": "info", "message": "Test case 4439: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4439, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:14:01Z", "level": "info", "message": "Test case 4440: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4440, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:14:02Z", "level": "info", "message": "Test case 4441: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4441, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:14:03Z", "level": "info", "message": "Test case 4442: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4442, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:14:04Z", "level": "info", "message": "Test case 4443: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4443, "data": "4iih"} +{"timestamp": "2024-01-01T01:14:05Z", "level": "info", "message": "Test case 4444: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4444, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:14:06Z", "level": "info", "message": "Test case 4445: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4445, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:14:07Z", "level": "info", "message": "Test case 4446: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4446, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:14:08Z", "level": "info", "message": "Test case 4447: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4447, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:14:09Z", "level": "info", "message": "Test case 4448: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4448, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:14:10Z", "level": "info", "message": "Test case 4449: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4449, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:14:11Z", "level": "info", "message": "Test case 4450: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4450, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:14:12Z", "level": "info", "message": "Test case 4451: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4451, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:14:13Z", "level": "info", "message": "Test case 4452: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4452, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:14:14Z", "level": "info", "message": "Test case 4453: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4453, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:14:15Z", "level": "info", "message": "Test case 4454: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4454, "data": "wg=="} +{"timestamp": "2024-01-01T01:14:16Z", "level": "info", "message": "Test case 4455: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4455, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:14:17Z", "level": "info", "message": "Test case 4456: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4456, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:14:18Z", "level": "info", "message": "Test case 4457: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4457, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:14:19Z", "level": "info", "message": "Test case 4458: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4458, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:14:20Z", "level": "info", "message": "Test case 4459: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4459, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:14:21Z", "level": "info", "message": "Test case 4460: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4460, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:14:22Z", "level": "info", "message": "Test case 4461: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4461, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:14:23Z", "level": "info", "message": "Test case 4462: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4462, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:14:24Z", "level": "info", "message": "Test case 4463: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4463, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:14:25Z", "level": "info", "message": "Test case 4464: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4464, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:14:26Z", "level": "info", "message": "Test case 4465: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4465, "data": "wIA="} +{"timestamp": "2024-01-01T01:14:27Z", "level": "info", "message": "Test case 4466: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4466, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:14:28Z", "level": "info", "message": "Test case 4467: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4467, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:14:29Z", "level": "info", "message": "Test case 4468: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4468, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:14:30Z", "level": "info", "message": "Test case 4469: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4469, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:14:31Z", "level": "info", "message": "Test case 4470: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4470, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:14:32Z", "level": "info", "message": "Test case 4471: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4471, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:14:33Z", "level": "info", "message": "Test case 4472: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4472, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:14:34Z", "level": "info", "message": "Test case 4473: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4473, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:14:35Z", "level": "info", "message": "Test case 4474: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4474, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:14:36Z", "level": "info", "message": "Test case 4475: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4475, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:14:37Z", "level": "info", "message": "Test case 4476: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4476, "data": "4ICA"} +{"timestamp": "2024-01-01T01:14:38Z", "level": "info", "message": "Test case 4477: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4477, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:14:39Z", "level": "info", "message": "Test case 4478: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4478, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:14:40Z", "level": "info", "message": "Test case 4479: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4479, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:14:41Z", "level": "info", "message": "Test case 4480: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4480, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:14:42Z", "level": "info", "message": "Test case 4481: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4481, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:14:43Z", "level": "info", "message": "Test case 4482: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4482, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:14:44Z", "level": "info", "message": "Test case 4483: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4483, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:14:45Z", "level": "info", "message": "Test case 4484: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4484, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:14:46Z", "level": "info", "message": "Test case 4485: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4485, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:14:47Z", "level": "info", "message": "Test case 4486: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4486, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:14:48Z", "level": "info", "message": "Test case 4487: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4487, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:14:49Z", "level": "info", "message": "Test case 4488: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4488, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:14:50Z", "level": "info", "message": "Test case 4489: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4489, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:14:51Z", "level": "info", "message": "Test case 4490: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4490, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:14:52Z", "level": "info", "message": "Test case 4491: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4491, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:14:53Z", "level": "info", "message": "Test case 4492: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4492, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:14:54Z", "level": "info", "message": "Test case 4493: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4493, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:14:55Z", "level": "info", "message": "Test case 4494: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4494, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:14:56Z", "level": "info", "message": "Test case 4495: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4495, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:14:57Z", "level": "info", "message": "Test case 4496: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4496, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:14:58Z", "level": "info", "message": "Test case 4497: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4497, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:14:59Z", "level": "info", "message": "Test case 4498: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4498, "data": "4iih"} +{"timestamp": "2024-01-01T01:15:00Z", "level": "info", "message": "Test case 4499: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4499, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:15:01Z", "level": "info", "message": "Test case 4500: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4500, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:15:02Z", "level": "info", "message": "Test case 4501: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4501, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:15:03Z", "level": "info", "message": "Test case 4502: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4502, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:15:04Z", "level": "info", "message": "Test case 4503: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4503, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:15:05Z", "level": "info", "message": "Test case 4504: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4504, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:15:06Z", "level": "info", "message": "Test case 4505: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4505, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:15:07Z", "level": "info", "message": "Test case 4506: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4506, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:15:08Z", "level": "info", "message": "Test case 4507: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4507, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:15:09Z", "level": "info", "message": "Test case 4508: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4508, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:15:10Z", "level": "info", "message": "Test case 4509: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4509, "data": "wg=="} +{"timestamp": "2024-01-01T01:15:11Z", "level": "info", "message": "Test case 4510: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4510, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:15:12Z", "level": "info", "message": "Test case 4511: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4511, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:15:13Z", "level": "info", "message": "Test case 4512: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4512, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:15:14Z", "level": "info", "message": "Test case 4513: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4513, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:15:15Z", "level": "info", "message": "Test case 4514: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4514, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:15:16Z", "level": "info", "message": "Test case 4515: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4515, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:15:17Z", "level": "info", "message": "Test case 4516: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4516, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:15:18Z", "level": "info", "message": "Test case 4517: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4517, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:15:19Z", "level": "info", "message": "Test case 4518: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4518, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:15:20Z", "level": "info", "message": "Test case 4519: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4519, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:15:21Z", "level": "info", "message": "Test case 4520: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4520, "data": "wIA="} +{"timestamp": "2024-01-01T01:15:22Z", "level": "info", "message": "Test case 4521: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4521, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:15:23Z", "level": "info", "message": "Test case 4522: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4522, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:15:24Z", "level": "info", "message": "Test case 4523: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4523, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:15:25Z", "level": "info", "message": "Test case 4524: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4524, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:15:26Z", "level": "info", "message": "Test case 4525: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4525, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:15:27Z", "level": "info", "message": "Test case 4526: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4526, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:15:28Z", "level": "info", "message": "Test case 4527: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4527, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:15:29Z", "level": "info", "message": "Test case 4528: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4528, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:15:30Z", "level": "info", "message": "Test case 4529: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4529, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:15:31Z", "level": "info", "message": "Test case 4530: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4530, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:15:32Z", "level": "info", "message": "Test case 4531: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4531, "data": "4ICA"} +{"timestamp": "2024-01-01T01:15:33Z", "level": "info", "message": "Test case 4532: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4532, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:15:34Z", "level": "info", "message": "Test case 4533: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4533, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:15:35Z", "level": "info", "message": "Test case 4534: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4534, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:15:36Z", "level": "info", "message": "Test case 4535: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4535, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:15:37Z", "level": "info", "message": "Test case 4536: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4536, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:15:38Z", "level": "info", "message": "Test case 4537: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4537, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:15:39Z", "level": "info", "message": "Test case 4538: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4538, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:15:40Z", "level": "info", "message": "Test case 4539: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4539, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:15:41Z", "level": "info", "message": "Test case 4540: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4540, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:15:42Z", "level": "info", "message": "Test case 4541: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4541, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:15:43Z", "level": "info", "message": "Test case 4542: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4542, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:15:44Z", "level": "info", "message": "Test case 4543: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4543, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:15:45Z", "level": "info", "message": "Test case 4544: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4544, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:15:46Z", "level": "info", "message": "Test case 4545: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4545, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:15:47Z", "level": "info", "message": "Test case 4546: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4546, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:15:48Z", "level": "info", "message": "Test case 4547: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4547, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:15:49Z", "level": "info", "message": "Test case 4548: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4548, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:15:50Z", "level": "info", "message": "Test case 4549: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4549, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:15:51Z", "level": "info", "message": "Test case 4550: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4550, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:15:52Z", "level": "info", "message": "Test case 4551: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4551, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:15:53Z", "level": "info", "message": "Test case 4552: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4552, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:15:54Z", "level": "info", "message": "Test case 4553: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4553, "data": "4iih"} +{"timestamp": "2024-01-01T01:15:55Z", "level": "info", "message": "Test case 4554: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4554, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:15:56Z", "level": "info", "message": "Test case 4555: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4555, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:15:57Z", "level": "info", "message": "Test case 4556: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4556, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:15:58Z", "level": "info", "message": "Test case 4557: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4557, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:15:59Z", "level": "info", "message": "Test case 4558: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4558, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:16:00Z", "level": "info", "message": "Test case 4559: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4559, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:16:01Z", "level": "info", "message": "Test case 4560: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4560, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:16:02Z", "level": "info", "message": "Test case 4561: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4561, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:16:03Z", "level": "info", "message": "Test case 4562: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4562, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:16:04Z", "level": "info", "message": "Test case 4563: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4563, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:16:05Z", "level": "info", "message": "Test case 4564: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4564, "data": "wg=="} +{"timestamp": "2024-01-01T01:16:06Z", "level": "info", "message": "Test case 4565: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4565, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:16:07Z", "level": "info", "message": "Test case 4566: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4566, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:16:08Z", "level": "info", "message": "Test case 4567: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4567, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:16:09Z", "level": "info", "message": "Test case 4568: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4568, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:16:10Z", "level": "info", "message": "Test case 4569: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4569, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:16:11Z", "level": "info", "message": "Test case 4570: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4570, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:16:12Z", "level": "info", "message": "Test case 4571: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4571, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:16:13Z", "level": "info", "message": "Test case 4572: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4572, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:16:14Z", "level": "info", "message": "Test case 4573: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4573, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:16:15Z", "level": "info", "message": "Test case 4574: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4574, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:16:16Z", "level": "info", "message": "Test case 4575: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4575, "data": "wIA="} +{"timestamp": "2024-01-01T01:16:17Z", "level": "info", "message": "Test case 4576: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4576, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:16:18Z", "level": "info", "message": "Test case 4577: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4577, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:16:19Z", "level": "info", "message": "Test case 4578: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4578, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:16:20Z", "level": "info", "message": "Test case 4579: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4579, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:16:21Z", "level": "info", "message": "Test case 4580: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4580, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:16:22Z", "level": "info", "message": "Test case 4581: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4581, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:16:23Z", "level": "info", "message": "Test case 4582: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4582, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:16:24Z", "level": "info", "message": "Test case 4583: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4583, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:16:25Z", "level": "info", "message": "Test case 4584: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4584, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:16:26Z", "level": "info", "message": "Test case 4585: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4585, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:16:27Z", "level": "info", "message": "Test case 4586: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4586, "data": "4ICA"} +{"timestamp": "2024-01-01T01:16:28Z", "level": "info", "message": "Test case 4587: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4587, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:16:29Z", "level": "info", "message": "Test case 4588: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4588, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:16:30Z", "level": "info", "message": "Test case 4589: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4589, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:16:31Z", "level": "info", "message": "Test case 4590: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4590, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:16:32Z", "level": "info", "message": "Test case 4591: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4591, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:16:33Z", "level": "info", "message": "Test case 4592: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4592, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:16:34Z", "level": "info", "message": "Test case 4593: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4593, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:16:35Z", "level": "info", "message": "Test case 4594: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4594, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:16:36Z", "level": "info", "message": "Test case 4595: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4595, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:16:37Z", "level": "info", "message": "Test case 4596: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4596, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:16:38Z", "level": "info", "message": "Test case 4597: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4597, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:16:39Z", "level": "info", "message": "Test case 4598: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4598, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:16:40Z", "level": "info", "message": "Test case 4599: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4599, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:16:41Z", "level": "info", "message": "Test case 4600: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4600, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:16:42Z", "level": "info", "message": "Test case 4601: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4601, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:16:43Z", "level": "info", "message": "Test case 4602: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4602, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:16:44Z", "level": "info", "message": "Test case 4603: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4603, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:16:45Z", "level": "info", "message": "Test case 4604: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4604, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:16:46Z", "level": "info", "message": "Test case 4605: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4605, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:16:47Z", "level": "info", "message": "Test case 4606: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4606, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:16:48Z", "level": "info", "message": "Test case 4607: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4607, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:16:49Z", "level": "info", "message": "Test case 4608: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4608, "data": "4iih"} +{"timestamp": "2024-01-01T01:16:50Z", "level": "info", "message": "Test case 4609: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4609, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:16:51Z", "level": "info", "message": "Test case 4610: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4610, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:16:52Z", "level": "info", "message": "Test case 4611: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4611, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:16:53Z", "level": "info", "message": "Test case 4612: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4612, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:16:54Z", "level": "info", "message": "Test case 4613: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4613, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:16:55Z", "level": "info", "message": "Test case 4614: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4614, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:16:56Z", "level": "info", "message": "Test case 4615: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4615, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:16:57Z", "level": "info", "message": "Test case 4616: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4616, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:16:58Z", "level": "info", "message": "Test case 4617: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4617, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:16:59Z", "level": "info", "message": "Test case 4618: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4618, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:17:00Z", "level": "info", "message": "Test case 4619: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4619, "data": "wg=="} +{"timestamp": "2024-01-01T01:17:01Z", "level": "info", "message": "Test case 4620: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4620, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:17:02Z", "level": "info", "message": "Test case 4621: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4621, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:17:03Z", "level": "info", "message": "Test case 4622: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4622, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:17:04Z", "level": "info", "message": "Test case 4623: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4623, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:17:05Z", "level": "info", "message": "Test case 4624: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4624, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:17:06Z", "level": "info", "message": "Test case 4625: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4625, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:17:07Z", "level": "info", "message": "Test case 4626: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4626, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:17:08Z", "level": "info", "message": "Test case 4627: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4627, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:17:09Z", "level": "info", "message": "Test case 4628: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4628, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:17:10Z", "level": "info", "message": "Test case 4629: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4629, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:17:11Z", "level": "info", "message": "Test case 4630: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4630, "data": "wIA="} +{"timestamp": "2024-01-01T01:17:12Z", "level": "info", "message": "Test case 4631: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4631, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:17:13Z", "level": "info", "message": "Test case 4632: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4632, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:17:14Z", "level": "info", "message": "Test case 4633: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4633, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:17:15Z", "level": "info", "message": "Test case 4634: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4634, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:17:16Z", "level": "info", "message": "Test case 4635: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4635, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:17:17Z", "level": "info", "message": "Test case 4636: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4636, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:17:18Z", "level": "info", "message": "Test case 4637: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4637, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:17:19Z", "level": "info", "message": "Test case 4638: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4638, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:17:20Z", "level": "info", "message": "Test case 4639: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4639, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:17:21Z", "level": "info", "message": "Test case 4640: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4640, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:17:22Z", "level": "info", "message": "Test case 4641: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4641, "data": "4ICA"} +{"timestamp": "2024-01-01T01:17:23Z", "level": "info", "message": "Test case 4642: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4642, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:17:24Z", "level": "info", "message": "Test case 4643: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4643, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:17:25Z", "level": "info", "message": "Test case 4644: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4644, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:17:26Z", "level": "info", "message": "Test case 4645: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4645, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:17:27Z", "level": "info", "message": "Test case 4646: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4646, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:17:28Z", "level": "info", "message": "Test case 4647: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4647, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:17:29Z", "level": "info", "message": "Test case 4648: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4648, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:17:30Z", "level": "info", "message": "Test case 4649: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4649, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:17:31Z", "level": "info", "message": "Test case 4650: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4650, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:17:32Z", "level": "info", "message": "Test case 4651: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4651, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:17:33Z", "level": "info", "message": "Test case 4652: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4652, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:17:34Z", "level": "info", "message": "Test case 4653: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4653, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:17:35Z", "level": "info", "message": "Test case 4654: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4654, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:17:36Z", "level": "info", "message": "Test case 4655: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4655, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:17:37Z", "level": "info", "message": "Test case 4656: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4656, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:17:38Z", "level": "info", "message": "Test case 4657: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4657, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:17:39Z", "level": "info", "message": "Test case 4658: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4658, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:17:40Z", "level": "info", "message": "Test case 4659: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4659, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:17:41Z", "level": "info", "message": "Test case 4660: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4660, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:17:42Z", "level": "info", "message": "Test case 4661: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4661, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:17:43Z", "level": "info", "message": "Test case 4662: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4662, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:17:44Z", "level": "info", "message": "Test case 4663: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4663, "data": "4iih"} +{"timestamp": "2024-01-01T01:17:45Z", "level": "info", "message": "Test case 4664: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4664, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:17:46Z", "level": "info", "message": "Test case 4665: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4665, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:17:47Z", "level": "info", "message": "Test case 4666: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4666, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:17:48Z", "level": "info", "message": "Test case 4667: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4667, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:17:49Z", "level": "info", "message": "Test case 4668: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4668, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:17:50Z", "level": "info", "message": "Test case 4669: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4669, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:17:51Z", "level": "info", "message": "Test case 4670: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4670, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:17:52Z", "level": "info", "message": "Test case 4671: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4671, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:17:53Z", "level": "info", "message": "Test case 4672: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4672, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:17:54Z", "level": "info", "message": "Test case 4673: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4673, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:17:55Z", "level": "info", "message": "Test case 4674: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4674, "data": "wg=="} +{"timestamp": "2024-01-01T01:17:56Z", "level": "info", "message": "Test case 4675: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4675, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:17:57Z", "level": "info", "message": "Test case 4676: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4676, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:17:58Z", "level": "info", "message": "Test case 4677: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4677, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:17:59Z", "level": "info", "message": "Test case 4678: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4678, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:18:00Z", "level": "info", "message": "Test case 4679: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4679, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:18:01Z", "level": "info", "message": "Test case 4680: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4680, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:18:02Z", "level": "info", "message": "Test case 4681: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4681, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:18:03Z", "level": "info", "message": "Test case 4682: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4682, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:18:04Z", "level": "info", "message": "Test case 4683: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4683, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:18:05Z", "level": "info", "message": "Test case 4684: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4684, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:18:06Z", "level": "info", "message": "Test case 4685: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4685, "data": "wIA="} +{"timestamp": "2024-01-01T01:18:07Z", "level": "info", "message": "Test case 4686: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4686, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:18:08Z", "level": "info", "message": "Test case 4687: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4687, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:18:09Z", "level": "info", "message": "Test case 4688: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4688, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:18:10Z", "level": "info", "message": "Test case 4689: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4689, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:18:11Z", "level": "info", "message": "Test case 4690: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4690, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:18:12Z", "level": "info", "message": "Test case 4691: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4691, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:18:13Z", "level": "info", "message": "Test case 4692: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4692, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:18:14Z", "level": "info", "message": "Test case 4693: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4693, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:18:15Z", "level": "info", "message": "Test case 4694: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4694, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:18:16Z", "level": "info", "message": "Test case 4695: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4695, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:18:17Z", "level": "info", "message": "Test case 4696: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4696, "data": "4ICA"} +{"timestamp": "2024-01-01T01:18:18Z", "level": "info", "message": "Test case 4697: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4697, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:18:19Z", "level": "info", "message": "Test case 4698: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4698, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:18:20Z", "level": "info", "message": "Test case 4699: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4699, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:18:21Z", "level": "info", "message": "Test case 4700: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4700, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:18:22Z", "level": "info", "message": "Test case 4701: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4701, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:18:23Z", "level": "info", "message": "Test case 4702: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4702, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:18:24Z", "level": "info", "message": "Test case 4703: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4703, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:18:25Z", "level": "info", "message": "Test case 4704: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4704, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:18:26Z", "level": "info", "message": "Test case 4705: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4705, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:18:27Z", "level": "info", "message": "Test case 4706: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4706, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:18:28Z", "level": "info", "message": "Test case 4707: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4707, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:18:29Z", "level": "info", "message": "Test case 4708: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4708, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:18:30Z", "level": "info", "message": "Test case 4709: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4709, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:18:31Z", "level": "info", "message": "Test case 4710: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4710, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:18:32Z", "level": "info", "message": "Test case 4711: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4711, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:18:33Z", "level": "info", "message": "Test case 4712: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4712, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:18:34Z", "level": "info", "message": "Test case 4713: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4713, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:18:35Z", "level": "info", "message": "Test case 4714: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4714, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:18:36Z", "level": "info", "message": "Test case 4715: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4715, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:18:37Z", "level": "info", "message": "Test case 4716: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4716, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:18:38Z", "level": "info", "message": "Test case 4717: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4717, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:18:39Z", "level": "info", "message": "Test case 4718: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4718, "data": "4iih"} +{"timestamp": "2024-01-01T01:18:40Z", "level": "info", "message": "Test case 4719: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4719, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:18:41Z", "level": "info", "message": "Test case 4720: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4720, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:18:42Z", "level": "info", "message": "Test case 4721: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4721, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:18:43Z", "level": "info", "message": "Test case 4722: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4722, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:18:44Z", "level": "info", "message": "Test case 4723: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4723, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:18:45Z", "level": "info", "message": "Test case 4724: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4724, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:18:46Z", "level": "info", "message": "Test case 4725: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4725, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:18:47Z", "level": "info", "message": "Test case 4726: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4726, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:18:48Z", "level": "info", "message": "Test case 4727: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4727, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:18:49Z", "level": "info", "message": "Test case 4728: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4728, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:18:50Z", "level": "info", "message": "Test case 4729: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4729, "data": "wg=="} +{"timestamp": "2024-01-01T01:18:51Z", "level": "info", "message": "Test case 4730: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4730, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:18:52Z", "level": "info", "message": "Test case 4731: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4731, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:18:53Z", "level": "info", "message": "Test case 4732: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4732, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:18:54Z", "level": "info", "message": "Test case 4733: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4733, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:18:55Z", "level": "info", "message": "Test case 4734: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4734, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:18:56Z", "level": "info", "message": "Test case 4735: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4735, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:18:57Z", "level": "info", "message": "Test case 4736: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4736, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:18:58Z", "level": "info", "message": "Test case 4737: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4737, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:18:59Z", "level": "info", "message": "Test case 4738: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4738, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:19:00Z", "level": "info", "message": "Test case 4739: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4739, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:19:01Z", "level": "info", "message": "Test case 4740: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4740, "data": "wIA="} +{"timestamp": "2024-01-01T01:19:02Z", "level": "info", "message": "Test case 4741: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4741, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:19:03Z", "level": "info", "message": "Test case 4742: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4742, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:19:04Z", "level": "info", "message": "Test case 4743: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4743, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:19:05Z", "level": "info", "message": "Test case 4744: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4744, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:19:06Z", "level": "info", "message": "Test case 4745: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4745, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:19:07Z", "level": "info", "message": "Test case 4746: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4746, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:19:08Z", "level": "info", "message": "Test case 4747: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4747, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:19:09Z", "level": "info", "message": "Test case 4748: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4748, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:19:10Z", "level": "info", "message": "Test case 4749: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4749, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:19:11Z", "level": "info", "message": "Test case 4750: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4750, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:19:12Z", "level": "info", "message": "Test case 4751: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4751, "data": "4ICA"} +{"timestamp": "2024-01-01T01:19:13Z", "level": "info", "message": "Test case 4752: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4752, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:19:14Z", "level": "info", "message": "Test case 4753: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4753, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:19:15Z", "level": "info", "message": "Test case 4754: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4754, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:19:16Z", "level": "info", "message": "Test case 4755: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4755, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:19:17Z", "level": "info", "message": "Test case 4756: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4756, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:19:18Z", "level": "info", "message": "Test case 4757: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4757, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:19:19Z", "level": "info", "message": "Test case 4758: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4758, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:19:20Z", "level": "info", "message": "Test case 4759: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4759, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:19:21Z", "level": "info", "message": "Test case 4760: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4760, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:19:22Z", "level": "info", "message": "Test case 4761: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4761, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:19:23Z", "level": "info", "message": "Test case 4762: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4762, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:19:24Z", "level": "info", "message": "Test case 4763: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4763, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:19:25Z", "level": "info", "message": "Test case 4764: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4764, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:19:26Z", "level": "info", "message": "Test case 4765: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4765, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:19:27Z", "level": "info", "message": "Test case 4766: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4766, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:19:28Z", "level": "info", "message": "Test case 4767: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4767, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:19:29Z", "level": "info", "message": "Test case 4768: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4768, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:19:30Z", "level": "info", "message": "Test case 4769: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4769, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:19:31Z", "level": "info", "message": "Test case 4770: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4770, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:19:32Z", "level": "info", "message": "Test case 4771: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4771, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:19:33Z", "level": "info", "message": "Test case 4772: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4772, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:19:34Z", "level": "info", "message": "Test case 4773: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4773, "data": "4iih"} +{"timestamp": "2024-01-01T01:19:35Z", "level": "info", "message": "Test case 4774: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4774, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:19:36Z", "level": "info", "message": "Test case 4775: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4775, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:19:37Z", "level": "info", "message": "Test case 4776: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4776, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:19:38Z", "level": "info", "message": "Test case 4777: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4777, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:19:39Z", "level": "info", "message": "Test case 4778: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4778, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:19:40Z", "level": "info", "message": "Test case 4779: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4779, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:19:41Z", "level": "info", "message": "Test case 4780: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4780, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:19:42Z", "level": "info", "message": "Test case 4781: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4781, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:19:43Z", "level": "info", "message": "Test case 4782: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4782, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:19:44Z", "level": "info", "message": "Test case 4783: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4783, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:19:45Z", "level": "info", "message": "Test case 4784: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4784, "data": "wg=="} +{"timestamp": "2024-01-01T01:19:46Z", "level": "info", "message": "Test case 4785: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4785, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:19:47Z", "level": "info", "message": "Test case 4786: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4786, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:19:48Z", "level": "info", "message": "Test case 4787: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4787, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:19:49Z", "level": "info", "message": "Test case 4788: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4788, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:19:50Z", "level": "info", "message": "Test case 4789: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4789, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:19:51Z", "level": "info", "message": "Test case 4790: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4790, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:19:52Z", "level": "info", "message": "Test case 4791: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4791, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:19:53Z", "level": "info", "message": "Test case 4792: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4792, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:19:54Z", "level": "info", "message": "Test case 4793: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4793, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:19:55Z", "level": "info", "message": "Test case 4794: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4794, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:19:56Z", "level": "info", "message": "Test case 4795: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4795, "data": "wIA="} +{"timestamp": "2024-01-01T01:19:57Z", "level": "info", "message": "Test case 4796: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4796, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:19:58Z", "level": "info", "message": "Test case 4797: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4797, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:19:59Z", "level": "info", "message": "Test case 4798: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4798, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:20:00Z", "level": "info", "message": "Test case 4799: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4799, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:20:01Z", "level": "info", "message": "Test case 4800: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4800, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:20:02Z", "level": "info", "message": "Test case 4801: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4801, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:20:03Z", "level": "info", "message": "Test case 4802: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4802, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:20:04Z", "level": "info", "message": "Test case 4803: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4803, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:20:05Z", "level": "info", "message": "Test case 4804: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4804, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:20:06Z", "level": "info", "message": "Test case 4805: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4805, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:20:07Z", "level": "info", "message": "Test case 4806: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4806, "data": "4ICA"} +{"timestamp": "2024-01-01T01:20:08Z", "level": "info", "message": "Test case 4807: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4807, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:20:09Z", "level": "info", "message": "Test case 4808: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4808, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:20:10Z", "level": "info", "message": "Test case 4809: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4809, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:20:11Z", "level": "info", "message": "Test case 4810: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4810, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:20:12Z", "level": "info", "message": "Test case 4811: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4811, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:20:13Z", "level": "info", "message": "Test case 4812: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4812, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:20:14Z", "level": "info", "message": "Test case 4813: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4813, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:20:15Z", "level": "info", "message": "Test case 4814: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4814, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:20:16Z", "level": "info", "message": "Test case 4815: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4815, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:20:17Z", "level": "info", "message": "Test case 4816: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4816, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:20:18Z", "level": "info", "message": "Test case 4817: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4817, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:20:19Z", "level": "info", "message": "Test case 4818: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4818, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:20:20Z", "level": "info", "message": "Test case 4819: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4819, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:20:21Z", "level": "info", "message": "Test case 4820: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4820, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:20:22Z", "level": "info", "message": "Test case 4821: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4821, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:20:23Z", "level": "info", "message": "Test case 4822: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4822, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:20:24Z", "level": "info", "message": "Test case 4823: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4823, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:20:25Z", "level": "info", "message": "Test case 4824: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4824, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:20:26Z", "level": "info", "message": "Test case 4825: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4825, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:20:27Z", "level": "info", "message": "Test case 4826: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4826, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:20:28Z", "level": "info", "message": "Test case 4827: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4827, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:20:29Z", "level": "info", "message": "Test case 4828: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4828, "data": "4iih"} +{"timestamp": "2024-01-01T01:20:30Z", "level": "info", "message": "Test case 4829: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4829, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:20:31Z", "level": "info", "message": "Test case 4830: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4830, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:20:32Z", "level": "info", "message": "Test case 4831: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4831, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:20:33Z", "level": "info", "message": "Test case 4832: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4832, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:20:34Z", "level": "info", "message": "Test case 4833: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4833, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:20:35Z", "level": "info", "message": "Test case 4834: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4834, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:20:36Z", "level": "info", "message": "Test case 4835: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4835, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:20:37Z", "level": "info", "message": "Test case 4836: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4836, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:20:38Z", "level": "info", "message": "Test case 4837: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4837, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:20:39Z", "level": "info", "message": "Test case 4838: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4838, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:20:40Z", "level": "info", "message": "Test case 4839: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4839, "data": "wg=="} +{"timestamp": "2024-01-01T01:20:41Z", "level": "info", "message": "Test case 4840: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4840, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:20:42Z", "level": "info", "message": "Test case 4841: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4841, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:20:43Z", "level": "info", "message": "Test case 4842: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4842, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:20:44Z", "level": "info", "message": "Test case 4843: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4843, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:20:45Z", "level": "info", "message": "Test case 4844: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4844, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:20:46Z", "level": "info", "message": "Test case 4845: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4845, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:20:47Z", "level": "info", "message": "Test case 4846: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4846, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:20:48Z", "level": "info", "message": "Test case 4847: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4847, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:20:49Z", "level": "info", "message": "Test case 4848: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4848, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:20:50Z", "level": "info", "message": "Test case 4849: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4849, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:20:51Z", "level": "info", "message": "Test case 4850: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4850, "data": "wIA="} +{"timestamp": "2024-01-01T01:20:52Z", "level": "info", "message": "Test case 4851: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4851, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:20:53Z", "level": "info", "message": "Test case 4852: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4852, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:20:54Z", "level": "info", "message": "Test case 4853: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4853, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:20:55Z", "level": "info", "message": "Test case 4854: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4854, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:20:56Z", "level": "info", "message": "Test case 4855: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4855, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:20:57Z", "level": "info", "message": "Test case 4856: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4856, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:20:58Z", "level": "info", "message": "Test case 4857: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4857, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:20:59Z", "level": "info", "message": "Test case 4858: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4858, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:21:00Z", "level": "info", "message": "Test case 4859: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4859, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:21:01Z", "level": "info", "message": "Test case 4860: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4860, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:21:02Z", "level": "info", "message": "Test case 4861: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4861, "data": "4ICA"} +{"timestamp": "2024-01-01T01:21:03Z", "level": "info", "message": "Test case 4862: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4862, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:21:04Z", "level": "info", "message": "Test case 4863: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4863, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:21:05Z", "level": "info", "message": "Test case 4864: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4864, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:21:06Z", "level": "info", "message": "Test case 4865: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4865, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:21:07Z", "level": "info", "message": "Test case 4866: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4866, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:21:08Z", "level": "info", "message": "Test case 4867: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4867, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:21:09Z", "level": "info", "message": "Test case 4868: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4868, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:21:10Z", "level": "info", "message": "Test case 4869: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4869, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:21:11Z", "level": "info", "message": "Test case 4870: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4870, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:21:12Z", "level": "info", "message": "Test case 4871: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4871, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:21:13Z", "level": "info", "message": "Test case 4872: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4872, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:21:14Z", "level": "info", "message": "Test case 4873: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4873, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:21:15Z", "level": "info", "message": "Test case 4874: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4874, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:21:16Z", "level": "info", "message": "Test case 4875: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4875, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:21:17Z", "level": "info", "message": "Test case 4876: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4876, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:21:18Z", "level": "info", "message": "Test case 4877: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4877, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:21:19Z", "level": "info", "message": "Test case 4878: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4878, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:21:20Z", "level": "info", "message": "Test case 4879: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4879, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:21:21Z", "level": "info", "message": "Test case 4880: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4880, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:21:22Z", "level": "info", "message": "Test case 4881: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4881, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:21:23Z", "level": "info", "message": "Test case 4882: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4882, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:21:24Z", "level": "info", "message": "Test case 4883: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4883, "data": "4iih"} +{"timestamp": "2024-01-01T01:21:25Z", "level": "info", "message": "Test case 4884: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4884, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:21:26Z", "level": "info", "message": "Test case 4885: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4885, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:21:27Z", "level": "info", "message": "Test case 4886: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4886, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:21:28Z", "level": "info", "message": "Test case 4887: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4887, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:21:29Z", "level": "info", "message": "Test case 4888: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4888, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:21:30Z", "level": "info", "message": "Test case 4889: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4889, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:21:31Z", "level": "info", "message": "Test case 4890: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4890, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:21:32Z", "level": "info", "message": "Test case 4891: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4891, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:21:33Z", "level": "info", "message": "Test case 4892: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4892, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:21:34Z", "level": "info", "message": "Test case 4893: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4893, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:21:35Z", "level": "info", "message": "Test case 4894: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4894, "data": "wg=="} +{"timestamp": "2024-01-01T01:21:36Z", "level": "info", "message": "Test case 4895: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4895, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:21:37Z", "level": "info", "message": "Test case 4896: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4896, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:21:38Z", "level": "info", "message": "Test case 4897: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4897, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:21:39Z", "level": "info", "message": "Test case 4898: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4898, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:21:40Z", "level": "info", "message": "Test case 4899: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4899, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:21:41Z", "level": "info", "message": "Test case 4900: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4900, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:21:42Z", "level": "info", "message": "Test case 4901: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4901, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:21:43Z", "level": "info", "message": "Test case 4902: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4902, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:21:44Z", "level": "info", "message": "Test case 4903: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4903, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:21:45Z", "level": "info", "message": "Test case 4904: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4904, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:21:46Z", "level": "info", "message": "Test case 4905: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4905, "data": "wIA="} +{"timestamp": "2024-01-01T01:21:47Z", "level": "info", "message": "Test case 4906: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4906, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:21:48Z", "level": "info", "message": "Test case 4907: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4907, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:21:49Z", "level": "info", "message": "Test case 4908: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4908, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:21:50Z", "level": "info", "message": "Test case 4909: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4909, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:21:51Z", "level": "info", "message": "Test case 4910: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4910, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:21:52Z", "level": "info", "message": "Test case 4911: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4911, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:21:53Z", "level": "info", "message": "Test case 4912: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4912, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:21:54Z", "level": "info", "message": "Test case 4913: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4913, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:21:55Z", "level": "info", "message": "Test case 4914: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4914, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:21:56Z", "level": "info", "message": "Test case 4915: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4915, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:21:57Z", "level": "info", "message": "Test case 4916: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4916, "data": "4ICA"} +{"timestamp": "2024-01-01T01:21:58Z", "level": "info", "message": "Test case 4917: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4917, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:21:59Z", "level": "info", "message": "Test case 4918: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4918, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:22:00Z", "level": "info", "message": "Test case 4919: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4919, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:22:01Z", "level": "info", "message": "Test case 4920: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4920, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:22:02Z", "level": "info", "message": "Test case 4921: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4921, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:22:03Z", "level": "info", "message": "Test case 4922: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4922, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:22:04Z", "level": "info", "message": "Test case 4923: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4923, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:22:05Z", "level": "info", "message": "Test case 4924: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4924, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:22:06Z", "level": "info", "message": "Test case 4925: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4925, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:22:07Z", "level": "info", "message": "Test case 4926: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4926, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:22:08Z", "level": "info", "message": "Test case 4927: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4927, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:22:09Z", "level": "info", "message": "Test case 4928: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4928, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:22:10Z", "level": "info", "message": "Test case 4929: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4929, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:22:11Z", "level": "info", "message": "Test case 4930: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4930, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:22:12Z", "level": "info", "message": "Test case 4931: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4931, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:22:13Z", "level": "info", "message": "Test case 4932: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4932, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:22:14Z", "level": "info", "message": "Test case 4933: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4933, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:22:15Z", "level": "info", "message": "Test case 4934: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4934, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:22:16Z", "level": "info", "message": "Test case 4935: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4935, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:22:17Z", "level": "info", "message": "Test case 4936: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4936, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:22:18Z", "level": "info", "message": "Test case 4937: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4937, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:22:19Z", "level": "info", "message": "Test case 4938: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4938, "data": "4iih"} +{"timestamp": "2024-01-01T01:22:20Z", "level": "info", "message": "Test case 4939: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4939, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:22:21Z", "level": "info", "message": "Test case 4940: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4940, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:22:22Z", "level": "info", "message": "Test case 4941: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4941, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:22:23Z", "level": "info", "message": "Test case 4942: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4942, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:22:24Z", "level": "info", "message": "Test case 4943: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4943, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:22:25Z", "level": "info", "message": "Test case 4944: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4944, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:22:26Z", "level": "info", "message": "Test case 4945: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4945, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:22:27Z", "level": "info", "message": "Test case 4946: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4946, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:22:28Z", "level": "info", "message": "Test case 4947: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4947, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:22:29Z", "level": "info", "message": "Test case 4948: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4948, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:22:30Z", "level": "info", "message": "Test case 4949: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4949, "data": "wg=="} +{"timestamp": "2024-01-01T01:22:31Z", "level": "info", "message": "Test case 4950: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4950, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:22:32Z", "level": "info", "message": "Test case 4951: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4951, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:22:33Z", "level": "info", "message": "Test case 4952: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4952, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:22:34Z", "level": "info", "message": "Test case 4953: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4953, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:22:35Z", "level": "info", "message": "Test case 4954: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4954, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:22:36Z", "level": "info", "message": "Test case 4955: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4955, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:22:37Z", "level": "info", "message": "Test case 4956: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4956, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:22:38Z", "level": "info", "message": "Test case 4957: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4957, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:22:39Z", "level": "info", "message": "Test case 4958: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4958, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:22:40Z", "level": "info", "message": "Test case 4959: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4959, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:22:41Z", "level": "info", "message": "Test case 4960: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4960, "data": "wIA="} +{"timestamp": "2024-01-01T01:22:42Z", "level": "info", "message": "Test case 4961: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4961, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:22:43Z", "level": "info", "message": "Test case 4962: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4962, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:22:44Z", "level": "info", "message": "Test case 4963: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4963, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:22:45Z", "level": "info", "message": "Test case 4964: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4964, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:22:46Z", "level": "info", "message": "Test case 4965: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4965, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:22:47Z", "level": "info", "message": "Test case 4966: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4966, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:22:48Z", "level": "info", "message": "Test case 4967: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4967, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:22:49Z", "level": "info", "message": "Test case 4968: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4968, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:22:50Z", "level": "info", "message": "Test case 4969: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4969, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:22:51Z", "level": "info", "message": "Test case 4970: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4970, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:22:52Z", "level": "info", "message": "Test case 4971: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4971, "data": "4ICA"} +{"timestamp": "2024-01-01T01:22:53Z", "level": "info", "message": "Test case 4972: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4972, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:22:54Z", "level": "info", "message": "Test case 4973: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4973, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:22:55Z", "level": "info", "message": "Test case 4974: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4974, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:22:56Z", "level": "info", "message": "Test case 4975: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4975, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:22:57Z", "level": "info", "message": "Test case 4976: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4976, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:22:58Z", "level": "info", "message": "Test case 4977: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4977, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:22:59Z", "level": "info", "message": "Test case 4978: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4978, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:23:00Z", "level": "info", "message": "Test case 4979: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4979, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:23:01Z", "level": "info", "message": "Test case 4980: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4980, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:23:02Z", "level": "info", "message": "Test case 4981: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4981, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:23:03Z", "level": "info", "message": "Test case 4982: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4982, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:23:04Z", "level": "info", "message": "Test case 4983: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4983, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:23:05Z", "level": "info", "message": "Test case 4984: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4984, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:23:06Z", "level": "info", "message": "Test case 4985: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4985, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:23:07Z", "level": "info", "message": "Test case 4986: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4986, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:23:08Z", "level": "info", "message": "Test case 4987: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4987, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:23:09Z", "level": "info", "message": "Test case 4988: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4988, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:23:10Z", "level": "info", "message": "Test case 4989: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 4989, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:23:11Z", "level": "info", "message": "Test case 4990: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 4990, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:23:12Z", "level": "info", "message": "Test case 4991: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 4991, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:23:13Z", "level": "info", "message": "Test case 4992: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 4992, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:23:14Z", "level": "info", "message": "Test case 4993: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 4993, "data": "4iih"} +{"timestamp": "2024-01-01T01:23:15Z", "level": "info", "message": "Test case 4994: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 4994, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:23:16Z", "level": "info", "message": "Test case 4995: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 4995, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:23:17Z", "level": "info", "message": "Test case 4996: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 4996, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:23:18Z", "level": "info", "message": "Test case 4997: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 4997, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:23:19Z", "level": "info", "message": "Test case 4998: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 4998, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:23:20Z", "level": "info", "message": "Test case 4999: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 4999, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:23:21Z", "level": "info", "message": "Test case 5000: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5000, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:23:22Z", "level": "info", "message": "Test case 5001: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5001, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:23:23Z", "level": "info", "message": "Test case 5002: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5002, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:23:24Z", "level": "info", "message": "Test case 5003: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5003, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:23:25Z", "level": "info", "message": "Test case 5004: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5004, "data": "wg=="} +{"timestamp": "2024-01-01T01:23:26Z", "level": "info", "message": "Test case 5005: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5005, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:23:27Z", "level": "info", "message": "Test case 5006: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5006, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:23:28Z", "level": "info", "message": "Test case 5007: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5007, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:23:29Z", "level": "info", "message": "Test case 5008: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5008, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:23:30Z", "level": "info", "message": "Test case 5009: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5009, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:23:31Z", "level": "info", "message": "Test case 5010: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5010, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:23:32Z", "level": "info", "message": "Test case 5011: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5011, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:23:33Z", "level": "info", "message": "Test case 5012: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5012, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:23:34Z", "level": "info", "message": "Test case 5013: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5013, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:23:35Z", "level": "info", "message": "Test case 5014: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5014, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:23:36Z", "level": "info", "message": "Test case 5015: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5015, "data": "wIA="} +{"timestamp": "2024-01-01T01:23:37Z", "level": "info", "message": "Test case 5016: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5016, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:23:38Z", "level": "info", "message": "Test case 5017: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5017, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:23:39Z", "level": "info", "message": "Test case 5018: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5018, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:23:40Z", "level": "info", "message": "Test case 5019: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5019, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:23:41Z", "level": "info", "message": "Test case 5020: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5020, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:23:42Z", "level": "info", "message": "Test case 5021: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5021, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:23:43Z", "level": "info", "message": "Test case 5022: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5022, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:23:44Z", "level": "info", "message": "Test case 5023: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5023, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:23:45Z", "level": "info", "message": "Test case 5024: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5024, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:23:46Z", "level": "info", "message": "Test case 5025: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5025, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:23:47Z", "level": "info", "message": "Test case 5026: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5026, "data": "4ICA"} +{"timestamp": "2024-01-01T01:23:48Z", "level": "info", "message": "Test case 5027: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5027, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:23:49Z", "level": "info", "message": "Test case 5028: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5028, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:23:50Z", "level": "info", "message": "Test case 5029: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5029, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:23:51Z", "level": "info", "message": "Test case 5030: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5030, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:23:52Z", "level": "info", "message": "Test case 5031: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5031, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:23:53Z", "level": "info", "message": "Test case 5032: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5032, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:23:54Z", "level": "info", "message": "Test case 5033: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5033, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:23:55Z", "level": "info", "message": "Test case 5034: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5034, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:23:56Z", "level": "info", "message": "Test case 5035: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5035, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:23:57Z", "level": "info", "message": "Test case 5036: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5036, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:23:58Z", "level": "info", "message": "Test case 5037: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5037, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:23:59Z", "level": "info", "message": "Test case 5038: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5038, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:24:00Z", "level": "info", "message": "Test case 5039: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5039, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:24:01Z", "level": "info", "message": "Test case 5040: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5040, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:24:02Z", "level": "info", "message": "Test case 5041: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5041, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:24:03Z", "level": "info", "message": "Test case 5042: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5042, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:24:04Z", "level": "info", "message": "Test case 5043: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5043, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:24:05Z", "level": "info", "message": "Test case 5044: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5044, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:24:06Z", "level": "info", "message": "Test case 5045: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5045, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:24:07Z", "level": "info", "message": "Test case 5046: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5046, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:24:08Z", "level": "info", "message": "Test case 5047: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5047, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:24:09Z", "level": "info", "message": "Test case 5048: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5048, "data": "4iih"} +{"timestamp": "2024-01-01T01:24:10Z", "level": "info", "message": "Test case 5049: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5049, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:24:11Z", "level": "info", "message": "Test case 5050: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5050, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:24:12Z", "level": "info", "message": "Test case 5051: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5051, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:24:13Z", "level": "info", "message": "Test case 5052: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5052, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:24:14Z", "level": "info", "message": "Test case 5053: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5053, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:24:15Z", "level": "info", "message": "Test case 5054: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5054, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:24:16Z", "level": "info", "message": "Test case 5055: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5055, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:24:17Z", "level": "info", "message": "Test case 5056: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5056, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:24:18Z", "level": "info", "message": "Test case 5057: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5057, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:24:19Z", "level": "info", "message": "Test case 5058: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5058, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:24:20Z", "level": "info", "message": "Test case 5059: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5059, "data": "wg=="} +{"timestamp": "2024-01-01T01:24:21Z", "level": "info", "message": "Test case 5060: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5060, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:24:22Z", "level": "info", "message": "Test case 5061: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5061, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:24:23Z", "level": "info", "message": "Test case 5062: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5062, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:24:24Z", "level": "info", "message": "Test case 5063: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5063, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:24:25Z", "level": "info", "message": "Test case 5064: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5064, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:24:26Z", "level": "info", "message": "Test case 5065: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5065, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:24:27Z", "level": "info", "message": "Test case 5066: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5066, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:24:28Z", "level": "info", "message": "Test case 5067: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5067, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:24:29Z", "level": "info", "message": "Test case 5068: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5068, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:24:30Z", "level": "info", "message": "Test case 5069: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5069, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:24:31Z", "level": "info", "message": "Test case 5070: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5070, "data": "wIA="} +{"timestamp": "2024-01-01T01:24:32Z", "level": "info", "message": "Test case 5071: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5071, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:24:33Z", "level": "info", "message": "Test case 5072: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5072, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:24:34Z", "level": "info", "message": "Test case 5073: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5073, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:24:35Z", "level": "info", "message": "Test case 5074: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5074, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:24:36Z", "level": "info", "message": "Test case 5075: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5075, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:24:37Z", "level": "info", "message": "Test case 5076: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5076, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:24:38Z", "level": "info", "message": "Test case 5077: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5077, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:24:39Z", "level": "info", "message": "Test case 5078: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5078, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:24:40Z", "level": "info", "message": "Test case 5079: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5079, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:24:41Z", "level": "info", "message": "Test case 5080: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5080, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:24:42Z", "level": "info", "message": "Test case 5081: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5081, "data": "4ICA"} +{"timestamp": "2024-01-01T01:24:43Z", "level": "info", "message": "Test case 5082: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5082, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:24:44Z", "level": "info", "message": "Test case 5083: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5083, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:24:45Z", "level": "info", "message": "Test case 5084: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5084, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:24:46Z", "level": "info", "message": "Test case 5085: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5085, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:24:47Z", "level": "info", "message": "Test case 5086: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5086, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:24:48Z", "level": "info", "message": "Test case 5087: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5087, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:24:49Z", "level": "info", "message": "Test case 5088: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5088, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:24:50Z", "level": "info", "message": "Test case 5089: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5089, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:24:51Z", "level": "info", "message": "Test case 5090: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5090, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:24:52Z", "level": "info", "message": "Test case 5091: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5091, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:24:53Z", "level": "info", "message": "Test case 5092: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5092, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:24:54Z", "level": "info", "message": "Test case 5093: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5093, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:24:55Z", "level": "info", "message": "Test case 5094: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5094, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:24:56Z", "level": "info", "message": "Test case 5095: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5095, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:24:57Z", "level": "info", "message": "Test case 5096: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5096, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:24:58Z", "level": "info", "message": "Test case 5097: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5097, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:24:59Z", "level": "info", "message": "Test case 5098: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5098, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:25:00Z", "level": "info", "message": "Test case 5099: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5099, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:25:01Z", "level": "info", "message": "Test case 5100: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5100, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:25:02Z", "level": "info", "message": "Test case 5101: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5101, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:25:03Z", "level": "info", "message": "Test case 5102: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5102, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:25:04Z", "level": "info", "message": "Test case 5103: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5103, "data": "4iih"} +{"timestamp": "2024-01-01T01:25:05Z", "level": "info", "message": "Test case 5104: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5104, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:25:06Z", "level": "info", "message": "Test case 5105: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5105, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:25:07Z", "level": "info", "message": "Test case 5106: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5106, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:25:08Z", "level": "info", "message": "Test case 5107: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5107, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:25:09Z", "level": "info", "message": "Test case 5108: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5108, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:25:10Z", "level": "info", "message": "Test case 5109: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5109, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:25:11Z", "level": "info", "message": "Test case 5110: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5110, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:25:12Z", "level": "info", "message": "Test case 5111: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5111, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:25:13Z", "level": "info", "message": "Test case 5112: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5112, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:25:14Z", "level": "info", "message": "Test case 5113: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5113, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:25:15Z", "level": "info", "message": "Test case 5114: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5114, "data": "wg=="} +{"timestamp": "2024-01-01T01:25:16Z", "level": "info", "message": "Test case 5115: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5115, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:25:17Z", "level": "info", "message": "Test case 5116: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5116, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:25:18Z", "level": "info", "message": "Test case 5117: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5117, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:25:19Z", "level": "info", "message": "Test case 5118: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5118, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:25:20Z", "level": "info", "message": "Test case 5119: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5119, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:25:21Z", "level": "info", "message": "Test case 5120: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5120, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:25:22Z", "level": "info", "message": "Test case 5121: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5121, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:25:23Z", "level": "info", "message": "Test case 5122: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5122, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:25:24Z", "level": "info", "message": "Test case 5123: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5123, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:25:25Z", "level": "info", "message": "Test case 5124: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5124, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:25:26Z", "level": "info", "message": "Test case 5125: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5125, "data": "wIA="} +{"timestamp": "2024-01-01T01:25:27Z", "level": "info", "message": "Test case 5126: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5126, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:25:28Z", "level": "info", "message": "Test case 5127: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5127, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:25:29Z", "level": "info", "message": "Test case 5128: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5128, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:25:30Z", "level": "info", "message": "Test case 5129: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5129, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:25:31Z", "level": "info", "message": "Test case 5130: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5130, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:25:32Z", "level": "info", "message": "Test case 5131: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5131, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:25:33Z", "level": "info", "message": "Test case 5132: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5132, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:25:34Z", "level": "info", "message": "Test case 5133: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5133, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:25:35Z", "level": "info", "message": "Test case 5134: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5134, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:25:36Z", "level": "info", "message": "Test case 5135: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5135, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:25:37Z", "level": "info", "message": "Test case 5136: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5136, "data": "4ICA"} +{"timestamp": "2024-01-01T01:25:38Z", "level": "info", "message": "Test case 5137: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5137, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:25:39Z", "level": "info", "message": "Test case 5138: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5138, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:25:40Z", "level": "info", "message": "Test case 5139: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5139, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:25:41Z", "level": "info", "message": "Test case 5140: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5140, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:25:42Z", "level": "info", "message": "Test case 5141: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5141, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:25:43Z", "level": "info", "message": "Test case 5142: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5142, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:25:44Z", "level": "info", "message": "Test case 5143: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5143, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:25:45Z", "level": "info", "message": "Test case 5144: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5144, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:25:46Z", "level": "info", "message": "Test case 5145: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5145, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:25:47Z", "level": "info", "message": "Test case 5146: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5146, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:25:48Z", "level": "info", "message": "Test case 5147: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5147, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:25:49Z", "level": "info", "message": "Test case 5148: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5148, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:25:50Z", "level": "info", "message": "Test case 5149: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5149, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:25:51Z", "level": "info", "message": "Test case 5150: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5150, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:25:52Z", "level": "info", "message": "Test case 5151: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5151, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:25:53Z", "level": "info", "message": "Test case 5152: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5152, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:25:54Z", "level": "info", "message": "Test case 5153: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5153, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:25:55Z", "level": "info", "message": "Test case 5154: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5154, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:25:56Z", "level": "info", "message": "Test case 5155: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5155, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:25:57Z", "level": "info", "message": "Test case 5156: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5156, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:25:58Z", "level": "info", "message": "Test case 5157: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5157, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:25:59Z", "level": "info", "message": "Test case 5158: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5158, "data": "4iih"} +{"timestamp": "2024-01-01T01:26:00Z", "level": "info", "message": "Test case 5159: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5159, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:26:01Z", "level": "info", "message": "Test case 5160: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5160, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:26:02Z", "level": "info", "message": "Test case 5161: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5161, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:26:03Z", "level": "info", "message": "Test case 5162: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5162, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:26:04Z", "level": "info", "message": "Test case 5163: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5163, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:26:05Z", "level": "info", "message": "Test case 5164: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5164, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:26:06Z", "level": "info", "message": "Test case 5165: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5165, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:26:07Z", "level": "info", "message": "Test case 5166: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5166, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:26:08Z", "level": "info", "message": "Test case 5167: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5167, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:26:09Z", "level": "info", "message": "Test case 5168: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5168, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:26:10Z", "level": "info", "message": "Test case 5169: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5169, "data": "wg=="} +{"timestamp": "2024-01-01T01:26:11Z", "level": "info", "message": "Test case 5170: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5170, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:26:12Z", "level": "info", "message": "Test case 5171: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5171, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:26:13Z", "level": "info", "message": "Test case 5172: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5172, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:26:14Z", "level": "info", "message": "Test case 5173: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5173, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:26:15Z", "level": "info", "message": "Test case 5174: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5174, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:26:16Z", "level": "info", "message": "Test case 5175: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5175, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:26:17Z", "level": "info", "message": "Test case 5176: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5176, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:26:18Z", "level": "info", "message": "Test case 5177: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5177, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:26:19Z", "level": "info", "message": "Test case 5178: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5178, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:26:20Z", "level": "info", "message": "Test case 5179: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5179, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:26:21Z", "level": "info", "message": "Test case 5180: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5180, "data": "wIA="} +{"timestamp": "2024-01-01T01:26:22Z", "level": "info", "message": "Test case 5181: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5181, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:26:23Z", "level": "info", "message": "Test case 5182: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5182, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:26:24Z", "level": "info", "message": "Test case 5183: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5183, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:26:25Z", "level": "info", "message": "Test case 5184: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5184, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:26:26Z", "level": "info", "message": "Test case 5185: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5185, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:26:27Z", "level": "info", "message": "Test case 5186: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5186, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:26:28Z", "level": "info", "message": "Test case 5187: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5187, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:26:29Z", "level": "info", "message": "Test case 5188: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5188, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:26:30Z", "level": "info", "message": "Test case 5189: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5189, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:26:31Z", "level": "info", "message": "Test case 5190: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5190, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:26:32Z", "level": "info", "message": "Test case 5191: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5191, "data": "4ICA"} +{"timestamp": "2024-01-01T01:26:33Z", "level": "info", "message": "Test case 5192: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5192, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:26:34Z", "level": "info", "message": "Test case 5193: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5193, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:26:35Z", "level": "info", "message": "Test case 5194: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5194, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:26:36Z", "level": "info", "message": "Test case 5195: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5195, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:26:37Z", "level": "info", "message": "Test case 5196: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5196, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:26:38Z", "level": "info", "message": "Test case 5197: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5197, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:26:39Z", "level": "info", "message": "Test case 5198: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5198, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:26:40Z", "level": "info", "message": "Test case 5199: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5199, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:26:41Z", "level": "info", "message": "Test case 5200: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5200, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:26:42Z", "level": "info", "message": "Test case 5201: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5201, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:26:43Z", "level": "info", "message": "Test case 5202: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5202, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:26:44Z", "level": "info", "message": "Test case 5203: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5203, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:26:45Z", "level": "info", "message": "Test case 5204: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5204, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:26:46Z", "level": "info", "message": "Test case 5205: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5205, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:26:47Z", "level": "info", "message": "Test case 5206: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5206, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:26:48Z", "level": "info", "message": "Test case 5207: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5207, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:26:49Z", "level": "info", "message": "Test case 5208: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5208, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:26:50Z", "level": "info", "message": "Test case 5209: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5209, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:26:51Z", "level": "info", "message": "Test case 5210: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5210, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:26:52Z", "level": "info", "message": "Test case 5211: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5211, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:26:53Z", "level": "info", "message": "Test case 5212: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5212, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:26:54Z", "level": "info", "message": "Test case 5213: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5213, "data": "4iih"} +{"timestamp": "2024-01-01T01:26:55Z", "level": "info", "message": "Test case 5214: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5214, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:26:56Z", "level": "info", "message": "Test case 5215: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5215, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:26:57Z", "level": "info", "message": "Test case 5216: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5216, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:26:58Z", "level": "info", "message": "Test case 5217: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5217, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:26:59Z", "level": "info", "message": "Test case 5218: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5218, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:27:00Z", "level": "info", "message": "Test case 5219: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5219, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:27:01Z", "level": "info", "message": "Test case 5220: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5220, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:27:02Z", "level": "info", "message": "Test case 5221: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5221, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:27:03Z", "level": "info", "message": "Test case 5222: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5222, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:27:04Z", "level": "info", "message": "Test case 5223: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5223, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:27:05Z", "level": "info", "message": "Test case 5224: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5224, "data": "wg=="} +{"timestamp": "2024-01-01T01:27:06Z", "level": "info", "message": "Test case 5225: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5225, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:27:07Z", "level": "info", "message": "Test case 5226: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5226, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:27:08Z", "level": "info", "message": "Test case 5227: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5227, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:27:09Z", "level": "info", "message": "Test case 5228: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5228, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:27:10Z", "level": "info", "message": "Test case 5229: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5229, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:27:11Z", "level": "info", "message": "Test case 5230: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5230, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:27:12Z", "level": "info", "message": "Test case 5231: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5231, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:27:13Z", "level": "info", "message": "Test case 5232: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5232, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:27:14Z", "level": "info", "message": "Test case 5233: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5233, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:27:15Z", "level": "info", "message": "Test case 5234: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5234, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:27:16Z", "level": "info", "message": "Test case 5235: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5235, "data": "wIA="} +{"timestamp": "2024-01-01T01:27:17Z", "level": "info", "message": "Test case 5236: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5236, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:27:18Z", "level": "info", "message": "Test case 5237: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5237, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:27:19Z", "level": "info", "message": "Test case 5238: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5238, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:27:20Z", "level": "info", "message": "Test case 5239: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5239, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:27:21Z", "level": "info", "message": "Test case 5240: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5240, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:27:22Z", "level": "info", "message": "Test case 5241: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5241, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:27:23Z", "level": "info", "message": "Test case 5242: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5242, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:27:24Z", "level": "info", "message": "Test case 5243: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5243, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:27:25Z", "level": "info", "message": "Test case 5244: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5244, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:27:26Z", "level": "info", "message": "Test case 5245: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5245, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:27:27Z", "level": "info", "message": "Test case 5246: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5246, "data": "4ICA"} +{"timestamp": "2024-01-01T01:27:28Z", "level": "info", "message": "Test case 5247: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5247, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:27:29Z", "level": "info", "message": "Test case 5248: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5248, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:27:30Z", "level": "info", "message": "Test case 5249: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5249, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:27:31Z", "level": "info", "message": "Test case 5250: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5250, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:27:32Z", "level": "info", "message": "Test case 5251: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5251, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:27:33Z", "level": "info", "message": "Test case 5252: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5252, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:27:34Z", "level": "info", "message": "Test case 5253: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5253, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:27:35Z", "level": "info", "message": "Test case 5254: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5254, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:27:36Z", "level": "info", "message": "Test case 5255: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5255, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:27:37Z", "level": "info", "message": "Test case 5256: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5256, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:27:38Z", "level": "info", "message": "Test case 5257: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5257, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:27:39Z", "level": "info", "message": "Test case 5258: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5258, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:27:40Z", "level": "info", "message": "Test case 5259: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5259, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:27:41Z", "level": "info", "message": "Test case 5260: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5260, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:27:42Z", "level": "info", "message": "Test case 5261: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5261, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:27:43Z", "level": "info", "message": "Test case 5262: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5262, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:27:44Z", "level": "info", "message": "Test case 5263: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5263, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:27:45Z", "level": "info", "message": "Test case 5264: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5264, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:27:46Z", "level": "info", "message": "Test case 5265: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5265, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:27:47Z", "level": "info", "message": "Test case 5266: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5266, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:27:48Z", "level": "info", "message": "Test case 5267: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5267, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:27:49Z", "level": "info", "message": "Test case 5268: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5268, "data": "4iih"} +{"timestamp": "2024-01-01T01:27:50Z", "level": "info", "message": "Test case 5269: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5269, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:27:51Z", "level": "info", "message": "Test case 5270: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5270, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:27:52Z", "level": "info", "message": "Test case 5271: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5271, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:27:53Z", "level": "info", "message": "Test case 5272: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5272, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:27:54Z", "level": "info", "message": "Test case 5273: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5273, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:27:55Z", "level": "info", "message": "Test case 5274: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5274, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:27:56Z", "level": "info", "message": "Test case 5275: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5275, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:27:57Z", "level": "info", "message": "Test case 5276: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5276, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:27:58Z", "level": "info", "message": "Test case 5277: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5277, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:27:59Z", "level": "info", "message": "Test case 5278: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5278, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:28:00Z", "level": "info", "message": "Test case 5279: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5279, "data": "wg=="} +{"timestamp": "2024-01-01T01:28:01Z", "level": "info", "message": "Test case 5280: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5280, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:28:02Z", "level": "info", "message": "Test case 5281: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5281, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:28:03Z", "level": "info", "message": "Test case 5282: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5282, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:28:04Z", "level": "info", "message": "Test case 5283: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5283, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:28:05Z", "level": "info", "message": "Test case 5284: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5284, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:28:06Z", "level": "info", "message": "Test case 5285: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5285, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:28:07Z", "level": "info", "message": "Test case 5286: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5286, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:28:08Z", "level": "info", "message": "Test case 5287: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5287, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:28:09Z", "level": "info", "message": "Test case 5288: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5288, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:28:10Z", "level": "info", "message": "Test case 5289: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5289, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:28:11Z", "level": "info", "message": "Test case 5290: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5290, "data": "wIA="} +{"timestamp": "2024-01-01T01:28:12Z", "level": "info", "message": "Test case 5291: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5291, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:28:13Z", "level": "info", "message": "Test case 5292: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5292, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:28:14Z", "level": "info", "message": "Test case 5293: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5293, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:28:15Z", "level": "info", "message": "Test case 5294: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5294, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:28:16Z", "level": "info", "message": "Test case 5295: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5295, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:28:17Z", "level": "info", "message": "Test case 5296: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5296, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:28:18Z", "level": "info", "message": "Test case 5297: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5297, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:28:19Z", "level": "info", "message": "Test case 5298: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5298, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:28:20Z", "level": "info", "message": "Test case 5299: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5299, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:28:21Z", "level": "info", "message": "Test case 5300: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5300, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:28:22Z", "level": "info", "message": "Test case 5301: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5301, "data": "4ICA"} +{"timestamp": "2024-01-01T01:28:23Z", "level": "info", "message": "Test case 5302: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5302, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:28:24Z", "level": "info", "message": "Test case 5303: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5303, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:28:25Z", "level": "info", "message": "Test case 5304: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5304, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:28:26Z", "level": "info", "message": "Test case 5305: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5305, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:28:27Z", "level": "info", "message": "Test case 5306: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5306, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:28:28Z", "level": "info", "message": "Test case 5307: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5307, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:28:29Z", "level": "info", "message": "Test case 5308: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5308, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:28:30Z", "level": "info", "message": "Test case 5309: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5309, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:28:31Z", "level": "info", "message": "Test case 5310: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5310, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:28:32Z", "level": "info", "message": "Test case 5311: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5311, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:28:33Z", "level": "info", "message": "Test case 5312: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5312, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:28:34Z", "level": "info", "message": "Test case 5313: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5313, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:28:35Z", "level": "info", "message": "Test case 5314: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5314, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:28:36Z", "level": "info", "message": "Test case 5315: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5315, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:28:37Z", "level": "info", "message": "Test case 5316: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5316, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:28:38Z", "level": "info", "message": "Test case 5317: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5317, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:28:39Z", "level": "info", "message": "Test case 5318: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5318, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:28:40Z", "level": "info", "message": "Test case 5319: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5319, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:28:41Z", "level": "info", "message": "Test case 5320: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5320, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:28:42Z", "level": "info", "message": "Test case 5321: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5321, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:28:43Z", "level": "info", "message": "Test case 5322: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5322, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:28:44Z", "level": "info", "message": "Test case 5323: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5323, "data": "4iih"} +{"timestamp": "2024-01-01T01:28:45Z", "level": "info", "message": "Test case 5324: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5324, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:28:46Z", "level": "info", "message": "Test case 5325: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5325, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:28:47Z", "level": "info", "message": "Test case 5326: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5326, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:28:48Z", "level": "info", "message": "Test case 5327: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5327, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:28:49Z", "level": "info", "message": "Test case 5328: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5328, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:28:50Z", "level": "info", "message": "Test case 5329: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5329, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:28:51Z", "level": "info", "message": "Test case 5330: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5330, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:28:52Z", "level": "info", "message": "Test case 5331: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5331, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:28:53Z", "level": "info", "message": "Test case 5332: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5332, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:28:54Z", "level": "info", "message": "Test case 5333: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5333, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:28:55Z", "level": "info", "message": "Test case 5334: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5334, "data": "wg=="} +{"timestamp": "2024-01-01T01:28:56Z", "level": "info", "message": "Test case 5335: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5335, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:28:57Z", "level": "info", "message": "Test case 5336: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5336, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:28:58Z", "level": "info", "message": "Test case 5337: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5337, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:28:59Z", "level": "info", "message": "Test case 5338: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5338, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:29:00Z", "level": "info", "message": "Test case 5339: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5339, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:29:01Z", "level": "info", "message": "Test case 5340: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5340, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:29:02Z", "level": "info", "message": "Test case 5341: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5341, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:29:03Z", "level": "info", "message": "Test case 5342: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5342, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:29:04Z", "level": "info", "message": "Test case 5343: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5343, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:29:05Z", "level": "info", "message": "Test case 5344: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5344, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:29:06Z", "level": "info", "message": "Test case 5345: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5345, "data": "wIA="} +{"timestamp": "2024-01-01T01:29:07Z", "level": "info", "message": "Test case 5346: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5346, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:29:08Z", "level": "info", "message": "Test case 5347: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5347, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:29:09Z", "level": "info", "message": "Test case 5348: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5348, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:29:10Z", "level": "info", "message": "Test case 5349: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5349, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:29:11Z", "level": "info", "message": "Test case 5350: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5350, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:29:12Z", "level": "info", "message": "Test case 5351: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5351, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:29:13Z", "level": "info", "message": "Test case 5352: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5352, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:29:14Z", "level": "info", "message": "Test case 5353: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5353, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:29:15Z", "level": "info", "message": "Test case 5354: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5354, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:29:16Z", "level": "info", "message": "Test case 5355: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5355, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:29:17Z", "level": "info", "message": "Test case 5356: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5356, "data": "4ICA"} +{"timestamp": "2024-01-01T01:29:18Z", "level": "info", "message": "Test case 5357: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5357, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:29:19Z", "level": "info", "message": "Test case 5358: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5358, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:29:20Z", "level": "info", "message": "Test case 5359: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5359, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:29:21Z", "level": "info", "message": "Test case 5360: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5360, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:29:22Z", "level": "info", "message": "Test case 5361: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5361, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:29:23Z", "level": "info", "message": "Test case 5362: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5362, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:29:24Z", "level": "info", "message": "Test case 5363: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5363, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:29:25Z", "level": "info", "message": "Test case 5364: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5364, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:29:26Z", "level": "info", "message": "Test case 5365: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5365, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:29:27Z", "level": "info", "message": "Test case 5366: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5366, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:29:28Z", "level": "info", "message": "Test case 5367: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5367, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:29:29Z", "level": "info", "message": "Test case 5368: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5368, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:29:30Z", "level": "info", "message": "Test case 5369: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5369, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:29:31Z", "level": "info", "message": "Test case 5370: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5370, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:29:32Z", "level": "info", "message": "Test case 5371: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5371, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:29:33Z", "level": "info", "message": "Test case 5372: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5372, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:29:34Z", "level": "info", "message": "Test case 5373: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5373, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:29:35Z", "level": "info", "message": "Test case 5374: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5374, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:29:36Z", "level": "info", "message": "Test case 5375: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5375, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:29:37Z", "level": "info", "message": "Test case 5376: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5376, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:29:38Z", "level": "info", "message": "Test case 5377: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5377, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:29:39Z", "level": "info", "message": "Test case 5378: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5378, "data": "4iih"} +{"timestamp": "2024-01-01T01:29:40Z", "level": "info", "message": "Test case 5379: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5379, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:29:41Z", "level": "info", "message": "Test case 5380: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5380, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:29:42Z", "level": "info", "message": "Test case 5381: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5381, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:29:43Z", "level": "info", "message": "Test case 5382: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5382, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:29:44Z", "level": "info", "message": "Test case 5383: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5383, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:29:45Z", "level": "info", "message": "Test case 5384: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5384, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:29:46Z", "level": "info", "message": "Test case 5385: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5385, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:29:47Z", "level": "info", "message": "Test case 5386: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5386, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:29:48Z", "level": "info", "message": "Test case 5387: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5387, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:29:49Z", "level": "info", "message": "Test case 5388: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5388, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:29:50Z", "level": "info", "message": "Test case 5389: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5389, "data": "wg=="} +{"timestamp": "2024-01-01T01:29:51Z", "level": "info", "message": "Test case 5390: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5390, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:29:52Z", "level": "info", "message": "Test case 5391: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5391, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:29:53Z", "level": "info", "message": "Test case 5392: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5392, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:29:54Z", "level": "info", "message": "Test case 5393: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5393, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:29:55Z", "level": "info", "message": "Test case 5394: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5394, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:29:56Z", "level": "info", "message": "Test case 5395: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5395, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:29:57Z", "level": "info", "message": "Test case 5396: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5396, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:29:58Z", "level": "info", "message": "Test case 5397: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5397, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:29:59Z", "level": "info", "message": "Test case 5398: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5398, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:30:00Z", "level": "info", "message": "Test case 5399: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5399, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:30:01Z", "level": "info", "message": "Test case 5400: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5400, "data": "wIA="} +{"timestamp": "2024-01-01T01:30:02Z", "level": "info", "message": "Test case 5401: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5401, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:30:03Z", "level": "info", "message": "Test case 5402: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5402, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:30:04Z", "level": "info", "message": "Test case 5403: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5403, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:30:05Z", "level": "info", "message": "Test case 5404: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5404, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:30:06Z", "level": "info", "message": "Test case 5405: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5405, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:30:07Z", "level": "info", "message": "Test case 5406: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5406, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:30:08Z", "level": "info", "message": "Test case 5407: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5407, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:30:09Z", "level": "info", "message": "Test case 5408: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5408, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:30:10Z", "level": "info", "message": "Test case 5409: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5409, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:30:11Z", "level": "info", "message": "Test case 5410: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5410, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:30:12Z", "level": "info", "message": "Test case 5411: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5411, "data": "4ICA"} +{"timestamp": "2024-01-01T01:30:13Z", "level": "info", "message": "Test case 5412: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5412, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:30:14Z", "level": "info", "message": "Test case 5413: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5413, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:30:15Z", "level": "info", "message": "Test case 5414: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5414, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:30:16Z", "level": "info", "message": "Test case 5415: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5415, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:30:17Z", "level": "info", "message": "Test case 5416: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5416, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:30:18Z", "level": "info", "message": "Test case 5417: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5417, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:30:19Z", "level": "info", "message": "Test case 5418: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5418, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:30:20Z", "level": "info", "message": "Test case 5419: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5419, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:30:21Z", "level": "info", "message": "Test case 5420: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5420, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:30:22Z", "level": "info", "message": "Test case 5421: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5421, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:30:23Z", "level": "info", "message": "Test case 5422: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5422, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:30:24Z", "level": "info", "message": "Test case 5423: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5423, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:30:25Z", "level": "info", "message": "Test case 5424: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5424, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:30:26Z", "level": "info", "message": "Test case 5425: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5425, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:30:27Z", "level": "info", "message": "Test case 5426: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5426, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:30:28Z", "level": "info", "message": "Test case 5427: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5427, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:30:29Z", "level": "info", "message": "Test case 5428: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5428, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:30:30Z", "level": "info", "message": "Test case 5429: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5429, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:30:31Z", "level": "info", "message": "Test case 5430: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5430, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:30:32Z", "level": "info", "message": "Test case 5431: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5431, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:30:33Z", "level": "info", "message": "Test case 5432: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5432, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:30:34Z", "level": "info", "message": "Test case 5433: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5433, "data": "4iih"} +{"timestamp": "2024-01-01T01:30:35Z", "level": "info", "message": "Test case 5434: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5434, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:30:36Z", "level": "info", "message": "Test case 5435: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5435, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:30:37Z", "level": "info", "message": "Test case 5436: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5436, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:30:38Z", "level": "info", "message": "Test case 5437: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5437, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:30:39Z", "level": "info", "message": "Test case 5438: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5438, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:30:40Z", "level": "info", "message": "Test case 5439: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5439, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:30:41Z", "level": "info", "message": "Test case 5440: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5440, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:30:42Z", "level": "info", "message": "Test case 5441: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5441, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:30:43Z", "level": "info", "message": "Test case 5442: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5442, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:30:44Z", "level": "info", "message": "Test case 5443: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5443, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:30:45Z", "level": "info", "message": "Test case 5444: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5444, "data": "wg=="} +{"timestamp": "2024-01-01T01:30:46Z", "level": "info", "message": "Test case 5445: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5445, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:30:47Z", "level": "info", "message": "Test case 5446: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5446, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:30:48Z", "level": "info", "message": "Test case 5447: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5447, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:30:49Z", "level": "info", "message": "Test case 5448: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5448, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:30:50Z", "level": "info", "message": "Test case 5449: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5449, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:30:51Z", "level": "info", "message": "Test case 5450: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5450, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:30:52Z", "level": "info", "message": "Test case 5451: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5451, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:30:53Z", "level": "info", "message": "Test case 5452: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5452, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:30:54Z", "level": "info", "message": "Test case 5453: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5453, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:30:55Z", "level": "info", "message": "Test case 5454: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5454, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:30:56Z", "level": "info", "message": "Test case 5455: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5455, "data": "wIA="} +{"timestamp": "2024-01-01T01:30:57Z", "level": "info", "message": "Test case 5456: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5456, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:30:58Z", "level": "info", "message": "Test case 5457: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5457, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:30:59Z", "level": "info", "message": "Test case 5458: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5458, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:31:00Z", "level": "info", "message": "Test case 5459: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5459, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:31:01Z", "level": "info", "message": "Test case 5460: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5460, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:31:02Z", "level": "info", "message": "Test case 5461: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5461, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:31:03Z", "level": "info", "message": "Test case 5462: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5462, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:31:04Z", "level": "info", "message": "Test case 5463: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5463, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:31:05Z", "level": "info", "message": "Test case 5464: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5464, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:31:06Z", "level": "info", "message": "Test case 5465: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5465, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:31:07Z", "level": "info", "message": "Test case 5466: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5466, "data": "4ICA"} +{"timestamp": "2024-01-01T01:31:08Z", "level": "info", "message": "Test case 5467: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5467, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:31:09Z", "level": "info", "message": "Test case 5468: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5468, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:31:10Z", "level": "info", "message": "Test case 5469: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5469, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:31:11Z", "level": "info", "message": "Test case 5470: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5470, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:31:12Z", "level": "info", "message": "Test case 5471: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5471, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:31:13Z", "level": "info", "message": "Test case 5472: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5472, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:31:14Z", "level": "info", "message": "Test case 5473: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5473, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:31:15Z", "level": "info", "message": "Test case 5474: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5474, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:31:16Z", "level": "info", "message": "Test case 5475: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5475, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:31:17Z", "level": "info", "message": "Test case 5476: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5476, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:31:18Z", "level": "info", "message": "Test case 5477: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5477, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:31:19Z", "level": "info", "message": "Test case 5478: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5478, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:31:20Z", "level": "info", "message": "Test case 5479: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5479, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:31:21Z", "level": "info", "message": "Test case 5480: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5480, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:31:22Z", "level": "info", "message": "Test case 5481: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5481, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:31:23Z", "level": "info", "message": "Test case 5482: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5482, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:31:24Z", "level": "info", "message": "Test case 5483: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5483, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:31:25Z", "level": "info", "message": "Test case 5484: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5484, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:31:26Z", "level": "info", "message": "Test case 5485: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5485, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:31:27Z", "level": "info", "message": "Test case 5486: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5486, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:31:28Z", "level": "info", "message": "Test case 5487: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5487, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:31:29Z", "level": "info", "message": "Test case 5488: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5488, "data": "4iih"} +{"timestamp": "2024-01-01T01:31:30Z", "level": "info", "message": "Test case 5489: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5489, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:31:31Z", "level": "info", "message": "Test case 5490: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5490, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:31:32Z", "level": "info", "message": "Test case 5491: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5491, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:31:33Z", "level": "info", "message": "Test case 5492: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5492, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:31:34Z", "level": "info", "message": "Test case 5493: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5493, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:31:35Z", "level": "info", "message": "Test case 5494: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5494, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:31:36Z", "level": "info", "message": "Test case 5495: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5495, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:31:37Z", "level": "info", "message": "Test case 5496: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5496, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:31:38Z", "level": "info", "message": "Test case 5497: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5497, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:31:39Z", "level": "info", "message": "Test case 5498: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5498, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:31:40Z", "level": "info", "message": "Test case 5499: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5499, "data": "wg=="} +{"timestamp": "2024-01-01T01:31:41Z", "level": "info", "message": "Test case 5500: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5500, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:31:42Z", "level": "info", "message": "Test case 5501: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5501, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:31:43Z", "level": "info", "message": "Test case 5502: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5502, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:31:44Z", "level": "info", "message": "Test case 5503: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5503, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:31:45Z", "level": "info", "message": "Test case 5504: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5504, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:31:46Z", "level": "info", "message": "Test case 5505: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5505, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:31:47Z", "level": "info", "message": "Test case 5506: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5506, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:31:48Z", "level": "info", "message": "Test case 5507: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5507, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:31:49Z", "level": "info", "message": "Test case 5508: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5508, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:31:50Z", "level": "info", "message": "Test case 5509: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5509, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:31:51Z", "level": "info", "message": "Test case 5510: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5510, "data": "wIA="} +{"timestamp": "2024-01-01T01:31:52Z", "level": "info", "message": "Test case 5511: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5511, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:31:53Z", "level": "info", "message": "Test case 5512: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5512, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:31:54Z", "level": "info", "message": "Test case 5513: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5513, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:31:55Z", "level": "info", "message": "Test case 5514: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5514, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:31:56Z", "level": "info", "message": "Test case 5515: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5515, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:31:57Z", "level": "info", "message": "Test case 5516: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5516, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:31:58Z", "level": "info", "message": "Test case 5517: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5517, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:31:59Z", "level": "info", "message": "Test case 5518: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5518, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:32:00Z", "level": "info", "message": "Test case 5519: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5519, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:32:01Z", "level": "info", "message": "Test case 5520: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5520, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:32:02Z", "level": "info", "message": "Test case 5521: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5521, "data": "4ICA"} +{"timestamp": "2024-01-01T01:32:03Z", "level": "info", "message": "Test case 5522: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5522, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:32:04Z", "level": "info", "message": "Test case 5523: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5523, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:32:05Z", "level": "info", "message": "Test case 5524: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5524, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:32:06Z", "level": "info", "message": "Test case 5525: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5525, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:32:07Z", "level": "info", "message": "Test case 5526: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5526, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:32:08Z", "level": "info", "message": "Test case 5527: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5527, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:32:09Z", "level": "info", "message": "Test case 5528: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5528, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:32:10Z", "level": "info", "message": "Test case 5529: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5529, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:32:11Z", "level": "info", "message": "Test case 5530: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5530, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:32:12Z", "level": "info", "message": "Test case 5531: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5531, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:32:13Z", "level": "info", "message": "Test case 5532: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5532, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:32:14Z", "level": "info", "message": "Test case 5533: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5533, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:32:15Z", "level": "info", "message": "Test case 5534: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5534, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:32:16Z", "level": "info", "message": "Test case 5535: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5535, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:32:17Z", "level": "info", "message": "Test case 5536: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5536, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:32:18Z", "level": "info", "message": "Test case 5537: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5537, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:32:19Z", "level": "info", "message": "Test case 5538: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5538, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:32:20Z", "level": "info", "message": "Test case 5539: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5539, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:32:21Z", "level": "info", "message": "Test case 5540: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5540, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:32:22Z", "level": "info", "message": "Test case 5541: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5541, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:32:23Z", "level": "info", "message": "Test case 5542: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5542, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:32:24Z", "level": "info", "message": "Test case 5543: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5543, "data": "4iih"} +{"timestamp": "2024-01-01T01:32:25Z", "level": "info", "message": "Test case 5544: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5544, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:32:26Z", "level": "info", "message": "Test case 5545: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5545, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:32:27Z", "level": "info", "message": "Test case 5546: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5546, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:32:28Z", "level": "info", "message": "Test case 5547: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5547, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:32:29Z", "level": "info", "message": "Test case 5548: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5548, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:32:30Z", "level": "info", "message": "Test case 5549: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5549, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:32:31Z", "level": "info", "message": "Test case 5550: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5550, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:32:32Z", "level": "info", "message": "Test case 5551: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5551, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:32:33Z", "level": "info", "message": "Test case 5552: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5552, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:32:34Z", "level": "info", "message": "Test case 5553: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5553, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:32:35Z", "level": "info", "message": "Test case 5554: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5554, "data": "wg=="} +{"timestamp": "2024-01-01T01:32:36Z", "level": "info", "message": "Test case 5555: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5555, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:32:37Z", "level": "info", "message": "Test case 5556: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5556, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:32:38Z", "level": "info", "message": "Test case 5557: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5557, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:32:39Z", "level": "info", "message": "Test case 5558: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5558, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:32:40Z", "level": "info", "message": "Test case 5559: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5559, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:32:41Z", "level": "info", "message": "Test case 5560: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5560, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:32:42Z", "level": "info", "message": "Test case 5561: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5561, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:32:43Z", "level": "info", "message": "Test case 5562: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5562, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:32:44Z", "level": "info", "message": "Test case 5563: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5563, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:32:45Z", "level": "info", "message": "Test case 5564: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5564, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:32:46Z", "level": "info", "message": "Test case 5565: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5565, "data": "wIA="} +{"timestamp": "2024-01-01T01:32:47Z", "level": "info", "message": "Test case 5566: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5566, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:32:48Z", "level": "info", "message": "Test case 5567: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5567, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:32:49Z", "level": "info", "message": "Test case 5568: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5568, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:32:50Z", "level": "info", "message": "Test case 5569: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5569, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:32:51Z", "level": "info", "message": "Test case 5570: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5570, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:32:52Z", "level": "info", "message": "Test case 5571: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5571, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:32:53Z", "level": "info", "message": "Test case 5572: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5572, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:32:54Z", "level": "info", "message": "Test case 5573: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5573, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:32:55Z", "level": "info", "message": "Test case 5574: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5574, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:32:56Z", "level": "info", "message": "Test case 5575: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5575, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:32:57Z", "level": "info", "message": "Test case 5576: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5576, "data": "4ICA"} +{"timestamp": "2024-01-01T01:32:58Z", "level": "info", "message": "Test case 5577: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5577, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:32:59Z", "level": "info", "message": "Test case 5578: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5578, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:33:00Z", "level": "info", "message": "Test case 5579: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5579, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:33:01Z", "level": "info", "message": "Test case 5580: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5580, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:33:02Z", "level": "info", "message": "Test case 5581: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5581, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:33:03Z", "level": "info", "message": "Test case 5582: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5582, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:33:04Z", "level": "info", "message": "Test case 5583: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5583, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:33:05Z", "level": "info", "message": "Test case 5584: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5584, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:33:06Z", "level": "info", "message": "Test case 5585: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5585, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:33:07Z", "level": "info", "message": "Test case 5586: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5586, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:33:08Z", "level": "info", "message": "Test case 5587: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5587, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:33:09Z", "level": "info", "message": "Test case 5588: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5588, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:33:10Z", "level": "info", "message": "Test case 5589: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5589, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:33:11Z", "level": "info", "message": "Test case 5590: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5590, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:33:12Z", "level": "info", "message": "Test case 5591: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5591, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:33:13Z", "level": "info", "message": "Test case 5592: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5592, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:33:14Z", "level": "info", "message": "Test case 5593: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5593, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:33:15Z", "level": "info", "message": "Test case 5594: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5594, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:33:16Z", "level": "info", "message": "Test case 5595: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5595, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:33:17Z", "level": "info", "message": "Test case 5596: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5596, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:33:18Z", "level": "info", "message": "Test case 5597: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5597, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:33:19Z", "level": "info", "message": "Test case 5598: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5598, "data": "4iih"} +{"timestamp": "2024-01-01T01:33:20Z", "level": "info", "message": "Test case 5599: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5599, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:33:21Z", "level": "info", "message": "Test case 5600: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5600, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:33:22Z", "level": "info", "message": "Test case 5601: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5601, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:33:23Z", "level": "info", "message": "Test case 5602: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5602, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:33:24Z", "level": "info", "message": "Test case 5603: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5603, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:33:25Z", "level": "info", "message": "Test case 5604: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5604, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:33:26Z", "level": "info", "message": "Test case 5605: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5605, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:33:27Z", "level": "info", "message": "Test case 5606: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5606, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:33:28Z", "level": "info", "message": "Test case 5607: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5607, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:33:29Z", "level": "info", "message": "Test case 5608: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5608, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:33:30Z", "level": "info", "message": "Test case 5609: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5609, "data": "wg=="} +{"timestamp": "2024-01-01T01:33:31Z", "level": "info", "message": "Test case 5610: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5610, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:33:32Z", "level": "info", "message": "Test case 5611: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5611, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:33:33Z", "level": "info", "message": "Test case 5612: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5612, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:33:34Z", "level": "info", "message": "Test case 5613: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5613, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:33:35Z", "level": "info", "message": "Test case 5614: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5614, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:33:36Z", "level": "info", "message": "Test case 5615: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5615, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:33:37Z", "level": "info", "message": "Test case 5616: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5616, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:33:38Z", "level": "info", "message": "Test case 5617: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5617, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:33:39Z", "level": "info", "message": "Test case 5618: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5618, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:33:40Z", "level": "info", "message": "Test case 5619: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5619, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:33:41Z", "level": "info", "message": "Test case 5620: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5620, "data": "wIA="} +{"timestamp": "2024-01-01T01:33:42Z", "level": "info", "message": "Test case 5621: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5621, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:33:43Z", "level": "info", "message": "Test case 5622: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5622, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:33:44Z", "level": "info", "message": "Test case 5623: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5623, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:33:45Z", "level": "info", "message": "Test case 5624: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5624, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:33:46Z", "level": "info", "message": "Test case 5625: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5625, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:33:47Z", "level": "info", "message": "Test case 5626: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5626, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:33:48Z", "level": "info", "message": "Test case 5627: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5627, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:33:49Z", "level": "info", "message": "Test case 5628: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5628, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:33:50Z", "level": "info", "message": "Test case 5629: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5629, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:33:51Z", "level": "info", "message": "Test case 5630: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5630, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:33:52Z", "level": "info", "message": "Test case 5631: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5631, "data": "4ICA"} +{"timestamp": "2024-01-01T01:33:53Z", "level": "info", "message": "Test case 5632: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5632, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:33:54Z", "level": "info", "message": "Test case 5633: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5633, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:33:55Z", "level": "info", "message": "Test case 5634: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5634, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:33:56Z", "level": "info", "message": "Test case 5635: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5635, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:33:57Z", "level": "info", "message": "Test case 5636: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5636, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:33:58Z", "level": "info", "message": "Test case 5637: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5637, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:33:59Z", "level": "info", "message": "Test case 5638: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5638, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:34:00Z", "level": "info", "message": "Test case 5639: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5639, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:34:01Z", "level": "info", "message": "Test case 5640: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5640, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:34:02Z", "level": "info", "message": "Test case 5641: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5641, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:34:03Z", "level": "info", "message": "Test case 5642: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5642, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:34:04Z", "level": "info", "message": "Test case 5643: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5643, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:34:05Z", "level": "info", "message": "Test case 5644: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5644, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:34:06Z", "level": "info", "message": "Test case 5645: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5645, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:34:07Z", "level": "info", "message": "Test case 5646: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5646, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:34:08Z", "level": "info", "message": "Test case 5647: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5647, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:34:09Z", "level": "info", "message": "Test case 5648: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5648, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:34:10Z", "level": "info", "message": "Test case 5649: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5649, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:34:11Z", "level": "info", "message": "Test case 5650: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5650, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:34:12Z", "level": "info", "message": "Test case 5651: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5651, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:34:13Z", "level": "info", "message": "Test case 5652: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5652, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:34:14Z", "level": "info", "message": "Test case 5653: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5653, "data": "4iih"} +{"timestamp": "2024-01-01T01:34:15Z", "level": "info", "message": "Test case 5654: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5654, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:34:16Z", "level": "info", "message": "Test case 5655: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5655, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:34:17Z", "level": "info", "message": "Test case 5656: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5656, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:34:18Z", "level": "info", "message": "Test case 5657: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5657, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:34:19Z", "level": "info", "message": "Test case 5658: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5658, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:34:20Z", "level": "info", "message": "Test case 5659: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5659, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:34:21Z", "level": "info", "message": "Test case 5660: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5660, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:34:22Z", "level": "info", "message": "Test case 5661: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5661, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:34:23Z", "level": "info", "message": "Test case 5662: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5662, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:34:24Z", "level": "info", "message": "Test case 5663: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5663, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:34:25Z", "level": "info", "message": "Test case 5664: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5664, "data": "wg=="} +{"timestamp": "2024-01-01T01:34:26Z", "level": "info", "message": "Test case 5665: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5665, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:34:27Z", "level": "info", "message": "Test case 5666: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5666, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:34:28Z", "level": "info", "message": "Test case 5667: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5667, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:34:29Z", "level": "info", "message": "Test case 5668: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5668, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:34:30Z", "level": "info", "message": "Test case 5669: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5669, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:34:31Z", "level": "info", "message": "Test case 5670: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5670, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:34:32Z", "level": "info", "message": "Test case 5671: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5671, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:34:33Z", "level": "info", "message": "Test case 5672: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5672, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:34:34Z", "level": "info", "message": "Test case 5673: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5673, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:34:35Z", "level": "info", "message": "Test case 5674: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5674, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:34:36Z", "level": "info", "message": "Test case 5675: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5675, "data": "wIA="} +{"timestamp": "2024-01-01T01:34:37Z", "level": "info", "message": "Test case 5676: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5676, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:34:38Z", "level": "info", "message": "Test case 5677: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5677, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:34:39Z", "level": "info", "message": "Test case 5678: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5678, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:34:40Z", "level": "info", "message": "Test case 5679: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5679, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:34:41Z", "level": "info", "message": "Test case 5680: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5680, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:34:42Z", "level": "info", "message": "Test case 5681: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5681, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:34:43Z", "level": "info", "message": "Test case 5682: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5682, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:34:44Z", "level": "info", "message": "Test case 5683: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5683, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:34:45Z", "level": "info", "message": "Test case 5684: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5684, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:34:46Z", "level": "info", "message": "Test case 5685: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5685, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:34:47Z", "level": "info", "message": "Test case 5686: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5686, "data": "4ICA"} +{"timestamp": "2024-01-01T01:34:48Z", "level": "info", "message": "Test case 5687: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5687, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:34:49Z", "level": "info", "message": "Test case 5688: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5688, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:34:50Z", "level": "info", "message": "Test case 5689: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5689, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:34:51Z", "level": "info", "message": "Test case 5690: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5690, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:34:52Z", "level": "info", "message": "Test case 5691: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5691, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:34:53Z", "level": "info", "message": "Test case 5692: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5692, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:34:54Z", "level": "info", "message": "Test case 5693: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5693, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:34:55Z", "level": "info", "message": "Test case 5694: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5694, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:34:56Z", "level": "info", "message": "Test case 5695: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5695, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:34:57Z", "level": "info", "message": "Test case 5696: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5696, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:34:58Z", "level": "info", "message": "Test case 5697: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5697, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:34:59Z", "level": "info", "message": "Test case 5698: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5698, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:35:00Z", "level": "info", "message": "Test case 5699: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5699, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:35:01Z", "level": "info", "message": "Test case 5700: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5700, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:35:02Z", "level": "info", "message": "Test case 5701: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5701, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:35:03Z", "level": "info", "message": "Test case 5702: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5702, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:35:04Z", "level": "info", "message": "Test case 5703: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5703, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:35:05Z", "level": "info", "message": "Test case 5704: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5704, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:35:06Z", "level": "info", "message": "Test case 5705: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5705, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:35:07Z", "level": "info", "message": "Test case 5706: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5706, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:35:08Z", "level": "info", "message": "Test case 5707: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5707, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:35:09Z", "level": "info", "message": "Test case 5708: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5708, "data": "4iih"} +{"timestamp": "2024-01-01T01:35:10Z", "level": "info", "message": "Test case 5709: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5709, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:35:11Z", "level": "info", "message": "Test case 5710: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5710, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:35:12Z", "level": "info", "message": "Test case 5711: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5711, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:35:13Z", "level": "info", "message": "Test case 5712: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5712, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:35:14Z", "level": "info", "message": "Test case 5713: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5713, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:35:15Z", "level": "info", "message": "Test case 5714: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5714, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:35:16Z", "level": "info", "message": "Test case 5715: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5715, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:35:17Z", "level": "info", "message": "Test case 5716: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5716, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:35:18Z", "level": "info", "message": "Test case 5717: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5717, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:35:19Z", "level": "info", "message": "Test case 5718: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5718, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:35:20Z", "level": "info", "message": "Test case 5719: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5719, "data": "wg=="} +{"timestamp": "2024-01-01T01:35:21Z", "level": "info", "message": "Test case 5720: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5720, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:35:22Z", "level": "info", "message": "Test case 5721: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5721, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:35:23Z", "level": "info", "message": "Test case 5722: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5722, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:35:24Z", "level": "info", "message": "Test case 5723: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5723, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:35:25Z", "level": "info", "message": "Test case 5724: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5724, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:35:26Z", "level": "info", "message": "Test case 5725: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5725, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:35:27Z", "level": "info", "message": "Test case 5726: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5726, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:35:28Z", "level": "info", "message": "Test case 5727: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5727, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:35:29Z", "level": "info", "message": "Test case 5728: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5728, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:35:30Z", "level": "info", "message": "Test case 5729: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5729, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:35:31Z", "level": "info", "message": "Test case 5730: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5730, "data": "wIA="} +{"timestamp": "2024-01-01T01:35:32Z", "level": "info", "message": "Test case 5731: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5731, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:35:33Z", "level": "info", "message": "Test case 5732: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5732, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:35:34Z", "level": "info", "message": "Test case 5733: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5733, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:35:35Z", "level": "info", "message": "Test case 5734: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5734, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:35:36Z", "level": "info", "message": "Test case 5735: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5735, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:35:37Z", "level": "info", "message": "Test case 5736: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5736, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:35:38Z", "level": "info", "message": "Test case 5737: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5737, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:35:39Z", "level": "info", "message": "Test case 5738: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5738, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:35:40Z", "level": "info", "message": "Test case 5739: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5739, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:35:41Z", "level": "info", "message": "Test case 5740: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5740, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:35:42Z", "level": "info", "message": "Test case 5741: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5741, "data": "4ICA"} +{"timestamp": "2024-01-01T01:35:43Z", "level": "info", "message": "Test case 5742: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5742, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:35:44Z", "level": "info", "message": "Test case 5743: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5743, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:35:45Z", "level": "info", "message": "Test case 5744: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5744, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:35:46Z", "level": "info", "message": "Test case 5745: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5745, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:35:47Z", "level": "info", "message": "Test case 5746: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5746, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:35:48Z", "level": "info", "message": "Test case 5747: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5747, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:35:49Z", "level": "info", "message": "Test case 5748: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5748, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:35:50Z", "level": "info", "message": "Test case 5749: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5749, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:35:51Z", "level": "info", "message": "Test case 5750: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5750, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:35:52Z", "level": "info", "message": "Test case 5751: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5751, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:35:53Z", "level": "info", "message": "Test case 5752: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5752, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:35:54Z", "level": "info", "message": "Test case 5753: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5753, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:35:55Z", "level": "info", "message": "Test case 5754: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5754, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:35:56Z", "level": "info", "message": "Test case 5755: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5755, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:35:57Z", "level": "info", "message": "Test case 5756: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5756, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:35:58Z", "level": "info", "message": "Test case 5757: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5757, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:35:59Z", "level": "info", "message": "Test case 5758: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5758, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:36:00Z", "level": "info", "message": "Test case 5759: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5759, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:36:01Z", "level": "info", "message": "Test case 5760: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5760, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:36:02Z", "level": "info", "message": "Test case 5761: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5761, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:36:03Z", "level": "info", "message": "Test case 5762: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5762, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:36:04Z", "level": "info", "message": "Test case 5763: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5763, "data": "4iih"} +{"timestamp": "2024-01-01T01:36:05Z", "level": "info", "message": "Test case 5764: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5764, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:36:06Z", "level": "info", "message": "Test case 5765: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5765, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:36:07Z", "level": "info", "message": "Test case 5766: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5766, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:36:08Z", "level": "info", "message": "Test case 5767: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5767, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:36:09Z", "level": "info", "message": "Test case 5768: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5768, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:36:10Z", "level": "info", "message": "Test case 5769: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5769, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:36:11Z", "level": "info", "message": "Test case 5770: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5770, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:36:12Z", "level": "info", "message": "Test case 5771: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5771, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:36:13Z", "level": "info", "message": "Test case 5772: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5772, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:36:14Z", "level": "info", "message": "Test case 5773: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5773, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:36:15Z", "level": "info", "message": "Test case 5774: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5774, "data": "wg=="} +{"timestamp": "2024-01-01T01:36:16Z", "level": "info", "message": "Test case 5775: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5775, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:36:17Z", "level": "info", "message": "Test case 5776: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5776, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:36:18Z", "level": "info", "message": "Test case 5777: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5777, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:36:19Z", "level": "info", "message": "Test case 5778: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5778, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:36:20Z", "level": "info", "message": "Test case 5779: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5779, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:36:21Z", "level": "info", "message": "Test case 5780: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5780, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:36:22Z", "level": "info", "message": "Test case 5781: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5781, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:36:23Z", "level": "info", "message": "Test case 5782: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5782, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:36:24Z", "level": "info", "message": "Test case 5783: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5783, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:36:25Z", "level": "info", "message": "Test case 5784: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5784, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:36:26Z", "level": "info", "message": "Test case 5785: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5785, "data": "wIA="} +{"timestamp": "2024-01-01T01:36:27Z", "level": "info", "message": "Test case 5786: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5786, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:36:28Z", "level": "info", "message": "Test case 5787: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5787, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:36:29Z", "level": "info", "message": "Test case 5788: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5788, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:36:30Z", "level": "info", "message": "Test case 5789: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5789, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:36:31Z", "level": "info", "message": "Test case 5790: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5790, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:36:32Z", "level": "info", "message": "Test case 5791: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5791, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:36:33Z", "level": "info", "message": "Test case 5792: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5792, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:36:34Z", "level": "info", "message": "Test case 5793: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5793, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:36:35Z", "level": "info", "message": "Test case 5794: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5794, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:36:36Z", "level": "info", "message": "Test case 5795: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5795, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:36:37Z", "level": "info", "message": "Test case 5796: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5796, "data": "4ICA"} +{"timestamp": "2024-01-01T01:36:38Z", "level": "info", "message": "Test case 5797: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5797, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:36:39Z", "level": "info", "message": "Test case 5798: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5798, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:36:40Z", "level": "info", "message": "Test case 5799: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5799, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:36:41Z", "level": "info", "message": "Test case 5800: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5800, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:36:42Z", "level": "info", "message": "Test case 5801: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5801, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:36:43Z", "level": "info", "message": "Test case 5802: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5802, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:36:44Z", "level": "info", "message": "Test case 5803: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5803, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:36:45Z", "level": "info", "message": "Test case 5804: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5804, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:36:46Z", "level": "info", "message": "Test case 5805: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5805, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:36:47Z", "level": "info", "message": "Test case 5806: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5806, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:36:48Z", "level": "info", "message": "Test case 5807: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5807, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:36:49Z", "level": "info", "message": "Test case 5808: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5808, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:36:50Z", "level": "info", "message": "Test case 5809: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5809, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:36:51Z", "level": "info", "message": "Test case 5810: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5810, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:36:52Z", "level": "info", "message": "Test case 5811: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5811, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:36:53Z", "level": "info", "message": "Test case 5812: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5812, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:36:54Z", "level": "info", "message": "Test case 5813: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5813, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:36:55Z", "level": "info", "message": "Test case 5814: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5814, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:36:56Z", "level": "info", "message": "Test case 5815: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5815, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:36:57Z", "level": "info", "message": "Test case 5816: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5816, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:36:58Z", "level": "info", "message": "Test case 5817: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5817, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:36:59Z", "level": "info", "message": "Test case 5818: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5818, "data": "4iih"} +{"timestamp": "2024-01-01T01:37:00Z", "level": "info", "message": "Test case 5819: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5819, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:37:01Z", "level": "info", "message": "Test case 5820: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5820, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:37:02Z", "level": "info", "message": "Test case 5821: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5821, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:37:03Z", "level": "info", "message": "Test case 5822: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5822, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:37:04Z", "level": "info", "message": "Test case 5823: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5823, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:37:05Z", "level": "info", "message": "Test case 5824: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5824, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:37:06Z", "level": "info", "message": "Test case 5825: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5825, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:37:07Z", "level": "info", "message": "Test case 5826: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5826, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:37:08Z", "level": "info", "message": "Test case 5827: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5827, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:37:09Z", "level": "info", "message": "Test case 5828: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5828, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:37:10Z", "level": "info", "message": "Test case 5829: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5829, "data": "wg=="} +{"timestamp": "2024-01-01T01:37:11Z", "level": "info", "message": "Test case 5830: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5830, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:37:12Z", "level": "info", "message": "Test case 5831: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5831, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:37:13Z", "level": "info", "message": "Test case 5832: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5832, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:37:14Z", "level": "info", "message": "Test case 5833: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5833, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:37:15Z", "level": "info", "message": "Test case 5834: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5834, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:37:16Z", "level": "info", "message": "Test case 5835: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5835, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:37:17Z", "level": "info", "message": "Test case 5836: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5836, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:37:18Z", "level": "info", "message": "Test case 5837: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5837, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:37:19Z", "level": "info", "message": "Test case 5838: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5838, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:37:20Z", "level": "info", "message": "Test case 5839: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5839, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:37:21Z", "level": "info", "message": "Test case 5840: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5840, "data": "wIA="} +{"timestamp": "2024-01-01T01:37:22Z", "level": "info", "message": "Test case 5841: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5841, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:37:23Z", "level": "info", "message": "Test case 5842: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5842, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:37:24Z", "level": "info", "message": "Test case 5843: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5843, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:37:25Z", "level": "info", "message": "Test case 5844: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5844, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:37:26Z", "level": "info", "message": "Test case 5845: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5845, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:37:27Z", "level": "info", "message": "Test case 5846: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5846, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:37:28Z", "level": "info", "message": "Test case 5847: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5847, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:37:29Z", "level": "info", "message": "Test case 5848: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5848, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:37:30Z", "level": "info", "message": "Test case 5849: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5849, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:37:31Z", "level": "info", "message": "Test case 5850: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5850, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:37:32Z", "level": "info", "message": "Test case 5851: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5851, "data": "4ICA"} +{"timestamp": "2024-01-01T01:37:33Z", "level": "info", "message": "Test case 5852: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5852, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:37:34Z", "level": "info", "message": "Test case 5853: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5853, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:37:35Z", "level": "info", "message": "Test case 5854: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5854, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:37:36Z", "level": "info", "message": "Test case 5855: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5855, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:37:37Z", "level": "info", "message": "Test case 5856: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5856, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:37:38Z", "level": "info", "message": "Test case 5857: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5857, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:37:39Z", "level": "info", "message": "Test case 5858: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5858, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:37:40Z", "level": "info", "message": "Test case 5859: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5859, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:37:41Z", "level": "info", "message": "Test case 5860: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5860, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:37:42Z", "level": "info", "message": "Test case 5861: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5861, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:37:43Z", "level": "info", "message": "Test case 5862: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5862, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:37:44Z", "level": "info", "message": "Test case 5863: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5863, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:37:45Z", "level": "info", "message": "Test case 5864: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5864, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:37:46Z", "level": "info", "message": "Test case 5865: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5865, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:37:47Z", "level": "info", "message": "Test case 5866: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5866, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:37:48Z", "level": "info", "message": "Test case 5867: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5867, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:37:49Z", "level": "info", "message": "Test case 5868: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5868, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:37:50Z", "level": "info", "message": "Test case 5869: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5869, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:37:51Z", "level": "info", "message": "Test case 5870: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5870, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:37:52Z", "level": "info", "message": "Test case 5871: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5871, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:37:53Z", "level": "info", "message": "Test case 5872: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5872, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:37:54Z", "level": "info", "message": "Test case 5873: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5873, "data": "4iih"} +{"timestamp": "2024-01-01T01:37:55Z", "level": "info", "message": "Test case 5874: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5874, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:37:56Z", "level": "info", "message": "Test case 5875: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5875, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:37:57Z", "level": "info", "message": "Test case 5876: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5876, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:37:58Z", "level": "info", "message": "Test case 5877: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5877, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:37:59Z", "level": "info", "message": "Test case 5878: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5878, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:38:00Z", "level": "info", "message": "Test case 5879: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5879, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:38:01Z", "level": "info", "message": "Test case 5880: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5880, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:38:02Z", "level": "info", "message": "Test case 5881: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5881, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:38:03Z", "level": "info", "message": "Test case 5882: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5882, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:38:04Z", "level": "info", "message": "Test case 5883: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5883, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:38:05Z", "level": "info", "message": "Test case 5884: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5884, "data": "wg=="} +{"timestamp": "2024-01-01T01:38:06Z", "level": "info", "message": "Test case 5885: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5885, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:38:07Z", "level": "info", "message": "Test case 5886: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5886, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:38:08Z", "level": "info", "message": "Test case 5887: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5887, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:38:09Z", "level": "info", "message": "Test case 5888: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5888, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:38:10Z", "level": "info", "message": "Test case 5889: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5889, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:38:11Z", "level": "info", "message": "Test case 5890: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5890, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:38:12Z", "level": "info", "message": "Test case 5891: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5891, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:38:13Z", "level": "info", "message": "Test case 5892: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5892, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:38:14Z", "level": "info", "message": "Test case 5893: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5893, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:38:15Z", "level": "info", "message": "Test case 5894: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5894, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:38:16Z", "level": "info", "message": "Test case 5895: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5895, "data": "wIA="} +{"timestamp": "2024-01-01T01:38:17Z", "level": "info", "message": "Test case 5896: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5896, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:38:18Z", "level": "info", "message": "Test case 5897: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5897, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:38:19Z", "level": "info", "message": "Test case 5898: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5898, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:38:20Z", "level": "info", "message": "Test case 5899: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5899, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:38:21Z", "level": "info", "message": "Test case 5900: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5900, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:38:22Z", "level": "info", "message": "Test case 5901: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5901, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:38:23Z", "level": "info", "message": "Test case 5902: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5902, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:38:24Z", "level": "info", "message": "Test case 5903: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5903, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:38:25Z", "level": "info", "message": "Test case 5904: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5904, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:38:26Z", "level": "info", "message": "Test case 5905: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5905, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:38:27Z", "level": "info", "message": "Test case 5906: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5906, "data": "4ICA"} +{"timestamp": "2024-01-01T01:38:28Z", "level": "info", "message": "Test case 5907: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5907, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:38:29Z", "level": "info", "message": "Test case 5908: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5908, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:38:30Z", "level": "info", "message": "Test case 5909: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5909, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:38:31Z", "level": "info", "message": "Test case 5910: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5910, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:38:32Z", "level": "info", "message": "Test case 5911: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5911, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:38:33Z", "level": "info", "message": "Test case 5912: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5912, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:38:34Z", "level": "info", "message": "Test case 5913: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5913, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:38:35Z", "level": "info", "message": "Test case 5914: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5914, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:38:36Z", "level": "info", "message": "Test case 5915: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5915, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:38:37Z", "level": "info", "message": "Test case 5916: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5916, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:38:38Z", "level": "info", "message": "Test case 5917: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5917, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:38:39Z", "level": "info", "message": "Test case 5918: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5918, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:38:40Z", "level": "info", "message": "Test case 5919: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5919, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:38:41Z", "level": "info", "message": "Test case 5920: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5920, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:38:42Z", "level": "info", "message": "Test case 5921: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5921, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:38:43Z", "level": "info", "message": "Test case 5922: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5922, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:38:44Z", "level": "info", "message": "Test case 5923: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5923, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:38:45Z", "level": "info", "message": "Test case 5924: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5924, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:38:46Z", "level": "info", "message": "Test case 5925: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5925, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:38:47Z", "level": "info", "message": "Test case 5926: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5926, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:38:48Z", "level": "info", "message": "Test case 5927: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5927, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:38:49Z", "level": "info", "message": "Test case 5928: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5928, "data": "4iih"} +{"timestamp": "2024-01-01T01:38:50Z", "level": "info", "message": "Test case 5929: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5929, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:38:51Z", "level": "info", "message": "Test case 5930: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5930, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:38:52Z", "level": "info", "message": "Test case 5931: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5931, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:38:53Z", "level": "info", "message": "Test case 5932: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5932, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:38:54Z", "level": "info", "message": "Test case 5933: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5933, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:38:55Z", "level": "info", "message": "Test case 5934: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5934, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:38:56Z", "level": "info", "message": "Test case 5935: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5935, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:38:57Z", "level": "info", "message": "Test case 5936: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5936, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:38:58Z", "level": "info", "message": "Test case 5937: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5937, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:38:59Z", "level": "info", "message": "Test case 5938: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5938, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:39:00Z", "level": "info", "message": "Test case 5939: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5939, "data": "wg=="} +{"timestamp": "2024-01-01T01:39:01Z", "level": "info", "message": "Test case 5940: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5940, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:39:02Z", "level": "info", "message": "Test case 5941: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5941, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:39:03Z", "level": "info", "message": "Test case 5942: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5942, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:39:04Z", "level": "info", "message": "Test case 5943: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5943, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:39:05Z", "level": "info", "message": "Test case 5944: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5944, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:39:06Z", "level": "info", "message": "Test case 5945: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5945, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:39:07Z", "level": "info", "message": "Test case 5946: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5946, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:39:08Z", "level": "info", "message": "Test case 5947: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5947, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:39:09Z", "level": "info", "message": "Test case 5948: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5948, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:39:10Z", "level": "info", "message": "Test case 5949: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5949, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:39:11Z", "level": "info", "message": "Test case 5950: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5950, "data": "wIA="} +{"timestamp": "2024-01-01T01:39:12Z", "level": "info", "message": "Test case 5951: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5951, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:39:13Z", "level": "info", "message": "Test case 5952: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5952, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:39:14Z", "level": "info", "message": "Test case 5953: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5953, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:39:15Z", "level": "info", "message": "Test case 5954: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5954, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:39:16Z", "level": "info", "message": "Test case 5955: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5955, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:39:17Z", "level": "info", "message": "Test case 5956: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5956, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:39:18Z", "level": "info", "message": "Test case 5957: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5957, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:39:19Z", "level": "info", "message": "Test case 5958: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5958, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:39:20Z", "level": "info", "message": "Test case 5959: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5959, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:39:21Z", "level": "info", "message": "Test case 5960: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5960, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:39:22Z", "level": "info", "message": "Test case 5961: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5961, "data": "4ICA"} +{"timestamp": "2024-01-01T01:39:23Z", "level": "info", "message": "Test case 5962: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5962, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:39:24Z", "level": "info", "message": "Test case 5963: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5963, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:39:25Z", "level": "info", "message": "Test case 5964: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5964, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:39:26Z", "level": "info", "message": "Test case 5965: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5965, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:39:27Z", "level": "info", "message": "Test case 5966: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5966, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:39:28Z", "level": "info", "message": "Test case 5967: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5967, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:39:29Z", "level": "info", "message": "Test case 5968: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5968, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:39:30Z", "level": "info", "message": "Test case 5969: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5969, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:39:31Z", "level": "info", "message": "Test case 5970: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5970, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:39:32Z", "level": "info", "message": "Test case 5971: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5971, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:39:33Z", "level": "info", "message": "Test case 5972: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5972, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:39:34Z", "level": "info", "message": "Test case 5973: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5973, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:39:35Z", "level": "info", "message": "Test case 5974: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5974, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:39:36Z", "level": "info", "message": "Test case 5975: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5975, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:39:37Z", "level": "info", "message": "Test case 5976: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5976, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:39:38Z", "level": "info", "message": "Test case 5977: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5977, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:39:39Z", "level": "info", "message": "Test case 5978: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5978, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:39:40Z", "level": "info", "message": "Test case 5979: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5979, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:39:41Z", "level": "info", "message": "Test case 5980: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5980, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:39:42Z", "level": "info", "message": "Test case 5981: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5981, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:39:43Z", "level": "info", "message": "Test case 5982: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5982, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:39:44Z", "level": "info", "message": "Test case 5983: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5983, "data": "4iih"} +{"timestamp": "2024-01-01T01:39:45Z", "level": "info", "message": "Test case 5984: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5984, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:39:46Z", "level": "info", "message": "Test case 5985: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5985, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:39:47Z", "level": "info", "message": "Test case 5986: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5986, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:39:48Z", "level": "info", "message": "Test case 5987: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5987, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:39:49Z", "level": "info", "message": "Test case 5988: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5988, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:39:50Z", "level": "info", "message": "Test case 5989: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 5989, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:39:51Z", "level": "info", "message": "Test case 5990: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 5990, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:39:52Z", "level": "info", "message": "Test case 5991: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 5991, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:39:53Z", "level": "info", "message": "Test case 5992: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 5992, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:39:54Z", "level": "info", "message": "Test case 5993: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 5993, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:39:55Z", "level": "info", "message": "Test case 5994: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 5994, "data": "wg=="} +{"timestamp": "2024-01-01T01:39:56Z", "level": "info", "message": "Test case 5995: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 5995, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:39:57Z", "level": "info", "message": "Test case 5996: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 5996, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:39:58Z", "level": "info", "message": "Test case 5997: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 5997, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:39:59Z", "level": "info", "message": "Test case 5998: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 5998, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:40:00Z", "level": "info", "message": "Test case 5999: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 5999, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:40:01Z", "level": "info", "message": "Test case 6000: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6000, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:40:02Z", "level": "info", "message": "Test case 6001: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6001, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:40:03Z", "level": "info", "message": "Test case 6002: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6002, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:40:04Z", "level": "info", "message": "Test case 6003: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6003, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:40:05Z", "level": "info", "message": "Test case 6004: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6004, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:40:06Z", "level": "info", "message": "Test case 6005: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6005, "data": "wIA="} +{"timestamp": "2024-01-01T01:40:07Z", "level": "info", "message": "Test case 6006: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6006, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:40:08Z", "level": "info", "message": "Test case 6007: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6007, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:40:09Z", "level": "info", "message": "Test case 6008: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6008, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:40:10Z", "level": "info", "message": "Test case 6009: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6009, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:40:11Z", "level": "info", "message": "Test case 6010: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6010, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:40:12Z", "level": "info", "message": "Test case 6011: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6011, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:40:13Z", "level": "info", "message": "Test case 6012: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6012, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:40:14Z", "level": "info", "message": "Test case 6013: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6013, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:40:15Z", "level": "info", "message": "Test case 6014: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6014, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:40:16Z", "level": "info", "message": "Test case 6015: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6015, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:40:17Z", "level": "info", "message": "Test case 6016: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6016, "data": "4ICA"} +{"timestamp": "2024-01-01T01:40:18Z", "level": "info", "message": "Test case 6017: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6017, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:40:19Z", "level": "info", "message": "Test case 6018: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6018, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:40:20Z", "level": "info", "message": "Test case 6019: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6019, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:40:21Z", "level": "info", "message": "Test case 6020: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6020, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:40:22Z", "level": "info", "message": "Test case 6021: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6021, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:40:23Z", "level": "info", "message": "Test case 6022: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6022, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:40:24Z", "level": "info", "message": "Test case 6023: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6023, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:40:25Z", "level": "info", "message": "Test case 6024: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6024, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:40:26Z", "level": "info", "message": "Test case 6025: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6025, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:40:27Z", "level": "info", "message": "Test case 6026: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6026, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:40:28Z", "level": "info", "message": "Test case 6027: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6027, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:40:29Z", "level": "info", "message": "Test case 6028: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6028, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:40:30Z", "level": "info", "message": "Test case 6029: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6029, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:40:31Z", "level": "info", "message": "Test case 6030: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6030, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:40:32Z", "level": "info", "message": "Test case 6031: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6031, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:40:33Z", "level": "info", "message": "Test case 6032: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6032, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:40:34Z", "level": "info", "message": "Test case 6033: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6033, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:40:35Z", "level": "info", "message": "Test case 6034: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6034, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:40:36Z", "level": "info", "message": "Test case 6035: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6035, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:40:37Z", "level": "info", "message": "Test case 6036: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6036, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:40:38Z", "level": "info", "message": "Test case 6037: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6037, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:40:39Z", "level": "info", "message": "Test case 6038: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6038, "data": "4iih"} +{"timestamp": "2024-01-01T01:40:40Z", "level": "info", "message": "Test case 6039: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6039, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:40:41Z", "level": "info", "message": "Test case 6040: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6040, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:40:42Z", "level": "info", "message": "Test case 6041: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6041, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:40:43Z", "level": "info", "message": "Test case 6042: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6042, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:40:44Z", "level": "info", "message": "Test case 6043: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6043, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:40:45Z", "level": "info", "message": "Test case 6044: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6044, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:40:46Z", "level": "info", "message": "Test case 6045: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6045, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:40:47Z", "level": "info", "message": "Test case 6046: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6046, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:40:48Z", "level": "info", "message": "Test case 6047: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6047, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:40:49Z", "level": "info", "message": "Test case 6048: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6048, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:40:50Z", "level": "info", "message": "Test case 6049: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6049, "data": "wg=="} +{"timestamp": "2024-01-01T01:40:51Z", "level": "info", "message": "Test case 6050: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6050, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:40:52Z", "level": "info", "message": "Test case 6051: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6051, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:40:53Z", "level": "info", "message": "Test case 6052: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6052, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:40:54Z", "level": "info", "message": "Test case 6053: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6053, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:40:55Z", "level": "info", "message": "Test case 6054: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6054, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:40:56Z", "level": "info", "message": "Test case 6055: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6055, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:40:57Z", "level": "info", "message": "Test case 6056: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6056, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:40:58Z", "level": "info", "message": "Test case 6057: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6057, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:40:59Z", "level": "info", "message": "Test case 6058: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6058, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:41:00Z", "level": "info", "message": "Test case 6059: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6059, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:41:01Z", "level": "info", "message": "Test case 6060: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6060, "data": "wIA="} +{"timestamp": "2024-01-01T01:41:02Z", "level": "info", "message": "Test case 6061: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6061, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:41:03Z", "level": "info", "message": "Test case 6062: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6062, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:41:04Z", "level": "info", "message": "Test case 6063: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6063, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:41:05Z", "level": "info", "message": "Test case 6064: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6064, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:41:06Z", "level": "info", "message": "Test case 6065: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6065, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:41:07Z", "level": "info", "message": "Test case 6066: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6066, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:41:08Z", "level": "info", "message": "Test case 6067: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6067, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:41:09Z", "level": "info", "message": "Test case 6068: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6068, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:41:10Z", "level": "info", "message": "Test case 6069: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6069, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:41:11Z", "level": "info", "message": "Test case 6070: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6070, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:41:12Z", "level": "info", "message": "Test case 6071: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6071, "data": "4ICA"} +{"timestamp": "2024-01-01T01:41:13Z", "level": "info", "message": "Test case 6072: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6072, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:41:14Z", "level": "info", "message": "Test case 6073: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6073, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:41:15Z", "level": "info", "message": "Test case 6074: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6074, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:41:16Z", "level": "info", "message": "Test case 6075: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6075, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:41:17Z", "level": "info", "message": "Test case 6076: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6076, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:41:18Z", "level": "info", "message": "Test case 6077: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6077, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:41:19Z", "level": "info", "message": "Test case 6078: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6078, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:41:20Z", "level": "info", "message": "Test case 6079: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6079, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:41:21Z", "level": "info", "message": "Test case 6080: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6080, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:41:22Z", "level": "info", "message": "Test case 6081: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6081, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:41:23Z", "level": "info", "message": "Test case 6082: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6082, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:41:24Z", "level": "info", "message": "Test case 6083: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6083, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:41:25Z", "level": "info", "message": "Test case 6084: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6084, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:41:26Z", "level": "info", "message": "Test case 6085: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6085, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:41:27Z", "level": "info", "message": "Test case 6086: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6086, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:41:28Z", "level": "info", "message": "Test case 6087: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6087, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:41:29Z", "level": "info", "message": "Test case 6088: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6088, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:41:30Z", "level": "info", "message": "Test case 6089: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6089, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:41:31Z", "level": "info", "message": "Test case 6090: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6090, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:41:32Z", "level": "info", "message": "Test case 6091: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6091, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:41:33Z", "level": "info", "message": "Test case 6092: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6092, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:41:34Z", "level": "info", "message": "Test case 6093: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6093, "data": "4iih"} +{"timestamp": "2024-01-01T01:41:35Z", "level": "info", "message": "Test case 6094: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6094, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:41:36Z", "level": "info", "message": "Test case 6095: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6095, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:41:37Z", "level": "info", "message": "Test case 6096: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6096, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:41:38Z", "level": "info", "message": "Test case 6097: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6097, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:41:39Z", "level": "info", "message": "Test case 6098: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6098, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:41:40Z", "level": "info", "message": "Test case 6099: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6099, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:41:41Z", "level": "info", "message": "Test case 6100: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6100, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:41:42Z", "level": "info", "message": "Test case 6101: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6101, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:41:43Z", "level": "info", "message": "Test case 6102: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6102, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:41:44Z", "level": "info", "message": "Test case 6103: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6103, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:41:45Z", "level": "info", "message": "Test case 6104: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6104, "data": "wg=="} +{"timestamp": "2024-01-01T01:41:46Z", "level": "info", "message": "Test case 6105: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6105, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:41:47Z", "level": "info", "message": "Test case 6106: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6106, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:41:48Z", "level": "info", "message": "Test case 6107: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6107, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:41:49Z", "level": "info", "message": "Test case 6108: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6108, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:41:50Z", "level": "info", "message": "Test case 6109: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6109, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:41:51Z", "level": "info", "message": "Test case 6110: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6110, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:41:52Z", "level": "info", "message": "Test case 6111: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6111, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:41:53Z", "level": "info", "message": "Test case 6112: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6112, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:41:54Z", "level": "info", "message": "Test case 6113: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6113, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:41:55Z", "level": "info", "message": "Test case 6114: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6114, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:41:56Z", "level": "info", "message": "Test case 6115: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6115, "data": "wIA="} +{"timestamp": "2024-01-01T01:41:57Z", "level": "info", "message": "Test case 6116: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6116, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:41:58Z", "level": "info", "message": "Test case 6117: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6117, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:41:59Z", "level": "info", "message": "Test case 6118: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6118, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:42:00Z", "level": "info", "message": "Test case 6119: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6119, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:42:01Z", "level": "info", "message": "Test case 6120: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6120, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:42:02Z", "level": "info", "message": "Test case 6121: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6121, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:42:03Z", "level": "info", "message": "Test case 6122: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6122, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:42:04Z", "level": "info", "message": "Test case 6123: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6123, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:42:05Z", "level": "info", "message": "Test case 6124: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6124, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:42:06Z", "level": "info", "message": "Test case 6125: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6125, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:42:07Z", "level": "info", "message": "Test case 6126: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6126, "data": "4ICA"} +{"timestamp": "2024-01-01T01:42:08Z", "level": "info", "message": "Test case 6127: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6127, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:42:09Z", "level": "info", "message": "Test case 6128: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6128, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:42:10Z", "level": "info", "message": "Test case 6129: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6129, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:42:11Z", "level": "info", "message": "Test case 6130: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6130, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:42:12Z", "level": "info", "message": "Test case 6131: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6131, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:42:13Z", "level": "info", "message": "Test case 6132: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6132, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:42:14Z", "level": "info", "message": "Test case 6133: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6133, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:42:15Z", "level": "info", "message": "Test case 6134: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6134, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:42:16Z", "level": "info", "message": "Test case 6135: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6135, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:42:17Z", "level": "info", "message": "Test case 6136: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6136, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:42:18Z", "level": "info", "message": "Test case 6137: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6137, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:42:19Z", "level": "info", "message": "Test case 6138: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6138, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:42:20Z", "level": "info", "message": "Test case 6139: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6139, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:42:21Z", "level": "info", "message": "Test case 6140: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6140, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:42:22Z", "level": "info", "message": "Test case 6141: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6141, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:42:23Z", "level": "info", "message": "Test case 6142: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6142, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:42:24Z", "level": "info", "message": "Test case 6143: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6143, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:42:25Z", "level": "info", "message": "Test case 6144: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6144, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:42:26Z", "level": "info", "message": "Test case 6145: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6145, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:42:27Z", "level": "info", "message": "Test case 6146: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6146, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:42:28Z", "level": "info", "message": "Test case 6147: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6147, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:42:29Z", "level": "info", "message": "Test case 6148: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6148, "data": "4iih"} +{"timestamp": "2024-01-01T01:42:30Z", "level": "info", "message": "Test case 6149: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6149, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:42:31Z", "level": "info", "message": "Test case 6150: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6150, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:42:32Z", "level": "info", "message": "Test case 6151: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6151, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:42:33Z", "level": "info", "message": "Test case 6152: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6152, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:42:34Z", "level": "info", "message": "Test case 6153: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6153, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:42:35Z", "level": "info", "message": "Test case 6154: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6154, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:42:36Z", "level": "info", "message": "Test case 6155: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6155, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:42:37Z", "level": "info", "message": "Test case 6156: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6156, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:42:38Z", "level": "info", "message": "Test case 6157: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6157, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:42:39Z", "level": "info", "message": "Test case 6158: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6158, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:42:40Z", "level": "info", "message": "Test case 6159: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6159, "data": "wg=="} +{"timestamp": "2024-01-01T01:42:41Z", "level": "info", "message": "Test case 6160: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6160, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:42:42Z", "level": "info", "message": "Test case 6161: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6161, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:42:43Z", "level": "info", "message": "Test case 6162: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6162, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:42:44Z", "level": "info", "message": "Test case 6163: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6163, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:42:45Z", "level": "info", "message": "Test case 6164: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6164, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:42:46Z", "level": "info", "message": "Test case 6165: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6165, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:42:47Z", "level": "info", "message": "Test case 6166: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6166, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:42:48Z", "level": "info", "message": "Test case 6167: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6167, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:42:49Z", "level": "info", "message": "Test case 6168: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6168, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:42:50Z", "level": "info", "message": "Test case 6169: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6169, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:42:51Z", "level": "info", "message": "Test case 6170: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6170, "data": "wIA="} +{"timestamp": "2024-01-01T01:42:52Z", "level": "info", "message": "Test case 6171: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6171, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:42:53Z", "level": "info", "message": "Test case 6172: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6172, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:42:54Z", "level": "info", "message": "Test case 6173: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6173, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:42:55Z", "level": "info", "message": "Test case 6174: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6174, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:42:56Z", "level": "info", "message": "Test case 6175: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6175, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:42:57Z", "level": "info", "message": "Test case 6176: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6176, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:42:58Z", "level": "info", "message": "Test case 6177: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6177, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:42:59Z", "level": "info", "message": "Test case 6178: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6178, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:43:00Z", "level": "info", "message": "Test case 6179: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6179, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:43:01Z", "level": "info", "message": "Test case 6180: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6180, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:43:02Z", "level": "info", "message": "Test case 6181: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6181, "data": "4ICA"} +{"timestamp": "2024-01-01T01:43:03Z", "level": "info", "message": "Test case 6182: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6182, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:43:04Z", "level": "info", "message": "Test case 6183: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6183, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:43:05Z", "level": "info", "message": "Test case 6184: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6184, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:43:06Z", "level": "info", "message": "Test case 6185: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6185, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:43:07Z", "level": "info", "message": "Test case 6186: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6186, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:43:08Z", "level": "info", "message": "Test case 6187: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6187, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:43:09Z", "level": "info", "message": "Test case 6188: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6188, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:43:10Z", "level": "info", "message": "Test case 6189: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6189, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:43:11Z", "level": "info", "message": "Test case 6190: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6190, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:43:12Z", "level": "info", "message": "Test case 6191: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6191, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:43:13Z", "level": "info", "message": "Test case 6192: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6192, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:43:14Z", "level": "info", "message": "Test case 6193: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6193, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:43:15Z", "level": "info", "message": "Test case 6194: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6194, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:43:16Z", "level": "info", "message": "Test case 6195: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6195, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:43:17Z", "level": "info", "message": "Test case 6196: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6196, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:43:18Z", "level": "info", "message": "Test case 6197: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6197, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:43:19Z", "level": "info", "message": "Test case 6198: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6198, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:43:20Z", "level": "info", "message": "Test case 6199: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6199, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:43:21Z", "level": "info", "message": "Test case 6200: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6200, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:43:22Z", "level": "info", "message": "Test case 6201: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6201, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:43:23Z", "level": "info", "message": "Test case 6202: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6202, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:43:24Z", "level": "info", "message": "Test case 6203: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6203, "data": "4iih"} +{"timestamp": "2024-01-01T01:43:25Z", "level": "info", "message": "Test case 6204: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6204, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:43:26Z", "level": "info", "message": "Test case 6205: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6205, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:43:27Z", "level": "info", "message": "Test case 6206: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6206, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:43:28Z", "level": "info", "message": "Test case 6207: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6207, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:43:29Z", "level": "info", "message": "Test case 6208: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6208, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:43:30Z", "level": "info", "message": "Test case 6209: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6209, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:43:31Z", "level": "info", "message": "Test case 6210: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6210, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:43:32Z", "level": "info", "message": "Test case 6211: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6211, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:43:33Z", "level": "info", "message": "Test case 6212: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6212, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:43:34Z", "level": "info", "message": "Test case 6213: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6213, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:43:35Z", "level": "info", "message": "Test case 6214: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6214, "data": "wg=="} +{"timestamp": "2024-01-01T01:43:36Z", "level": "info", "message": "Test case 6215: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6215, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:43:37Z", "level": "info", "message": "Test case 6216: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6216, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:43:38Z", "level": "info", "message": "Test case 6217: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6217, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:43:39Z", "level": "info", "message": "Test case 6218: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6218, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:43:40Z", "level": "info", "message": "Test case 6219: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6219, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:43:41Z", "level": "info", "message": "Test case 6220: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6220, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:43:42Z", "level": "info", "message": "Test case 6221: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6221, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:43:43Z", "level": "info", "message": "Test case 6222: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6222, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:43:44Z", "level": "info", "message": "Test case 6223: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6223, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:43:45Z", "level": "info", "message": "Test case 6224: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6224, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:43:46Z", "level": "info", "message": "Test case 6225: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6225, "data": "wIA="} +{"timestamp": "2024-01-01T01:43:47Z", "level": "info", "message": "Test case 6226: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6226, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:43:48Z", "level": "info", "message": "Test case 6227: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6227, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:43:49Z", "level": "info", "message": "Test case 6228: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6228, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:43:50Z", "level": "info", "message": "Test case 6229: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6229, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:43:51Z", "level": "info", "message": "Test case 6230: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6230, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:43:52Z", "level": "info", "message": "Test case 6231: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6231, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:43:53Z", "level": "info", "message": "Test case 6232: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6232, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:43:54Z", "level": "info", "message": "Test case 6233: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6233, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:43:55Z", "level": "info", "message": "Test case 6234: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6234, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:43:56Z", "level": "info", "message": "Test case 6235: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6235, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:43:57Z", "level": "info", "message": "Test case 6236: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6236, "data": "4ICA"} +{"timestamp": "2024-01-01T01:43:58Z", "level": "info", "message": "Test case 6237: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6237, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:43:59Z", "level": "info", "message": "Test case 6238: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6238, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:44:00Z", "level": "info", "message": "Test case 6239: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6239, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:44:01Z", "level": "info", "message": "Test case 6240: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6240, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:44:02Z", "level": "info", "message": "Test case 6241: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6241, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:44:03Z", "level": "info", "message": "Test case 6242: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6242, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:44:04Z", "level": "info", "message": "Test case 6243: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6243, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:44:05Z", "level": "info", "message": "Test case 6244: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6244, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:44:06Z", "level": "info", "message": "Test case 6245: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6245, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:44:07Z", "level": "info", "message": "Test case 6246: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6246, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:44:08Z", "level": "info", "message": "Test case 6247: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6247, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:44:09Z", "level": "info", "message": "Test case 6248: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6248, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:44:10Z", "level": "info", "message": "Test case 6249: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6249, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:44:11Z", "level": "info", "message": "Test case 6250: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6250, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:44:12Z", "level": "info", "message": "Test case 6251: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6251, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:44:13Z", "level": "info", "message": "Test case 6252: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6252, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:44:14Z", "level": "info", "message": "Test case 6253: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6253, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:44:15Z", "level": "info", "message": "Test case 6254: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6254, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:44:16Z", "level": "info", "message": "Test case 6255: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6255, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:44:17Z", "level": "info", "message": "Test case 6256: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6256, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:44:18Z", "level": "info", "message": "Test case 6257: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6257, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:44:19Z", "level": "info", "message": "Test case 6258: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6258, "data": "4iih"} +{"timestamp": "2024-01-01T01:44:20Z", "level": "info", "message": "Test case 6259: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6259, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:44:21Z", "level": "info", "message": "Test case 6260: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6260, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:44:22Z", "level": "info", "message": "Test case 6261: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6261, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:44:23Z", "level": "info", "message": "Test case 6262: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6262, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:44:24Z", "level": "info", "message": "Test case 6263: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6263, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:44:25Z", "level": "info", "message": "Test case 6264: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6264, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:44:26Z", "level": "info", "message": "Test case 6265: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6265, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:44:27Z", "level": "info", "message": "Test case 6266: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6266, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:44:28Z", "level": "info", "message": "Test case 6267: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6267, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:44:29Z", "level": "info", "message": "Test case 6268: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6268, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:44:30Z", "level": "info", "message": "Test case 6269: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6269, "data": "wg=="} +{"timestamp": "2024-01-01T01:44:31Z", "level": "info", "message": "Test case 6270: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6270, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:44:32Z", "level": "info", "message": "Test case 6271: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6271, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:44:33Z", "level": "info", "message": "Test case 6272: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6272, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:44:34Z", "level": "info", "message": "Test case 6273: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6273, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:44:35Z", "level": "info", "message": "Test case 6274: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6274, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:44:36Z", "level": "info", "message": "Test case 6275: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6275, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:44:37Z", "level": "info", "message": "Test case 6276: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6276, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:44:38Z", "level": "info", "message": "Test case 6277: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6277, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:44:39Z", "level": "info", "message": "Test case 6278: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6278, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:44:40Z", "level": "info", "message": "Test case 6279: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6279, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:44:41Z", "level": "info", "message": "Test case 6280: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6280, "data": "wIA="} +{"timestamp": "2024-01-01T01:44:42Z", "level": "info", "message": "Test case 6281: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6281, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:44:43Z", "level": "info", "message": "Test case 6282: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6282, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:44:44Z", "level": "info", "message": "Test case 6283: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6283, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:44:45Z", "level": "info", "message": "Test case 6284: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6284, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:44:46Z", "level": "info", "message": "Test case 6285: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6285, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:44:47Z", "level": "info", "message": "Test case 6286: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6286, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:44:48Z", "level": "info", "message": "Test case 6287: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6287, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:44:49Z", "level": "info", "message": "Test case 6288: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6288, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:44:50Z", "level": "info", "message": "Test case 6289: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6289, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:44:51Z", "level": "info", "message": "Test case 6290: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6290, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:44:52Z", "level": "info", "message": "Test case 6291: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6291, "data": "4ICA"} +{"timestamp": "2024-01-01T01:44:53Z", "level": "info", "message": "Test case 6292: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6292, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:44:54Z", "level": "info", "message": "Test case 6293: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6293, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:44:55Z", "level": "info", "message": "Test case 6294: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6294, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:44:56Z", "level": "info", "message": "Test case 6295: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6295, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:44:57Z", "level": "info", "message": "Test case 6296: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6296, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:44:58Z", "level": "info", "message": "Test case 6297: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6297, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:44:59Z", "level": "info", "message": "Test case 6298: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6298, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:45:00Z", "level": "info", "message": "Test case 6299: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6299, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:45:01Z", "level": "info", "message": "Test case 6300: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6300, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:45:02Z", "level": "info", "message": "Test case 6301: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6301, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:45:03Z", "level": "info", "message": "Test case 6302: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6302, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:45:04Z", "level": "info", "message": "Test case 6303: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6303, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:45:05Z", "level": "info", "message": "Test case 6304: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6304, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:45:06Z", "level": "info", "message": "Test case 6305: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6305, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:45:07Z", "level": "info", "message": "Test case 6306: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6306, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:45:08Z", "level": "info", "message": "Test case 6307: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6307, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:45:09Z", "level": "info", "message": "Test case 6308: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6308, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:45:10Z", "level": "info", "message": "Test case 6309: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6309, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:45:11Z", "level": "info", "message": "Test case 6310: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6310, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:45:12Z", "level": "info", "message": "Test case 6311: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6311, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:45:13Z", "level": "info", "message": "Test case 6312: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6312, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:45:14Z", "level": "info", "message": "Test case 6313: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6313, "data": "4iih"} +{"timestamp": "2024-01-01T01:45:15Z", "level": "info", "message": "Test case 6314: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6314, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:45:16Z", "level": "info", "message": "Test case 6315: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6315, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:45:17Z", "level": "info", "message": "Test case 6316: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6316, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:45:18Z", "level": "info", "message": "Test case 6317: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6317, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:45:19Z", "level": "info", "message": "Test case 6318: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6318, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:45:20Z", "level": "info", "message": "Test case 6319: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6319, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:45:21Z", "level": "info", "message": "Test case 6320: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6320, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:45:22Z", "level": "info", "message": "Test case 6321: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6321, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:45:23Z", "level": "info", "message": "Test case 6322: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6322, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:45:24Z", "level": "info", "message": "Test case 6323: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6323, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:45:25Z", "level": "info", "message": "Test case 6324: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6324, "data": "wg=="} +{"timestamp": "2024-01-01T01:45:26Z", "level": "info", "message": "Test case 6325: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6325, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:45:27Z", "level": "info", "message": "Test case 6326: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6326, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:45:28Z", "level": "info", "message": "Test case 6327: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6327, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:45:29Z", "level": "info", "message": "Test case 6328: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6328, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:45:30Z", "level": "info", "message": "Test case 6329: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6329, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:45:31Z", "level": "info", "message": "Test case 6330: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6330, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:45:32Z", "level": "info", "message": "Test case 6331: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6331, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:45:33Z", "level": "info", "message": "Test case 6332: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6332, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:45:34Z", "level": "info", "message": "Test case 6333: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6333, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:45:35Z", "level": "info", "message": "Test case 6334: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6334, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:45:36Z", "level": "info", "message": "Test case 6335: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6335, "data": "wIA="} +{"timestamp": "2024-01-01T01:45:37Z", "level": "info", "message": "Test case 6336: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6336, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:45:38Z", "level": "info", "message": "Test case 6337: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6337, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:45:39Z", "level": "info", "message": "Test case 6338: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6338, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:45:40Z", "level": "info", "message": "Test case 6339: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6339, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:45:41Z", "level": "info", "message": "Test case 6340: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6340, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:45:42Z", "level": "info", "message": "Test case 6341: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6341, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:45:43Z", "level": "info", "message": "Test case 6342: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6342, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:45:44Z", "level": "info", "message": "Test case 6343: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6343, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:45:45Z", "level": "info", "message": "Test case 6344: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6344, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:45:46Z", "level": "info", "message": "Test case 6345: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6345, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:45:47Z", "level": "info", "message": "Test case 6346: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6346, "data": "4ICA"} +{"timestamp": "2024-01-01T01:45:48Z", "level": "info", "message": "Test case 6347: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6347, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:45:49Z", "level": "info", "message": "Test case 6348: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6348, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:45:50Z", "level": "info", "message": "Test case 6349: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6349, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:45:51Z", "level": "info", "message": "Test case 6350: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6350, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:45:52Z", "level": "info", "message": "Test case 6351: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6351, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:45:53Z", "level": "info", "message": "Test case 6352: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6352, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:45:54Z", "level": "info", "message": "Test case 6353: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6353, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:45:55Z", "level": "info", "message": "Test case 6354: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6354, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:45:56Z", "level": "info", "message": "Test case 6355: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6355, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:45:57Z", "level": "info", "message": "Test case 6356: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6356, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:45:58Z", "level": "info", "message": "Test case 6357: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6357, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:45:59Z", "level": "info", "message": "Test case 6358: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6358, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:46:00Z", "level": "info", "message": "Test case 6359: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6359, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:46:01Z", "level": "info", "message": "Test case 6360: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6360, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:46:02Z", "level": "info", "message": "Test case 6361: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6361, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:46:03Z", "level": "info", "message": "Test case 6362: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6362, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:46:04Z", "level": "info", "message": "Test case 6363: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6363, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:46:05Z", "level": "info", "message": "Test case 6364: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6364, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:46:06Z", "level": "info", "message": "Test case 6365: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6365, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:46:07Z", "level": "info", "message": "Test case 6366: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6366, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:46:08Z", "level": "info", "message": "Test case 6367: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6367, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:46:09Z", "level": "info", "message": "Test case 6368: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6368, "data": "4iih"} +{"timestamp": "2024-01-01T01:46:10Z", "level": "info", "message": "Test case 6369: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6369, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:46:11Z", "level": "info", "message": "Test case 6370: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6370, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:46:12Z", "level": "info", "message": "Test case 6371: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6371, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:46:13Z", "level": "info", "message": "Test case 6372: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6372, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:46:14Z", "level": "info", "message": "Test case 6373: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6373, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:46:15Z", "level": "info", "message": "Test case 6374: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6374, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:46:16Z", "level": "info", "message": "Test case 6375: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6375, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:46:17Z", "level": "info", "message": "Test case 6376: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6376, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:46:18Z", "level": "info", "message": "Test case 6377: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6377, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:46:19Z", "level": "info", "message": "Test case 6378: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6378, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:46:20Z", "level": "info", "message": "Test case 6379: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6379, "data": "wg=="} +{"timestamp": "2024-01-01T01:46:21Z", "level": "info", "message": "Test case 6380: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6380, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:46:22Z", "level": "info", "message": "Test case 6381: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6381, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:46:23Z", "level": "info", "message": "Test case 6382: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6382, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:46:24Z", "level": "info", "message": "Test case 6383: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6383, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:46:25Z", "level": "info", "message": "Test case 6384: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6384, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:46:26Z", "level": "info", "message": "Test case 6385: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6385, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:46:27Z", "level": "info", "message": "Test case 6386: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6386, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:46:28Z", "level": "info", "message": "Test case 6387: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6387, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:46:29Z", "level": "info", "message": "Test case 6388: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6388, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:46:30Z", "level": "info", "message": "Test case 6389: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6389, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:46:31Z", "level": "info", "message": "Test case 6390: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6390, "data": "wIA="} +{"timestamp": "2024-01-01T01:46:32Z", "level": "info", "message": "Test case 6391: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6391, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:46:33Z", "level": "info", "message": "Test case 6392: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6392, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:46:34Z", "level": "info", "message": "Test case 6393: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6393, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:46:35Z", "level": "info", "message": "Test case 6394: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6394, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:46:36Z", "level": "info", "message": "Test case 6395: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6395, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:46:37Z", "level": "info", "message": "Test case 6396: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6396, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:46:38Z", "level": "info", "message": "Test case 6397: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6397, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:46:39Z", "level": "info", "message": "Test case 6398: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6398, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:46:40Z", "level": "info", "message": "Test case 6399: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6399, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:46:41Z", "level": "info", "message": "Test case 6400: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6400, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:46:42Z", "level": "info", "message": "Test case 6401: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6401, "data": "4ICA"} +{"timestamp": "2024-01-01T01:46:43Z", "level": "info", "message": "Test case 6402: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6402, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:46:44Z", "level": "info", "message": "Test case 6403: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6403, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:46:45Z", "level": "info", "message": "Test case 6404: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6404, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:46:46Z", "level": "info", "message": "Test case 6405: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6405, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:46:47Z", "level": "info", "message": "Test case 6406: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6406, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:46:48Z", "level": "info", "message": "Test case 6407: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6407, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:46:49Z", "level": "info", "message": "Test case 6408: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6408, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:46:50Z", "level": "info", "message": "Test case 6409: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6409, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:46:51Z", "level": "info", "message": "Test case 6410: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6410, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:46:52Z", "level": "info", "message": "Test case 6411: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6411, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:46:53Z", "level": "info", "message": "Test case 6412: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6412, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:46:54Z", "level": "info", "message": "Test case 6413: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6413, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:46:55Z", "level": "info", "message": "Test case 6414: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6414, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:46:56Z", "level": "info", "message": "Test case 6415: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6415, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:46:57Z", "level": "info", "message": "Test case 6416: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6416, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:46:58Z", "level": "info", "message": "Test case 6417: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6417, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:46:59Z", "level": "info", "message": "Test case 6418: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6418, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:47:00Z", "level": "info", "message": "Test case 6419: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6419, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:47:01Z", "level": "info", "message": "Test case 6420: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6420, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:47:02Z", "level": "info", "message": "Test case 6421: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6421, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:47:03Z", "level": "info", "message": "Test case 6422: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6422, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:47:04Z", "level": "info", "message": "Test case 6423: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6423, "data": "4iih"} +{"timestamp": "2024-01-01T01:47:05Z", "level": "info", "message": "Test case 6424: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6424, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:47:06Z", "level": "info", "message": "Test case 6425: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6425, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:47:07Z", "level": "info", "message": "Test case 6426: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6426, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:47:08Z", "level": "info", "message": "Test case 6427: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6427, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:47:09Z", "level": "info", "message": "Test case 6428: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6428, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:47:10Z", "level": "info", "message": "Test case 6429: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6429, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:47:11Z", "level": "info", "message": "Test case 6430: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6430, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:47:12Z", "level": "info", "message": "Test case 6431: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6431, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:47:13Z", "level": "info", "message": "Test case 6432: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6432, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:47:14Z", "level": "info", "message": "Test case 6433: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6433, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:47:15Z", "level": "info", "message": "Test case 6434: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6434, "data": "wg=="} +{"timestamp": "2024-01-01T01:47:16Z", "level": "info", "message": "Test case 6435: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6435, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:47:17Z", "level": "info", "message": "Test case 6436: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6436, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:47:18Z", "level": "info", "message": "Test case 6437: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6437, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:47:19Z", "level": "info", "message": "Test case 6438: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6438, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:47:20Z", "level": "info", "message": "Test case 6439: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6439, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:47:21Z", "level": "info", "message": "Test case 6440: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6440, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:47:22Z", "level": "info", "message": "Test case 6441: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6441, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:47:23Z", "level": "info", "message": "Test case 6442: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6442, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:47:24Z", "level": "info", "message": "Test case 6443: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6443, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:47:25Z", "level": "info", "message": "Test case 6444: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6444, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:47:26Z", "level": "info", "message": "Test case 6445: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6445, "data": "wIA="} +{"timestamp": "2024-01-01T01:47:27Z", "level": "info", "message": "Test case 6446: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6446, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:47:28Z", "level": "info", "message": "Test case 6447: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6447, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:47:29Z", "level": "info", "message": "Test case 6448: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6448, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:47:30Z", "level": "info", "message": "Test case 6449: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6449, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:47:31Z", "level": "info", "message": "Test case 6450: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6450, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:47:32Z", "level": "info", "message": "Test case 6451: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6451, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:47:33Z", "level": "info", "message": "Test case 6452: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6452, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:47:34Z", "level": "info", "message": "Test case 6453: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6453, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:47:35Z", "level": "info", "message": "Test case 6454: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6454, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:47:36Z", "level": "info", "message": "Test case 6455: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6455, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:47:37Z", "level": "info", "message": "Test case 6456: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6456, "data": "4ICA"} +{"timestamp": "2024-01-01T01:47:38Z", "level": "info", "message": "Test case 6457: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6457, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:47:39Z", "level": "info", "message": "Test case 6458: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6458, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:47:40Z", "level": "info", "message": "Test case 6459: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6459, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:47:41Z", "level": "info", "message": "Test case 6460: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6460, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:47:42Z", "level": "info", "message": "Test case 6461: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6461, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:47:43Z", "level": "info", "message": "Test case 6462: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6462, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:47:44Z", "level": "info", "message": "Test case 6463: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6463, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:47:45Z", "level": "info", "message": "Test case 6464: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6464, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:47:46Z", "level": "info", "message": "Test case 6465: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6465, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:47:47Z", "level": "info", "message": "Test case 6466: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6466, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:47:48Z", "level": "info", "message": "Test case 6467: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6467, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:47:49Z", "level": "info", "message": "Test case 6468: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6468, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:47:50Z", "level": "info", "message": "Test case 6469: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6469, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:47:51Z", "level": "info", "message": "Test case 6470: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6470, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:47:52Z", "level": "info", "message": "Test case 6471: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6471, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:47:53Z", "level": "info", "message": "Test case 6472: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6472, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:47:54Z", "level": "info", "message": "Test case 6473: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6473, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:47:55Z", "level": "info", "message": "Test case 6474: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6474, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:47:56Z", "level": "info", "message": "Test case 6475: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6475, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:47:57Z", "level": "info", "message": "Test case 6476: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6476, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:47:58Z", "level": "info", "message": "Test case 6477: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6477, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:47:59Z", "level": "info", "message": "Test case 6478: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6478, "data": "4iih"} +{"timestamp": "2024-01-01T01:48:00Z", "level": "info", "message": "Test case 6479: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6479, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:48:01Z", "level": "info", "message": "Test case 6480: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6480, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:48:02Z", "level": "info", "message": "Test case 6481: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6481, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:48:03Z", "level": "info", "message": "Test case 6482: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6482, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:48:04Z", "level": "info", "message": "Test case 6483: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6483, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:48:05Z", "level": "info", "message": "Test case 6484: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6484, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:48:06Z", "level": "info", "message": "Test case 6485: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6485, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:48:07Z", "level": "info", "message": "Test case 6486: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6486, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:48:08Z", "level": "info", "message": "Test case 6487: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6487, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:48:09Z", "level": "info", "message": "Test case 6488: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6488, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:48:10Z", "level": "info", "message": "Test case 6489: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6489, "data": "wg=="} +{"timestamp": "2024-01-01T01:48:11Z", "level": "info", "message": "Test case 6490: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6490, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:48:12Z", "level": "info", "message": "Test case 6491: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6491, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:48:13Z", "level": "info", "message": "Test case 6492: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6492, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:48:14Z", "level": "info", "message": "Test case 6493: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6493, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:48:15Z", "level": "info", "message": "Test case 6494: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6494, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:48:16Z", "level": "info", "message": "Test case 6495: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6495, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:48:17Z", "level": "info", "message": "Test case 6496: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6496, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:48:18Z", "level": "info", "message": "Test case 6497: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6497, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:48:19Z", "level": "info", "message": "Test case 6498: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6498, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:48:20Z", "level": "info", "message": "Test case 6499: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6499, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:48:21Z", "level": "info", "message": "Test case 6500: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6500, "data": "wIA="} +{"timestamp": "2024-01-01T01:48:22Z", "level": "info", "message": "Test case 6501: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6501, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:48:23Z", "level": "info", "message": "Test case 6502: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6502, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:48:24Z", "level": "info", "message": "Test case 6503: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6503, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:48:25Z", "level": "info", "message": "Test case 6504: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6504, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:48:26Z", "level": "info", "message": "Test case 6505: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6505, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:48:27Z", "level": "info", "message": "Test case 6506: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6506, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:48:28Z", "level": "info", "message": "Test case 6507: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6507, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:48:29Z", "level": "info", "message": "Test case 6508: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6508, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:48:30Z", "level": "info", "message": "Test case 6509: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6509, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:48:31Z", "level": "info", "message": "Test case 6510: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6510, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:48:32Z", "level": "info", "message": "Test case 6511: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6511, "data": "4ICA"} +{"timestamp": "2024-01-01T01:48:33Z", "level": "info", "message": "Test case 6512: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6512, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:48:34Z", "level": "info", "message": "Test case 6513: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6513, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:48:35Z", "level": "info", "message": "Test case 6514: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6514, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:48:36Z", "level": "info", "message": "Test case 6515: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6515, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:48:37Z", "level": "info", "message": "Test case 6516: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6516, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:48:38Z", "level": "info", "message": "Test case 6517: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6517, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:48:39Z", "level": "info", "message": "Test case 6518: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6518, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:48:40Z", "level": "info", "message": "Test case 6519: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6519, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:48:41Z", "level": "info", "message": "Test case 6520: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6520, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:48:42Z", "level": "info", "message": "Test case 6521: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6521, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:48:43Z", "level": "info", "message": "Test case 6522: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6522, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:48:44Z", "level": "info", "message": "Test case 6523: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6523, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:48:45Z", "level": "info", "message": "Test case 6524: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6524, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:48:46Z", "level": "info", "message": "Test case 6525: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6525, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:48:47Z", "level": "info", "message": "Test case 6526: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6526, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:48:48Z", "level": "info", "message": "Test case 6527: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6527, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:48:49Z", "level": "info", "message": "Test case 6528: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6528, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:48:50Z", "level": "info", "message": "Test case 6529: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6529, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:48:51Z", "level": "info", "message": "Test case 6530: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6530, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:48:52Z", "level": "info", "message": "Test case 6531: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6531, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:48:53Z", "level": "info", "message": "Test case 6532: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6532, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:48:54Z", "level": "info", "message": "Test case 6533: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6533, "data": "4iih"} +{"timestamp": "2024-01-01T01:48:55Z", "level": "info", "message": "Test case 6534: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6534, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:48:56Z", "level": "info", "message": "Test case 6535: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6535, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:48:57Z", "level": "info", "message": "Test case 6536: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6536, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:48:58Z", "level": "info", "message": "Test case 6537: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6537, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:48:59Z", "level": "info", "message": "Test case 6538: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6538, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:49:00Z", "level": "info", "message": "Test case 6539: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6539, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:49:01Z", "level": "info", "message": "Test case 6540: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6540, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:49:02Z", "level": "info", "message": "Test case 6541: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6541, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:49:03Z", "level": "info", "message": "Test case 6542: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6542, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:49:04Z", "level": "info", "message": "Test case 6543: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6543, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:49:05Z", "level": "info", "message": "Test case 6544: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6544, "data": "wg=="} +{"timestamp": "2024-01-01T01:49:06Z", "level": "info", "message": "Test case 6545: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6545, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:49:07Z", "level": "info", "message": "Test case 6546: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6546, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:49:08Z", "level": "info", "message": "Test case 6547: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6547, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:49:09Z", "level": "info", "message": "Test case 6548: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6548, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:49:10Z", "level": "info", "message": "Test case 6549: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6549, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:49:11Z", "level": "info", "message": "Test case 6550: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6550, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:49:12Z", "level": "info", "message": "Test case 6551: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6551, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:49:13Z", "level": "info", "message": "Test case 6552: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6552, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:49:14Z", "level": "info", "message": "Test case 6553: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6553, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:49:15Z", "level": "info", "message": "Test case 6554: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6554, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:49:16Z", "level": "info", "message": "Test case 6555: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6555, "data": "wIA="} +{"timestamp": "2024-01-01T01:49:17Z", "level": "info", "message": "Test case 6556: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6556, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:49:18Z", "level": "info", "message": "Test case 6557: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6557, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:49:19Z", "level": "info", "message": "Test case 6558: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6558, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:49:20Z", "level": "info", "message": "Test case 6559: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6559, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:49:21Z", "level": "info", "message": "Test case 6560: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6560, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:49:22Z", "level": "info", "message": "Test case 6561: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6561, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:49:23Z", "level": "info", "message": "Test case 6562: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6562, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:49:24Z", "level": "info", "message": "Test case 6563: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6563, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:49:25Z", "level": "info", "message": "Test case 6564: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6564, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:49:26Z", "level": "info", "message": "Test case 6565: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6565, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:49:27Z", "level": "info", "message": "Test case 6566: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6566, "data": "4ICA"} +{"timestamp": "2024-01-01T01:49:28Z", "level": "info", "message": "Test case 6567: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6567, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:49:29Z", "level": "info", "message": "Test case 6568: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6568, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:49:30Z", "level": "info", "message": "Test case 6569: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6569, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:49:31Z", "level": "info", "message": "Test case 6570: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6570, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:49:32Z", "level": "info", "message": "Test case 6571: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6571, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:49:33Z", "level": "info", "message": "Test case 6572: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6572, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:49:34Z", "level": "info", "message": "Test case 6573: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6573, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:49:35Z", "level": "info", "message": "Test case 6574: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6574, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:49:36Z", "level": "info", "message": "Test case 6575: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6575, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:49:37Z", "level": "info", "message": "Test case 6576: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6576, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:49:38Z", "level": "info", "message": "Test case 6577: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6577, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:49:39Z", "level": "info", "message": "Test case 6578: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6578, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:49:40Z", "level": "info", "message": "Test case 6579: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6579, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:49:41Z", "level": "info", "message": "Test case 6580: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6580, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:49:42Z", "level": "info", "message": "Test case 6581: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6581, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:49:43Z", "level": "info", "message": "Test case 6582: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6582, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:49:44Z", "level": "info", "message": "Test case 6583: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6583, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:49:45Z", "level": "info", "message": "Test case 6584: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6584, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:49:46Z", "level": "info", "message": "Test case 6585: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6585, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:49:47Z", "level": "info", "message": "Test case 6586: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6586, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:49:48Z", "level": "info", "message": "Test case 6587: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6587, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:49:49Z", "level": "info", "message": "Test case 6588: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6588, "data": "4iih"} +{"timestamp": "2024-01-01T01:49:50Z", "level": "info", "message": "Test case 6589: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6589, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:49:51Z", "level": "info", "message": "Test case 6590: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6590, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:49:52Z", "level": "info", "message": "Test case 6591: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6591, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:49:53Z", "level": "info", "message": "Test case 6592: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6592, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:49:54Z", "level": "info", "message": "Test case 6593: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6593, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:49:55Z", "level": "info", "message": "Test case 6594: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6594, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:49:56Z", "level": "info", "message": "Test case 6595: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6595, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:49:57Z", "level": "info", "message": "Test case 6596: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6596, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:49:58Z", "level": "info", "message": "Test case 6597: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6597, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:49:59Z", "level": "info", "message": "Test case 6598: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6598, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:50:00Z", "level": "info", "message": "Test case 6599: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6599, "data": "wg=="} +{"timestamp": "2024-01-01T01:50:01Z", "level": "info", "message": "Test case 6600: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6600, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:50:02Z", "level": "info", "message": "Test case 6601: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6601, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:50:03Z", "level": "info", "message": "Test case 6602: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6602, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:50:04Z", "level": "info", "message": "Test case 6603: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6603, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:50:05Z", "level": "info", "message": "Test case 6604: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6604, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:50:06Z", "level": "info", "message": "Test case 6605: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6605, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:50:07Z", "level": "info", "message": "Test case 6606: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6606, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:50:08Z", "level": "info", "message": "Test case 6607: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6607, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:50:09Z", "level": "info", "message": "Test case 6608: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6608, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:50:10Z", "level": "info", "message": "Test case 6609: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6609, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:50:11Z", "level": "info", "message": "Test case 6610: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6610, "data": "wIA="} +{"timestamp": "2024-01-01T01:50:12Z", "level": "info", "message": "Test case 6611: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6611, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:50:13Z", "level": "info", "message": "Test case 6612: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6612, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:50:14Z", "level": "info", "message": "Test case 6613: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6613, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:50:15Z", "level": "info", "message": "Test case 6614: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6614, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:50:16Z", "level": "info", "message": "Test case 6615: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6615, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:50:17Z", "level": "info", "message": "Test case 6616: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6616, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:50:18Z", "level": "info", "message": "Test case 6617: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6617, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:50:19Z", "level": "info", "message": "Test case 6618: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6618, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:50:20Z", "level": "info", "message": "Test case 6619: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6619, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:50:21Z", "level": "info", "message": "Test case 6620: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6620, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:50:22Z", "level": "info", "message": "Test case 6621: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6621, "data": "4ICA"} +{"timestamp": "2024-01-01T01:50:23Z", "level": "info", "message": "Test case 6622: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6622, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:50:24Z", "level": "info", "message": "Test case 6623: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6623, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:50:25Z", "level": "info", "message": "Test case 6624: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6624, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:50:26Z", "level": "info", "message": "Test case 6625: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6625, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:50:27Z", "level": "info", "message": "Test case 6626: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6626, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:50:28Z", "level": "info", "message": "Test case 6627: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6627, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:50:29Z", "level": "info", "message": "Test case 6628: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6628, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:50:30Z", "level": "info", "message": "Test case 6629: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6629, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:50:31Z", "level": "info", "message": "Test case 6630: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6630, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:50:32Z", "level": "info", "message": "Test case 6631: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6631, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:50:33Z", "level": "info", "message": "Test case 6632: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6632, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:50:34Z", "level": "info", "message": "Test case 6633: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6633, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:50:35Z", "level": "info", "message": "Test case 6634: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6634, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:50:36Z", "level": "info", "message": "Test case 6635: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6635, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:50:37Z", "level": "info", "message": "Test case 6636: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6636, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:50:38Z", "level": "info", "message": "Test case 6637: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6637, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:50:39Z", "level": "info", "message": "Test case 6638: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6638, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:50:40Z", "level": "info", "message": "Test case 6639: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6639, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:50:41Z", "level": "info", "message": "Test case 6640: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6640, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:50:42Z", "level": "info", "message": "Test case 6641: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6641, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:50:43Z", "level": "info", "message": "Test case 6642: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6642, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:50:44Z", "level": "info", "message": "Test case 6643: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6643, "data": "4iih"} +{"timestamp": "2024-01-01T01:50:45Z", "level": "info", "message": "Test case 6644: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6644, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:50:46Z", "level": "info", "message": "Test case 6645: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6645, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:50:47Z", "level": "info", "message": "Test case 6646: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6646, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:50:48Z", "level": "info", "message": "Test case 6647: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6647, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:50:49Z", "level": "info", "message": "Test case 6648: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6648, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:50:50Z", "level": "info", "message": "Test case 6649: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6649, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:50:51Z", "level": "info", "message": "Test case 6650: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6650, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:50:52Z", "level": "info", "message": "Test case 6651: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6651, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:50:53Z", "level": "info", "message": "Test case 6652: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6652, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:50:54Z", "level": "info", "message": "Test case 6653: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6653, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:50:55Z", "level": "info", "message": "Test case 6654: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6654, "data": "wg=="} +{"timestamp": "2024-01-01T01:50:56Z", "level": "info", "message": "Test case 6655: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6655, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:50:57Z", "level": "info", "message": "Test case 6656: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6656, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:50:58Z", "level": "info", "message": "Test case 6657: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6657, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:50:59Z", "level": "info", "message": "Test case 6658: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6658, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:51:00Z", "level": "info", "message": "Test case 6659: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6659, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:51:01Z", "level": "info", "message": "Test case 6660: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6660, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:51:02Z", "level": "info", "message": "Test case 6661: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6661, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:51:03Z", "level": "info", "message": "Test case 6662: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6662, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:51:04Z", "level": "info", "message": "Test case 6663: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6663, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:51:05Z", "level": "info", "message": "Test case 6664: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6664, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:51:06Z", "level": "info", "message": "Test case 6665: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6665, "data": "wIA="} +{"timestamp": "2024-01-01T01:51:07Z", "level": "info", "message": "Test case 6666: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6666, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:51:08Z", "level": "info", "message": "Test case 6667: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6667, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:51:09Z", "level": "info", "message": "Test case 6668: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6668, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:51:10Z", "level": "info", "message": "Test case 6669: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6669, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:51:11Z", "level": "info", "message": "Test case 6670: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6670, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:51:12Z", "level": "info", "message": "Test case 6671: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6671, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:51:13Z", "level": "info", "message": "Test case 6672: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6672, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:51:14Z", "level": "info", "message": "Test case 6673: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6673, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:51:15Z", "level": "info", "message": "Test case 6674: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6674, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:51:16Z", "level": "info", "message": "Test case 6675: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6675, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:51:17Z", "level": "info", "message": "Test case 6676: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6676, "data": "4ICA"} +{"timestamp": "2024-01-01T01:51:18Z", "level": "info", "message": "Test case 6677: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6677, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:51:19Z", "level": "info", "message": "Test case 6678: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6678, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:51:20Z", "level": "info", "message": "Test case 6679: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6679, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:51:21Z", "level": "info", "message": "Test case 6680: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6680, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:51:22Z", "level": "info", "message": "Test case 6681: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6681, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:51:23Z", "level": "info", "message": "Test case 6682: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6682, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:51:24Z", "level": "info", "message": "Test case 6683: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6683, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:51:25Z", "level": "info", "message": "Test case 6684: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6684, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:51:26Z", "level": "info", "message": "Test case 6685: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6685, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:51:27Z", "level": "info", "message": "Test case 6686: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6686, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:51:28Z", "level": "info", "message": "Test case 6687: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6687, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:51:29Z", "level": "info", "message": "Test case 6688: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6688, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:51:30Z", "level": "info", "message": "Test case 6689: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6689, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:51:31Z", "level": "info", "message": "Test case 6690: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6690, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:51:32Z", "level": "info", "message": "Test case 6691: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6691, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:51:33Z", "level": "info", "message": "Test case 6692: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6692, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:51:34Z", "level": "info", "message": "Test case 6693: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6693, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:51:35Z", "level": "info", "message": "Test case 6694: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6694, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:51:36Z", "level": "info", "message": "Test case 6695: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6695, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:51:37Z", "level": "info", "message": "Test case 6696: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6696, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:51:38Z", "level": "info", "message": "Test case 6697: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6697, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:51:39Z", "level": "info", "message": "Test case 6698: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6698, "data": "4iih"} +{"timestamp": "2024-01-01T01:51:40Z", "level": "info", "message": "Test case 6699: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6699, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:51:41Z", "level": "info", "message": "Test case 6700: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6700, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:51:42Z", "level": "info", "message": "Test case 6701: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6701, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:51:43Z", "level": "info", "message": "Test case 6702: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6702, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:51:44Z", "level": "info", "message": "Test case 6703: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6703, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:51:45Z", "level": "info", "message": "Test case 6704: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6704, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:51:46Z", "level": "info", "message": "Test case 6705: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6705, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:51:47Z", "level": "info", "message": "Test case 6706: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6706, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:51:48Z", "level": "info", "message": "Test case 6707: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6707, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:51:49Z", "level": "info", "message": "Test case 6708: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6708, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:51:50Z", "level": "info", "message": "Test case 6709: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6709, "data": "wg=="} +{"timestamp": "2024-01-01T01:51:51Z", "level": "info", "message": "Test case 6710: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6710, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:51:52Z", "level": "info", "message": "Test case 6711: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6711, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:51:53Z", "level": "info", "message": "Test case 6712: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6712, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:51:54Z", "level": "info", "message": "Test case 6713: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6713, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:51:55Z", "level": "info", "message": "Test case 6714: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6714, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:51:56Z", "level": "info", "message": "Test case 6715: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6715, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:51:57Z", "level": "info", "message": "Test case 6716: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6716, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:51:58Z", "level": "info", "message": "Test case 6717: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6717, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:51:59Z", "level": "info", "message": "Test case 6718: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6718, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:52:00Z", "level": "info", "message": "Test case 6719: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6719, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:52:01Z", "level": "info", "message": "Test case 6720: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6720, "data": "wIA="} +{"timestamp": "2024-01-01T01:52:02Z", "level": "info", "message": "Test case 6721: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6721, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:52:03Z", "level": "info", "message": "Test case 6722: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6722, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:52:04Z", "level": "info", "message": "Test case 6723: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6723, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:52:05Z", "level": "info", "message": "Test case 6724: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6724, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:52:06Z", "level": "info", "message": "Test case 6725: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6725, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:52:07Z", "level": "info", "message": "Test case 6726: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6726, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:52:08Z", "level": "info", "message": "Test case 6727: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6727, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:52:09Z", "level": "info", "message": "Test case 6728: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6728, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:52:10Z", "level": "info", "message": "Test case 6729: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6729, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:52:11Z", "level": "info", "message": "Test case 6730: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6730, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:52:12Z", "level": "info", "message": "Test case 6731: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6731, "data": "4ICA"} +{"timestamp": "2024-01-01T01:52:13Z", "level": "info", "message": "Test case 6732: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6732, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:52:14Z", "level": "info", "message": "Test case 6733: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6733, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:52:15Z", "level": "info", "message": "Test case 6734: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6734, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:52:16Z", "level": "info", "message": "Test case 6735: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6735, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:52:17Z", "level": "info", "message": "Test case 6736: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6736, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:52:18Z", "level": "info", "message": "Test case 6737: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6737, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:52:19Z", "level": "info", "message": "Test case 6738: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6738, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:52:20Z", "level": "info", "message": "Test case 6739: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6739, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:52:21Z", "level": "info", "message": "Test case 6740: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6740, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:52:22Z", "level": "info", "message": "Test case 6741: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6741, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:52:23Z", "level": "info", "message": "Test case 6742: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6742, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:52:24Z", "level": "info", "message": "Test case 6743: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6743, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:52:25Z", "level": "info", "message": "Test case 6744: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6744, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:52:26Z", "level": "info", "message": "Test case 6745: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6745, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:52:27Z", "level": "info", "message": "Test case 6746: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6746, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:52:28Z", "level": "info", "message": "Test case 6747: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6747, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:52:29Z", "level": "info", "message": "Test case 6748: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6748, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:52:30Z", "level": "info", "message": "Test case 6749: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6749, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:52:31Z", "level": "info", "message": "Test case 6750: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6750, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:52:32Z", "level": "info", "message": "Test case 6751: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6751, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:52:33Z", "level": "info", "message": "Test case 6752: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6752, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:52:34Z", "level": "info", "message": "Test case 6753: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6753, "data": "4iih"} +{"timestamp": "2024-01-01T01:52:35Z", "level": "info", "message": "Test case 6754: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6754, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:52:36Z", "level": "info", "message": "Test case 6755: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6755, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:52:37Z", "level": "info", "message": "Test case 6756: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6756, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:52:38Z", "level": "info", "message": "Test case 6757: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6757, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:52:39Z", "level": "info", "message": "Test case 6758: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6758, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:52:40Z", "level": "info", "message": "Test case 6759: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6759, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:52:41Z", "level": "info", "message": "Test case 6760: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6760, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:52:42Z", "level": "info", "message": "Test case 6761: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6761, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:52:43Z", "level": "info", "message": "Test case 6762: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6762, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:52:44Z", "level": "info", "message": "Test case 6763: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6763, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:52:45Z", "level": "info", "message": "Test case 6764: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6764, "data": "wg=="} +{"timestamp": "2024-01-01T01:52:46Z", "level": "info", "message": "Test case 6765: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6765, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:52:47Z", "level": "info", "message": "Test case 6766: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6766, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:52:48Z", "level": "info", "message": "Test case 6767: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6767, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:52:49Z", "level": "info", "message": "Test case 6768: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6768, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:52:50Z", "level": "info", "message": "Test case 6769: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6769, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:52:51Z", "level": "info", "message": "Test case 6770: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6770, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:52:52Z", "level": "info", "message": "Test case 6771: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6771, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:52:53Z", "level": "info", "message": "Test case 6772: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6772, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:52:54Z", "level": "info", "message": "Test case 6773: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6773, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:52:55Z", "level": "info", "message": "Test case 6774: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6774, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:52:56Z", "level": "info", "message": "Test case 6775: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6775, "data": "wIA="} +{"timestamp": "2024-01-01T01:52:57Z", "level": "info", "message": "Test case 6776: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6776, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:52:58Z", "level": "info", "message": "Test case 6777: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6777, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:52:59Z", "level": "info", "message": "Test case 6778: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6778, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:53:00Z", "level": "info", "message": "Test case 6779: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6779, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:53:01Z", "level": "info", "message": "Test case 6780: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6780, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:53:02Z", "level": "info", "message": "Test case 6781: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6781, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:53:03Z", "level": "info", "message": "Test case 6782: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6782, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:53:04Z", "level": "info", "message": "Test case 6783: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6783, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:53:05Z", "level": "info", "message": "Test case 6784: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6784, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:53:06Z", "level": "info", "message": "Test case 6785: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6785, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:53:07Z", "level": "info", "message": "Test case 6786: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6786, "data": "4ICA"} +{"timestamp": "2024-01-01T01:53:08Z", "level": "info", "message": "Test case 6787: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6787, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:53:09Z", "level": "info", "message": "Test case 6788: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6788, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:53:10Z", "level": "info", "message": "Test case 6789: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6789, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:53:11Z", "level": "info", "message": "Test case 6790: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6790, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:53:12Z", "level": "info", "message": "Test case 6791: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6791, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:53:13Z", "level": "info", "message": "Test case 6792: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6792, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:53:14Z", "level": "info", "message": "Test case 6793: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6793, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:53:15Z", "level": "info", "message": "Test case 6794: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6794, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:53:16Z", "level": "info", "message": "Test case 6795: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6795, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:53:17Z", "level": "info", "message": "Test case 6796: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6796, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:53:18Z", "level": "info", "message": "Test case 6797: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6797, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:53:19Z", "level": "info", "message": "Test case 6798: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6798, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:53:20Z", "level": "info", "message": "Test case 6799: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6799, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:53:21Z", "level": "info", "message": "Test case 6800: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6800, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:53:22Z", "level": "info", "message": "Test case 6801: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6801, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:53:23Z", "level": "info", "message": "Test case 6802: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6802, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:53:24Z", "level": "info", "message": "Test case 6803: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6803, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:53:25Z", "level": "info", "message": "Test case 6804: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6804, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:53:26Z", "level": "info", "message": "Test case 6805: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6805, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:53:27Z", "level": "info", "message": "Test case 6806: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6806, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:53:28Z", "level": "info", "message": "Test case 6807: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6807, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:53:29Z", "level": "info", "message": "Test case 6808: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6808, "data": "4iih"} +{"timestamp": "2024-01-01T01:53:30Z", "level": "info", "message": "Test case 6809: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6809, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:53:31Z", "level": "info", "message": "Test case 6810: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6810, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:53:32Z", "level": "info", "message": "Test case 6811: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6811, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:53:33Z", "level": "info", "message": "Test case 6812: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6812, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:53:34Z", "level": "info", "message": "Test case 6813: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6813, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:53:35Z", "level": "info", "message": "Test case 6814: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6814, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:53:36Z", "level": "info", "message": "Test case 6815: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6815, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:53:37Z", "level": "info", "message": "Test case 6816: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6816, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:53:38Z", "level": "info", "message": "Test case 6817: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6817, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:53:39Z", "level": "info", "message": "Test case 6818: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6818, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:53:40Z", "level": "info", "message": "Test case 6819: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6819, "data": "wg=="} +{"timestamp": "2024-01-01T01:53:41Z", "level": "info", "message": "Test case 6820: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6820, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:53:42Z", "level": "info", "message": "Test case 6821: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6821, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:53:43Z", "level": "info", "message": "Test case 6822: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6822, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:53:44Z", "level": "info", "message": "Test case 6823: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6823, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:53:45Z", "level": "info", "message": "Test case 6824: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6824, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:53:46Z", "level": "info", "message": "Test case 6825: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6825, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:53:47Z", "level": "info", "message": "Test case 6826: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6826, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:53:48Z", "level": "info", "message": "Test case 6827: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6827, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:53:49Z", "level": "info", "message": "Test case 6828: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6828, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:53:50Z", "level": "info", "message": "Test case 6829: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6829, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:53:51Z", "level": "info", "message": "Test case 6830: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6830, "data": "wIA="} +{"timestamp": "2024-01-01T01:53:52Z", "level": "info", "message": "Test case 6831: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6831, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:53:53Z", "level": "info", "message": "Test case 6832: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6832, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:53:54Z", "level": "info", "message": "Test case 6833: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6833, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:53:55Z", "level": "info", "message": "Test case 6834: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6834, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:53:56Z", "level": "info", "message": "Test case 6835: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6835, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:53:57Z", "level": "info", "message": "Test case 6836: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6836, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:53:58Z", "level": "info", "message": "Test case 6837: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6837, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:53:59Z", "level": "info", "message": "Test case 6838: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6838, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:54:00Z", "level": "info", "message": "Test case 6839: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6839, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:54:01Z", "level": "info", "message": "Test case 6840: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6840, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:54:02Z", "level": "info", "message": "Test case 6841: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6841, "data": "4ICA"} +{"timestamp": "2024-01-01T01:54:03Z", "level": "info", "message": "Test case 6842: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6842, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:54:04Z", "level": "info", "message": "Test case 6843: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6843, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:54:05Z", "level": "info", "message": "Test case 6844: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6844, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:54:06Z", "level": "info", "message": "Test case 6845: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6845, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:54:07Z", "level": "info", "message": "Test case 6846: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6846, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:54:08Z", "level": "info", "message": "Test case 6847: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6847, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:54:09Z", "level": "info", "message": "Test case 6848: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6848, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:54:10Z", "level": "info", "message": "Test case 6849: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6849, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:54:11Z", "level": "info", "message": "Test case 6850: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6850, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:54:12Z", "level": "info", "message": "Test case 6851: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6851, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:54:13Z", "level": "info", "message": "Test case 6852: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6852, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:54:14Z", "level": "info", "message": "Test case 6853: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6853, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:54:15Z", "level": "info", "message": "Test case 6854: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6854, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:54:16Z", "level": "info", "message": "Test case 6855: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6855, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:54:17Z", "level": "info", "message": "Test case 6856: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6856, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:54:18Z", "level": "info", "message": "Test case 6857: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6857, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:54:19Z", "level": "info", "message": "Test case 6858: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6858, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:54:20Z", "level": "info", "message": "Test case 6859: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6859, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:54:21Z", "level": "info", "message": "Test case 6860: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6860, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:54:22Z", "level": "info", "message": "Test case 6861: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6861, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:54:23Z", "level": "info", "message": "Test case 6862: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6862, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:54:24Z", "level": "info", "message": "Test case 6863: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6863, "data": "4iih"} +{"timestamp": "2024-01-01T01:54:25Z", "level": "info", "message": "Test case 6864: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6864, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:54:26Z", "level": "info", "message": "Test case 6865: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6865, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:54:27Z", "level": "info", "message": "Test case 6866: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6866, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:54:28Z", "level": "info", "message": "Test case 6867: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6867, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:54:29Z", "level": "info", "message": "Test case 6868: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6868, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:54:30Z", "level": "info", "message": "Test case 6869: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6869, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:54:31Z", "level": "info", "message": "Test case 6870: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6870, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:54:32Z", "level": "info", "message": "Test case 6871: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6871, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:54:33Z", "level": "info", "message": "Test case 6872: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6872, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:54:34Z", "level": "info", "message": "Test case 6873: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6873, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:54:35Z", "level": "info", "message": "Test case 6874: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6874, "data": "wg=="} +{"timestamp": "2024-01-01T01:54:36Z", "level": "info", "message": "Test case 6875: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6875, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:54:37Z", "level": "info", "message": "Test case 6876: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6876, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:54:38Z", "level": "info", "message": "Test case 6877: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6877, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:54:39Z", "level": "info", "message": "Test case 6878: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6878, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:54:40Z", "level": "info", "message": "Test case 6879: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6879, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:54:41Z", "level": "info", "message": "Test case 6880: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6880, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:54:42Z", "level": "info", "message": "Test case 6881: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6881, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:54:43Z", "level": "info", "message": "Test case 6882: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6882, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:54:44Z", "level": "info", "message": "Test case 6883: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6883, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:54:45Z", "level": "info", "message": "Test case 6884: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6884, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:54:46Z", "level": "info", "message": "Test case 6885: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6885, "data": "wIA="} +{"timestamp": "2024-01-01T01:54:47Z", "level": "info", "message": "Test case 6886: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6886, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:54:48Z", "level": "info", "message": "Test case 6887: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6887, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:54:49Z", "level": "info", "message": "Test case 6888: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6888, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:54:50Z", "level": "info", "message": "Test case 6889: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6889, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:54:51Z", "level": "info", "message": "Test case 6890: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6890, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:54:52Z", "level": "info", "message": "Test case 6891: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6891, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:54:53Z", "level": "info", "message": "Test case 6892: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6892, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:54:54Z", "level": "info", "message": "Test case 6893: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6893, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:54:55Z", "level": "info", "message": "Test case 6894: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6894, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:54:56Z", "level": "info", "message": "Test case 6895: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6895, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:54:57Z", "level": "info", "message": "Test case 6896: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6896, "data": "4ICA"} +{"timestamp": "2024-01-01T01:54:58Z", "level": "info", "message": "Test case 6897: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6897, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:54:59Z", "level": "info", "message": "Test case 6898: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6898, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:55:00Z", "level": "info", "message": "Test case 6899: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6899, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:55:01Z", "level": "info", "message": "Test case 6900: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6900, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:55:02Z", "level": "info", "message": "Test case 6901: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6901, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:55:03Z", "level": "info", "message": "Test case 6902: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6902, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:55:04Z", "level": "info", "message": "Test case 6903: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6903, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:55:05Z", "level": "info", "message": "Test case 6904: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6904, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:55:06Z", "level": "info", "message": "Test case 6905: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6905, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:55:07Z", "level": "info", "message": "Test case 6906: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6906, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:55:08Z", "level": "info", "message": "Test case 6907: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6907, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:55:09Z", "level": "info", "message": "Test case 6908: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6908, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:55:10Z", "level": "info", "message": "Test case 6909: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6909, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:55:11Z", "level": "info", "message": "Test case 6910: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6910, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:55:12Z", "level": "info", "message": "Test case 6911: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6911, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:55:13Z", "level": "info", "message": "Test case 6912: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6912, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:55:14Z", "level": "info", "message": "Test case 6913: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6913, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:55:15Z", "level": "info", "message": "Test case 6914: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6914, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:55:16Z", "level": "info", "message": "Test case 6915: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6915, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:55:17Z", "level": "info", "message": "Test case 6916: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6916, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:55:18Z", "level": "info", "message": "Test case 6917: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6917, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:55:19Z", "level": "info", "message": "Test case 6918: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6918, "data": "4iih"} +{"timestamp": "2024-01-01T01:55:20Z", "level": "info", "message": "Test case 6919: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6919, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:55:21Z", "level": "info", "message": "Test case 6920: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6920, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:55:22Z", "level": "info", "message": "Test case 6921: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6921, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:55:23Z", "level": "info", "message": "Test case 6922: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6922, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:55:24Z", "level": "info", "message": "Test case 6923: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6923, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:55:25Z", "level": "info", "message": "Test case 6924: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6924, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:55:26Z", "level": "info", "message": "Test case 6925: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6925, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:55:27Z", "level": "info", "message": "Test case 6926: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6926, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:55:28Z", "level": "info", "message": "Test case 6927: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6927, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:55:29Z", "level": "info", "message": "Test case 6928: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6928, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:55:30Z", "level": "info", "message": "Test case 6929: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6929, "data": "wg=="} +{"timestamp": "2024-01-01T01:55:31Z", "level": "info", "message": "Test case 6930: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6930, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:55:32Z", "level": "info", "message": "Test case 6931: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6931, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:55:33Z", "level": "info", "message": "Test case 6932: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6932, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:55:34Z", "level": "info", "message": "Test case 6933: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6933, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:55:35Z", "level": "info", "message": "Test case 6934: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6934, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:55:36Z", "level": "info", "message": "Test case 6935: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6935, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:55:37Z", "level": "info", "message": "Test case 6936: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6936, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:55:38Z", "level": "info", "message": "Test case 6937: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6937, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:55:39Z", "level": "info", "message": "Test case 6938: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6938, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:55:40Z", "level": "info", "message": "Test case 6939: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6939, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:55:41Z", "level": "info", "message": "Test case 6940: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6940, "data": "wIA="} +{"timestamp": "2024-01-01T01:55:42Z", "level": "info", "message": "Test case 6941: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6941, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:55:43Z", "level": "info", "message": "Test case 6942: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6942, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:55:44Z", "level": "info", "message": "Test case 6943: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6943, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:55:45Z", "level": "info", "message": "Test case 6944: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6944, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:55:46Z", "level": "info", "message": "Test case 6945: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6945, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:55:47Z", "level": "info", "message": "Test case 6946: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6946, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:55:48Z", "level": "info", "message": "Test case 6947: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6947, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:55:49Z", "level": "info", "message": "Test case 6948: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6948, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:55:50Z", "level": "info", "message": "Test case 6949: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6949, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:55:51Z", "level": "info", "message": "Test case 6950: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6950, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:55:52Z", "level": "info", "message": "Test case 6951: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6951, "data": "4ICA"} +{"timestamp": "2024-01-01T01:55:53Z", "level": "info", "message": "Test case 6952: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6952, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:55:54Z", "level": "info", "message": "Test case 6953: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6953, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:55:55Z", "level": "info", "message": "Test case 6954: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6954, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:55:56Z", "level": "info", "message": "Test case 6955: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6955, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:55:57Z", "level": "info", "message": "Test case 6956: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6956, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:55:58Z", "level": "info", "message": "Test case 6957: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6957, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:55:59Z", "level": "info", "message": "Test case 6958: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6958, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:56:00Z", "level": "info", "message": "Test case 6959: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6959, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:56:01Z", "level": "info", "message": "Test case 6960: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6960, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:56:02Z", "level": "info", "message": "Test case 6961: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6961, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:56:03Z", "level": "info", "message": "Test case 6962: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6962, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:56:04Z", "level": "info", "message": "Test case 6963: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6963, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:56:05Z", "level": "info", "message": "Test case 6964: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6964, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:56:06Z", "level": "info", "message": "Test case 6965: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6965, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:56:07Z", "level": "info", "message": "Test case 6966: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6966, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:56:08Z", "level": "info", "message": "Test case 6967: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6967, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:56:09Z", "level": "info", "message": "Test case 6968: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6968, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:56:10Z", "level": "info", "message": "Test case 6969: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6969, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:56:11Z", "level": "info", "message": "Test case 6970: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6970, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:56:12Z", "level": "info", "message": "Test case 6971: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6971, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:56:13Z", "level": "info", "message": "Test case 6972: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6972, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:56:14Z", "level": "info", "message": "Test case 6973: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6973, "data": "4iih"} +{"timestamp": "2024-01-01T01:56:15Z", "level": "info", "message": "Test case 6974: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6974, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:56:16Z", "level": "info", "message": "Test case 6975: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6975, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:56:17Z", "level": "info", "message": "Test case 6976: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6976, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:56:18Z", "level": "info", "message": "Test case 6977: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6977, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:56:19Z", "level": "info", "message": "Test case 6978: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6978, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:56:20Z", "level": "info", "message": "Test case 6979: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6979, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:56:21Z", "level": "info", "message": "Test case 6980: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6980, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:56:22Z", "level": "info", "message": "Test case 6981: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6981, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:56:23Z", "level": "info", "message": "Test case 6982: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6982, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:56:24Z", "level": "info", "message": "Test case 6983: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6983, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:56:25Z", "level": "info", "message": "Test case 6984: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6984, "data": "wg=="} +{"timestamp": "2024-01-01T01:56:26Z", "level": "info", "message": "Test case 6985: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6985, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:56:27Z", "level": "info", "message": "Test case 6986: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6986, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:56:28Z", "level": "info", "message": "Test case 6987: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6987, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:56:29Z", "level": "info", "message": "Test case 6988: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6988, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:56:30Z", "level": "info", "message": "Test case 6989: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 6989, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:56:31Z", "level": "info", "message": "Test case 6990: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 6990, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:56:32Z", "level": "info", "message": "Test case 6991: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 6991, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:56:33Z", "level": "info", "message": "Test case 6992: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 6992, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:56:34Z", "level": "info", "message": "Test case 6993: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 6993, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:56:35Z", "level": "info", "message": "Test case 6994: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 6994, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:56:36Z", "level": "info", "message": "Test case 6995: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 6995, "data": "wIA="} +{"timestamp": "2024-01-01T01:56:37Z", "level": "info", "message": "Test case 6996: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 6996, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:56:38Z", "level": "info", "message": "Test case 6997: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 6997, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:56:39Z", "level": "info", "message": "Test case 6998: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 6998, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:56:40Z", "level": "info", "message": "Test case 6999: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 6999, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:56:41Z", "level": "info", "message": "Test case 7000: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7000, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:56:42Z", "level": "info", "message": "Test case 7001: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7001, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:56:43Z", "level": "info", "message": "Test case 7002: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7002, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:56:44Z", "level": "info", "message": "Test case 7003: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7003, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:56:45Z", "level": "info", "message": "Test case 7004: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7004, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:56:46Z", "level": "info", "message": "Test case 7005: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7005, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:56:47Z", "level": "info", "message": "Test case 7006: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7006, "data": "4ICA"} +{"timestamp": "2024-01-01T01:56:48Z", "level": "info", "message": "Test case 7007: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7007, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:56:49Z", "level": "info", "message": "Test case 7008: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7008, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:56:50Z", "level": "info", "message": "Test case 7009: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7009, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:56:51Z", "level": "info", "message": "Test case 7010: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7010, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:56:52Z", "level": "info", "message": "Test case 7011: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7011, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:56:53Z", "level": "info", "message": "Test case 7012: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7012, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:56:54Z", "level": "info", "message": "Test case 7013: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7013, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:56:55Z", "level": "info", "message": "Test case 7014: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7014, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:56:56Z", "level": "info", "message": "Test case 7015: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7015, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:56:57Z", "level": "info", "message": "Test case 7016: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7016, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:56:58Z", "level": "info", "message": "Test case 7017: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7017, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:56:59Z", "level": "info", "message": "Test case 7018: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7018, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:57:00Z", "level": "info", "message": "Test case 7019: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7019, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:57:01Z", "level": "info", "message": "Test case 7020: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7020, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:57:02Z", "level": "info", "message": "Test case 7021: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7021, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:57:03Z", "level": "info", "message": "Test case 7022: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7022, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:57:04Z", "level": "info", "message": "Test case 7023: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7023, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:57:05Z", "level": "info", "message": "Test case 7024: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7024, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:57:06Z", "level": "info", "message": "Test case 7025: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7025, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:57:07Z", "level": "info", "message": "Test case 7026: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7026, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:57:08Z", "level": "info", "message": "Test case 7027: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7027, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:57:09Z", "level": "info", "message": "Test case 7028: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7028, "data": "4iih"} +{"timestamp": "2024-01-01T01:57:10Z", "level": "info", "message": "Test case 7029: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7029, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:57:11Z", "level": "info", "message": "Test case 7030: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7030, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:57:12Z", "level": "info", "message": "Test case 7031: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7031, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:57:13Z", "level": "info", "message": "Test case 7032: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7032, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:57:14Z", "level": "info", "message": "Test case 7033: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7033, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:57:15Z", "level": "info", "message": "Test case 7034: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7034, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:57:16Z", "level": "info", "message": "Test case 7035: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7035, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:57:17Z", "level": "info", "message": "Test case 7036: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7036, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:57:18Z", "level": "info", "message": "Test case 7037: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7037, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:57:19Z", "level": "info", "message": "Test case 7038: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7038, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:57:20Z", "level": "info", "message": "Test case 7039: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7039, "data": "wg=="} +{"timestamp": "2024-01-01T01:57:21Z", "level": "info", "message": "Test case 7040: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7040, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:57:22Z", "level": "info", "message": "Test case 7041: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7041, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:57:23Z", "level": "info", "message": "Test case 7042: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7042, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:57:24Z", "level": "info", "message": "Test case 7043: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7043, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:57:25Z", "level": "info", "message": "Test case 7044: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7044, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:57:26Z", "level": "info", "message": "Test case 7045: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7045, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:57:27Z", "level": "info", "message": "Test case 7046: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7046, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:57:28Z", "level": "info", "message": "Test case 7047: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7047, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:57:29Z", "level": "info", "message": "Test case 7048: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7048, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:57:30Z", "level": "info", "message": "Test case 7049: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7049, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:57:31Z", "level": "info", "message": "Test case 7050: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7050, "data": "wIA="} +{"timestamp": "2024-01-01T01:57:32Z", "level": "info", "message": "Test case 7051: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7051, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:57:33Z", "level": "info", "message": "Test case 7052: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7052, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:57:34Z", "level": "info", "message": "Test case 7053: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7053, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:57:35Z", "level": "info", "message": "Test case 7054: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7054, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:57:36Z", "level": "info", "message": "Test case 7055: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7055, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:57:37Z", "level": "info", "message": "Test case 7056: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7056, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:57:38Z", "level": "info", "message": "Test case 7057: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7057, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:57:39Z", "level": "info", "message": "Test case 7058: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7058, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:57:40Z", "level": "info", "message": "Test case 7059: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7059, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:57:41Z", "level": "info", "message": "Test case 7060: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7060, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:57:42Z", "level": "info", "message": "Test case 7061: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7061, "data": "4ICA"} +{"timestamp": "2024-01-01T01:57:43Z", "level": "info", "message": "Test case 7062: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7062, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:57:44Z", "level": "info", "message": "Test case 7063: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7063, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:57:45Z", "level": "info", "message": "Test case 7064: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7064, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:57:46Z", "level": "info", "message": "Test case 7065: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7065, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:57:47Z", "level": "info", "message": "Test case 7066: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7066, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:57:48Z", "level": "info", "message": "Test case 7067: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7067, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:57:49Z", "level": "info", "message": "Test case 7068: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7068, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:57:50Z", "level": "info", "message": "Test case 7069: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7069, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:57:51Z", "level": "info", "message": "Test case 7070: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7070, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:57:52Z", "level": "info", "message": "Test case 7071: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7071, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:57:53Z", "level": "info", "message": "Test case 7072: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7072, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:57:54Z", "level": "info", "message": "Test case 7073: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7073, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:57:55Z", "level": "info", "message": "Test case 7074: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7074, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:57:56Z", "level": "info", "message": "Test case 7075: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7075, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:57:57Z", "level": "info", "message": "Test case 7076: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7076, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:57:58Z", "level": "info", "message": "Test case 7077: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7077, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:57:59Z", "level": "info", "message": "Test case 7078: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7078, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:58:00Z", "level": "info", "message": "Test case 7079: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7079, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:58:01Z", "level": "info", "message": "Test case 7080: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7080, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:58:02Z", "level": "info", "message": "Test case 7081: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7081, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:58:03Z", "level": "info", "message": "Test case 7082: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7082, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:58:04Z", "level": "info", "message": "Test case 7083: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7083, "data": "4iih"} +{"timestamp": "2024-01-01T01:58:05Z", "level": "info", "message": "Test case 7084: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7084, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:58:06Z", "level": "info", "message": "Test case 7085: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7085, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:58:07Z", "level": "info", "message": "Test case 7086: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7086, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:58:08Z", "level": "info", "message": "Test case 7087: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7087, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:58:09Z", "level": "info", "message": "Test case 7088: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7088, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:58:10Z", "level": "info", "message": "Test case 7089: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7089, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:58:11Z", "level": "info", "message": "Test case 7090: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7090, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:58:12Z", "level": "info", "message": "Test case 7091: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7091, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:58:13Z", "level": "info", "message": "Test case 7092: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7092, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:58:14Z", "level": "info", "message": "Test case 7093: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7093, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:58:15Z", "level": "info", "message": "Test case 7094: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7094, "data": "wg=="} +{"timestamp": "2024-01-01T01:58:16Z", "level": "info", "message": "Test case 7095: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7095, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:58:17Z", "level": "info", "message": "Test case 7096: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7096, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:58:18Z", "level": "info", "message": "Test case 7097: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7097, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:58:19Z", "level": "info", "message": "Test case 7098: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7098, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:58:20Z", "level": "info", "message": "Test case 7099: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7099, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:58:21Z", "level": "info", "message": "Test case 7100: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7100, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:58:22Z", "level": "info", "message": "Test case 7101: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7101, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:58:23Z", "level": "info", "message": "Test case 7102: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7102, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:58:24Z", "level": "info", "message": "Test case 7103: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7103, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:58:25Z", "level": "info", "message": "Test case 7104: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7104, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:58:26Z", "level": "info", "message": "Test case 7105: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7105, "data": "wIA="} +{"timestamp": "2024-01-01T01:58:27Z", "level": "info", "message": "Test case 7106: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7106, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:58:28Z", "level": "info", "message": "Test case 7107: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7107, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:58:29Z", "level": "info", "message": "Test case 7108: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7108, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:58:30Z", "level": "info", "message": "Test case 7109: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7109, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:58:31Z", "level": "info", "message": "Test case 7110: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7110, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:58:32Z", "level": "info", "message": "Test case 7111: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7111, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:58:33Z", "level": "info", "message": "Test case 7112: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7112, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:58:34Z", "level": "info", "message": "Test case 7113: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7113, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:58:35Z", "level": "info", "message": "Test case 7114: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7114, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:58:36Z", "level": "info", "message": "Test case 7115: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7115, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:58:37Z", "level": "info", "message": "Test case 7116: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7116, "data": "4ICA"} +{"timestamp": "2024-01-01T01:58:38Z", "level": "info", "message": "Test case 7117: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7117, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:58:39Z", "level": "info", "message": "Test case 7118: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7118, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:58:40Z", "level": "info", "message": "Test case 7119: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7119, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:58:41Z", "level": "info", "message": "Test case 7120: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7120, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:58:42Z", "level": "info", "message": "Test case 7121: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7121, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:58:43Z", "level": "info", "message": "Test case 7122: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7122, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:58:44Z", "level": "info", "message": "Test case 7123: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7123, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:58:45Z", "level": "info", "message": "Test case 7124: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7124, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:58:46Z", "level": "info", "message": "Test case 7125: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7125, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:58:47Z", "level": "info", "message": "Test case 7126: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7126, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:58:48Z", "level": "info", "message": "Test case 7127: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7127, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:58:49Z", "level": "info", "message": "Test case 7128: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7128, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:58:50Z", "level": "info", "message": "Test case 7129: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7129, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:58:51Z", "level": "info", "message": "Test case 7130: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7130, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:58:52Z", "level": "info", "message": "Test case 7131: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7131, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:58:53Z", "level": "info", "message": "Test case 7132: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7132, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:58:54Z", "level": "info", "message": "Test case 7133: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7133, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:58:55Z", "level": "info", "message": "Test case 7134: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7134, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:58:56Z", "level": "info", "message": "Test case 7135: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7135, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:58:57Z", "level": "info", "message": "Test case 7136: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7136, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:58:58Z", "level": "info", "message": "Test case 7137: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7137, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:58:59Z", "level": "info", "message": "Test case 7138: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7138, "data": "4iih"} +{"timestamp": "2024-01-01T01:59:00Z", "level": "info", "message": "Test case 7139: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7139, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:59:01Z", "level": "info", "message": "Test case 7140: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7140, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:59:02Z", "level": "info", "message": "Test case 7141: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7141, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:59:03Z", "level": "info", "message": "Test case 7142: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7142, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:59:04Z", "level": "info", "message": "Test case 7143: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7143, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:59:05Z", "level": "info", "message": "Test case 7144: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7144, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:59:06Z", "level": "info", "message": "Test case 7145: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7145, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:59:07Z", "level": "info", "message": "Test case 7146: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7146, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:59:08Z", "level": "info", "message": "Test case 7147: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7147, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:59:09Z", "level": "info", "message": "Test case 7148: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7148, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:59:10Z", "level": "info", "message": "Test case 7149: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7149, "data": "wg=="} +{"timestamp": "2024-01-01T01:59:11Z", "level": "info", "message": "Test case 7150: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7150, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:59:12Z", "level": "info", "message": "Test case 7151: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7151, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:59:13Z", "level": "info", "message": "Test case 7152: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7152, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:59:14Z", "level": "info", "message": "Test case 7153: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7153, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:59:15Z", "level": "info", "message": "Test case 7154: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7154, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:59:16Z", "level": "info", "message": "Test case 7155: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7155, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:59:17Z", "level": "info", "message": "Test case 7156: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7156, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:59:18Z", "level": "info", "message": "Test case 7157: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7157, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:59:19Z", "level": "info", "message": "Test case 7158: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7158, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:59:20Z", "level": "info", "message": "Test case 7159: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7159, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:59:21Z", "level": "info", "message": "Test case 7160: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7160, "data": "wIA="} +{"timestamp": "2024-01-01T01:59:22Z", "level": "info", "message": "Test case 7161: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7161, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:59:23Z", "level": "info", "message": "Test case 7162: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7162, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:59:24Z", "level": "info", "message": "Test case 7163: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7163, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:59:25Z", "level": "info", "message": "Test case 7164: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7164, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:59:26Z", "level": "info", "message": "Test case 7165: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7165, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:59:27Z", "level": "info", "message": "Test case 7166: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7166, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:59:28Z", "level": "info", "message": "Test case 7167: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7167, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:59:29Z", "level": "info", "message": "Test case 7168: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7168, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:59:30Z", "level": "info", "message": "Test case 7169: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7169, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:59:31Z", "level": "info", "message": "Test case 7170: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7170, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:59:32Z", "level": "info", "message": "Test case 7171: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7171, "data": "4ICA"} +{"timestamp": "2024-01-01T01:59:33Z", "level": "info", "message": "Test case 7172: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7172, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:59:34Z", "level": "info", "message": "Test case 7173: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7173, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:59:35Z", "level": "info", "message": "Test case 7174: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7174, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:59:36Z", "level": "info", "message": "Test case 7175: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7175, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:59:37Z", "level": "info", "message": "Test case 7176: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7176, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:59:38Z", "level": "info", "message": "Test case 7177: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7177, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:59:39Z", "level": "info", "message": "Test case 7178: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7178, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:59:40Z", "level": "info", "message": "Test case 7179: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7179, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:59:41Z", "level": "info", "message": "Test case 7180: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7180, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:59:42Z", "level": "info", "message": "Test case 7181: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7181, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:59:43Z", "level": "info", "message": "Test case 7182: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7182, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T01:59:44Z", "level": "info", "message": "Test case 7183: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7183, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:59:45Z", "level": "info", "message": "Test case 7184: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7184, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:59:46Z", "level": "info", "message": "Test case 7185: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7185, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:59:47Z", "level": "info", "message": "Test case 7186: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7186, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:59:48Z", "level": "info", "message": "Test case 7187: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7187, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T01:59:49Z", "level": "info", "message": "Test case 7188: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7188, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T01:59:50Z", "level": "info", "message": "Test case 7189: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7189, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T01:59:51Z", "level": "info", "message": "Test case 7190: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7190, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T01:59:52Z", "level": "info", "message": "Test case 7191: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7191, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T01:59:53Z", "level": "info", "message": "Test case 7192: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7192, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T01:59:54Z", "level": "info", "message": "Test case 7193: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7193, "data": "4iih"} +{"timestamp": "2024-01-01T01:59:55Z", "level": "info", "message": "Test case 7194: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7194, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T01:59:56Z", "level": "info", "message": "Test case 7195: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7195, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T01:59:57Z", "level": "info", "message": "Test case 7196: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7196, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T01:59:58Z", "level": "info", "message": "Test case 7197: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7197, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T01:59:59Z", "level": "info", "message": "Test case 7198: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7198, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:00:00Z", "level": "info", "message": "Test case 7199: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7199, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:00:01Z", "level": "info", "message": "Test case 7200: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7200, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:00:02Z", "level": "info", "message": "Test case 7201: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7201, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:00:03Z", "level": "info", "message": "Test case 7202: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7202, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:00:04Z", "level": "info", "message": "Test case 7203: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7203, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:00:05Z", "level": "info", "message": "Test case 7204: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7204, "data": "wg=="} +{"timestamp": "2024-01-01T02:00:06Z", "level": "info", "message": "Test case 7205: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7205, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:00:07Z", "level": "info", "message": "Test case 7206: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7206, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:00:08Z", "level": "info", "message": "Test case 7207: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7207, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:00:09Z", "level": "info", "message": "Test case 7208: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7208, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:00:10Z", "level": "info", "message": "Test case 7209: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7209, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:00:11Z", "level": "info", "message": "Test case 7210: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7210, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:00:12Z", "level": "info", "message": "Test case 7211: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7211, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:00:13Z", "level": "info", "message": "Test case 7212: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7212, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:00:14Z", "level": "info", "message": "Test case 7213: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7213, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:00:15Z", "level": "info", "message": "Test case 7214: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7214, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:00:16Z", "level": "info", "message": "Test case 7215: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7215, "data": "wIA="} +{"timestamp": "2024-01-01T02:00:17Z", "level": "info", "message": "Test case 7216: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7216, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:00:18Z", "level": "info", "message": "Test case 7217: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7217, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:00:19Z", "level": "info", "message": "Test case 7218: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7218, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:00:20Z", "level": "info", "message": "Test case 7219: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7219, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:00:21Z", "level": "info", "message": "Test case 7220: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7220, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:00:22Z", "level": "info", "message": "Test case 7221: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7221, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:00:23Z", "level": "info", "message": "Test case 7222: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7222, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:00:24Z", "level": "info", "message": "Test case 7223: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7223, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:00:25Z", "level": "info", "message": "Test case 7224: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7224, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:00:26Z", "level": "info", "message": "Test case 7225: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7225, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:00:27Z", "level": "info", "message": "Test case 7226: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7226, "data": "4ICA"} +{"timestamp": "2024-01-01T02:00:28Z", "level": "info", "message": "Test case 7227: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7227, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:00:29Z", "level": "info", "message": "Test case 7228: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7228, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:00:30Z", "level": "info", "message": "Test case 7229: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7229, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:00:31Z", "level": "info", "message": "Test case 7230: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7230, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:00:32Z", "level": "info", "message": "Test case 7231: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7231, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:00:33Z", "level": "info", "message": "Test case 7232: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7232, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:00:34Z", "level": "info", "message": "Test case 7233: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7233, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:00:35Z", "level": "info", "message": "Test case 7234: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7234, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:00:36Z", "level": "info", "message": "Test case 7235: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7235, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:00:37Z", "level": "info", "message": "Test case 7236: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7236, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:00:38Z", "level": "info", "message": "Test case 7237: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7237, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:00:39Z", "level": "info", "message": "Test case 7238: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7238, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:00:40Z", "level": "info", "message": "Test case 7239: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7239, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:00:41Z", "level": "info", "message": "Test case 7240: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7240, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:00:42Z", "level": "info", "message": "Test case 7241: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7241, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:00:43Z", "level": "info", "message": "Test case 7242: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7242, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:00:44Z", "level": "info", "message": "Test case 7243: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7243, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:00:45Z", "level": "info", "message": "Test case 7244: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7244, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:00:46Z", "level": "info", "message": "Test case 7245: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7245, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:00:47Z", "level": "info", "message": "Test case 7246: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7246, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:00:48Z", "level": "info", "message": "Test case 7247: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7247, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:00:49Z", "level": "info", "message": "Test case 7248: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7248, "data": "4iih"} +{"timestamp": "2024-01-01T02:00:50Z", "level": "info", "message": "Test case 7249: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7249, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:00:51Z", "level": "info", "message": "Test case 7250: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7250, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:00:52Z", "level": "info", "message": "Test case 7251: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7251, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:00:53Z", "level": "info", "message": "Test case 7252: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7252, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:00:54Z", "level": "info", "message": "Test case 7253: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7253, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:00:55Z", "level": "info", "message": "Test case 7254: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7254, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:00:56Z", "level": "info", "message": "Test case 7255: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7255, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:00:57Z", "level": "info", "message": "Test case 7256: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7256, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:00:58Z", "level": "info", "message": "Test case 7257: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7257, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:00:59Z", "level": "info", "message": "Test case 7258: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7258, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:01:00Z", "level": "info", "message": "Test case 7259: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7259, "data": "wg=="} +{"timestamp": "2024-01-01T02:01:01Z", "level": "info", "message": "Test case 7260: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7260, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:01:02Z", "level": "info", "message": "Test case 7261: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7261, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:01:03Z", "level": "info", "message": "Test case 7262: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7262, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:01:04Z", "level": "info", "message": "Test case 7263: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7263, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:01:05Z", "level": "info", "message": "Test case 7264: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7264, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:01:06Z", "level": "info", "message": "Test case 7265: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7265, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:01:07Z", "level": "info", "message": "Test case 7266: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7266, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:01:08Z", "level": "info", "message": "Test case 7267: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7267, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:01:09Z", "level": "info", "message": "Test case 7268: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7268, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:01:10Z", "level": "info", "message": "Test case 7269: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7269, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:01:11Z", "level": "info", "message": "Test case 7270: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7270, "data": "wIA="} +{"timestamp": "2024-01-01T02:01:12Z", "level": "info", "message": "Test case 7271: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7271, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:01:13Z", "level": "info", "message": "Test case 7272: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7272, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:01:14Z", "level": "info", "message": "Test case 7273: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7273, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:01:15Z", "level": "info", "message": "Test case 7274: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7274, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:01:16Z", "level": "info", "message": "Test case 7275: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7275, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:01:17Z", "level": "info", "message": "Test case 7276: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7276, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:01:18Z", "level": "info", "message": "Test case 7277: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7277, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:01:19Z", "level": "info", "message": "Test case 7278: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7278, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:01:20Z", "level": "info", "message": "Test case 7279: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7279, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:01:21Z", "level": "info", "message": "Test case 7280: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7280, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:01:22Z", "level": "info", "message": "Test case 7281: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7281, "data": "4ICA"} +{"timestamp": "2024-01-01T02:01:23Z", "level": "info", "message": "Test case 7282: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7282, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:01:24Z", "level": "info", "message": "Test case 7283: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7283, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:01:25Z", "level": "info", "message": "Test case 7284: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7284, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:01:26Z", "level": "info", "message": "Test case 7285: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7285, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:01:27Z", "level": "info", "message": "Test case 7286: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7286, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:01:28Z", "level": "info", "message": "Test case 7287: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7287, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:01:29Z", "level": "info", "message": "Test case 7288: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7288, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:01:30Z", "level": "info", "message": "Test case 7289: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7289, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:01:31Z", "level": "info", "message": "Test case 7290: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7290, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:01:32Z", "level": "info", "message": "Test case 7291: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7291, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:01:33Z", "level": "info", "message": "Test case 7292: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7292, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:01:34Z", "level": "info", "message": "Test case 7293: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7293, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:01:35Z", "level": "info", "message": "Test case 7294: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7294, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:01:36Z", "level": "info", "message": "Test case 7295: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7295, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:01:37Z", "level": "info", "message": "Test case 7296: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7296, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:01:38Z", "level": "info", "message": "Test case 7297: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7297, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:01:39Z", "level": "info", "message": "Test case 7298: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7298, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:01:40Z", "level": "info", "message": "Test case 7299: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7299, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:01:41Z", "level": "info", "message": "Test case 7300: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7300, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:01:42Z", "level": "info", "message": "Test case 7301: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7301, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:01:43Z", "level": "info", "message": "Test case 7302: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7302, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:01:44Z", "level": "info", "message": "Test case 7303: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7303, "data": "4iih"} +{"timestamp": "2024-01-01T02:01:45Z", "level": "info", "message": "Test case 7304: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7304, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:01:46Z", "level": "info", "message": "Test case 7305: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7305, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:01:47Z", "level": "info", "message": "Test case 7306: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7306, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:01:48Z", "level": "info", "message": "Test case 7307: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7307, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:01:49Z", "level": "info", "message": "Test case 7308: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7308, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:01:50Z", "level": "info", "message": "Test case 7309: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7309, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:01:51Z", "level": "info", "message": "Test case 7310: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7310, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:01:52Z", "level": "info", "message": "Test case 7311: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7311, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:01:53Z", "level": "info", "message": "Test case 7312: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7312, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:01:54Z", "level": "info", "message": "Test case 7313: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7313, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:01:55Z", "level": "info", "message": "Test case 7314: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7314, "data": "wg=="} +{"timestamp": "2024-01-01T02:01:56Z", "level": "info", "message": "Test case 7315: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7315, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:01:57Z", "level": "info", "message": "Test case 7316: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7316, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:01:58Z", "level": "info", "message": "Test case 7317: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7317, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:01:59Z", "level": "info", "message": "Test case 7318: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7318, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:02:00Z", "level": "info", "message": "Test case 7319: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7319, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:02:01Z", "level": "info", "message": "Test case 7320: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7320, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:02:02Z", "level": "info", "message": "Test case 7321: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7321, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:02:03Z", "level": "info", "message": "Test case 7322: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7322, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:02:04Z", "level": "info", "message": "Test case 7323: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7323, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:02:05Z", "level": "info", "message": "Test case 7324: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7324, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:02:06Z", "level": "info", "message": "Test case 7325: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7325, "data": "wIA="} +{"timestamp": "2024-01-01T02:02:07Z", "level": "info", "message": "Test case 7326: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7326, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:02:08Z", "level": "info", "message": "Test case 7327: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7327, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:02:09Z", "level": "info", "message": "Test case 7328: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7328, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:02:10Z", "level": "info", "message": "Test case 7329: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7329, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:02:11Z", "level": "info", "message": "Test case 7330: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7330, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:02:12Z", "level": "info", "message": "Test case 7331: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7331, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:02:13Z", "level": "info", "message": "Test case 7332: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7332, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:02:14Z", "level": "info", "message": "Test case 7333: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7333, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:02:15Z", "level": "info", "message": "Test case 7334: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7334, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:02:16Z", "level": "info", "message": "Test case 7335: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7335, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:02:17Z", "level": "info", "message": "Test case 7336: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7336, "data": "4ICA"} +{"timestamp": "2024-01-01T02:02:18Z", "level": "info", "message": "Test case 7337: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7337, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:02:19Z", "level": "info", "message": "Test case 7338: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7338, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:02:20Z", "level": "info", "message": "Test case 7339: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7339, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:02:21Z", "level": "info", "message": "Test case 7340: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7340, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:02:22Z", "level": "info", "message": "Test case 7341: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7341, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:02:23Z", "level": "info", "message": "Test case 7342: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7342, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:02:24Z", "level": "info", "message": "Test case 7343: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7343, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:02:25Z", "level": "info", "message": "Test case 7344: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7344, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:02:26Z", "level": "info", "message": "Test case 7345: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7345, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:02:27Z", "level": "info", "message": "Test case 7346: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7346, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:02:28Z", "level": "info", "message": "Test case 7347: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7347, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:02:29Z", "level": "info", "message": "Test case 7348: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7348, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:02:30Z", "level": "info", "message": "Test case 7349: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7349, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:02:31Z", "level": "info", "message": "Test case 7350: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7350, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:02:32Z", "level": "info", "message": "Test case 7351: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7351, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:02:33Z", "level": "info", "message": "Test case 7352: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7352, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:02:34Z", "level": "info", "message": "Test case 7353: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7353, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:02:35Z", "level": "info", "message": "Test case 7354: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7354, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:02:36Z", "level": "info", "message": "Test case 7355: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7355, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:02:37Z", "level": "info", "message": "Test case 7356: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7356, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:02:38Z", "level": "info", "message": "Test case 7357: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7357, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:02:39Z", "level": "info", "message": "Test case 7358: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7358, "data": "4iih"} +{"timestamp": "2024-01-01T02:02:40Z", "level": "info", "message": "Test case 7359: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7359, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:02:41Z", "level": "info", "message": "Test case 7360: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7360, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:02:42Z", "level": "info", "message": "Test case 7361: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7361, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:02:43Z", "level": "info", "message": "Test case 7362: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7362, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:02:44Z", "level": "info", "message": "Test case 7363: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7363, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:02:45Z", "level": "info", "message": "Test case 7364: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7364, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:02:46Z", "level": "info", "message": "Test case 7365: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7365, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:02:47Z", "level": "info", "message": "Test case 7366: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7366, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:02:48Z", "level": "info", "message": "Test case 7367: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7367, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:02:49Z", "level": "info", "message": "Test case 7368: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7368, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:02:50Z", "level": "info", "message": "Test case 7369: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7369, "data": "wg=="} +{"timestamp": "2024-01-01T02:02:51Z", "level": "info", "message": "Test case 7370: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7370, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:02:52Z", "level": "info", "message": "Test case 7371: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7371, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:02:53Z", "level": "info", "message": "Test case 7372: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7372, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:02:54Z", "level": "info", "message": "Test case 7373: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7373, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:02:55Z", "level": "info", "message": "Test case 7374: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7374, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:02:56Z", "level": "info", "message": "Test case 7375: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7375, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:02:57Z", "level": "info", "message": "Test case 7376: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7376, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:02:58Z", "level": "info", "message": "Test case 7377: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7377, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:02:59Z", "level": "info", "message": "Test case 7378: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7378, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:03:00Z", "level": "info", "message": "Test case 7379: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7379, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:03:01Z", "level": "info", "message": "Test case 7380: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7380, "data": "wIA="} +{"timestamp": "2024-01-01T02:03:02Z", "level": "info", "message": "Test case 7381: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7381, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:03:03Z", "level": "info", "message": "Test case 7382: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7382, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:03:04Z", "level": "info", "message": "Test case 7383: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7383, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:03:05Z", "level": "info", "message": "Test case 7384: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7384, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:03:06Z", "level": "info", "message": "Test case 7385: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7385, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:03:07Z", "level": "info", "message": "Test case 7386: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7386, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:03:08Z", "level": "info", "message": "Test case 7387: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7387, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:03:09Z", "level": "info", "message": "Test case 7388: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7388, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:03:10Z", "level": "info", "message": "Test case 7389: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7389, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:03:11Z", "level": "info", "message": "Test case 7390: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7390, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:03:12Z", "level": "info", "message": "Test case 7391: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7391, "data": "4ICA"} +{"timestamp": "2024-01-01T02:03:13Z", "level": "info", "message": "Test case 7392: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7392, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:03:14Z", "level": "info", "message": "Test case 7393: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7393, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:03:15Z", "level": "info", "message": "Test case 7394: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7394, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:03:16Z", "level": "info", "message": "Test case 7395: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7395, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:03:17Z", "level": "info", "message": "Test case 7396: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7396, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:03:18Z", "level": "info", "message": "Test case 7397: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7397, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:03:19Z", "level": "info", "message": "Test case 7398: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7398, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:03:20Z", "level": "info", "message": "Test case 7399: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7399, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:03:21Z", "level": "info", "message": "Test case 7400: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7400, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:03:22Z", "level": "info", "message": "Test case 7401: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7401, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:03:23Z", "level": "info", "message": "Test case 7402: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7402, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:03:24Z", "level": "info", "message": "Test case 7403: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7403, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:03:25Z", "level": "info", "message": "Test case 7404: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7404, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:03:26Z", "level": "info", "message": "Test case 7405: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7405, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:03:27Z", "level": "info", "message": "Test case 7406: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7406, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:03:28Z", "level": "info", "message": "Test case 7407: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7407, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:03:29Z", "level": "info", "message": "Test case 7408: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7408, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:03:30Z", "level": "info", "message": "Test case 7409: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7409, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:03:31Z", "level": "info", "message": "Test case 7410: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7410, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:03:32Z", "level": "info", "message": "Test case 7411: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7411, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:03:33Z", "level": "info", "message": "Test case 7412: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7412, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:03:34Z", "level": "info", "message": "Test case 7413: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7413, "data": "4iih"} +{"timestamp": "2024-01-01T02:03:35Z", "level": "info", "message": "Test case 7414: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7414, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:03:36Z", "level": "info", "message": "Test case 7415: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7415, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:03:37Z", "level": "info", "message": "Test case 7416: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7416, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:03:38Z", "level": "info", "message": "Test case 7417: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7417, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:03:39Z", "level": "info", "message": "Test case 7418: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7418, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:03:40Z", "level": "info", "message": "Test case 7419: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7419, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:03:41Z", "level": "info", "message": "Test case 7420: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7420, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:03:42Z", "level": "info", "message": "Test case 7421: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7421, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:03:43Z", "level": "info", "message": "Test case 7422: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7422, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:03:44Z", "level": "info", "message": "Test case 7423: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7423, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:03:45Z", "level": "info", "message": "Test case 7424: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7424, "data": "wg=="} +{"timestamp": "2024-01-01T02:03:46Z", "level": "info", "message": "Test case 7425: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7425, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:03:47Z", "level": "info", "message": "Test case 7426: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7426, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:03:48Z", "level": "info", "message": "Test case 7427: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7427, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:03:49Z", "level": "info", "message": "Test case 7428: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7428, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:03:50Z", "level": "info", "message": "Test case 7429: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7429, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:03:51Z", "level": "info", "message": "Test case 7430: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7430, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:03:52Z", "level": "info", "message": "Test case 7431: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7431, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:03:53Z", "level": "info", "message": "Test case 7432: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7432, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:03:54Z", "level": "info", "message": "Test case 7433: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7433, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:03:55Z", "level": "info", "message": "Test case 7434: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7434, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:03:56Z", "level": "info", "message": "Test case 7435: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7435, "data": "wIA="} +{"timestamp": "2024-01-01T02:03:57Z", "level": "info", "message": "Test case 7436: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7436, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:03:58Z", "level": "info", "message": "Test case 7437: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7437, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:03:59Z", "level": "info", "message": "Test case 7438: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7438, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:04:00Z", "level": "info", "message": "Test case 7439: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7439, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:04:01Z", "level": "info", "message": "Test case 7440: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7440, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:04:02Z", "level": "info", "message": "Test case 7441: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7441, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:04:03Z", "level": "info", "message": "Test case 7442: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7442, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:04:04Z", "level": "info", "message": "Test case 7443: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7443, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:04:05Z", "level": "info", "message": "Test case 7444: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7444, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:04:06Z", "level": "info", "message": "Test case 7445: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7445, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:04:07Z", "level": "info", "message": "Test case 7446: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7446, "data": "4ICA"} +{"timestamp": "2024-01-01T02:04:08Z", "level": "info", "message": "Test case 7447: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7447, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:04:09Z", "level": "info", "message": "Test case 7448: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7448, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:04:10Z", "level": "info", "message": "Test case 7449: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7449, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:04:11Z", "level": "info", "message": "Test case 7450: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7450, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:04:12Z", "level": "info", "message": "Test case 7451: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7451, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:04:13Z", "level": "info", "message": "Test case 7452: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7452, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:04:14Z", "level": "info", "message": "Test case 7453: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7453, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:04:15Z", "level": "info", "message": "Test case 7454: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7454, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:04:16Z", "level": "info", "message": "Test case 7455: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7455, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:04:17Z", "level": "info", "message": "Test case 7456: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7456, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:04:18Z", "level": "info", "message": "Test case 7457: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7457, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:04:19Z", "level": "info", "message": "Test case 7458: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7458, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:04:20Z", "level": "info", "message": "Test case 7459: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7459, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:04:21Z", "level": "info", "message": "Test case 7460: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7460, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:04:22Z", "level": "info", "message": "Test case 7461: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7461, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:04:23Z", "level": "info", "message": "Test case 7462: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7462, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:04:24Z", "level": "info", "message": "Test case 7463: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7463, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:04:25Z", "level": "info", "message": "Test case 7464: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7464, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:04:26Z", "level": "info", "message": "Test case 7465: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7465, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:04:27Z", "level": "info", "message": "Test case 7466: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7466, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:04:28Z", "level": "info", "message": "Test case 7467: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7467, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:04:29Z", "level": "info", "message": "Test case 7468: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7468, "data": "4iih"} +{"timestamp": "2024-01-01T02:04:30Z", "level": "info", "message": "Test case 7469: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7469, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:04:31Z", "level": "info", "message": "Test case 7470: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7470, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:04:32Z", "level": "info", "message": "Test case 7471: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7471, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:04:33Z", "level": "info", "message": "Test case 7472: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7472, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:04:34Z", "level": "info", "message": "Test case 7473: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7473, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:04:35Z", "level": "info", "message": "Test case 7474: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7474, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:04:36Z", "level": "info", "message": "Test case 7475: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7475, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:04:37Z", "level": "info", "message": "Test case 7476: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7476, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:04:38Z", "level": "info", "message": "Test case 7477: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7477, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:04:39Z", "level": "info", "message": "Test case 7478: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7478, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:04:40Z", "level": "info", "message": "Test case 7479: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7479, "data": "wg=="} +{"timestamp": "2024-01-01T02:04:41Z", "level": "info", "message": "Test case 7480: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7480, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:04:42Z", "level": "info", "message": "Test case 7481: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7481, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:04:43Z", "level": "info", "message": "Test case 7482: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7482, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:04:44Z", "level": "info", "message": "Test case 7483: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7483, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:04:45Z", "level": "info", "message": "Test case 7484: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7484, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:04:46Z", "level": "info", "message": "Test case 7485: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7485, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:04:47Z", "level": "info", "message": "Test case 7486: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7486, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:04:48Z", "level": "info", "message": "Test case 7487: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7487, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:04:49Z", "level": "info", "message": "Test case 7488: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7488, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:04:50Z", "level": "info", "message": "Test case 7489: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7489, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:04:51Z", "level": "info", "message": "Test case 7490: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7490, "data": "wIA="} +{"timestamp": "2024-01-01T02:04:52Z", "level": "info", "message": "Test case 7491: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7491, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:04:53Z", "level": "info", "message": "Test case 7492: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7492, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:04:54Z", "level": "info", "message": "Test case 7493: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7493, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:04:55Z", "level": "info", "message": "Test case 7494: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7494, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:04:56Z", "level": "info", "message": "Test case 7495: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7495, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:04:57Z", "level": "info", "message": "Test case 7496: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7496, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:04:58Z", "level": "info", "message": "Test case 7497: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7497, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:04:59Z", "level": "info", "message": "Test case 7498: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7498, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:05:00Z", "level": "info", "message": "Test case 7499: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7499, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:05:01Z", "level": "info", "message": "Test case 7500: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7500, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:05:02Z", "level": "info", "message": "Test case 7501: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7501, "data": "4ICA"} +{"timestamp": "2024-01-01T02:05:03Z", "level": "info", "message": "Test case 7502: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7502, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:05:04Z", "level": "info", "message": "Test case 7503: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7503, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:05:05Z", "level": "info", "message": "Test case 7504: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7504, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:05:06Z", "level": "info", "message": "Test case 7505: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7505, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:05:07Z", "level": "info", "message": "Test case 7506: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7506, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:05:08Z", "level": "info", "message": "Test case 7507: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7507, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:05:09Z", "level": "info", "message": "Test case 7508: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7508, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:05:10Z", "level": "info", "message": "Test case 7509: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7509, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:05:11Z", "level": "info", "message": "Test case 7510: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7510, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:05:12Z", "level": "info", "message": "Test case 7511: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7511, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:05:13Z", "level": "info", "message": "Test case 7512: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7512, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:05:14Z", "level": "info", "message": "Test case 7513: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7513, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:05:15Z", "level": "info", "message": "Test case 7514: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7514, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:05:16Z", "level": "info", "message": "Test case 7515: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7515, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:05:17Z", "level": "info", "message": "Test case 7516: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7516, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:05:18Z", "level": "info", "message": "Test case 7517: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7517, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:05:19Z", "level": "info", "message": "Test case 7518: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7518, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:05:20Z", "level": "info", "message": "Test case 7519: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7519, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:05:21Z", "level": "info", "message": "Test case 7520: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7520, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:05:22Z", "level": "info", "message": "Test case 7521: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7521, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:05:23Z", "level": "info", "message": "Test case 7522: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7522, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:05:24Z", "level": "info", "message": "Test case 7523: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7523, "data": "4iih"} +{"timestamp": "2024-01-01T02:05:25Z", "level": "info", "message": "Test case 7524: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7524, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:05:26Z", "level": "info", "message": "Test case 7525: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7525, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:05:27Z", "level": "info", "message": "Test case 7526: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7526, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:05:28Z", "level": "info", "message": "Test case 7527: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7527, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:05:29Z", "level": "info", "message": "Test case 7528: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7528, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:05:30Z", "level": "info", "message": "Test case 7529: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7529, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:05:31Z", "level": "info", "message": "Test case 7530: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7530, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:05:32Z", "level": "info", "message": "Test case 7531: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7531, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:05:33Z", "level": "info", "message": "Test case 7532: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7532, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:05:34Z", "level": "info", "message": "Test case 7533: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7533, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:05:35Z", "level": "info", "message": "Test case 7534: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7534, "data": "wg=="} +{"timestamp": "2024-01-01T02:05:36Z", "level": "info", "message": "Test case 7535: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7535, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:05:37Z", "level": "info", "message": "Test case 7536: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7536, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:05:38Z", "level": "info", "message": "Test case 7537: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7537, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:05:39Z", "level": "info", "message": "Test case 7538: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7538, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:05:40Z", "level": "info", "message": "Test case 7539: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7539, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:05:41Z", "level": "info", "message": "Test case 7540: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7540, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:05:42Z", "level": "info", "message": "Test case 7541: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7541, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:05:43Z", "level": "info", "message": "Test case 7542: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7542, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:05:44Z", "level": "info", "message": "Test case 7543: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7543, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:05:45Z", "level": "info", "message": "Test case 7544: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7544, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:05:46Z", "level": "info", "message": "Test case 7545: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7545, "data": "wIA="} +{"timestamp": "2024-01-01T02:05:47Z", "level": "info", "message": "Test case 7546: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7546, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:05:48Z", "level": "info", "message": "Test case 7547: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7547, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:05:49Z", "level": "info", "message": "Test case 7548: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7548, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:05:50Z", "level": "info", "message": "Test case 7549: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7549, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:05:51Z", "level": "info", "message": "Test case 7550: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7550, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:05:52Z", "level": "info", "message": "Test case 7551: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7551, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:05:53Z", "level": "info", "message": "Test case 7552: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7552, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:05:54Z", "level": "info", "message": "Test case 7553: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7553, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:05:55Z", "level": "info", "message": "Test case 7554: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7554, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:05:56Z", "level": "info", "message": "Test case 7555: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7555, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:05:57Z", "level": "info", "message": "Test case 7556: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7556, "data": "4ICA"} +{"timestamp": "2024-01-01T02:05:58Z", "level": "info", "message": "Test case 7557: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7557, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:05:59Z", "level": "info", "message": "Test case 7558: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7558, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:06:00Z", "level": "info", "message": "Test case 7559: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7559, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:06:01Z", "level": "info", "message": "Test case 7560: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7560, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:06:02Z", "level": "info", "message": "Test case 7561: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7561, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:06:03Z", "level": "info", "message": "Test case 7562: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7562, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:06:04Z", "level": "info", "message": "Test case 7563: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7563, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:06:05Z", "level": "info", "message": "Test case 7564: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7564, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:06:06Z", "level": "info", "message": "Test case 7565: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7565, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:06:07Z", "level": "info", "message": "Test case 7566: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7566, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:06:08Z", "level": "info", "message": "Test case 7567: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7567, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:06:09Z", "level": "info", "message": "Test case 7568: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7568, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:06:10Z", "level": "info", "message": "Test case 7569: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7569, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:06:11Z", "level": "info", "message": "Test case 7570: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7570, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:06:12Z", "level": "info", "message": "Test case 7571: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7571, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:06:13Z", "level": "info", "message": "Test case 7572: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7572, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:06:14Z", "level": "info", "message": "Test case 7573: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7573, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:06:15Z", "level": "info", "message": "Test case 7574: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7574, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:06:16Z", "level": "info", "message": "Test case 7575: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7575, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:06:17Z", "level": "info", "message": "Test case 7576: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7576, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:06:18Z", "level": "info", "message": "Test case 7577: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7577, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:06:19Z", "level": "info", "message": "Test case 7578: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7578, "data": "4iih"} +{"timestamp": "2024-01-01T02:06:20Z", "level": "info", "message": "Test case 7579: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7579, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:06:21Z", "level": "info", "message": "Test case 7580: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7580, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:06:22Z", "level": "info", "message": "Test case 7581: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7581, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:06:23Z", "level": "info", "message": "Test case 7582: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7582, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:06:24Z", "level": "info", "message": "Test case 7583: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7583, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:06:25Z", "level": "info", "message": "Test case 7584: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7584, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:06:26Z", "level": "info", "message": "Test case 7585: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7585, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:06:27Z", "level": "info", "message": "Test case 7586: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7586, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:06:28Z", "level": "info", "message": "Test case 7587: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7587, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:06:29Z", "level": "info", "message": "Test case 7588: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7588, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:06:30Z", "level": "info", "message": "Test case 7589: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7589, "data": "wg=="} +{"timestamp": "2024-01-01T02:06:31Z", "level": "info", "message": "Test case 7590: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7590, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:06:32Z", "level": "info", "message": "Test case 7591: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7591, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:06:33Z", "level": "info", "message": "Test case 7592: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7592, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:06:34Z", "level": "info", "message": "Test case 7593: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7593, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:06:35Z", "level": "info", "message": "Test case 7594: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7594, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:06:36Z", "level": "info", "message": "Test case 7595: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7595, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:06:37Z", "level": "info", "message": "Test case 7596: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7596, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:06:38Z", "level": "info", "message": "Test case 7597: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7597, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:06:39Z", "level": "info", "message": "Test case 7598: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7598, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:06:40Z", "level": "info", "message": "Test case 7599: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7599, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:06:41Z", "level": "info", "message": "Test case 7600: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7600, "data": "wIA="} +{"timestamp": "2024-01-01T02:06:42Z", "level": "info", "message": "Test case 7601: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7601, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:06:43Z", "level": "info", "message": "Test case 7602: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7602, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:06:44Z", "level": "info", "message": "Test case 7603: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7603, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:06:45Z", "level": "info", "message": "Test case 7604: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7604, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:06:46Z", "level": "info", "message": "Test case 7605: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7605, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:06:47Z", "level": "info", "message": "Test case 7606: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7606, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:06:48Z", "level": "info", "message": "Test case 7607: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7607, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:06:49Z", "level": "info", "message": "Test case 7608: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7608, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:06:50Z", "level": "info", "message": "Test case 7609: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7609, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:06:51Z", "level": "info", "message": "Test case 7610: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7610, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:06:52Z", "level": "info", "message": "Test case 7611: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7611, "data": "4ICA"} +{"timestamp": "2024-01-01T02:06:53Z", "level": "info", "message": "Test case 7612: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7612, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:06:54Z", "level": "info", "message": "Test case 7613: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7613, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:06:55Z", "level": "info", "message": "Test case 7614: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7614, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:06:56Z", "level": "info", "message": "Test case 7615: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7615, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:06:57Z", "level": "info", "message": "Test case 7616: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7616, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:06:58Z", "level": "info", "message": "Test case 7617: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7617, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:06:59Z", "level": "info", "message": "Test case 7618: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7618, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:07:00Z", "level": "info", "message": "Test case 7619: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7619, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:07:01Z", "level": "info", "message": "Test case 7620: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7620, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:07:02Z", "level": "info", "message": "Test case 7621: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7621, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:07:03Z", "level": "info", "message": "Test case 7622: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7622, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:07:04Z", "level": "info", "message": "Test case 7623: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7623, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:07:05Z", "level": "info", "message": "Test case 7624: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7624, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:07:06Z", "level": "info", "message": "Test case 7625: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7625, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:07:07Z", "level": "info", "message": "Test case 7626: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7626, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:07:08Z", "level": "info", "message": "Test case 7627: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7627, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:07:09Z", "level": "info", "message": "Test case 7628: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7628, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:07:10Z", "level": "info", "message": "Test case 7629: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7629, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:07:11Z", "level": "info", "message": "Test case 7630: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7630, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:07:12Z", "level": "info", "message": "Test case 7631: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7631, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:07:13Z", "level": "info", "message": "Test case 7632: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7632, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:07:14Z", "level": "info", "message": "Test case 7633: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7633, "data": "4iih"} +{"timestamp": "2024-01-01T02:07:15Z", "level": "info", "message": "Test case 7634: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7634, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:07:16Z", "level": "info", "message": "Test case 7635: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7635, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:07:17Z", "level": "info", "message": "Test case 7636: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7636, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:07:18Z", "level": "info", "message": "Test case 7637: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7637, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:07:19Z", "level": "info", "message": "Test case 7638: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7638, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:07:20Z", "level": "info", "message": "Test case 7639: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7639, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:07:21Z", "level": "info", "message": "Test case 7640: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7640, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:07:22Z", "level": "info", "message": "Test case 7641: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7641, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:07:23Z", "level": "info", "message": "Test case 7642: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7642, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:07:24Z", "level": "info", "message": "Test case 7643: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7643, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:07:25Z", "level": "info", "message": "Test case 7644: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7644, "data": "wg=="} +{"timestamp": "2024-01-01T02:07:26Z", "level": "info", "message": "Test case 7645: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7645, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:07:27Z", "level": "info", "message": "Test case 7646: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7646, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:07:28Z", "level": "info", "message": "Test case 7647: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7647, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:07:29Z", "level": "info", "message": "Test case 7648: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7648, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:07:30Z", "level": "info", "message": "Test case 7649: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7649, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:07:31Z", "level": "info", "message": "Test case 7650: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7650, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:07:32Z", "level": "info", "message": "Test case 7651: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7651, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:07:33Z", "level": "info", "message": "Test case 7652: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7652, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:07:34Z", "level": "info", "message": "Test case 7653: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7653, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:07:35Z", "level": "info", "message": "Test case 7654: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7654, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:07:36Z", "level": "info", "message": "Test case 7655: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7655, "data": "wIA="} +{"timestamp": "2024-01-01T02:07:37Z", "level": "info", "message": "Test case 7656: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7656, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:07:38Z", "level": "info", "message": "Test case 7657: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7657, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:07:39Z", "level": "info", "message": "Test case 7658: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7658, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:07:40Z", "level": "info", "message": "Test case 7659: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7659, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:07:41Z", "level": "info", "message": "Test case 7660: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7660, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:07:42Z", "level": "info", "message": "Test case 7661: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7661, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:07:43Z", "level": "info", "message": "Test case 7662: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7662, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:07:44Z", "level": "info", "message": "Test case 7663: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7663, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:07:45Z", "level": "info", "message": "Test case 7664: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7664, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:07:46Z", "level": "info", "message": "Test case 7665: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7665, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:07:47Z", "level": "info", "message": "Test case 7666: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7666, "data": "4ICA"} +{"timestamp": "2024-01-01T02:07:48Z", "level": "info", "message": "Test case 7667: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7667, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:07:49Z", "level": "info", "message": "Test case 7668: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7668, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:07:50Z", "level": "info", "message": "Test case 7669: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7669, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:07:51Z", "level": "info", "message": "Test case 7670: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7670, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:07:52Z", "level": "info", "message": "Test case 7671: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7671, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:07:53Z", "level": "info", "message": "Test case 7672: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7672, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:07:54Z", "level": "info", "message": "Test case 7673: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7673, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:07:55Z", "level": "info", "message": "Test case 7674: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7674, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:07:56Z", "level": "info", "message": "Test case 7675: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7675, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:07:57Z", "level": "info", "message": "Test case 7676: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7676, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:07:58Z", "level": "info", "message": "Test case 7677: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7677, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:07:59Z", "level": "info", "message": "Test case 7678: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7678, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:08:00Z", "level": "info", "message": "Test case 7679: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7679, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:08:01Z", "level": "info", "message": "Test case 7680: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7680, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:08:02Z", "level": "info", "message": "Test case 7681: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7681, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:08:03Z", "level": "info", "message": "Test case 7682: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7682, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:08:04Z", "level": "info", "message": "Test case 7683: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7683, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:08:05Z", "level": "info", "message": "Test case 7684: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7684, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:08:06Z", "level": "info", "message": "Test case 7685: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7685, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:08:07Z", "level": "info", "message": "Test case 7686: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7686, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:08:08Z", "level": "info", "message": "Test case 7687: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7687, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:08:09Z", "level": "info", "message": "Test case 7688: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7688, "data": "4iih"} +{"timestamp": "2024-01-01T02:08:10Z", "level": "info", "message": "Test case 7689: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7689, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:08:11Z", "level": "info", "message": "Test case 7690: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7690, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:08:12Z", "level": "info", "message": "Test case 7691: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7691, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:08:13Z", "level": "info", "message": "Test case 7692: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7692, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:08:14Z", "level": "info", "message": "Test case 7693: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7693, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:08:15Z", "level": "info", "message": "Test case 7694: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7694, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:08:16Z", "level": "info", "message": "Test case 7695: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7695, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:08:17Z", "level": "info", "message": "Test case 7696: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7696, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:08:18Z", "level": "info", "message": "Test case 7697: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7697, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:08:19Z", "level": "info", "message": "Test case 7698: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7698, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:08:20Z", "level": "info", "message": "Test case 7699: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7699, "data": "wg=="} +{"timestamp": "2024-01-01T02:08:21Z", "level": "info", "message": "Test case 7700: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7700, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:08:22Z", "level": "info", "message": "Test case 7701: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7701, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:08:23Z", "level": "info", "message": "Test case 7702: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7702, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:08:24Z", "level": "info", "message": "Test case 7703: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7703, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:08:25Z", "level": "info", "message": "Test case 7704: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7704, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:08:26Z", "level": "info", "message": "Test case 7705: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7705, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:08:27Z", "level": "info", "message": "Test case 7706: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7706, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:08:28Z", "level": "info", "message": "Test case 7707: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7707, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:08:29Z", "level": "info", "message": "Test case 7708: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7708, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:08:30Z", "level": "info", "message": "Test case 7709: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7709, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:08:31Z", "level": "info", "message": "Test case 7710: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7710, "data": "wIA="} +{"timestamp": "2024-01-01T02:08:32Z", "level": "info", "message": "Test case 7711: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7711, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:08:33Z", "level": "info", "message": "Test case 7712: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7712, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:08:34Z", "level": "info", "message": "Test case 7713: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7713, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:08:35Z", "level": "info", "message": "Test case 7714: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7714, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:08:36Z", "level": "info", "message": "Test case 7715: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7715, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:08:37Z", "level": "info", "message": "Test case 7716: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7716, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:08:38Z", "level": "info", "message": "Test case 7717: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7717, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:08:39Z", "level": "info", "message": "Test case 7718: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7718, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:08:40Z", "level": "info", "message": "Test case 7719: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7719, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:08:41Z", "level": "info", "message": "Test case 7720: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7720, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:08:42Z", "level": "info", "message": "Test case 7721: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7721, "data": "4ICA"} +{"timestamp": "2024-01-01T02:08:43Z", "level": "info", "message": "Test case 7722: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7722, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:08:44Z", "level": "info", "message": "Test case 7723: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7723, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:08:45Z", "level": "info", "message": "Test case 7724: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7724, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:08:46Z", "level": "info", "message": "Test case 7725: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7725, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:08:47Z", "level": "info", "message": "Test case 7726: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7726, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:08:48Z", "level": "info", "message": "Test case 7727: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7727, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:08:49Z", "level": "info", "message": "Test case 7728: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7728, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:08:50Z", "level": "info", "message": "Test case 7729: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7729, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:08:51Z", "level": "info", "message": "Test case 7730: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7730, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:08:52Z", "level": "info", "message": "Test case 7731: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7731, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:08:53Z", "level": "info", "message": "Test case 7732: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7732, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:08:54Z", "level": "info", "message": "Test case 7733: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7733, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:08:55Z", "level": "info", "message": "Test case 7734: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7734, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:08:56Z", "level": "info", "message": "Test case 7735: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7735, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:08:57Z", "level": "info", "message": "Test case 7736: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7736, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:08:58Z", "level": "info", "message": "Test case 7737: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7737, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:08:59Z", "level": "info", "message": "Test case 7738: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7738, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:09:00Z", "level": "info", "message": "Test case 7739: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7739, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:09:01Z", "level": "info", "message": "Test case 7740: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7740, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:09:02Z", "level": "info", "message": "Test case 7741: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7741, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:09:03Z", "level": "info", "message": "Test case 7742: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7742, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:09:04Z", "level": "info", "message": "Test case 7743: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7743, "data": "4iih"} +{"timestamp": "2024-01-01T02:09:05Z", "level": "info", "message": "Test case 7744: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7744, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:09:06Z", "level": "info", "message": "Test case 7745: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7745, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:09:07Z", "level": "info", "message": "Test case 7746: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7746, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:09:08Z", "level": "info", "message": "Test case 7747: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7747, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:09:09Z", "level": "info", "message": "Test case 7748: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7748, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:09:10Z", "level": "info", "message": "Test case 7749: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7749, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:09:11Z", "level": "info", "message": "Test case 7750: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7750, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:09:12Z", "level": "info", "message": "Test case 7751: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7751, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:09:13Z", "level": "info", "message": "Test case 7752: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7752, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:09:14Z", "level": "info", "message": "Test case 7753: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7753, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:09:15Z", "level": "info", "message": "Test case 7754: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7754, "data": "wg=="} +{"timestamp": "2024-01-01T02:09:16Z", "level": "info", "message": "Test case 7755: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7755, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:09:17Z", "level": "info", "message": "Test case 7756: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7756, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:09:18Z", "level": "info", "message": "Test case 7757: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7757, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:09:19Z", "level": "info", "message": "Test case 7758: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7758, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:09:20Z", "level": "info", "message": "Test case 7759: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7759, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:09:21Z", "level": "info", "message": "Test case 7760: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7760, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:09:22Z", "level": "info", "message": "Test case 7761: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7761, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:09:23Z", "level": "info", "message": "Test case 7762: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7762, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:09:24Z", "level": "info", "message": "Test case 7763: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7763, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:09:25Z", "level": "info", "message": "Test case 7764: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7764, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:09:26Z", "level": "info", "message": "Test case 7765: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7765, "data": "wIA="} +{"timestamp": "2024-01-01T02:09:27Z", "level": "info", "message": "Test case 7766: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7766, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:09:28Z", "level": "info", "message": "Test case 7767: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7767, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:09:29Z", "level": "info", "message": "Test case 7768: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7768, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:09:30Z", "level": "info", "message": "Test case 7769: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7769, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:09:31Z", "level": "info", "message": "Test case 7770: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7770, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:09:32Z", "level": "info", "message": "Test case 7771: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7771, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:09:33Z", "level": "info", "message": "Test case 7772: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7772, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:09:34Z", "level": "info", "message": "Test case 7773: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7773, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:09:35Z", "level": "info", "message": "Test case 7774: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7774, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:09:36Z", "level": "info", "message": "Test case 7775: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7775, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:09:37Z", "level": "info", "message": "Test case 7776: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7776, "data": "4ICA"} +{"timestamp": "2024-01-01T02:09:38Z", "level": "info", "message": "Test case 7777: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7777, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:09:39Z", "level": "info", "message": "Test case 7778: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7778, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:09:40Z", "level": "info", "message": "Test case 7779: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7779, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:09:41Z", "level": "info", "message": "Test case 7780: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7780, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:09:42Z", "level": "info", "message": "Test case 7781: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7781, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:09:43Z", "level": "info", "message": "Test case 7782: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7782, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:09:44Z", "level": "info", "message": "Test case 7783: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7783, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:09:45Z", "level": "info", "message": "Test case 7784: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7784, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:09:46Z", "level": "info", "message": "Test case 7785: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7785, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:09:47Z", "level": "info", "message": "Test case 7786: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7786, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:09:48Z", "level": "info", "message": "Test case 7787: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7787, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:09:49Z", "level": "info", "message": "Test case 7788: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7788, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:09:50Z", "level": "info", "message": "Test case 7789: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7789, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:09:51Z", "level": "info", "message": "Test case 7790: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7790, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:09:52Z", "level": "info", "message": "Test case 7791: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7791, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:09:53Z", "level": "info", "message": "Test case 7792: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7792, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:09:54Z", "level": "info", "message": "Test case 7793: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7793, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:09:55Z", "level": "info", "message": "Test case 7794: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7794, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:09:56Z", "level": "info", "message": "Test case 7795: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7795, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:09:57Z", "level": "info", "message": "Test case 7796: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7796, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:09:58Z", "level": "info", "message": "Test case 7797: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7797, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:09:59Z", "level": "info", "message": "Test case 7798: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7798, "data": "4iih"} +{"timestamp": "2024-01-01T02:10:00Z", "level": "info", "message": "Test case 7799: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7799, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:10:01Z", "level": "info", "message": "Test case 7800: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7800, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:10:02Z", "level": "info", "message": "Test case 7801: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7801, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:10:03Z", "level": "info", "message": "Test case 7802: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7802, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:10:04Z", "level": "info", "message": "Test case 7803: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7803, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:10:05Z", "level": "info", "message": "Test case 7804: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7804, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:10:06Z", "level": "info", "message": "Test case 7805: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7805, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:10:07Z", "level": "info", "message": "Test case 7806: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7806, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:10:08Z", "level": "info", "message": "Test case 7807: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7807, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:10:09Z", "level": "info", "message": "Test case 7808: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7808, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:10:10Z", "level": "info", "message": "Test case 7809: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7809, "data": "wg=="} +{"timestamp": "2024-01-01T02:10:11Z", "level": "info", "message": "Test case 7810: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7810, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:10:12Z", "level": "info", "message": "Test case 7811: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7811, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:10:13Z", "level": "info", "message": "Test case 7812: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7812, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:10:14Z", "level": "info", "message": "Test case 7813: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7813, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:10:15Z", "level": "info", "message": "Test case 7814: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7814, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:10:16Z", "level": "info", "message": "Test case 7815: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7815, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:10:17Z", "level": "info", "message": "Test case 7816: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7816, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:10:18Z", "level": "info", "message": "Test case 7817: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7817, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:10:19Z", "level": "info", "message": "Test case 7818: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7818, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:10:20Z", "level": "info", "message": "Test case 7819: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7819, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:10:21Z", "level": "info", "message": "Test case 7820: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7820, "data": "wIA="} +{"timestamp": "2024-01-01T02:10:22Z", "level": "info", "message": "Test case 7821: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7821, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:10:23Z", "level": "info", "message": "Test case 7822: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7822, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:10:24Z", "level": "info", "message": "Test case 7823: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7823, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:10:25Z", "level": "info", "message": "Test case 7824: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7824, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:10:26Z", "level": "info", "message": "Test case 7825: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7825, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:10:27Z", "level": "info", "message": "Test case 7826: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7826, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:10:28Z", "level": "info", "message": "Test case 7827: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7827, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:10:29Z", "level": "info", "message": "Test case 7828: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7828, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:10:30Z", "level": "info", "message": "Test case 7829: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7829, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:10:31Z", "level": "info", "message": "Test case 7830: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7830, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:10:32Z", "level": "info", "message": "Test case 7831: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7831, "data": "4ICA"} +{"timestamp": "2024-01-01T02:10:33Z", "level": "info", "message": "Test case 7832: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7832, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:10:34Z", "level": "info", "message": "Test case 7833: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7833, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:10:35Z", "level": "info", "message": "Test case 7834: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7834, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:10:36Z", "level": "info", "message": "Test case 7835: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7835, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:10:37Z", "level": "info", "message": "Test case 7836: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7836, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:10:38Z", "level": "info", "message": "Test case 7837: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7837, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:10:39Z", "level": "info", "message": "Test case 7838: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7838, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:10:40Z", "level": "info", "message": "Test case 7839: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7839, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:10:41Z", "level": "info", "message": "Test case 7840: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7840, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:10:42Z", "level": "info", "message": "Test case 7841: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7841, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:10:43Z", "level": "info", "message": "Test case 7842: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7842, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:10:44Z", "level": "info", "message": "Test case 7843: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7843, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:10:45Z", "level": "info", "message": "Test case 7844: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7844, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:10:46Z", "level": "info", "message": "Test case 7845: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7845, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:10:47Z", "level": "info", "message": "Test case 7846: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7846, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:10:48Z", "level": "info", "message": "Test case 7847: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7847, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:10:49Z", "level": "info", "message": "Test case 7848: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7848, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:10:50Z", "level": "info", "message": "Test case 7849: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7849, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:10:51Z", "level": "info", "message": "Test case 7850: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7850, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:10:52Z", "level": "info", "message": "Test case 7851: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7851, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:10:53Z", "level": "info", "message": "Test case 7852: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7852, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:10:54Z", "level": "info", "message": "Test case 7853: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7853, "data": "4iih"} +{"timestamp": "2024-01-01T02:10:55Z", "level": "info", "message": "Test case 7854: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7854, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:10:56Z", "level": "info", "message": "Test case 7855: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7855, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:10:57Z", "level": "info", "message": "Test case 7856: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7856, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:10:58Z", "level": "info", "message": "Test case 7857: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7857, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:10:59Z", "level": "info", "message": "Test case 7858: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7858, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:11:00Z", "level": "info", "message": "Test case 7859: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7859, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:11:01Z", "level": "info", "message": "Test case 7860: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7860, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:11:02Z", "level": "info", "message": "Test case 7861: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7861, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:11:03Z", "level": "info", "message": "Test case 7862: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7862, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:11:04Z", "level": "info", "message": "Test case 7863: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7863, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:11:05Z", "level": "info", "message": "Test case 7864: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7864, "data": "wg=="} +{"timestamp": "2024-01-01T02:11:06Z", "level": "info", "message": "Test case 7865: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7865, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:11:07Z", "level": "info", "message": "Test case 7866: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7866, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:11:08Z", "level": "info", "message": "Test case 7867: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7867, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:11:09Z", "level": "info", "message": "Test case 7868: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7868, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:11:10Z", "level": "info", "message": "Test case 7869: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7869, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:11:11Z", "level": "info", "message": "Test case 7870: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7870, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:11:12Z", "level": "info", "message": "Test case 7871: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7871, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:11:13Z", "level": "info", "message": "Test case 7872: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7872, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:11:14Z", "level": "info", "message": "Test case 7873: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7873, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:11:15Z", "level": "info", "message": "Test case 7874: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7874, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:11:16Z", "level": "info", "message": "Test case 7875: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7875, "data": "wIA="} +{"timestamp": "2024-01-01T02:11:17Z", "level": "info", "message": "Test case 7876: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7876, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:11:18Z", "level": "info", "message": "Test case 7877: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7877, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:11:19Z", "level": "info", "message": "Test case 7878: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7878, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:11:20Z", "level": "info", "message": "Test case 7879: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7879, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:11:21Z", "level": "info", "message": "Test case 7880: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7880, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:11:22Z", "level": "info", "message": "Test case 7881: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7881, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:11:23Z", "level": "info", "message": "Test case 7882: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7882, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:11:24Z", "level": "info", "message": "Test case 7883: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7883, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:11:25Z", "level": "info", "message": "Test case 7884: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7884, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:11:26Z", "level": "info", "message": "Test case 7885: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7885, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:11:27Z", "level": "info", "message": "Test case 7886: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7886, "data": "4ICA"} +{"timestamp": "2024-01-01T02:11:28Z", "level": "info", "message": "Test case 7887: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7887, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:11:29Z", "level": "info", "message": "Test case 7888: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7888, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:11:30Z", "level": "info", "message": "Test case 7889: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7889, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:11:31Z", "level": "info", "message": "Test case 7890: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7890, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:11:32Z", "level": "info", "message": "Test case 7891: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7891, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:11:33Z", "level": "info", "message": "Test case 7892: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7892, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:11:34Z", "level": "info", "message": "Test case 7893: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7893, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:11:35Z", "level": "info", "message": "Test case 7894: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7894, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:11:36Z", "level": "info", "message": "Test case 7895: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7895, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:11:37Z", "level": "info", "message": "Test case 7896: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7896, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:11:38Z", "level": "info", "message": "Test case 7897: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7897, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:11:39Z", "level": "info", "message": "Test case 7898: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7898, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:11:40Z", "level": "info", "message": "Test case 7899: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7899, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:11:41Z", "level": "info", "message": "Test case 7900: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7900, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:11:42Z", "level": "info", "message": "Test case 7901: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7901, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:11:43Z", "level": "info", "message": "Test case 7902: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7902, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:11:44Z", "level": "info", "message": "Test case 7903: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7903, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:11:45Z", "level": "info", "message": "Test case 7904: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7904, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:11:46Z", "level": "info", "message": "Test case 7905: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7905, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:11:47Z", "level": "info", "message": "Test case 7906: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7906, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:11:48Z", "level": "info", "message": "Test case 7907: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7907, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:11:49Z", "level": "info", "message": "Test case 7908: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7908, "data": "4iih"} +{"timestamp": "2024-01-01T02:11:50Z", "level": "info", "message": "Test case 7909: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7909, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:11:51Z", "level": "info", "message": "Test case 7910: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7910, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:11:52Z", "level": "info", "message": "Test case 7911: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7911, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:11:53Z", "level": "info", "message": "Test case 7912: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7912, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:11:54Z", "level": "info", "message": "Test case 7913: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7913, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:11:55Z", "level": "info", "message": "Test case 7914: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7914, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:11:56Z", "level": "info", "message": "Test case 7915: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7915, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:11:57Z", "level": "info", "message": "Test case 7916: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7916, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:11:58Z", "level": "info", "message": "Test case 7917: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7917, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:11:59Z", "level": "info", "message": "Test case 7918: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7918, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:12:00Z", "level": "info", "message": "Test case 7919: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7919, "data": "wg=="} +{"timestamp": "2024-01-01T02:12:01Z", "level": "info", "message": "Test case 7920: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7920, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:12:02Z", "level": "info", "message": "Test case 7921: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7921, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:12:03Z", "level": "info", "message": "Test case 7922: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7922, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:12:04Z", "level": "info", "message": "Test case 7923: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7923, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:12:05Z", "level": "info", "message": "Test case 7924: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7924, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:12:06Z", "level": "info", "message": "Test case 7925: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7925, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:12:07Z", "level": "info", "message": "Test case 7926: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7926, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:12:08Z", "level": "info", "message": "Test case 7927: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7927, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:12:09Z", "level": "info", "message": "Test case 7928: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7928, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:12:10Z", "level": "info", "message": "Test case 7929: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7929, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:12:11Z", "level": "info", "message": "Test case 7930: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7930, "data": "wIA="} +{"timestamp": "2024-01-01T02:12:12Z", "level": "info", "message": "Test case 7931: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7931, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:12:13Z", "level": "info", "message": "Test case 7932: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7932, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:12:14Z", "level": "info", "message": "Test case 7933: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7933, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:12:15Z", "level": "info", "message": "Test case 7934: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7934, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:12:16Z", "level": "info", "message": "Test case 7935: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7935, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:12:17Z", "level": "info", "message": "Test case 7936: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7936, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:12:18Z", "level": "info", "message": "Test case 7937: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7937, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:12:19Z", "level": "info", "message": "Test case 7938: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7938, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:12:20Z", "level": "info", "message": "Test case 7939: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7939, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:12:21Z", "level": "info", "message": "Test case 7940: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7940, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:12:22Z", "level": "info", "message": "Test case 7941: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7941, "data": "4ICA"} +{"timestamp": "2024-01-01T02:12:23Z", "level": "info", "message": "Test case 7942: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7942, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:12:24Z", "level": "info", "message": "Test case 7943: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7943, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:12:25Z", "level": "info", "message": "Test case 7944: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7944, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:12:26Z", "level": "info", "message": "Test case 7945: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7945, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:12:27Z", "level": "info", "message": "Test case 7946: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7946, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:12:28Z", "level": "info", "message": "Test case 7947: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7947, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:12:29Z", "level": "info", "message": "Test case 7948: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7948, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:12:30Z", "level": "info", "message": "Test case 7949: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7949, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:12:31Z", "level": "info", "message": "Test case 7950: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7950, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:12:32Z", "level": "info", "message": "Test case 7951: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7951, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:12:33Z", "level": "info", "message": "Test case 7952: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7952, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:12:34Z", "level": "info", "message": "Test case 7953: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7953, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:12:35Z", "level": "info", "message": "Test case 7954: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7954, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:12:36Z", "level": "info", "message": "Test case 7955: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7955, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:12:37Z", "level": "info", "message": "Test case 7956: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7956, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:12:38Z", "level": "info", "message": "Test case 7957: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7957, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:12:39Z", "level": "info", "message": "Test case 7958: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7958, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:12:40Z", "level": "info", "message": "Test case 7959: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7959, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:12:41Z", "level": "info", "message": "Test case 7960: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7960, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:12:42Z", "level": "info", "message": "Test case 7961: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7961, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:12:43Z", "level": "info", "message": "Test case 7962: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7962, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:12:44Z", "level": "info", "message": "Test case 7963: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7963, "data": "4iih"} +{"timestamp": "2024-01-01T02:12:45Z", "level": "info", "message": "Test case 7964: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7964, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:12:46Z", "level": "info", "message": "Test case 7965: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7965, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:12:47Z", "level": "info", "message": "Test case 7966: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7966, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:12:48Z", "level": "info", "message": "Test case 7967: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7967, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:12:49Z", "level": "info", "message": "Test case 7968: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7968, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:12:50Z", "level": "info", "message": "Test case 7969: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7969, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:12:51Z", "level": "info", "message": "Test case 7970: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7970, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:12:52Z", "level": "info", "message": "Test case 7971: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7971, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:12:53Z", "level": "info", "message": "Test case 7972: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7972, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:12:54Z", "level": "info", "message": "Test case 7973: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7973, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:12:55Z", "level": "info", "message": "Test case 7974: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7974, "data": "wg=="} +{"timestamp": "2024-01-01T02:12:56Z", "level": "info", "message": "Test case 7975: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7975, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:12:57Z", "level": "info", "message": "Test case 7976: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7976, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:12:58Z", "level": "info", "message": "Test case 7977: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7977, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:12:59Z", "level": "info", "message": "Test case 7978: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7978, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:13:00Z", "level": "info", "message": "Test case 7979: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7979, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:13:01Z", "level": "info", "message": "Test case 7980: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7980, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:13:02Z", "level": "info", "message": "Test case 7981: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7981, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:13:03Z", "level": "info", "message": "Test case 7982: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7982, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:13:04Z", "level": "info", "message": "Test case 7983: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7983, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:13:05Z", "level": "info", "message": "Test case 7984: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7984, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:13:06Z", "level": "info", "message": "Test case 7985: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7985, "data": "wIA="} +{"timestamp": "2024-01-01T02:13:07Z", "level": "info", "message": "Test case 7986: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7986, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:13:08Z", "level": "info", "message": "Test case 7987: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7987, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:13:09Z", "level": "info", "message": "Test case 7988: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7988, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:13:10Z", "level": "info", "message": "Test case 7989: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 7989, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:13:11Z", "level": "info", "message": "Test case 7990: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 7990, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:13:12Z", "level": "info", "message": "Test case 7991: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 7991, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:13:13Z", "level": "info", "message": "Test case 7992: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 7992, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:13:14Z", "level": "info", "message": "Test case 7993: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 7993, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:13:15Z", "level": "info", "message": "Test case 7994: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 7994, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:13:16Z", "level": "info", "message": "Test case 7995: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 7995, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:13:17Z", "level": "info", "message": "Test case 7996: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 7996, "data": "4ICA"} +{"timestamp": "2024-01-01T02:13:18Z", "level": "info", "message": "Test case 7997: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 7997, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:13:19Z", "level": "info", "message": "Test case 7998: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 7998, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:13:20Z", "level": "info", "message": "Test case 7999: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 7999, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:13:21Z", "level": "info", "message": "Test case 8000: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8000, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:13:22Z", "level": "info", "message": "Test case 8001: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8001, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:13:23Z", "level": "info", "message": "Test case 8002: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8002, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:13:24Z", "level": "info", "message": "Test case 8003: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8003, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:13:25Z", "level": "info", "message": "Test case 8004: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8004, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:13:26Z", "level": "info", "message": "Test case 8005: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8005, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:13:27Z", "level": "info", "message": "Test case 8006: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8006, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:13:28Z", "level": "info", "message": "Test case 8007: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8007, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:13:29Z", "level": "info", "message": "Test case 8008: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8008, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:13:30Z", "level": "info", "message": "Test case 8009: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8009, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:13:31Z", "level": "info", "message": "Test case 8010: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8010, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:13:32Z", "level": "info", "message": "Test case 8011: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8011, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:13:33Z", "level": "info", "message": "Test case 8012: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8012, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:13:34Z", "level": "info", "message": "Test case 8013: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8013, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:13:35Z", "level": "info", "message": "Test case 8014: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8014, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:13:36Z", "level": "info", "message": "Test case 8015: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8015, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:13:37Z", "level": "info", "message": "Test case 8016: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8016, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:13:38Z", "level": "info", "message": "Test case 8017: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8017, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:13:39Z", "level": "info", "message": "Test case 8018: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8018, "data": "4iih"} +{"timestamp": "2024-01-01T02:13:40Z", "level": "info", "message": "Test case 8019: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8019, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:13:41Z", "level": "info", "message": "Test case 8020: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8020, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:13:42Z", "level": "info", "message": "Test case 8021: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8021, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:13:43Z", "level": "info", "message": "Test case 8022: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8022, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:13:44Z", "level": "info", "message": "Test case 8023: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8023, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:13:45Z", "level": "info", "message": "Test case 8024: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8024, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:13:46Z", "level": "info", "message": "Test case 8025: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8025, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:13:47Z", "level": "info", "message": "Test case 8026: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8026, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:13:48Z", "level": "info", "message": "Test case 8027: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8027, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:13:49Z", "level": "info", "message": "Test case 8028: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8028, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:13:50Z", "level": "info", "message": "Test case 8029: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8029, "data": "wg=="} +{"timestamp": "2024-01-01T02:13:51Z", "level": "info", "message": "Test case 8030: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8030, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:13:52Z", "level": "info", "message": "Test case 8031: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8031, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:13:53Z", "level": "info", "message": "Test case 8032: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8032, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:13:54Z", "level": "info", "message": "Test case 8033: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8033, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:13:55Z", "level": "info", "message": "Test case 8034: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8034, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:13:56Z", "level": "info", "message": "Test case 8035: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8035, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:13:57Z", "level": "info", "message": "Test case 8036: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8036, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:13:58Z", "level": "info", "message": "Test case 8037: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8037, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:13:59Z", "level": "info", "message": "Test case 8038: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8038, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:14:00Z", "level": "info", "message": "Test case 8039: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8039, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:14:01Z", "level": "info", "message": "Test case 8040: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8040, "data": "wIA="} +{"timestamp": "2024-01-01T02:14:02Z", "level": "info", "message": "Test case 8041: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8041, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:14:03Z", "level": "info", "message": "Test case 8042: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8042, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:14:04Z", "level": "info", "message": "Test case 8043: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8043, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:14:05Z", "level": "info", "message": "Test case 8044: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8044, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:14:06Z", "level": "info", "message": "Test case 8045: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8045, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:14:07Z", "level": "info", "message": "Test case 8046: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8046, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:14:08Z", "level": "info", "message": "Test case 8047: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8047, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:14:09Z", "level": "info", "message": "Test case 8048: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8048, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:14:10Z", "level": "info", "message": "Test case 8049: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8049, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:14:11Z", "level": "info", "message": "Test case 8050: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8050, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:14:12Z", "level": "info", "message": "Test case 8051: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8051, "data": "4ICA"} +{"timestamp": "2024-01-01T02:14:13Z", "level": "info", "message": "Test case 8052: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8052, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:14:14Z", "level": "info", "message": "Test case 8053: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8053, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:14:15Z", "level": "info", "message": "Test case 8054: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8054, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:14:16Z", "level": "info", "message": "Test case 8055: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8055, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:14:17Z", "level": "info", "message": "Test case 8056: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8056, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:14:18Z", "level": "info", "message": "Test case 8057: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8057, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:14:19Z", "level": "info", "message": "Test case 8058: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8058, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:14:20Z", "level": "info", "message": "Test case 8059: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8059, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:14:21Z", "level": "info", "message": "Test case 8060: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8060, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:14:22Z", "level": "info", "message": "Test case 8061: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8061, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:14:23Z", "level": "info", "message": "Test case 8062: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8062, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:14:24Z", "level": "info", "message": "Test case 8063: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8063, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:14:25Z", "level": "info", "message": "Test case 8064: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8064, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:14:26Z", "level": "info", "message": "Test case 8065: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8065, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:14:27Z", "level": "info", "message": "Test case 8066: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8066, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:14:28Z", "level": "info", "message": "Test case 8067: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8067, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:14:29Z", "level": "info", "message": "Test case 8068: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8068, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:14:30Z", "level": "info", "message": "Test case 8069: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8069, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:14:31Z", "level": "info", "message": "Test case 8070: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8070, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:14:32Z", "level": "info", "message": "Test case 8071: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8071, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:14:33Z", "level": "info", "message": "Test case 8072: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8072, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:14:34Z", "level": "info", "message": "Test case 8073: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8073, "data": "4iih"} +{"timestamp": "2024-01-01T02:14:35Z", "level": "info", "message": "Test case 8074: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8074, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:14:36Z", "level": "info", "message": "Test case 8075: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8075, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:14:37Z", "level": "info", "message": "Test case 8076: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8076, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:14:38Z", "level": "info", "message": "Test case 8077: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8077, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:14:39Z", "level": "info", "message": "Test case 8078: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8078, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:14:40Z", "level": "info", "message": "Test case 8079: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8079, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:14:41Z", "level": "info", "message": "Test case 8080: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8080, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:14:42Z", "level": "info", "message": "Test case 8081: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8081, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:14:43Z", "level": "info", "message": "Test case 8082: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8082, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:14:44Z", "level": "info", "message": "Test case 8083: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8083, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:14:45Z", "level": "info", "message": "Test case 8084: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8084, "data": "wg=="} +{"timestamp": "2024-01-01T02:14:46Z", "level": "info", "message": "Test case 8085: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8085, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:14:47Z", "level": "info", "message": "Test case 8086: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8086, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:14:48Z", "level": "info", "message": "Test case 8087: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8087, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:14:49Z", "level": "info", "message": "Test case 8088: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8088, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:14:50Z", "level": "info", "message": "Test case 8089: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8089, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:14:51Z", "level": "info", "message": "Test case 8090: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8090, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:14:52Z", "level": "info", "message": "Test case 8091: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8091, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:14:53Z", "level": "info", "message": "Test case 8092: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8092, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:14:54Z", "level": "info", "message": "Test case 8093: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8093, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:14:55Z", "level": "info", "message": "Test case 8094: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8094, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:14:56Z", "level": "info", "message": "Test case 8095: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8095, "data": "wIA="} +{"timestamp": "2024-01-01T02:14:57Z", "level": "info", "message": "Test case 8096: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8096, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:14:58Z", "level": "info", "message": "Test case 8097: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8097, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:14:59Z", "level": "info", "message": "Test case 8098: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8098, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:15:00Z", "level": "info", "message": "Test case 8099: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8099, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:15:01Z", "level": "info", "message": "Test case 8100: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8100, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:15:02Z", "level": "info", "message": "Test case 8101: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8101, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:15:03Z", "level": "info", "message": "Test case 8102: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8102, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:15:04Z", "level": "info", "message": "Test case 8103: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8103, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:15:05Z", "level": "info", "message": "Test case 8104: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8104, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:15:06Z", "level": "info", "message": "Test case 8105: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8105, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:15:07Z", "level": "info", "message": "Test case 8106: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8106, "data": "4ICA"} +{"timestamp": "2024-01-01T02:15:08Z", "level": "info", "message": "Test case 8107: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8107, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:15:09Z", "level": "info", "message": "Test case 8108: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8108, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:15:10Z", "level": "info", "message": "Test case 8109: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8109, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:15:11Z", "level": "info", "message": "Test case 8110: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8110, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:15:12Z", "level": "info", "message": "Test case 8111: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8111, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:15:13Z", "level": "info", "message": "Test case 8112: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8112, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:15:14Z", "level": "info", "message": "Test case 8113: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8113, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:15:15Z", "level": "info", "message": "Test case 8114: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8114, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:15:16Z", "level": "info", "message": "Test case 8115: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8115, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:15:17Z", "level": "info", "message": "Test case 8116: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8116, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:15:18Z", "level": "info", "message": "Test case 8117: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8117, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:15:19Z", "level": "info", "message": "Test case 8118: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8118, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:15:20Z", "level": "info", "message": "Test case 8119: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8119, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:15:21Z", "level": "info", "message": "Test case 8120: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8120, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:15:22Z", "level": "info", "message": "Test case 8121: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8121, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:15:23Z", "level": "info", "message": "Test case 8122: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8122, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:15:24Z", "level": "info", "message": "Test case 8123: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8123, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:15:25Z", "level": "info", "message": "Test case 8124: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8124, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:15:26Z", "level": "info", "message": "Test case 8125: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8125, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:15:27Z", "level": "info", "message": "Test case 8126: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8126, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:15:28Z", "level": "info", "message": "Test case 8127: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8127, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:15:29Z", "level": "info", "message": "Test case 8128: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8128, "data": "4iih"} +{"timestamp": "2024-01-01T02:15:30Z", "level": "info", "message": "Test case 8129: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8129, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:15:31Z", "level": "info", "message": "Test case 8130: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8130, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:15:32Z", "level": "info", "message": "Test case 8131: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8131, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:15:33Z", "level": "info", "message": "Test case 8132: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8132, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:15:34Z", "level": "info", "message": "Test case 8133: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8133, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:15:35Z", "level": "info", "message": "Test case 8134: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8134, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:15:36Z", "level": "info", "message": "Test case 8135: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8135, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:15:37Z", "level": "info", "message": "Test case 8136: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8136, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:15:38Z", "level": "info", "message": "Test case 8137: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8137, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:15:39Z", "level": "info", "message": "Test case 8138: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8138, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:15:40Z", "level": "info", "message": "Test case 8139: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8139, "data": "wg=="} +{"timestamp": "2024-01-01T02:15:41Z", "level": "info", "message": "Test case 8140: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8140, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:15:42Z", "level": "info", "message": "Test case 8141: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8141, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:15:43Z", "level": "info", "message": "Test case 8142: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8142, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:15:44Z", "level": "info", "message": "Test case 8143: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8143, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:15:45Z", "level": "info", "message": "Test case 8144: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8144, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:15:46Z", "level": "info", "message": "Test case 8145: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8145, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:15:47Z", "level": "info", "message": "Test case 8146: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8146, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:15:48Z", "level": "info", "message": "Test case 8147: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8147, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:15:49Z", "level": "info", "message": "Test case 8148: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8148, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:15:50Z", "level": "info", "message": "Test case 8149: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8149, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:15:51Z", "level": "info", "message": "Test case 8150: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8150, "data": "wIA="} +{"timestamp": "2024-01-01T02:15:52Z", "level": "info", "message": "Test case 8151: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8151, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:15:53Z", "level": "info", "message": "Test case 8152: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8152, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:15:54Z", "level": "info", "message": "Test case 8153: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8153, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:15:55Z", "level": "info", "message": "Test case 8154: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8154, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:15:56Z", "level": "info", "message": "Test case 8155: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8155, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:15:57Z", "level": "info", "message": "Test case 8156: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8156, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:15:58Z", "level": "info", "message": "Test case 8157: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8157, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:15:59Z", "level": "info", "message": "Test case 8158: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8158, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:16:00Z", "level": "info", "message": "Test case 8159: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8159, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:16:01Z", "level": "info", "message": "Test case 8160: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8160, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:16:02Z", "level": "info", "message": "Test case 8161: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8161, "data": "4ICA"} +{"timestamp": "2024-01-01T02:16:03Z", "level": "info", "message": "Test case 8162: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8162, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:16:04Z", "level": "info", "message": "Test case 8163: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8163, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:16:05Z", "level": "info", "message": "Test case 8164: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8164, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:16:06Z", "level": "info", "message": "Test case 8165: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8165, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:16:07Z", "level": "info", "message": "Test case 8166: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8166, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:16:08Z", "level": "info", "message": "Test case 8167: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8167, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:16:09Z", "level": "info", "message": "Test case 8168: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8168, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:16:10Z", "level": "info", "message": "Test case 8169: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8169, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:16:11Z", "level": "info", "message": "Test case 8170: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8170, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:16:12Z", "level": "info", "message": "Test case 8171: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8171, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:16:13Z", "level": "info", "message": "Test case 8172: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8172, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:16:14Z", "level": "info", "message": "Test case 8173: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8173, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:16:15Z", "level": "info", "message": "Test case 8174: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8174, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:16:16Z", "level": "info", "message": "Test case 8175: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8175, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:16:17Z", "level": "info", "message": "Test case 8176: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8176, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:16:18Z", "level": "info", "message": "Test case 8177: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8177, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:16:19Z", "level": "info", "message": "Test case 8178: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8178, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:16:20Z", "level": "info", "message": "Test case 8179: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8179, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:16:21Z", "level": "info", "message": "Test case 8180: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8180, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:16:22Z", "level": "info", "message": "Test case 8181: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8181, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:16:23Z", "level": "info", "message": "Test case 8182: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8182, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:16:24Z", "level": "info", "message": "Test case 8183: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8183, "data": "4iih"} +{"timestamp": "2024-01-01T02:16:25Z", "level": "info", "message": "Test case 8184: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8184, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:16:26Z", "level": "info", "message": "Test case 8185: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8185, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:16:27Z", "level": "info", "message": "Test case 8186: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8186, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:16:28Z", "level": "info", "message": "Test case 8187: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8187, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:16:29Z", "level": "info", "message": "Test case 8188: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8188, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:16:30Z", "level": "info", "message": "Test case 8189: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8189, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:16:31Z", "level": "info", "message": "Test case 8190: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8190, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:16:32Z", "level": "info", "message": "Test case 8191: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8191, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:16:33Z", "level": "info", "message": "Test case 8192: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8192, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:16:34Z", "level": "info", "message": "Test case 8193: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8193, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:16:35Z", "level": "info", "message": "Test case 8194: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8194, "data": "wg=="} +{"timestamp": "2024-01-01T02:16:36Z", "level": "info", "message": "Test case 8195: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8195, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:16:37Z", "level": "info", "message": "Test case 8196: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8196, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:16:38Z", "level": "info", "message": "Test case 8197: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8197, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:16:39Z", "level": "info", "message": "Test case 8198: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8198, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:16:40Z", "level": "info", "message": "Test case 8199: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8199, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:16:41Z", "level": "info", "message": "Test case 8200: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8200, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:16:42Z", "level": "info", "message": "Test case 8201: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8201, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:16:43Z", "level": "info", "message": "Test case 8202: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8202, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:16:44Z", "level": "info", "message": "Test case 8203: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8203, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:16:45Z", "level": "info", "message": "Test case 8204: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8204, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:16:46Z", "level": "info", "message": "Test case 8205: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8205, "data": "wIA="} +{"timestamp": "2024-01-01T02:16:47Z", "level": "info", "message": "Test case 8206: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8206, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:16:48Z", "level": "info", "message": "Test case 8207: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8207, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:16:49Z", "level": "info", "message": "Test case 8208: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8208, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:16:50Z", "level": "info", "message": "Test case 8209: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8209, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:16:51Z", "level": "info", "message": "Test case 8210: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8210, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:16:52Z", "level": "info", "message": "Test case 8211: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8211, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:16:53Z", "level": "info", "message": "Test case 8212: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8212, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:16:54Z", "level": "info", "message": "Test case 8213: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8213, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:16:55Z", "level": "info", "message": "Test case 8214: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8214, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:16:56Z", "level": "info", "message": "Test case 8215: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8215, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:16:57Z", "level": "info", "message": "Test case 8216: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8216, "data": "4ICA"} +{"timestamp": "2024-01-01T02:16:58Z", "level": "info", "message": "Test case 8217: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8217, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:16:59Z", "level": "info", "message": "Test case 8218: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8218, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:17:00Z", "level": "info", "message": "Test case 8219: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8219, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:17:01Z", "level": "info", "message": "Test case 8220: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8220, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:17:02Z", "level": "info", "message": "Test case 8221: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8221, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:17:03Z", "level": "info", "message": "Test case 8222: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8222, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:17:04Z", "level": "info", "message": "Test case 8223: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8223, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:17:05Z", "level": "info", "message": "Test case 8224: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8224, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:17:06Z", "level": "info", "message": "Test case 8225: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8225, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:17:07Z", "level": "info", "message": "Test case 8226: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8226, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:17:08Z", "level": "info", "message": "Test case 8227: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8227, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:17:09Z", "level": "info", "message": "Test case 8228: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8228, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:17:10Z", "level": "info", "message": "Test case 8229: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8229, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:17:11Z", "level": "info", "message": "Test case 8230: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8230, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:17:12Z", "level": "info", "message": "Test case 8231: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8231, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:17:13Z", "level": "info", "message": "Test case 8232: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8232, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:17:14Z", "level": "info", "message": "Test case 8233: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8233, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:17:15Z", "level": "info", "message": "Test case 8234: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8234, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:17:16Z", "level": "info", "message": "Test case 8235: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8235, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:17:17Z", "level": "info", "message": "Test case 8236: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8236, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:17:18Z", "level": "info", "message": "Test case 8237: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8237, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:17:19Z", "level": "info", "message": "Test case 8238: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8238, "data": "4iih"} +{"timestamp": "2024-01-01T02:17:20Z", "level": "info", "message": "Test case 8239: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8239, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:17:21Z", "level": "info", "message": "Test case 8240: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8240, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:17:22Z", "level": "info", "message": "Test case 8241: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8241, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:17:23Z", "level": "info", "message": "Test case 8242: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8242, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:17:24Z", "level": "info", "message": "Test case 8243: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8243, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:17:25Z", "level": "info", "message": "Test case 8244: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8244, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:17:26Z", "level": "info", "message": "Test case 8245: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8245, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:17:27Z", "level": "info", "message": "Test case 8246: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8246, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:17:28Z", "level": "info", "message": "Test case 8247: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8247, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:17:29Z", "level": "info", "message": "Test case 8248: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8248, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:17:30Z", "level": "info", "message": "Test case 8249: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8249, "data": "wg=="} +{"timestamp": "2024-01-01T02:17:31Z", "level": "info", "message": "Test case 8250: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8250, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:17:32Z", "level": "info", "message": "Test case 8251: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8251, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:17:33Z", "level": "info", "message": "Test case 8252: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8252, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:17:34Z", "level": "info", "message": "Test case 8253: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8253, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:17:35Z", "level": "info", "message": "Test case 8254: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8254, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:17:36Z", "level": "info", "message": "Test case 8255: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8255, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:17:37Z", "level": "info", "message": "Test case 8256: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8256, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:17:38Z", "level": "info", "message": "Test case 8257: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8257, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:17:39Z", "level": "info", "message": "Test case 8258: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8258, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:17:40Z", "level": "info", "message": "Test case 8259: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8259, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:17:41Z", "level": "info", "message": "Test case 8260: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8260, "data": "wIA="} +{"timestamp": "2024-01-01T02:17:42Z", "level": "info", "message": "Test case 8261: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8261, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:17:43Z", "level": "info", "message": "Test case 8262: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8262, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:17:44Z", "level": "info", "message": "Test case 8263: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8263, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:17:45Z", "level": "info", "message": "Test case 8264: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8264, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:17:46Z", "level": "info", "message": "Test case 8265: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8265, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:17:47Z", "level": "info", "message": "Test case 8266: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8266, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:17:48Z", "level": "info", "message": "Test case 8267: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8267, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:17:49Z", "level": "info", "message": "Test case 8268: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8268, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:17:50Z", "level": "info", "message": "Test case 8269: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8269, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:17:51Z", "level": "info", "message": "Test case 8270: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8270, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:17:52Z", "level": "info", "message": "Test case 8271: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8271, "data": "4ICA"} +{"timestamp": "2024-01-01T02:17:53Z", "level": "info", "message": "Test case 8272: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8272, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:17:54Z", "level": "info", "message": "Test case 8273: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8273, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:17:55Z", "level": "info", "message": "Test case 8274: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8274, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:17:56Z", "level": "info", "message": "Test case 8275: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8275, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:17:57Z", "level": "info", "message": "Test case 8276: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8276, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:17:58Z", "level": "info", "message": "Test case 8277: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8277, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:17:59Z", "level": "info", "message": "Test case 8278: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8278, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:18:00Z", "level": "info", "message": "Test case 8279: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8279, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:18:01Z", "level": "info", "message": "Test case 8280: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8280, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:18:02Z", "level": "info", "message": "Test case 8281: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8281, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:18:03Z", "level": "info", "message": "Test case 8282: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8282, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:18:04Z", "level": "info", "message": "Test case 8283: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8283, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:18:05Z", "level": "info", "message": "Test case 8284: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8284, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:18:06Z", "level": "info", "message": "Test case 8285: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8285, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:18:07Z", "level": "info", "message": "Test case 8286: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8286, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:18:08Z", "level": "info", "message": "Test case 8287: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8287, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:18:09Z", "level": "info", "message": "Test case 8288: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8288, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:18:10Z", "level": "info", "message": "Test case 8289: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8289, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:18:11Z", "level": "info", "message": "Test case 8290: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8290, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:18:12Z", "level": "info", "message": "Test case 8291: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8291, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:18:13Z", "level": "info", "message": "Test case 8292: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8292, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:18:14Z", "level": "info", "message": "Test case 8293: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8293, "data": "4iih"} +{"timestamp": "2024-01-01T02:18:15Z", "level": "info", "message": "Test case 8294: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8294, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:18:16Z", "level": "info", "message": "Test case 8295: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8295, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:18:17Z", "level": "info", "message": "Test case 8296: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8296, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:18:18Z", "level": "info", "message": "Test case 8297: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8297, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:18:19Z", "level": "info", "message": "Test case 8298: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8298, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:18:20Z", "level": "info", "message": "Test case 8299: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8299, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:18:21Z", "level": "info", "message": "Test case 8300: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8300, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:18:22Z", "level": "info", "message": "Test case 8301: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8301, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:18:23Z", "level": "info", "message": "Test case 8302: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8302, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:18:24Z", "level": "info", "message": "Test case 8303: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8303, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:18:25Z", "level": "info", "message": "Test case 8304: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8304, "data": "wg=="} +{"timestamp": "2024-01-01T02:18:26Z", "level": "info", "message": "Test case 8305: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8305, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:18:27Z", "level": "info", "message": "Test case 8306: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8306, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:18:28Z", "level": "info", "message": "Test case 8307: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8307, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:18:29Z", "level": "info", "message": "Test case 8308: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8308, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:18:30Z", "level": "info", "message": "Test case 8309: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8309, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:18:31Z", "level": "info", "message": "Test case 8310: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8310, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:18:32Z", "level": "info", "message": "Test case 8311: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8311, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:18:33Z", "level": "info", "message": "Test case 8312: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8312, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:18:34Z", "level": "info", "message": "Test case 8313: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8313, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:18:35Z", "level": "info", "message": "Test case 8314: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8314, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:18:36Z", "level": "info", "message": "Test case 8315: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8315, "data": "wIA="} +{"timestamp": "2024-01-01T02:18:37Z", "level": "info", "message": "Test case 8316: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8316, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:18:38Z", "level": "info", "message": "Test case 8317: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8317, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:18:39Z", "level": "info", "message": "Test case 8318: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8318, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:18:40Z", "level": "info", "message": "Test case 8319: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8319, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:18:41Z", "level": "info", "message": "Test case 8320: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8320, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:18:42Z", "level": "info", "message": "Test case 8321: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8321, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:18:43Z", "level": "info", "message": "Test case 8322: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8322, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:18:44Z", "level": "info", "message": "Test case 8323: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8323, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:18:45Z", "level": "info", "message": "Test case 8324: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8324, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:18:46Z", "level": "info", "message": "Test case 8325: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8325, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:18:47Z", "level": "info", "message": "Test case 8326: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8326, "data": "4ICA"} +{"timestamp": "2024-01-01T02:18:48Z", "level": "info", "message": "Test case 8327: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8327, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:18:49Z", "level": "info", "message": "Test case 8328: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8328, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:18:50Z", "level": "info", "message": "Test case 8329: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8329, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:18:51Z", "level": "info", "message": "Test case 8330: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8330, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:18:52Z", "level": "info", "message": "Test case 8331: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8331, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:18:53Z", "level": "info", "message": "Test case 8332: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8332, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:18:54Z", "level": "info", "message": "Test case 8333: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8333, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:18:55Z", "level": "info", "message": "Test case 8334: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8334, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:18:56Z", "level": "info", "message": "Test case 8335: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8335, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:18:57Z", "level": "info", "message": "Test case 8336: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8336, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:18:58Z", "level": "info", "message": "Test case 8337: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8337, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:18:59Z", "level": "info", "message": "Test case 8338: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8338, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:19:00Z", "level": "info", "message": "Test case 8339: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8339, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:19:01Z", "level": "info", "message": "Test case 8340: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8340, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:19:02Z", "level": "info", "message": "Test case 8341: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8341, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:19:03Z", "level": "info", "message": "Test case 8342: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8342, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:19:04Z", "level": "info", "message": "Test case 8343: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8343, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:19:05Z", "level": "info", "message": "Test case 8344: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8344, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:19:06Z", "level": "info", "message": "Test case 8345: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8345, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:19:07Z", "level": "info", "message": "Test case 8346: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8346, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:19:08Z", "level": "info", "message": "Test case 8347: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8347, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:19:09Z", "level": "info", "message": "Test case 8348: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8348, "data": "4iih"} +{"timestamp": "2024-01-01T02:19:10Z", "level": "info", "message": "Test case 8349: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8349, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:19:11Z", "level": "info", "message": "Test case 8350: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8350, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:19:12Z", "level": "info", "message": "Test case 8351: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8351, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:19:13Z", "level": "info", "message": "Test case 8352: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8352, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:19:14Z", "level": "info", "message": "Test case 8353: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8353, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:19:15Z", "level": "info", "message": "Test case 8354: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8354, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:19:16Z", "level": "info", "message": "Test case 8355: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8355, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:19:17Z", "level": "info", "message": "Test case 8356: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8356, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:19:18Z", "level": "info", "message": "Test case 8357: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8357, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:19:19Z", "level": "info", "message": "Test case 8358: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8358, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:19:20Z", "level": "info", "message": "Test case 8359: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8359, "data": "wg=="} +{"timestamp": "2024-01-01T02:19:21Z", "level": "info", "message": "Test case 8360: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8360, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:19:22Z", "level": "info", "message": "Test case 8361: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8361, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:19:23Z", "level": "info", "message": "Test case 8362: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8362, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:19:24Z", "level": "info", "message": "Test case 8363: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8363, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:19:25Z", "level": "info", "message": "Test case 8364: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8364, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:19:26Z", "level": "info", "message": "Test case 8365: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8365, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:19:27Z", "level": "info", "message": "Test case 8366: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8366, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:19:28Z", "level": "info", "message": "Test case 8367: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8367, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:19:29Z", "level": "info", "message": "Test case 8368: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8368, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:19:30Z", "level": "info", "message": "Test case 8369: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8369, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:19:31Z", "level": "info", "message": "Test case 8370: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8370, "data": "wIA="} +{"timestamp": "2024-01-01T02:19:32Z", "level": "info", "message": "Test case 8371: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8371, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:19:33Z", "level": "info", "message": "Test case 8372: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8372, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:19:34Z", "level": "info", "message": "Test case 8373: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8373, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:19:35Z", "level": "info", "message": "Test case 8374: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8374, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:19:36Z", "level": "info", "message": "Test case 8375: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8375, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:19:37Z", "level": "info", "message": "Test case 8376: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8376, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:19:38Z", "level": "info", "message": "Test case 8377: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8377, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:19:39Z", "level": "info", "message": "Test case 8378: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8378, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:19:40Z", "level": "info", "message": "Test case 8379: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8379, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:19:41Z", "level": "info", "message": "Test case 8380: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8380, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:19:42Z", "level": "info", "message": "Test case 8381: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8381, "data": "4ICA"} +{"timestamp": "2024-01-01T02:19:43Z", "level": "info", "message": "Test case 8382: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8382, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:19:44Z", "level": "info", "message": "Test case 8383: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8383, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:19:45Z", "level": "info", "message": "Test case 8384: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8384, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:19:46Z", "level": "info", "message": "Test case 8385: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8385, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:19:47Z", "level": "info", "message": "Test case 8386: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8386, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:19:48Z", "level": "info", "message": "Test case 8387: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8387, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:19:49Z", "level": "info", "message": "Test case 8388: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8388, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:19:50Z", "level": "info", "message": "Test case 8389: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8389, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:19:51Z", "level": "info", "message": "Test case 8390: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8390, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:19:52Z", "level": "info", "message": "Test case 8391: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8391, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:19:53Z", "level": "info", "message": "Test case 8392: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8392, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:19:54Z", "level": "info", "message": "Test case 8393: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8393, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:19:55Z", "level": "info", "message": "Test case 8394: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8394, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:19:56Z", "level": "info", "message": "Test case 8395: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8395, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:19:57Z", "level": "info", "message": "Test case 8396: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8396, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:19:58Z", "level": "info", "message": "Test case 8397: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8397, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:19:59Z", "level": "info", "message": "Test case 8398: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8398, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:20:00Z", "level": "info", "message": "Test case 8399: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8399, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:20:01Z", "level": "info", "message": "Test case 8400: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8400, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:20:02Z", "level": "info", "message": "Test case 8401: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8401, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:20:03Z", "level": "info", "message": "Test case 8402: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8402, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:20:04Z", "level": "info", "message": "Test case 8403: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8403, "data": "4iih"} +{"timestamp": "2024-01-01T02:20:05Z", "level": "info", "message": "Test case 8404: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8404, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:20:06Z", "level": "info", "message": "Test case 8405: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8405, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:20:07Z", "level": "info", "message": "Test case 8406: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8406, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:20:08Z", "level": "info", "message": "Test case 8407: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8407, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:20:09Z", "level": "info", "message": "Test case 8408: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8408, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:20:10Z", "level": "info", "message": "Test case 8409: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8409, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:20:11Z", "level": "info", "message": "Test case 8410: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8410, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:20:12Z", "level": "info", "message": "Test case 8411: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8411, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:20:13Z", "level": "info", "message": "Test case 8412: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8412, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:20:14Z", "level": "info", "message": "Test case 8413: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8413, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:20:15Z", "level": "info", "message": "Test case 8414: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8414, "data": "wg=="} +{"timestamp": "2024-01-01T02:20:16Z", "level": "info", "message": "Test case 8415: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8415, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:20:17Z", "level": "info", "message": "Test case 8416: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8416, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:20:18Z", "level": "info", "message": "Test case 8417: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8417, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:20:19Z", "level": "info", "message": "Test case 8418: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8418, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:20:20Z", "level": "info", "message": "Test case 8419: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8419, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:20:21Z", "level": "info", "message": "Test case 8420: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8420, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:20:22Z", "level": "info", "message": "Test case 8421: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8421, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:20:23Z", "level": "info", "message": "Test case 8422: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8422, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:20:24Z", "level": "info", "message": "Test case 8423: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8423, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:20:25Z", "level": "info", "message": "Test case 8424: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8424, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:20:26Z", "level": "info", "message": "Test case 8425: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8425, "data": "wIA="} +{"timestamp": "2024-01-01T02:20:27Z", "level": "info", "message": "Test case 8426: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8426, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:20:28Z", "level": "info", "message": "Test case 8427: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8427, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:20:29Z", "level": "info", "message": "Test case 8428: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8428, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:20:30Z", "level": "info", "message": "Test case 8429: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8429, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:20:31Z", "level": "info", "message": "Test case 8430: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8430, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:20:32Z", "level": "info", "message": "Test case 8431: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8431, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:20:33Z", "level": "info", "message": "Test case 8432: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8432, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:20:34Z", "level": "info", "message": "Test case 8433: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8433, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:20:35Z", "level": "info", "message": "Test case 8434: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8434, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:20:36Z", "level": "info", "message": "Test case 8435: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8435, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:20:37Z", "level": "info", "message": "Test case 8436: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8436, "data": "4ICA"} +{"timestamp": "2024-01-01T02:20:38Z", "level": "info", "message": "Test case 8437: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8437, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:20:39Z", "level": "info", "message": "Test case 8438: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8438, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:20:40Z", "level": "info", "message": "Test case 8439: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8439, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:20:41Z", "level": "info", "message": "Test case 8440: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8440, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:20:42Z", "level": "info", "message": "Test case 8441: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8441, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:20:43Z", "level": "info", "message": "Test case 8442: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8442, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:20:44Z", "level": "info", "message": "Test case 8443: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8443, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:20:45Z", "level": "info", "message": "Test case 8444: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8444, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:20:46Z", "level": "info", "message": "Test case 8445: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8445, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:20:47Z", "level": "info", "message": "Test case 8446: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8446, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:20:48Z", "level": "info", "message": "Test case 8447: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8447, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:20:49Z", "level": "info", "message": "Test case 8448: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8448, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:20:50Z", "level": "info", "message": "Test case 8449: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8449, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:20:51Z", "level": "info", "message": "Test case 8450: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8450, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:20:52Z", "level": "info", "message": "Test case 8451: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8451, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:20:53Z", "level": "info", "message": "Test case 8452: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8452, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:20:54Z", "level": "info", "message": "Test case 8453: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8453, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:20:55Z", "level": "info", "message": "Test case 8454: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8454, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:20:56Z", "level": "info", "message": "Test case 8455: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8455, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:20:57Z", "level": "info", "message": "Test case 8456: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8456, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:20:58Z", "level": "info", "message": "Test case 8457: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8457, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:20:59Z", "level": "info", "message": "Test case 8458: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8458, "data": "4iih"} +{"timestamp": "2024-01-01T02:21:00Z", "level": "info", "message": "Test case 8459: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8459, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:21:01Z", "level": "info", "message": "Test case 8460: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8460, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:21:02Z", "level": "info", "message": "Test case 8461: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8461, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:21:03Z", "level": "info", "message": "Test case 8462: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8462, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:21:04Z", "level": "info", "message": "Test case 8463: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8463, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:21:05Z", "level": "info", "message": "Test case 8464: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8464, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:21:06Z", "level": "info", "message": "Test case 8465: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8465, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:21:07Z", "level": "info", "message": "Test case 8466: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8466, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:21:08Z", "level": "info", "message": "Test case 8467: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8467, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:21:09Z", "level": "info", "message": "Test case 8468: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8468, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:21:10Z", "level": "info", "message": "Test case 8469: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8469, "data": "wg=="} +{"timestamp": "2024-01-01T02:21:11Z", "level": "info", "message": "Test case 8470: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8470, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:21:12Z", "level": "info", "message": "Test case 8471: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8471, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:21:13Z", "level": "info", "message": "Test case 8472: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8472, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:21:14Z", "level": "info", "message": "Test case 8473: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8473, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:21:15Z", "level": "info", "message": "Test case 8474: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8474, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:21:16Z", "level": "info", "message": "Test case 8475: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8475, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:21:17Z", "level": "info", "message": "Test case 8476: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8476, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:21:18Z", "level": "info", "message": "Test case 8477: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8477, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:21:19Z", "level": "info", "message": "Test case 8478: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8478, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:21:20Z", "level": "info", "message": "Test case 8479: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8479, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:21:21Z", "level": "info", "message": "Test case 8480: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8480, "data": "wIA="} +{"timestamp": "2024-01-01T02:21:22Z", "level": "info", "message": "Test case 8481: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8481, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:21:23Z", "level": "info", "message": "Test case 8482: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8482, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:21:24Z", "level": "info", "message": "Test case 8483: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8483, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:21:25Z", "level": "info", "message": "Test case 8484: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8484, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:21:26Z", "level": "info", "message": "Test case 8485: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8485, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:21:27Z", "level": "info", "message": "Test case 8486: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8486, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:21:28Z", "level": "info", "message": "Test case 8487: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8487, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:21:29Z", "level": "info", "message": "Test case 8488: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8488, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:21:30Z", "level": "info", "message": "Test case 8489: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8489, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:21:31Z", "level": "info", "message": "Test case 8490: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8490, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:21:32Z", "level": "info", "message": "Test case 8491: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8491, "data": "4ICA"} +{"timestamp": "2024-01-01T02:21:33Z", "level": "info", "message": "Test case 8492: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8492, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:21:34Z", "level": "info", "message": "Test case 8493: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8493, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:21:35Z", "level": "info", "message": "Test case 8494: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8494, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:21:36Z", "level": "info", "message": "Test case 8495: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8495, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:21:37Z", "level": "info", "message": "Test case 8496: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8496, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:21:38Z", "level": "info", "message": "Test case 8497: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8497, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:21:39Z", "level": "info", "message": "Test case 8498: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8498, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:21:40Z", "level": "info", "message": "Test case 8499: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8499, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:21:41Z", "level": "info", "message": "Test case 8500: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8500, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:21:42Z", "level": "info", "message": "Test case 8501: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8501, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:21:43Z", "level": "info", "message": "Test case 8502: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8502, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:21:44Z", "level": "info", "message": "Test case 8503: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8503, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:21:45Z", "level": "info", "message": "Test case 8504: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8504, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:21:46Z", "level": "info", "message": "Test case 8505: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8505, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:21:47Z", "level": "info", "message": "Test case 8506: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8506, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:21:48Z", "level": "info", "message": "Test case 8507: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8507, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:21:49Z", "level": "info", "message": "Test case 8508: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8508, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:21:50Z", "level": "info", "message": "Test case 8509: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8509, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:21:51Z", "level": "info", "message": "Test case 8510: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8510, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:21:52Z", "level": "info", "message": "Test case 8511: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8511, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:21:53Z", "level": "info", "message": "Test case 8512: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8512, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:21:54Z", "level": "info", "message": "Test case 8513: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8513, "data": "4iih"} +{"timestamp": "2024-01-01T02:21:55Z", "level": "info", "message": "Test case 8514: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8514, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:21:56Z", "level": "info", "message": "Test case 8515: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8515, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:21:57Z", "level": "info", "message": "Test case 8516: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8516, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:21:58Z", "level": "info", "message": "Test case 8517: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8517, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:21:59Z", "level": "info", "message": "Test case 8518: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8518, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:22:00Z", "level": "info", "message": "Test case 8519: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8519, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:22:01Z", "level": "info", "message": "Test case 8520: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8520, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:22:02Z", "level": "info", "message": "Test case 8521: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8521, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:22:03Z", "level": "info", "message": "Test case 8522: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8522, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:22:04Z", "level": "info", "message": "Test case 8523: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8523, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:22:05Z", "level": "info", "message": "Test case 8524: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8524, "data": "wg=="} +{"timestamp": "2024-01-01T02:22:06Z", "level": "info", "message": "Test case 8525: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8525, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:22:07Z", "level": "info", "message": "Test case 8526: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8526, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:22:08Z", "level": "info", "message": "Test case 8527: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8527, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:22:09Z", "level": "info", "message": "Test case 8528: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8528, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:22:10Z", "level": "info", "message": "Test case 8529: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8529, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:22:11Z", "level": "info", "message": "Test case 8530: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8530, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:22:12Z", "level": "info", "message": "Test case 8531: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8531, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:22:13Z", "level": "info", "message": "Test case 8532: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8532, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:22:14Z", "level": "info", "message": "Test case 8533: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8533, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:22:15Z", "level": "info", "message": "Test case 8534: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8534, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:22:16Z", "level": "info", "message": "Test case 8535: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8535, "data": "wIA="} +{"timestamp": "2024-01-01T02:22:17Z", "level": "info", "message": "Test case 8536: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8536, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:22:18Z", "level": "info", "message": "Test case 8537: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8537, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:22:19Z", "level": "info", "message": "Test case 8538: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8538, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:22:20Z", "level": "info", "message": "Test case 8539: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8539, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:22:21Z", "level": "info", "message": "Test case 8540: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8540, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:22:22Z", "level": "info", "message": "Test case 8541: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8541, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:22:23Z", "level": "info", "message": "Test case 8542: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8542, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:22:24Z", "level": "info", "message": "Test case 8543: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8543, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:22:25Z", "level": "info", "message": "Test case 8544: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8544, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:22:26Z", "level": "info", "message": "Test case 8545: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8545, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:22:27Z", "level": "info", "message": "Test case 8546: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8546, "data": "4ICA"} +{"timestamp": "2024-01-01T02:22:28Z", "level": "info", "message": "Test case 8547: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8547, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:22:29Z", "level": "info", "message": "Test case 8548: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8548, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:22:30Z", "level": "info", "message": "Test case 8549: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8549, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:22:31Z", "level": "info", "message": "Test case 8550: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8550, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:22:32Z", "level": "info", "message": "Test case 8551: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8551, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:22:33Z", "level": "info", "message": "Test case 8552: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8552, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:22:34Z", "level": "info", "message": "Test case 8553: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8553, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:22:35Z", "level": "info", "message": "Test case 8554: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8554, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:22:36Z", "level": "info", "message": "Test case 8555: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8555, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:22:37Z", "level": "info", "message": "Test case 8556: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8556, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:22:38Z", "level": "info", "message": "Test case 8557: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8557, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:22:39Z", "level": "info", "message": "Test case 8558: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8558, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:22:40Z", "level": "info", "message": "Test case 8559: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8559, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:22:41Z", "level": "info", "message": "Test case 8560: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8560, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:22:42Z", "level": "info", "message": "Test case 8561: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8561, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:22:43Z", "level": "info", "message": "Test case 8562: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8562, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:22:44Z", "level": "info", "message": "Test case 8563: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8563, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:22:45Z", "level": "info", "message": "Test case 8564: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8564, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:22:46Z", "level": "info", "message": "Test case 8565: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8565, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:22:47Z", "level": "info", "message": "Test case 8566: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8566, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:22:48Z", "level": "info", "message": "Test case 8567: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8567, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:22:49Z", "level": "info", "message": "Test case 8568: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8568, "data": "4iih"} +{"timestamp": "2024-01-01T02:22:50Z", "level": "info", "message": "Test case 8569: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8569, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:22:51Z", "level": "info", "message": "Test case 8570: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8570, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:22:52Z", "level": "info", "message": "Test case 8571: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8571, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:22:53Z", "level": "info", "message": "Test case 8572: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8572, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:22:54Z", "level": "info", "message": "Test case 8573: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8573, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:22:55Z", "level": "info", "message": "Test case 8574: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8574, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:22:56Z", "level": "info", "message": "Test case 8575: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8575, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:22:57Z", "level": "info", "message": "Test case 8576: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8576, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:22:58Z", "level": "info", "message": "Test case 8577: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8577, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:22:59Z", "level": "info", "message": "Test case 8578: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8578, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:23:00Z", "level": "info", "message": "Test case 8579: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8579, "data": "wg=="} +{"timestamp": "2024-01-01T02:23:01Z", "level": "info", "message": "Test case 8580: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8580, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:23:02Z", "level": "info", "message": "Test case 8581: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8581, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:23:03Z", "level": "info", "message": "Test case 8582: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8582, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:23:04Z", "level": "info", "message": "Test case 8583: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8583, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:23:05Z", "level": "info", "message": "Test case 8584: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8584, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:23:06Z", "level": "info", "message": "Test case 8585: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8585, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:23:07Z", "level": "info", "message": "Test case 8586: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8586, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:23:08Z", "level": "info", "message": "Test case 8587: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8587, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:23:09Z", "level": "info", "message": "Test case 8588: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8588, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:23:10Z", "level": "info", "message": "Test case 8589: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8589, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:23:11Z", "level": "info", "message": "Test case 8590: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8590, "data": "wIA="} +{"timestamp": "2024-01-01T02:23:12Z", "level": "info", "message": "Test case 8591: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8591, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:23:13Z", "level": "info", "message": "Test case 8592: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8592, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:23:14Z", "level": "info", "message": "Test case 8593: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8593, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:23:15Z", "level": "info", "message": "Test case 8594: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8594, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:23:16Z", "level": "info", "message": "Test case 8595: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8595, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:23:17Z", "level": "info", "message": "Test case 8596: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8596, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:23:18Z", "level": "info", "message": "Test case 8597: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8597, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:23:19Z", "level": "info", "message": "Test case 8598: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8598, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:23:20Z", "level": "info", "message": "Test case 8599: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8599, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:23:21Z", "level": "info", "message": "Test case 8600: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8600, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:23:22Z", "level": "info", "message": "Test case 8601: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8601, "data": "4ICA"} +{"timestamp": "2024-01-01T02:23:23Z", "level": "info", "message": "Test case 8602: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8602, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:23:24Z", "level": "info", "message": "Test case 8603: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8603, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:23:25Z", "level": "info", "message": "Test case 8604: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8604, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:23:26Z", "level": "info", "message": "Test case 8605: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8605, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:23:27Z", "level": "info", "message": "Test case 8606: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8606, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:23:28Z", "level": "info", "message": "Test case 8607: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8607, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:23:29Z", "level": "info", "message": "Test case 8608: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8608, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:23:30Z", "level": "info", "message": "Test case 8609: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8609, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:23:31Z", "level": "info", "message": "Test case 8610: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8610, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:23:32Z", "level": "info", "message": "Test case 8611: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8611, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:23:33Z", "level": "info", "message": "Test case 8612: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8612, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:23:34Z", "level": "info", "message": "Test case 8613: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8613, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:23:35Z", "level": "info", "message": "Test case 8614: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8614, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:23:36Z", "level": "info", "message": "Test case 8615: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8615, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:23:37Z", "level": "info", "message": "Test case 8616: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8616, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:23:38Z", "level": "info", "message": "Test case 8617: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8617, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:23:39Z", "level": "info", "message": "Test case 8618: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8618, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:23:40Z", "level": "info", "message": "Test case 8619: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8619, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:23:41Z", "level": "info", "message": "Test case 8620: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8620, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:23:42Z", "level": "info", "message": "Test case 8621: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8621, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:23:43Z", "level": "info", "message": "Test case 8622: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8622, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:23:44Z", "level": "info", "message": "Test case 8623: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8623, "data": "4iih"} +{"timestamp": "2024-01-01T02:23:45Z", "level": "info", "message": "Test case 8624: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8624, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:23:46Z", "level": "info", "message": "Test case 8625: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8625, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:23:47Z", "level": "info", "message": "Test case 8626: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8626, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:23:48Z", "level": "info", "message": "Test case 8627: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8627, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:23:49Z", "level": "info", "message": "Test case 8628: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8628, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:23:50Z", "level": "info", "message": "Test case 8629: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8629, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:23:51Z", "level": "info", "message": "Test case 8630: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8630, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:23:52Z", "level": "info", "message": "Test case 8631: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8631, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:23:53Z", "level": "info", "message": "Test case 8632: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8632, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:23:54Z", "level": "info", "message": "Test case 8633: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8633, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:23:55Z", "level": "info", "message": "Test case 8634: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8634, "data": "wg=="} +{"timestamp": "2024-01-01T02:23:56Z", "level": "info", "message": "Test case 8635: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8635, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:23:57Z", "level": "info", "message": "Test case 8636: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8636, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:23:58Z", "level": "info", "message": "Test case 8637: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8637, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:23:59Z", "level": "info", "message": "Test case 8638: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8638, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:24:00Z", "level": "info", "message": "Test case 8639: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8639, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:24:01Z", "level": "info", "message": "Test case 8640: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8640, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:24:02Z", "level": "info", "message": "Test case 8641: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8641, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:24:03Z", "level": "info", "message": "Test case 8642: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8642, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:24:04Z", "level": "info", "message": "Test case 8643: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8643, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:24:05Z", "level": "info", "message": "Test case 8644: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8644, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:24:06Z", "level": "info", "message": "Test case 8645: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8645, "data": "wIA="} +{"timestamp": "2024-01-01T02:24:07Z", "level": "info", "message": "Test case 8646: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8646, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:24:08Z", "level": "info", "message": "Test case 8647: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8647, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:24:09Z", "level": "info", "message": "Test case 8648: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8648, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:24:10Z", "level": "info", "message": "Test case 8649: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8649, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:24:11Z", "level": "info", "message": "Test case 8650: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8650, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:24:12Z", "level": "info", "message": "Test case 8651: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8651, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:24:13Z", "level": "info", "message": "Test case 8652: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8652, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:24:14Z", "level": "info", "message": "Test case 8653: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8653, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:24:15Z", "level": "info", "message": "Test case 8654: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8654, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:24:16Z", "level": "info", "message": "Test case 8655: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8655, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:24:17Z", "level": "info", "message": "Test case 8656: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8656, "data": "4ICA"} +{"timestamp": "2024-01-01T02:24:18Z", "level": "info", "message": "Test case 8657: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8657, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:24:19Z", "level": "info", "message": "Test case 8658: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8658, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:24:20Z", "level": "info", "message": "Test case 8659: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8659, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:24:21Z", "level": "info", "message": "Test case 8660: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8660, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:24:22Z", "level": "info", "message": "Test case 8661: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8661, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:24:23Z", "level": "info", "message": "Test case 8662: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8662, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:24:24Z", "level": "info", "message": "Test case 8663: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8663, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:24:25Z", "level": "info", "message": "Test case 8664: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8664, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:24:26Z", "level": "info", "message": "Test case 8665: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8665, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:24:27Z", "level": "info", "message": "Test case 8666: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8666, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:24:28Z", "level": "info", "message": "Test case 8667: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8667, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:24:29Z", "level": "info", "message": "Test case 8668: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8668, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:24:30Z", "level": "info", "message": "Test case 8669: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8669, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:24:31Z", "level": "info", "message": "Test case 8670: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8670, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:24:32Z", "level": "info", "message": "Test case 8671: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8671, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:24:33Z", "level": "info", "message": "Test case 8672: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8672, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:24:34Z", "level": "info", "message": "Test case 8673: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8673, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:24:35Z", "level": "info", "message": "Test case 8674: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8674, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:24:36Z", "level": "info", "message": "Test case 8675: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8675, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:24:37Z", "level": "info", "message": "Test case 8676: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8676, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:24:38Z", "level": "info", "message": "Test case 8677: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8677, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:24:39Z", "level": "info", "message": "Test case 8678: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8678, "data": "4iih"} +{"timestamp": "2024-01-01T02:24:40Z", "level": "info", "message": "Test case 8679: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8679, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:24:41Z", "level": "info", "message": "Test case 8680: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8680, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:24:42Z", "level": "info", "message": "Test case 8681: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8681, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:24:43Z", "level": "info", "message": "Test case 8682: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8682, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:24:44Z", "level": "info", "message": "Test case 8683: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8683, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:24:45Z", "level": "info", "message": "Test case 8684: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8684, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:24:46Z", "level": "info", "message": "Test case 8685: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8685, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:24:47Z", "level": "info", "message": "Test case 8686: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8686, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:24:48Z", "level": "info", "message": "Test case 8687: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8687, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:24:49Z", "level": "info", "message": "Test case 8688: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8688, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:24:50Z", "level": "info", "message": "Test case 8689: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8689, "data": "wg=="} +{"timestamp": "2024-01-01T02:24:51Z", "level": "info", "message": "Test case 8690: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8690, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:24:52Z", "level": "info", "message": "Test case 8691: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8691, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:24:53Z", "level": "info", "message": "Test case 8692: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8692, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:24:54Z", "level": "info", "message": "Test case 8693: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8693, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:24:55Z", "level": "info", "message": "Test case 8694: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8694, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:24:56Z", "level": "info", "message": "Test case 8695: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8695, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:24:57Z", "level": "info", "message": "Test case 8696: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8696, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:24:58Z", "level": "info", "message": "Test case 8697: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8697, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:24:59Z", "level": "info", "message": "Test case 8698: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8698, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:25:00Z", "level": "info", "message": "Test case 8699: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8699, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:25:01Z", "level": "info", "message": "Test case 8700: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8700, "data": "wIA="} +{"timestamp": "2024-01-01T02:25:02Z", "level": "info", "message": "Test case 8701: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8701, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:25:03Z", "level": "info", "message": "Test case 8702: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8702, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:25:04Z", "level": "info", "message": "Test case 8703: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8703, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:25:05Z", "level": "info", "message": "Test case 8704: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8704, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:25:06Z", "level": "info", "message": "Test case 8705: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8705, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:25:07Z", "level": "info", "message": "Test case 8706: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8706, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:25:08Z", "level": "info", "message": "Test case 8707: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8707, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:25:09Z", "level": "info", "message": "Test case 8708: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8708, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:25:10Z", "level": "info", "message": "Test case 8709: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8709, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:25:11Z", "level": "info", "message": "Test case 8710: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8710, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:25:12Z", "level": "info", "message": "Test case 8711: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8711, "data": "4ICA"} +{"timestamp": "2024-01-01T02:25:13Z", "level": "info", "message": "Test case 8712: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8712, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:25:14Z", "level": "info", "message": "Test case 8713: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8713, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:25:15Z", "level": "info", "message": "Test case 8714: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8714, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:25:16Z", "level": "info", "message": "Test case 8715: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8715, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:25:17Z", "level": "info", "message": "Test case 8716: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8716, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:25:18Z", "level": "info", "message": "Test case 8717: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8717, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:25:19Z", "level": "info", "message": "Test case 8718: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8718, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:25:20Z", "level": "info", "message": "Test case 8719: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8719, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:25:21Z", "level": "info", "message": "Test case 8720: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8720, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:25:22Z", "level": "info", "message": "Test case 8721: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8721, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:25:23Z", "level": "info", "message": "Test case 8722: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8722, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:25:24Z", "level": "info", "message": "Test case 8723: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8723, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:25:25Z", "level": "info", "message": "Test case 8724: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8724, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:25:26Z", "level": "info", "message": "Test case 8725: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8725, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:25:27Z", "level": "info", "message": "Test case 8726: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8726, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:25:28Z", "level": "info", "message": "Test case 8727: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8727, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:25:29Z", "level": "info", "message": "Test case 8728: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8728, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:25:30Z", "level": "info", "message": "Test case 8729: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8729, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:25:31Z", "level": "info", "message": "Test case 8730: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8730, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:25:32Z", "level": "info", "message": "Test case 8731: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8731, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:25:33Z", "level": "info", "message": "Test case 8732: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8732, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:25:34Z", "level": "info", "message": "Test case 8733: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8733, "data": "4iih"} +{"timestamp": "2024-01-01T02:25:35Z", "level": "info", "message": "Test case 8734: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8734, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:25:36Z", "level": "info", "message": "Test case 8735: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8735, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:25:37Z", "level": "info", "message": "Test case 8736: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8736, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:25:38Z", "level": "info", "message": "Test case 8737: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8737, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:25:39Z", "level": "info", "message": "Test case 8738: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8738, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:25:40Z", "level": "info", "message": "Test case 8739: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8739, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:25:41Z", "level": "info", "message": "Test case 8740: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8740, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:25:42Z", "level": "info", "message": "Test case 8741: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8741, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:25:43Z", "level": "info", "message": "Test case 8742: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8742, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:25:44Z", "level": "info", "message": "Test case 8743: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8743, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:25:45Z", "level": "info", "message": "Test case 8744: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8744, "data": "wg=="} +{"timestamp": "2024-01-01T02:25:46Z", "level": "info", "message": "Test case 8745: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8745, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:25:47Z", "level": "info", "message": "Test case 8746: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8746, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:25:48Z", "level": "info", "message": "Test case 8747: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8747, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:25:49Z", "level": "info", "message": "Test case 8748: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8748, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:25:50Z", "level": "info", "message": "Test case 8749: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8749, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:25:51Z", "level": "info", "message": "Test case 8750: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8750, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:25:52Z", "level": "info", "message": "Test case 8751: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8751, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:25:53Z", "level": "info", "message": "Test case 8752: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8752, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:25:54Z", "level": "info", "message": "Test case 8753: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8753, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:25:55Z", "level": "info", "message": "Test case 8754: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8754, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:25:56Z", "level": "info", "message": "Test case 8755: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8755, "data": "wIA="} +{"timestamp": "2024-01-01T02:25:57Z", "level": "info", "message": "Test case 8756: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8756, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:25:58Z", "level": "info", "message": "Test case 8757: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8757, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:25:59Z", "level": "info", "message": "Test case 8758: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8758, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:26:00Z", "level": "info", "message": "Test case 8759: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8759, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:26:01Z", "level": "info", "message": "Test case 8760: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8760, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:26:02Z", "level": "info", "message": "Test case 8761: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8761, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:26:03Z", "level": "info", "message": "Test case 8762: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8762, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:26:04Z", "level": "info", "message": "Test case 8763: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8763, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:26:05Z", "level": "info", "message": "Test case 8764: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8764, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:26:06Z", "level": "info", "message": "Test case 8765: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8765, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:26:07Z", "level": "info", "message": "Test case 8766: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8766, "data": "4ICA"} +{"timestamp": "2024-01-01T02:26:08Z", "level": "info", "message": "Test case 8767: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8767, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:26:09Z", "level": "info", "message": "Test case 8768: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8768, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:26:10Z", "level": "info", "message": "Test case 8769: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8769, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:26:11Z", "level": "info", "message": "Test case 8770: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8770, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:26:12Z", "level": "info", "message": "Test case 8771: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8771, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:26:13Z", "level": "info", "message": "Test case 8772: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8772, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:26:14Z", "level": "info", "message": "Test case 8773: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8773, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:26:15Z", "level": "info", "message": "Test case 8774: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8774, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:26:16Z", "level": "info", "message": "Test case 8775: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8775, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:26:17Z", "level": "info", "message": "Test case 8776: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8776, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:26:18Z", "level": "info", "message": "Test case 8777: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8777, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:26:19Z", "level": "info", "message": "Test case 8778: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8778, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:26:20Z", "level": "info", "message": "Test case 8779: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8779, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:26:21Z", "level": "info", "message": "Test case 8780: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8780, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:26:22Z", "level": "info", "message": "Test case 8781: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8781, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:26:23Z", "level": "info", "message": "Test case 8782: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8782, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:26:24Z", "level": "info", "message": "Test case 8783: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8783, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:26:25Z", "level": "info", "message": "Test case 8784: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8784, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:26:26Z", "level": "info", "message": "Test case 8785: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8785, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:26:27Z", "level": "info", "message": "Test case 8786: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8786, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:26:28Z", "level": "info", "message": "Test case 8787: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8787, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:26:29Z", "level": "info", "message": "Test case 8788: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8788, "data": "4iih"} +{"timestamp": "2024-01-01T02:26:30Z", "level": "info", "message": "Test case 8789: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8789, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:26:31Z", "level": "info", "message": "Test case 8790: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8790, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:26:32Z", "level": "info", "message": "Test case 8791: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8791, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:26:33Z", "level": "info", "message": "Test case 8792: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8792, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:26:34Z", "level": "info", "message": "Test case 8793: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8793, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:26:35Z", "level": "info", "message": "Test case 8794: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8794, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:26:36Z", "level": "info", "message": "Test case 8795: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8795, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:26:37Z", "level": "info", "message": "Test case 8796: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8796, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:26:38Z", "level": "info", "message": "Test case 8797: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8797, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:26:39Z", "level": "info", "message": "Test case 8798: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8798, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:26:40Z", "level": "info", "message": "Test case 8799: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8799, "data": "wg=="} +{"timestamp": "2024-01-01T02:26:41Z", "level": "info", "message": "Test case 8800: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8800, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:26:42Z", "level": "info", "message": "Test case 8801: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8801, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:26:43Z", "level": "info", "message": "Test case 8802: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8802, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:26:44Z", "level": "info", "message": "Test case 8803: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8803, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:26:45Z", "level": "info", "message": "Test case 8804: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8804, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:26:46Z", "level": "info", "message": "Test case 8805: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8805, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:26:47Z", "level": "info", "message": "Test case 8806: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8806, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:26:48Z", "level": "info", "message": "Test case 8807: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8807, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:26:49Z", "level": "info", "message": "Test case 8808: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8808, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:26:50Z", "level": "info", "message": "Test case 8809: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8809, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:26:51Z", "level": "info", "message": "Test case 8810: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8810, "data": "wIA="} +{"timestamp": "2024-01-01T02:26:52Z", "level": "info", "message": "Test case 8811: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8811, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:26:53Z", "level": "info", "message": "Test case 8812: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8812, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:26:54Z", "level": "info", "message": "Test case 8813: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8813, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:26:55Z", "level": "info", "message": "Test case 8814: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8814, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:26:56Z", "level": "info", "message": "Test case 8815: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8815, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:26:57Z", "level": "info", "message": "Test case 8816: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8816, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:26:58Z", "level": "info", "message": "Test case 8817: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8817, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:26:59Z", "level": "info", "message": "Test case 8818: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8818, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:27:00Z", "level": "info", "message": "Test case 8819: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8819, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:27:01Z", "level": "info", "message": "Test case 8820: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8820, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:27:02Z", "level": "info", "message": "Test case 8821: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8821, "data": "4ICA"} +{"timestamp": "2024-01-01T02:27:03Z", "level": "info", "message": "Test case 8822: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8822, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:27:04Z", "level": "info", "message": "Test case 8823: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8823, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:27:05Z", "level": "info", "message": "Test case 8824: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8824, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:27:06Z", "level": "info", "message": "Test case 8825: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8825, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:27:07Z", "level": "info", "message": "Test case 8826: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8826, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:27:08Z", "level": "info", "message": "Test case 8827: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8827, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:27:09Z", "level": "info", "message": "Test case 8828: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8828, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:27:10Z", "level": "info", "message": "Test case 8829: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8829, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:27:11Z", "level": "info", "message": "Test case 8830: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8830, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:27:12Z", "level": "info", "message": "Test case 8831: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8831, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:27:13Z", "level": "info", "message": "Test case 8832: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8832, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:27:14Z", "level": "info", "message": "Test case 8833: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8833, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:27:15Z", "level": "info", "message": "Test case 8834: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8834, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:27:16Z", "level": "info", "message": "Test case 8835: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8835, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:27:17Z", "level": "info", "message": "Test case 8836: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8836, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:27:18Z", "level": "info", "message": "Test case 8837: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8837, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:27:19Z", "level": "info", "message": "Test case 8838: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8838, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:27:20Z", "level": "info", "message": "Test case 8839: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8839, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:27:21Z", "level": "info", "message": "Test case 8840: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8840, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:27:22Z", "level": "info", "message": "Test case 8841: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8841, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:27:23Z", "level": "info", "message": "Test case 8842: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8842, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:27:24Z", "level": "info", "message": "Test case 8843: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8843, "data": "4iih"} +{"timestamp": "2024-01-01T02:27:25Z", "level": "info", "message": "Test case 8844: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8844, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:27:26Z", "level": "info", "message": "Test case 8845: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8845, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:27:27Z", "level": "info", "message": "Test case 8846: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8846, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:27:28Z", "level": "info", "message": "Test case 8847: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8847, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:27:29Z", "level": "info", "message": "Test case 8848: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8848, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:27:30Z", "level": "info", "message": "Test case 8849: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8849, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:27:31Z", "level": "info", "message": "Test case 8850: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8850, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:27:32Z", "level": "info", "message": "Test case 8851: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8851, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:27:33Z", "level": "info", "message": "Test case 8852: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8852, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:27:34Z", "level": "info", "message": "Test case 8853: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8853, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:27:35Z", "level": "info", "message": "Test case 8854: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8854, "data": "wg=="} +{"timestamp": "2024-01-01T02:27:36Z", "level": "info", "message": "Test case 8855: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8855, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:27:37Z", "level": "info", "message": "Test case 8856: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8856, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:27:38Z", "level": "info", "message": "Test case 8857: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8857, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:27:39Z", "level": "info", "message": "Test case 8858: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8858, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:27:40Z", "level": "info", "message": "Test case 8859: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8859, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:27:41Z", "level": "info", "message": "Test case 8860: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8860, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:27:42Z", "level": "info", "message": "Test case 8861: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8861, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:27:43Z", "level": "info", "message": "Test case 8862: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8862, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:27:44Z", "level": "info", "message": "Test case 8863: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8863, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:27:45Z", "level": "info", "message": "Test case 8864: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8864, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:27:46Z", "level": "info", "message": "Test case 8865: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8865, "data": "wIA="} +{"timestamp": "2024-01-01T02:27:47Z", "level": "info", "message": "Test case 8866: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8866, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:27:48Z", "level": "info", "message": "Test case 8867: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8867, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:27:49Z", "level": "info", "message": "Test case 8868: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8868, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:27:50Z", "level": "info", "message": "Test case 8869: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8869, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:27:51Z", "level": "info", "message": "Test case 8870: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8870, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:27:52Z", "level": "info", "message": "Test case 8871: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8871, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:27:53Z", "level": "info", "message": "Test case 8872: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8872, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:27:54Z", "level": "info", "message": "Test case 8873: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8873, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:27:55Z", "level": "info", "message": "Test case 8874: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8874, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:27:56Z", "level": "info", "message": "Test case 8875: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8875, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:27:57Z", "level": "info", "message": "Test case 8876: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8876, "data": "4ICA"} +{"timestamp": "2024-01-01T02:27:58Z", "level": "info", "message": "Test case 8877: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8877, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:27:59Z", "level": "info", "message": "Test case 8878: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8878, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:28:00Z", "level": "info", "message": "Test case 8879: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8879, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:28:01Z", "level": "info", "message": "Test case 8880: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8880, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:28:02Z", "level": "info", "message": "Test case 8881: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8881, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:28:03Z", "level": "info", "message": "Test case 8882: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8882, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:28:04Z", "level": "info", "message": "Test case 8883: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8883, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:28:05Z", "level": "info", "message": "Test case 8884: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8884, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:28:06Z", "level": "info", "message": "Test case 8885: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8885, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:28:07Z", "level": "info", "message": "Test case 8886: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8886, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:28:08Z", "level": "info", "message": "Test case 8887: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8887, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:28:09Z", "level": "info", "message": "Test case 8888: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8888, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:28:10Z", "level": "info", "message": "Test case 8889: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8889, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:28:11Z", "level": "info", "message": "Test case 8890: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8890, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:28:12Z", "level": "info", "message": "Test case 8891: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8891, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:28:13Z", "level": "info", "message": "Test case 8892: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8892, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:28:14Z", "level": "info", "message": "Test case 8893: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8893, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:28:15Z", "level": "info", "message": "Test case 8894: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8894, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:28:16Z", "level": "info", "message": "Test case 8895: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8895, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:28:17Z", "level": "info", "message": "Test case 8896: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8896, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:28:18Z", "level": "info", "message": "Test case 8897: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8897, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:28:19Z", "level": "info", "message": "Test case 8898: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8898, "data": "4iih"} +{"timestamp": "2024-01-01T02:28:20Z", "level": "info", "message": "Test case 8899: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8899, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:28:21Z", "level": "info", "message": "Test case 8900: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8900, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:28:22Z", "level": "info", "message": "Test case 8901: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8901, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:28:23Z", "level": "info", "message": "Test case 8902: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8902, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:28:24Z", "level": "info", "message": "Test case 8903: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8903, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:28:25Z", "level": "info", "message": "Test case 8904: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8904, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:28:26Z", "level": "info", "message": "Test case 8905: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8905, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:28:27Z", "level": "info", "message": "Test case 8906: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8906, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:28:28Z", "level": "info", "message": "Test case 8907: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8907, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:28:29Z", "level": "info", "message": "Test case 8908: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8908, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:28:30Z", "level": "info", "message": "Test case 8909: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8909, "data": "wg=="} +{"timestamp": "2024-01-01T02:28:31Z", "level": "info", "message": "Test case 8910: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8910, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:28:32Z", "level": "info", "message": "Test case 8911: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8911, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:28:33Z", "level": "info", "message": "Test case 8912: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8912, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:28:34Z", "level": "info", "message": "Test case 8913: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8913, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:28:35Z", "level": "info", "message": "Test case 8914: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8914, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:28:36Z", "level": "info", "message": "Test case 8915: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8915, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:28:37Z", "level": "info", "message": "Test case 8916: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8916, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:28:38Z", "level": "info", "message": "Test case 8917: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8917, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:28:39Z", "level": "info", "message": "Test case 8918: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8918, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:28:40Z", "level": "info", "message": "Test case 8919: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8919, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:28:41Z", "level": "info", "message": "Test case 8920: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8920, "data": "wIA="} +{"timestamp": "2024-01-01T02:28:42Z", "level": "info", "message": "Test case 8921: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8921, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:28:43Z", "level": "info", "message": "Test case 8922: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8922, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:28:44Z", "level": "info", "message": "Test case 8923: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8923, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:28:45Z", "level": "info", "message": "Test case 8924: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8924, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:28:46Z", "level": "info", "message": "Test case 8925: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8925, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:28:47Z", "level": "info", "message": "Test case 8926: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8926, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:28:48Z", "level": "info", "message": "Test case 8927: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8927, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:28:49Z", "level": "info", "message": "Test case 8928: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8928, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:28:50Z", "level": "info", "message": "Test case 8929: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8929, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:28:51Z", "level": "info", "message": "Test case 8930: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8930, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:28:52Z", "level": "info", "message": "Test case 8931: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8931, "data": "4ICA"} +{"timestamp": "2024-01-01T02:28:53Z", "level": "info", "message": "Test case 8932: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8932, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:28:54Z", "level": "info", "message": "Test case 8933: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8933, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:28:55Z", "level": "info", "message": "Test case 8934: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8934, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:28:56Z", "level": "info", "message": "Test case 8935: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8935, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:28:57Z", "level": "info", "message": "Test case 8936: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8936, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:28:58Z", "level": "info", "message": "Test case 8937: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8937, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:28:59Z", "level": "info", "message": "Test case 8938: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8938, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:29:00Z", "level": "info", "message": "Test case 8939: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8939, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:29:01Z", "level": "info", "message": "Test case 8940: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8940, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:29:02Z", "level": "info", "message": "Test case 8941: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8941, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:29:03Z", "level": "info", "message": "Test case 8942: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8942, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:29:04Z", "level": "info", "message": "Test case 8943: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8943, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:29:05Z", "level": "info", "message": "Test case 8944: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8944, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:29:06Z", "level": "info", "message": "Test case 8945: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8945, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:29:07Z", "level": "info", "message": "Test case 8946: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8946, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:29:08Z", "level": "info", "message": "Test case 8947: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8947, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:29:09Z", "level": "info", "message": "Test case 8948: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8948, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:29:10Z", "level": "info", "message": "Test case 8949: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8949, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:29:11Z", "level": "info", "message": "Test case 8950: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8950, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:29:12Z", "level": "info", "message": "Test case 8951: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8951, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:29:13Z", "level": "info", "message": "Test case 8952: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8952, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:29:14Z", "level": "info", "message": "Test case 8953: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8953, "data": "4iih"} +{"timestamp": "2024-01-01T02:29:15Z", "level": "info", "message": "Test case 8954: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8954, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:29:16Z", "level": "info", "message": "Test case 8955: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8955, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:29:17Z", "level": "info", "message": "Test case 8956: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8956, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:29:18Z", "level": "info", "message": "Test case 8957: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8957, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:29:19Z", "level": "info", "message": "Test case 8958: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8958, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:29:20Z", "level": "info", "message": "Test case 8959: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8959, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:29:21Z", "level": "info", "message": "Test case 8960: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8960, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:29:22Z", "level": "info", "message": "Test case 8961: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8961, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:29:23Z", "level": "info", "message": "Test case 8962: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8962, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:29:24Z", "level": "info", "message": "Test case 8963: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8963, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:29:25Z", "level": "info", "message": "Test case 8964: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8964, "data": "wg=="} +{"timestamp": "2024-01-01T02:29:26Z", "level": "info", "message": "Test case 8965: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8965, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:29:27Z", "level": "info", "message": "Test case 8966: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8966, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:29:28Z", "level": "info", "message": "Test case 8967: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8967, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:29:29Z", "level": "info", "message": "Test case 8968: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8968, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:29:30Z", "level": "info", "message": "Test case 8969: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8969, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:29:31Z", "level": "info", "message": "Test case 8970: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8970, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:29:32Z", "level": "info", "message": "Test case 8971: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8971, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:29:33Z", "level": "info", "message": "Test case 8972: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8972, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:29:34Z", "level": "info", "message": "Test case 8973: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8973, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:29:35Z", "level": "info", "message": "Test case 8974: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8974, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:29:36Z", "level": "info", "message": "Test case 8975: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8975, "data": "wIA="} +{"timestamp": "2024-01-01T02:29:37Z", "level": "info", "message": "Test case 8976: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8976, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:29:38Z", "level": "info", "message": "Test case 8977: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8977, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:29:39Z", "level": "info", "message": "Test case 8978: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8978, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:29:40Z", "level": "info", "message": "Test case 8979: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8979, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:29:41Z", "level": "info", "message": "Test case 8980: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8980, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:29:42Z", "level": "info", "message": "Test case 8981: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8981, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:29:43Z", "level": "info", "message": "Test case 8982: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8982, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:29:44Z", "level": "info", "message": "Test case 8983: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8983, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:29:45Z", "level": "info", "message": "Test case 8984: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8984, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:29:46Z", "level": "info", "message": "Test case 8985: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8985, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:29:47Z", "level": "info", "message": "Test case 8986: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8986, "data": "4ICA"} +{"timestamp": "2024-01-01T02:29:48Z", "level": "info", "message": "Test case 8987: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8987, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:29:49Z", "level": "info", "message": "Test case 8988: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8988, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:29:50Z", "level": "info", "message": "Test case 8989: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 8989, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:29:51Z", "level": "info", "message": "Test case 8990: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 8990, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:29:52Z", "level": "info", "message": "Test case 8991: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 8991, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:29:53Z", "level": "info", "message": "Test case 8992: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 8992, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:29:54Z", "level": "info", "message": "Test case 8993: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 8993, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:29:55Z", "level": "info", "message": "Test case 8994: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 8994, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:29:56Z", "level": "info", "message": "Test case 8995: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 8995, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:29:57Z", "level": "info", "message": "Test case 8996: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 8996, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:29:58Z", "level": "info", "message": "Test case 8997: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 8997, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:29:59Z", "level": "info", "message": "Test case 8998: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 8998, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:30:00Z", "level": "info", "message": "Test case 8999: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 8999, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:30:01Z", "level": "info", "message": "Test case 9000: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9000, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:30:02Z", "level": "info", "message": "Test case 9001: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9001, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:30:03Z", "level": "info", "message": "Test case 9002: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9002, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:30:04Z", "level": "info", "message": "Test case 9003: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9003, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:30:05Z", "level": "info", "message": "Test case 9004: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9004, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:30:06Z", "level": "info", "message": "Test case 9005: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9005, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:30:07Z", "level": "info", "message": "Test case 9006: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9006, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:30:08Z", "level": "info", "message": "Test case 9007: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9007, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:30:09Z", "level": "info", "message": "Test case 9008: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9008, "data": "4iih"} +{"timestamp": "2024-01-01T02:30:10Z", "level": "info", "message": "Test case 9009: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9009, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:30:11Z", "level": "info", "message": "Test case 9010: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9010, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:30:12Z", "level": "info", "message": "Test case 9011: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9011, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:30:13Z", "level": "info", "message": "Test case 9012: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9012, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:30:14Z", "level": "info", "message": "Test case 9013: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9013, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:30:15Z", "level": "info", "message": "Test case 9014: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9014, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:30:16Z", "level": "info", "message": "Test case 9015: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9015, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:30:17Z", "level": "info", "message": "Test case 9016: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9016, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:30:18Z", "level": "info", "message": "Test case 9017: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9017, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:30:19Z", "level": "info", "message": "Test case 9018: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9018, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:30:20Z", "level": "info", "message": "Test case 9019: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9019, "data": "wg=="} +{"timestamp": "2024-01-01T02:30:21Z", "level": "info", "message": "Test case 9020: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9020, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:30:22Z", "level": "info", "message": "Test case 9021: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9021, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:30:23Z", "level": "info", "message": "Test case 9022: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9022, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:30:24Z", "level": "info", "message": "Test case 9023: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9023, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:30:25Z", "level": "info", "message": "Test case 9024: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9024, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:30:26Z", "level": "info", "message": "Test case 9025: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9025, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:30:27Z", "level": "info", "message": "Test case 9026: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9026, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:30:28Z", "level": "info", "message": "Test case 9027: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9027, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:30:29Z", "level": "info", "message": "Test case 9028: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9028, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:30:30Z", "level": "info", "message": "Test case 9029: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9029, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:30:31Z", "level": "info", "message": "Test case 9030: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9030, "data": "wIA="} +{"timestamp": "2024-01-01T02:30:32Z", "level": "info", "message": "Test case 9031: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9031, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:30:33Z", "level": "info", "message": "Test case 9032: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9032, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:30:34Z", "level": "info", "message": "Test case 9033: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9033, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:30:35Z", "level": "info", "message": "Test case 9034: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9034, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:30:36Z", "level": "info", "message": "Test case 9035: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9035, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:30:37Z", "level": "info", "message": "Test case 9036: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9036, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:30:38Z", "level": "info", "message": "Test case 9037: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9037, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:30:39Z", "level": "info", "message": "Test case 9038: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9038, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:30:40Z", "level": "info", "message": "Test case 9039: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9039, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:30:41Z", "level": "info", "message": "Test case 9040: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9040, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:30:42Z", "level": "info", "message": "Test case 9041: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9041, "data": "4ICA"} +{"timestamp": "2024-01-01T02:30:43Z", "level": "info", "message": "Test case 9042: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9042, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:30:44Z", "level": "info", "message": "Test case 9043: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9043, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:30:45Z", "level": "info", "message": "Test case 9044: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9044, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:30:46Z", "level": "info", "message": "Test case 9045: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9045, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:30:47Z", "level": "info", "message": "Test case 9046: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9046, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:30:48Z", "level": "info", "message": "Test case 9047: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9047, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:30:49Z", "level": "info", "message": "Test case 9048: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9048, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:30:50Z", "level": "info", "message": "Test case 9049: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9049, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:30:51Z", "level": "info", "message": "Test case 9050: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9050, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:30:52Z", "level": "info", "message": "Test case 9051: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9051, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:30:53Z", "level": "info", "message": "Test case 9052: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9052, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:30:54Z", "level": "info", "message": "Test case 9053: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9053, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:30:55Z", "level": "info", "message": "Test case 9054: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9054, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:30:56Z", "level": "info", "message": "Test case 9055: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9055, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:30:57Z", "level": "info", "message": "Test case 9056: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9056, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:30:58Z", "level": "info", "message": "Test case 9057: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9057, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:30:59Z", "level": "info", "message": "Test case 9058: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9058, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:31:00Z", "level": "info", "message": "Test case 9059: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9059, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:31:01Z", "level": "info", "message": "Test case 9060: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9060, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:31:02Z", "level": "info", "message": "Test case 9061: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9061, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:31:03Z", "level": "info", "message": "Test case 9062: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9062, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:31:04Z", "level": "info", "message": "Test case 9063: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9063, "data": "4iih"} +{"timestamp": "2024-01-01T02:31:05Z", "level": "info", "message": "Test case 9064: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9064, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:31:06Z", "level": "info", "message": "Test case 9065: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9065, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:31:07Z", "level": "info", "message": "Test case 9066: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9066, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:31:08Z", "level": "info", "message": "Test case 9067: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9067, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:31:09Z", "level": "info", "message": "Test case 9068: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9068, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:31:10Z", "level": "info", "message": "Test case 9069: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9069, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:31:11Z", "level": "info", "message": "Test case 9070: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9070, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:31:12Z", "level": "info", "message": "Test case 9071: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9071, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:31:13Z", "level": "info", "message": "Test case 9072: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9072, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:31:14Z", "level": "info", "message": "Test case 9073: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9073, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:31:15Z", "level": "info", "message": "Test case 9074: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9074, "data": "wg=="} +{"timestamp": "2024-01-01T02:31:16Z", "level": "info", "message": "Test case 9075: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9075, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:31:17Z", "level": "info", "message": "Test case 9076: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9076, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:31:18Z", "level": "info", "message": "Test case 9077: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9077, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:31:19Z", "level": "info", "message": "Test case 9078: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9078, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:31:20Z", "level": "info", "message": "Test case 9079: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9079, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:31:21Z", "level": "info", "message": "Test case 9080: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9080, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:31:22Z", "level": "info", "message": "Test case 9081: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9081, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:31:23Z", "level": "info", "message": "Test case 9082: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9082, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:31:24Z", "level": "info", "message": "Test case 9083: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9083, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:31:25Z", "level": "info", "message": "Test case 9084: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9084, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:31:26Z", "level": "info", "message": "Test case 9085: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9085, "data": "wIA="} +{"timestamp": "2024-01-01T02:31:27Z", "level": "info", "message": "Test case 9086: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9086, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:31:28Z", "level": "info", "message": "Test case 9087: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9087, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:31:29Z", "level": "info", "message": "Test case 9088: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9088, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:31:30Z", "level": "info", "message": "Test case 9089: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9089, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:31:31Z", "level": "info", "message": "Test case 9090: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9090, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:31:32Z", "level": "info", "message": "Test case 9091: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9091, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:31:33Z", "level": "info", "message": "Test case 9092: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9092, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:31:34Z", "level": "info", "message": "Test case 9093: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9093, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:31:35Z", "level": "info", "message": "Test case 9094: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9094, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:31:36Z", "level": "info", "message": "Test case 9095: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9095, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:31:37Z", "level": "info", "message": "Test case 9096: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9096, "data": "4ICA"} +{"timestamp": "2024-01-01T02:31:38Z", "level": "info", "message": "Test case 9097: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9097, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:31:39Z", "level": "info", "message": "Test case 9098: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9098, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:31:40Z", "level": "info", "message": "Test case 9099: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9099, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:31:41Z", "level": "info", "message": "Test case 9100: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9100, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:31:42Z", "level": "info", "message": "Test case 9101: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9101, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:31:43Z", "level": "info", "message": "Test case 9102: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9102, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:31:44Z", "level": "info", "message": "Test case 9103: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9103, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:31:45Z", "level": "info", "message": "Test case 9104: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9104, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:31:46Z", "level": "info", "message": "Test case 9105: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9105, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:31:47Z", "level": "info", "message": "Test case 9106: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9106, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:31:48Z", "level": "info", "message": "Test case 9107: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9107, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:31:49Z", "level": "info", "message": "Test case 9108: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9108, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:31:50Z", "level": "info", "message": "Test case 9109: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9109, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:31:51Z", "level": "info", "message": "Test case 9110: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9110, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:31:52Z", "level": "info", "message": "Test case 9111: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9111, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:31:53Z", "level": "info", "message": "Test case 9112: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9112, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:31:54Z", "level": "info", "message": "Test case 9113: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9113, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:31:55Z", "level": "info", "message": "Test case 9114: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9114, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:31:56Z", "level": "info", "message": "Test case 9115: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9115, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:31:57Z", "level": "info", "message": "Test case 9116: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9116, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:31:58Z", "level": "info", "message": "Test case 9117: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9117, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:31:59Z", "level": "info", "message": "Test case 9118: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9118, "data": "4iih"} +{"timestamp": "2024-01-01T02:32:00Z", "level": "info", "message": "Test case 9119: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9119, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:32:01Z", "level": "info", "message": "Test case 9120: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9120, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:32:02Z", "level": "info", "message": "Test case 9121: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9121, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:32:03Z", "level": "info", "message": "Test case 9122: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9122, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:32:04Z", "level": "info", "message": "Test case 9123: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9123, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:32:05Z", "level": "info", "message": "Test case 9124: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9124, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:32:06Z", "level": "info", "message": "Test case 9125: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9125, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:32:07Z", "level": "info", "message": "Test case 9126: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9126, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:32:08Z", "level": "info", "message": "Test case 9127: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9127, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:32:09Z", "level": "info", "message": "Test case 9128: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9128, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:32:10Z", "level": "info", "message": "Test case 9129: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9129, "data": "wg=="} +{"timestamp": "2024-01-01T02:32:11Z", "level": "info", "message": "Test case 9130: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9130, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:32:12Z", "level": "info", "message": "Test case 9131: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9131, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:32:13Z", "level": "info", "message": "Test case 9132: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9132, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:32:14Z", "level": "info", "message": "Test case 9133: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9133, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:32:15Z", "level": "info", "message": "Test case 9134: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9134, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:32:16Z", "level": "info", "message": "Test case 9135: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9135, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:32:17Z", "level": "info", "message": "Test case 9136: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9136, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:32:18Z", "level": "info", "message": "Test case 9137: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9137, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:32:19Z", "level": "info", "message": "Test case 9138: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9138, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:32:20Z", "level": "info", "message": "Test case 9139: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9139, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:32:21Z", "level": "info", "message": "Test case 9140: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9140, "data": "wIA="} +{"timestamp": "2024-01-01T02:32:22Z", "level": "info", "message": "Test case 9141: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9141, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:32:23Z", "level": "info", "message": "Test case 9142: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9142, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:32:24Z", "level": "info", "message": "Test case 9143: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9143, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:32:25Z", "level": "info", "message": "Test case 9144: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9144, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:32:26Z", "level": "info", "message": "Test case 9145: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9145, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:32:27Z", "level": "info", "message": "Test case 9146: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9146, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:32:28Z", "level": "info", "message": "Test case 9147: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9147, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:32:29Z", "level": "info", "message": "Test case 9148: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9148, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:32:30Z", "level": "info", "message": "Test case 9149: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9149, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:32:31Z", "level": "info", "message": "Test case 9150: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9150, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:32:32Z", "level": "info", "message": "Test case 9151: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9151, "data": "4ICA"} +{"timestamp": "2024-01-01T02:32:33Z", "level": "info", "message": "Test case 9152: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9152, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:32:34Z", "level": "info", "message": "Test case 9153: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9153, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:32:35Z", "level": "info", "message": "Test case 9154: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9154, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:32:36Z", "level": "info", "message": "Test case 9155: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9155, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:32:37Z", "level": "info", "message": "Test case 9156: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9156, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:32:38Z", "level": "info", "message": "Test case 9157: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9157, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:32:39Z", "level": "info", "message": "Test case 9158: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9158, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:32:40Z", "level": "info", "message": "Test case 9159: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9159, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:32:41Z", "level": "info", "message": "Test case 9160: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9160, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:32:42Z", "level": "info", "message": "Test case 9161: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9161, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:32:43Z", "level": "info", "message": "Test case 9162: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9162, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:32:44Z", "level": "info", "message": "Test case 9163: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9163, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:32:45Z", "level": "info", "message": "Test case 9164: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9164, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:32:46Z", "level": "info", "message": "Test case 9165: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9165, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:32:47Z", "level": "info", "message": "Test case 9166: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9166, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:32:48Z", "level": "info", "message": "Test case 9167: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9167, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:32:49Z", "level": "info", "message": "Test case 9168: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9168, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:32:50Z", "level": "info", "message": "Test case 9169: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9169, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:32:51Z", "level": "info", "message": "Test case 9170: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9170, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:32:52Z", "level": "info", "message": "Test case 9171: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9171, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:32:53Z", "level": "info", "message": "Test case 9172: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9172, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:32:54Z", "level": "info", "message": "Test case 9173: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9173, "data": "4iih"} +{"timestamp": "2024-01-01T02:32:55Z", "level": "info", "message": "Test case 9174: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9174, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:32:56Z", "level": "info", "message": "Test case 9175: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9175, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:32:57Z", "level": "info", "message": "Test case 9176: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9176, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:32:58Z", "level": "info", "message": "Test case 9177: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9177, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:32:59Z", "level": "info", "message": "Test case 9178: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9178, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:33:00Z", "level": "info", "message": "Test case 9179: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9179, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:33:01Z", "level": "info", "message": "Test case 9180: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9180, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:33:02Z", "level": "info", "message": "Test case 9181: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9181, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:33:03Z", "level": "info", "message": "Test case 9182: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9182, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:33:04Z", "level": "info", "message": "Test case 9183: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9183, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:33:05Z", "level": "info", "message": "Test case 9184: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9184, "data": "wg=="} +{"timestamp": "2024-01-01T02:33:06Z", "level": "info", "message": "Test case 9185: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9185, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:33:07Z", "level": "info", "message": "Test case 9186: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9186, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:33:08Z", "level": "info", "message": "Test case 9187: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9187, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:33:09Z", "level": "info", "message": "Test case 9188: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9188, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:33:10Z", "level": "info", "message": "Test case 9189: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9189, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:33:11Z", "level": "info", "message": "Test case 9190: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9190, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:33:12Z", "level": "info", "message": "Test case 9191: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9191, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:33:13Z", "level": "info", "message": "Test case 9192: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9192, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:33:14Z", "level": "info", "message": "Test case 9193: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9193, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:33:15Z", "level": "info", "message": "Test case 9194: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9194, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:33:16Z", "level": "info", "message": "Test case 9195: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9195, "data": "wIA="} +{"timestamp": "2024-01-01T02:33:17Z", "level": "info", "message": "Test case 9196: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9196, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:33:18Z", "level": "info", "message": "Test case 9197: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9197, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:33:19Z", "level": "info", "message": "Test case 9198: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9198, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:33:20Z", "level": "info", "message": "Test case 9199: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9199, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:33:21Z", "level": "info", "message": "Test case 9200: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9200, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:33:22Z", "level": "info", "message": "Test case 9201: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9201, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:33:23Z", "level": "info", "message": "Test case 9202: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9202, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:33:24Z", "level": "info", "message": "Test case 9203: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9203, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:33:25Z", "level": "info", "message": "Test case 9204: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9204, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:33:26Z", "level": "info", "message": "Test case 9205: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9205, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:33:27Z", "level": "info", "message": "Test case 9206: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9206, "data": "4ICA"} +{"timestamp": "2024-01-01T02:33:28Z", "level": "info", "message": "Test case 9207: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9207, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:33:29Z", "level": "info", "message": "Test case 9208: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9208, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:33:30Z", "level": "info", "message": "Test case 9209: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9209, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:33:31Z", "level": "info", "message": "Test case 9210: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9210, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:33:32Z", "level": "info", "message": "Test case 9211: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9211, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:33:33Z", "level": "info", "message": "Test case 9212: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9212, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:33:34Z", "level": "info", "message": "Test case 9213: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9213, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:33:35Z", "level": "info", "message": "Test case 9214: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9214, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:33:36Z", "level": "info", "message": "Test case 9215: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9215, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:33:37Z", "level": "info", "message": "Test case 9216: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9216, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:33:38Z", "level": "info", "message": "Test case 9217: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9217, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:33:39Z", "level": "info", "message": "Test case 9218: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9218, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:33:40Z", "level": "info", "message": "Test case 9219: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9219, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:33:41Z", "level": "info", "message": "Test case 9220: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9220, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:33:42Z", "level": "info", "message": "Test case 9221: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9221, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:33:43Z", "level": "info", "message": "Test case 9222: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9222, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:33:44Z", "level": "info", "message": "Test case 9223: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9223, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:33:45Z", "level": "info", "message": "Test case 9224: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9224, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:33:46Z", "level": "info", "message": "Test case 9225: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9225, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:33:47Z", "level": "info", "message": "Test case 9226: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9226, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:33:48Z", "level": "info", "message": "Test case 9227: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9227, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:33:49Z", "level": "info", "message": "Test case 9228: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9228, "data": "4iih"} +{"timestamp": "2024-01-01T02:33:50Z", "level": "info", "message": "Test case 9229: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9229, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:33:51Z", "level": "info", "message": "Test case 9230: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9230, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:33:52Z", "level": "info", "message": "Test case 9231: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9231, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:33:53Z", "level": "info", "message": "Test case 9232: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9232, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:33:54Z", "level": "info", "message": "Test case 9233: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9233, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:33:55Z", "level": "info", "message": "Test case 9234: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9234, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:33:56Z", "level": "info", "message": "Test case 9235: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9235, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:33:57Z", "level": "info", "message": "Test case 9236: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9236, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:33:58Z", "level": "info", "message": "Test case 9237: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9237, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:33:59Z", "level": "info", "message": "Test case 9238: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9238, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:34:00Z", "level": "info", "message": "Test case 9239: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9239, "data": "wg=="} +{"timestamp": "2024-01-01T02:34:01Z", "level": "info", "message": "Test case 9240: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9240, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:34:02Z", "level": "info", "message": "Test case 9241: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9241, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:34:03Z", "level": "info", "message": "Test case 9242: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9242, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:34:04Z", "level": "info", "message": "Test case 9243: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9243, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:34:05Z", "level": "info", "message": "Test case 9244: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9244, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:34:06Z", "level": "info", "message": "Test case 9245: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9245, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:34:07Z", "level": "info", "message": "Test case 9246: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9246, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:34:08Z", "level": "info", "message": "Test case 9247: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9247, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:34:09Z", "level": "info", "message": "Test case 9248: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9248, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:34:10Z", "level": "info", "message": "Test case 9249: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9249, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:34:11Z", "level": "info", "message": "Test case 9250: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9250, "data": "wIA="} +{"timestamp": "2024-01-01T02:34:12Z", "level": "info", "message": "Test case 9251: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9251, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:34:13Z", "level": "info", "message": "Test case 9252: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9252, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:34:14Z", "level": "info", "message": "Test case 9253: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9253, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:34:15Z", "level": "info", "message": "Test case 9254: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9254, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:34:16Z", "level": "info", "message": "Test case 9255: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9255, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:34:17Z", "level": "info", "message": "Test case 9256: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9256, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:34:18Z", "level": "info", "message": "Test case 9257: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9257, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:34:19Z", "level": "info", "message": "Test case 9258: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9258, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:34:20Z", "level": "info", "message": "Test case 9259: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9259, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:34:21Z", "level": "info", "message": "Test case 9260: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9260, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:34:22Z", "level": "info", "message": "Test case 9261: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9261, "data": "4ICA"} +{"timestamp": "2024-01-01T02:34:23Z", "level": "info", "message": "Test case 9262: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9262, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:34:24Z", "level": "info", "message": "Test case 9263: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9263, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:34:25Z", "level": "info", "message": "Test case 9264: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9264, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:34:26Z", "level": "info", "message": "Test case 9265: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9265, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:34:27Z", "level": "info", "message": "Test case 9266: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9266, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:34:28Z", "level": "info", "message": "Test case 9267: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9267, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:34:29Z", "level": "info", "message": "Test case 9268: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9268, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:34:30Z", "level": "info", "message": "Test case 9269: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9269, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:34:31Z", "level": "info", "message": "Test case 9270: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9270, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:34:32Z", "level": "info", "message": "Test case 9271: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9271, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:34:33Z", "level": "info", "message": "Test case 9272: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9272, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:34:34Z", "level": "info", "message": "Test case 9273: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9273, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:34:35Z", "level": "info", "message": "Test case 9274: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9274, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:34:36Z", "level": "info", "message": "Test case 9275: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9275, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:34:37Z", "level": "info", "message": "Test case 9276: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9276, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:34:38Z", "level": "info", "message": "Test case 9277: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9277, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:34:39Z", "level": "info", "message": "Test case 9278: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9278, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:34:40Z", "level": "info", "message": "Test case 9279: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9279, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:34:41Z", "level": "info", "message": "Test case 9280: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9280, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:34:42Z", "level": "info", "message": "Test case 9281: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9281, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:34:43Z", "level": "info", "message": "Test case 9282: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9282, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:34:44Z", "level": "info", "message": "Test case 9283: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9283, "data": "4iih"} +{"timestamp": "2024-01-01T02:34:45Z", "level": "info", "message": "Test case 9284: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9284, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:34:46Z", "level": "info", "message": "Test case 9285: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9285, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:34:47Z", "level": "info", "message": "Test case 9286: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9286, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:34:48Z", "level": "info", "message": "Test case 9287: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9287, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:34:49Z", "level": "info", "message": "Test case 9288: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9288, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:34:50Z", "level": "info", "message": "Test case 9289: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9289, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:34:51Z", "level": "info", "message": "Test case 9290: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9290, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:34:52Z", "level": "info", "message": "Test case 9291: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9291, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:34:53Z", "level": "info", "message": "Test case 9292: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9292, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:34:54Z", "level": "info", "message": "Test case 9293: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9293, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:34:55Z", "level": "info", "message": "Test case 9294: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9294, "data": "wg=="} +{"timestamp": "2024-01-01T02:34:56Z", "level": "info", "message": "Test case 9295: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9295, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:34:57Z", "level": "info", "message": "Test case 9296: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9296, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:34:58Z", "level": "info", "message": "Test case 9297: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9297, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:34:59Z", "level": "info", "message": "Test case 9298: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9298, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:35:00Z", "level": "info", "message": "Test case 9299: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9299, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:35:01Z", "level": "info", "message": "Test case 9300: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9300, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:35:02Z", "level": "info", "message": "Test case 9301: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9301, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:35:03Z", "level": "info", "message": "Test case 9302: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9302, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:35:04Z", "level": "info", "message": "Test case 9303: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9303, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:35:05Z", "level": "info", "message": "Test case 9304: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9304, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:35:06Z", "level": "info", "message": "Test case 9305: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9305, "data": "wIA="} +{"timestamp": "2024-01-01T02:35:07Z", "level": "info", "message": "Test case 9306: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9306, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:35:08Z", "level": "info", "message": "Test case 9307: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9307, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:35:09Z", "level": "info", "message": "Test case 9308: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9308, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:35:10Z", "level": "info", "message": "Test case 9309: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9309, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:35:11Z", "level": "info", "message": "Test case 9310: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9310, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:35:12Z", "level": "info", "message": "Test case 9311: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9311, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:35:13Z", "level": "info", "message": "Test case 9312: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9312, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:35:14Z", "level": "info", "message": "Test case 9313: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9313, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:35:15Z", "level": "info", "message": "Test case 9314: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9314, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:35:16Z", "level": "info", "message": "Test case 9315: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9315, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:35:17Z", "level": "info", "message": "Test case 9316: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9316, "data": "4ICA"} +{"timestamp": "2024-01-01T02:35:18Z", "level": "info", "message": "Test case 9317: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9317, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:35:19Z", "level": "info", "message": "Test case 9318: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9318, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:35:20Z", "level": "info", "message": "Test case 9319: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9319, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:35:21Z", "level": "info", "message": "Test case 9320: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9320, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:35:22Z", "level": "info", "message": "Test case 9321: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9321, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:35:23Z", "level": "info", "message": "Test case 9322: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9322, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:35:24Z", "level": "info", "message": "Test case 9323: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9323, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:35:25Z", "level": "info", "message": "Test case 9324: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9324, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:35:26Z", "level": "info", "message": "Test case 9325: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9325, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:35:27Z", "level": "info", "message": "Test case 9326: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9326, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:35:28Z", "level": "info", "message": "Test case 9327: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9327, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:35:29Z", "level": "info", "message": "Test case 9328: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9328, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:35:30Z", "level": "info", "message": "Test case 9329: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9329, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:35:31Z", "level": "info", "message": "Test case 9330: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9330, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:35:32Z", "level": "info", "message": "Test case 9331: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9331, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:35:33Z", "level": "info", "message": "Test case 9332: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9332, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:35:34Z", "level": "info", "message": "Test case 9333: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9333, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:35:35Z", "level": "info", "message": "Test case 9334: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9334, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:35:36Z", "level": "info", "message": "Test case 9335: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9335, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:35:37Z", "level": "info", "message": "Test case 9336: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9336, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:35:38Z", "level": "info", "message": "Test case 9337: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9337, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:35:39Z", "level": "info", "message": "Test case 9338: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9338, "data": "4iih"} +{"timestamp": "2024-01-01T02:35:40Z", "level": "info", "message": "Test case 9339: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9339, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:35:41Z", "level": "info", "message": "Test case 9340: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9340, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:35:42Z", "level": "info", "message": "Test case 9341: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9341, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:35:43Z", "level": "info", "message": "Test case 9342: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9342, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:35:44Z", "level": "info", "message": "Test case 9343: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9343, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:35:45Z", "level": "info", "message": "Test case 9344: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9344, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:35:46Z", "level": "info", "message": "Test case 9345: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9345, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:35:47Z", "level": "info", "message": "Test case 9346: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9346, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:35:48Z", "level": "info", "message": "Test case 9347: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9347, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:35:49Z", "level": "info", "message": "Test case 9348: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9348, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:35:50Z", "level": "info", "message": "Test case 9349: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9349, "data": "wg=="} +{"timestamp": "2024-01-01T02:35:51Z", "level": "info", "message": "Test case 9350: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9350, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:35:52Z", "level": "info", "message": "Test case 9351: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9351, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:35:53Z", "level": "info", "message": "Test case 9352: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9352, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:35:54Z", "level": "info", "message": "Test case 9353: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9353, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:35:55Z", "level": "info", "message": "Test case 9354: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9354, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:35:56Z", "level": "info", "message": "Test case 9355: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9355, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:35:57Z", "level": "info", "message": "Test case 9356: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9356, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:35:58Z", "level": "info", "message": "Test case 9357: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9357, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:35:59Z", "level": "info", "message": "Test case 9358: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9358, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:36:00Z", "level": "info", "message": "Test case 9359: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9359, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:36:01Z", "level": "info", "message": "Test case 9360: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9360, "data": "wIA="} +{"timestamp": "2024-01-01T02:36:02Z", "level": "info", "message": "Test case 9361: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9361, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:36:03Z", "level": "info", "message": "Test case 9362: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9362, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:36:04Z", "level": "info", "message": "Test case 9363: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9363, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:36:05Z", "level": "info", "message": "Test case 9364: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9364, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:36:06Z", "level": "info", "message": "Test case 9365: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9365, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:36:07Z", "level": "info", "message": "Test case 9366: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9366, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:36:08Z", "level": "info", "message": "Test case 9367: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9367, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:36:09Z", "level": "info", "message": "Test case 9368: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9368, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:36:10Z", "level": "info", "message": "Test case 9369: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9369, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:36:11Z", "level": "info", "message": "Test case 9370: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9370, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:36:12Z", "level": "info", "message": "Test case 9371: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9371, "data": "4ICA"} +{"timestamp": "2024-01-01T02:36:13Z", "level": "info", "message": "Test case 9372: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9372, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:36:14Z", "level": "info", "message": "Test case 9373: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9373, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:36:15Z", "level": "info", "message": "Test case 9374: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9374, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:36:16Z", "level": "info", "message": "Test case 9375: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9375, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:36:17Z", "level": "info", "message": "Test case 9376: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9376, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:36:18Z", "level": "info", "message": "Test case 9377: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9377, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:36:19Z", "level": "info", "message": "Test case 9378: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9378, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:36:20Z", "level": "info", "message": "Test case 9379: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9379, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:36:21Z", "level": "info", "message": "Test case 9380: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9380, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:36:22Z", "level": "info", "message": "Test case 9381: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9381, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:36:23Z", "level": "info", "message": "Test case 9382: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9382, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:36:24Z", "level": "info", "message": "Test case 9383: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9383, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:36:25Z", "level": "info", "message": "Test case 9384: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9384, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:36:26Z", "level": "info", "message": "Test case 9385: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9385, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:36:27Z", "level": "info", "message": "Test case 9386: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9386, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:36:28Z", "level": "info", "message": "Test case 9387: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9387, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:36:29Z", "level": "info", "message": "Test case 9388: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9388, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:36:30Z", "level": "info", "message": "Test case 9389: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9389, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:36:31Z", "level": "info", "message": "Test case 9390: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9390, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:36:32Z", "level": "info", "message": "Test case 9391: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9391, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:36:33Z", "level": "info", "message": "Test case 9392: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9392, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:36:34Z", "level": "info", "message": "Test case 9393: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9393, "data": "4iih"} +{"timestamp": "2024-01-01T02:36:35Z", "level": "info", "message": "Test case 9394: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9394, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:36:36Z", "level": "info", "message": "Test case 9395: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9395, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:36:37Z", "level": "info", "message": "Test case 9396: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9396, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:36:38Z", "level": "info", "message": "Test case 9397: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9397, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:36:39Z", "level": "info", "message": "Test case 9398: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9398, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:36:40Z", "level": "info", "message": "Test case 9399: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9399, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:36:41Z", "level": "info", "message": "Test case 9400: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9400, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:36:42Z", "level": "info", "message": "Test case 9401: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9401, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:36:43Z", "level": "info", "message": "Test case 9402: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9402, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:36:44Z", "level": "info", "message": "Test case 9403: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9403, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:36:45Z", "level": "info", "message": "Test case 9404: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9404, "data": "wg=="} +{"timestamp": "2024-01-01T02:36:46Z", "level": "info", "message": "Test case 9405: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9405, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:36:47Z", "level": "info", "message": "Test case 9406: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9406, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:36:48Z", "level": "info", "message": "Test case 9407: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9407, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:36:49Z", "level": "info", "message": "Test case 9408: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9408, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:36:50Z", "level": "info", "message": "Test case 9409: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9409, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:36:51Z", "level": "info", "message": "Test case 9410: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9410, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:36:52Z", "level": "info", "message": "Test case 9411: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9411, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:36:53Z", "level": "info", "message": "Test case 9412: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9412, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:36:54Z", "level": "info", "message": "Test case 9413: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9413, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:36:55Z", "level": "info", "message": "Test case 9414: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9414, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:36:56Z", "level": "info", "message": "Test case 9415: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9415, "data": "wIA="} +{"timestamp": "2024-01-01T02:36:57Z", "level": "info", "message": "Test case 9416: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9416, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:36:58Z", "level": "info", "message": "Test case 9417: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9417, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:36:59Z", "level": "info", "message": "Test case 9418: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9418, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:37:00Z", "level": "info", "message": "Test case 9419: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9419, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:37:01Z", "level": "info", "message": "Test case 9420: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9420, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:37:02Z", "level": "info", "message": "Test case 9421: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9421, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:37:03Z", "level": "info", "message": "Test case 9422: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9422, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:37:04Z", "level": "info", "message": "Test case 9423: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9423, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:37:05Z", "level": "info", "message": "Test case 9424: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9424, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:37:06Z", "level": "info", "message": "Test case 9425: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9425, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:37:07Z", "level": "info", "message": "Test case 9426: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9426, "data": "4ICA"} +{"timestamp": "2024-01-01T02:37:08Z", "level": "info", "message": "Test case 9427: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9427, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:37:09Z", "level": "info", "message": "Test case 9428: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9428, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:37:10Z", "level": "info", "message": "Test case 9429: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9429, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:37:11Z", "level": "info", "message": "Test case 9430: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9430, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:37:12Z", "level": "info", "message": "Test case 9431: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9431, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:37:13Z", "level": "info", "message": "Test case 9432: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9432, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:37:14Z", "level": "info", "message": "Test case 9433: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9433, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:37:15Z", "level": "info", "message": "Test case 9434: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9434, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:37:16Z", "level": "info", "message": "Test case 9435: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9435, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:37:17Z", "level": "info", "message": "Test case 9436: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9436, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:37:18Z", "level": "info", "message": "Test case 9437: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9437, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:37:19Z", "level": "info", "message": "Test case 9438: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9438, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:37:20Z", "level": "info", "message": "Test case 9439: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9439, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:37:21Z", "level": "info", "message": "Test case 9440: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9440, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:37:22Z", "level": "info", "message": "Test case 9441: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9441, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:37:23Z", "level": "info", "message": "Test case 9442: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9442, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:37:24Z", "level": "info", "message": "Test case 9443: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9443, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:37:25Z", "level": "info", "message": "Test case 9444: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9444, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:37:26Z", "level": "info", "message": "Test case 9445: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9445, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:37:27Z", "level": "info", "message": "Test case 9446: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9446, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:37:28Z", "level": "info", "message": "Test case 9447: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9447, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:37:29Z", "level": "info", "message": "Test case 9448: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9448, "data": "4iih"} +{"timestamp": "2024-01-01T02:37:30Z", "level": "info", "message": "Test case 9449: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9449, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:37:31Z", "level": "info", "message": "Test case 9450: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9450, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:37:32Z", "level": "info", "message": "Test case 9451: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9451, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:37:33Z", "level": "info", "message": "Test case 9452: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9452, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:37:34Z", "level": "info", "message": "Test case 9453: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9453, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:37:35Z", "level": "info", "message": "Test case 9454: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9454, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:37:36Z", "level": "info", "message": "Test case 9455: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9455, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:37:37Z", "level": "info", "message": "Test case 9456: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9456, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:37:38Z", "level": "info", "message": "Test case 9457: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9457, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:37:39Z", "level": "info", "message": "Test case 9458: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9458, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:37:40Z", "level": "info", "message": "Test case 9459: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9459, "data": "wg=="} +{"timestamp": "2024-01-01T02:37:41Z", "level": "info", "message": "Test case 9460: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9460, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:37:42Z", "level": "info", "message": "Test case 9461: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9461, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:37:43Z", "level": "info", "message": "Test case 9462: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9462, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:37:44Z", "level": "info", "message": "Test case 9463: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9463, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:37:45Z", "level": "info", "message": "Test case 9464: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9464, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:37:46Z", "level": "info", "message": "Test case 9465: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9465, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:37:47Z", "level": "info", "message": "Test case 9466: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9466, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:37:48Z", "level": "info", "message": "Test case 9467: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9467, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:37:49Z", "level": "info", "message": "Test case 9468: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9468, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:37:50Z", "level": "info", "message": "Test case 9469: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9469, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:37:51Z", "level": "info", "message": "Test case 9470: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9470, "data": "wIA="} +{"timestamp": "2024-01-01T02:37:52Z", "level": "info", "message": "Test case 9471: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9471, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:37:53Z", "level": "info", "message": "Test case 9472: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9472, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:37:54Z", "level": "info", "message": "Test case 9473: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9473, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:37:55Z", "level": "info", "message": "Test case 9474: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9474, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:37:56Z", "level": "info", "message": "Test case 9475: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9475, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:37:57Z", "level": "info", "message": "Test case 9476: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9476, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:37:58Z", "level": "info", "message": "Test case 9477: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9477, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:37:59Z", "level": "info", "message": "Test case 9478: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9478, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:38:00Z", "level": "info", "message": "Test case 9479: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9479, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:38:01Z", "level": "info", "message": "Test case 9480: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9480, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:38:02Z", "level": "info", "message": "Test case 9481: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9481, "data": "4ICA"} +{"timestamp": "2024-01-01T02:38:03Z", "level": "info", "message": "Test case 9482: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9482, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:38:04Z", "level": "info", "message": "Test case 9483: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9483, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:38:05Z", "level": "info", "message": "Test case 9484: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9484, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:38:06Z", "level": "info", "message": "Test case 9485: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9485, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:38:07Z", "level": "info", "message": "Test case 9486: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9486, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:38:08Z", "level": "info", "message": "Test case 9487: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9487, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:38:09Z", "level": "info", "message": "Test case 9488: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9488, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:38:10Z", "level": "info", "message": "Test case 9489: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9489, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:38:11Z", "level": "info", "message": "Test case 9490: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9490, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:38:12Z", "level": "info", "message": "Test case 9491: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9491, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:38:13Z", "level": "info", "message": "Test case 9492: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9492, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:38:14Z", "level": "info", "message": "Test case 9493: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9493, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:38:15Z", "level": "info", "message": "Test case 9494: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9494, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:38:16Z", "level": "info", "message": "Test case 9495: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9495, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:38:17Z", "level": "info", "message": "Test case 9496: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9496, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:38:18Z", "level": "info", "message": "Test case 9497: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9497, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:38:19Z", "level": "info", "message": "Test case 9498: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9498, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:38:20Z", "level": "info", "message": "Test case 9499: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9499, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:38:21Z", "level": "info", "message": "Test case 9500: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9500, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:38:22Z", "level": "info", "message": "Test case 9501: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9501, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:38:23Z", "level": "info", "message": "Test case 9502: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9502, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:38:24Z", "level": "info", "message": "Test case 9503: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9503, "data": "4iih"} +{"timestamp": "2024-01-01T02:38:25Z", "level": "info", "message": "Test case 9504: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9504, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:38:26Z", "level": "info", "message": "Test case 9505: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9505, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:38:27Z", "level": "info", "message": "Test case 9506: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9506, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:38:28Z", "level": "info", "message": "Test case 9507: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9507, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:38:29Z", "level": "info", "message": "Test case 9508: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9508, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:38:30Z", "level": "info", "message": "Test case 9509: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9509, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:38:31Z", "level": "info", "message": "Test case 9510: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9510, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:38:32Z", "level": "info", "message": "Test case 9511: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9511, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:38:33Z", "level": "info", "message": "Test case 9512: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9512, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:38:34Z", "level": "info", "message": "Test case 9513: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9513, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:38:35Z", "level": "info", "message": "Test case 9514: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9514, "data": "wg=="} +{"timestamp": "2024-01-01T02:38:36Z", "level": "info", "message": "Test case 9515: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9515, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:38:37Z", "level": "info", "message": "Test case 9516: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9516, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:38:38Z", "level": "info", "message": "Test case 9517: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9517, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:38:39Z", "level": "info", "message": "Test case 9518: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9518, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:38:40Z", "level": "info", "message": "Test case 9519: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9519, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:38:41Z", "level": "info", "message": "Test case 9520: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9520, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:38:42Z", "level": "info", "message": "Test case 9521: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9521, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:38:43Z", "level": "info", "message": "Test case 9522: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9522, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:38:44Z", "level": "info", "message": "Test case 9523: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9523, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:38:45Z", "level": "info", "message": "Test case 9524: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9524, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:38:46Z", "level": "info", "message": "Test case 9525: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9525, "data": "wIA="} +{"timestamp": "2024-01-01T02:38:47Z", "level": "info", "message": "Test case 9526: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9526, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:38:48Z", "level": "info", "message": "Test case 9527: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9527, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:38:49Z", "level": "info", "message": "Test case 9528: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9528, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:38:50Z", "level": "info", "message": "Test case 9529: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9529, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:38:51Z", "level": "info", "message": "Test case 9530: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9530, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:38:52Z", "level": "info", "message": "Test case 9531: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9531, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:38:53Z", "level": "info", "message": "Test case 9532: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9532, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:38:54Z", "level": "info", "message": "Test case 9533: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9533, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:38:55Z", "level": "info", "message": "Test case 9534: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9534, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:38:56Z", "level": "info", "message": "Test case 9535: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9535, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:38:57Z", "level": "info", "message": "Test case 9536: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9536, "data": "4ICA"} +{"timestamp": "2024-01-01T02:38:58Z", "level": "info", "message": "Test case 9537: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9537, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:38:59Z", "level": "info", "message": "Test case 9538: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9538, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:39:00Z", "level": "info", "message": "Test case 9539: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9539, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:39:01Z", "level": "info", "message": "Test case 9540: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9540, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:39:02Z", "level": "info", "message": "Test case 9541: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9541, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:39:03Z", "level": "info", "message": "Test case 9542: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9542, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:39:04Z", "level": "info", "message": "Test case 9543: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9543, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:39:05Z", "level": "info", "message": "Test case 9544: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9544, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:39:06Z", "level": "info", "message": "Test case 9545: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9545, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:39:07Z", "level": "info", "message": "Test case 9546: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9546, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:39:08Z", "level": "info", "message": "Test case 9547: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9547, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:39:09Z", "level": "info", "message": "Test case 9548: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9548, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:39:10Z", "level": "info", "message": "Test case 9549: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9549, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:39:11Z", "level": "info", "message": "Test case 9550: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9550, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:39:12Z", "level": "info", "message": "Test case 9551: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9551, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:39:13Z", "level": "info", "message": "Test case 9552: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9552, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:39:14Z", "level": "info", "message": "Test case 9553: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9553, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:39:15Z", "level": "info", "message": "Test case 9554: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9554, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:39:16Z", "level": "info", "message": "Test case 9555: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9555, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:39:17Z", "level": "info", "message": "Test case 9556: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9556, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:39:18Z", "level": "info", "message": "Test case 9557: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9557, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:39:19Z", "level": "info", "message": "Test case 9558: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9558, "data": "4iih"} +{"timestamp": "2024-01-01T02:39:20Z", "level": "info", "message": "Test case 9559: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9559, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:39:21Z", "level": "info", "message": "Test case 9560: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9560, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:39:22Z", "level": "info", "message": "Test case 9561: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9561, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:39:23Z", "level": "info", "message": "Test case 9562: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9562, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:39:24Z", "level": "info", "message": "Test case 9563: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9563, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:39:25Z", "level": "info", "message": "Test case 9564: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9564, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:39:26Z", "level": "info", "message": "Test case 9565: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9565, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:39:27Z", "level": "info", "message": "Test case 9566: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9566, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:39:28Z", "level": "info", "message": "Test case 9567: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9567, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:39:29Z", "level": "info", "message": "Test case 9568: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9568, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:39:30Z", "level": "info", "message": "Test case 9569: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9569, "data": "wg=="} +{"timestamp": "2024-01-01T02:39:31Z", "level": "info", "message": "Test case 9570: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9570, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:39:32Z", "level": "info", "message": "Test case 9571: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9571, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:39:33Z", "level": "info", "message": "Test case 9572: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9572, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:39:34Z", "level": "info", "message": "Test case 9573: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9573, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:39:35Z", "level": "info", "message": "Test case 9574: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9574, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:39:36Z", "level": "info", "message": "Test case 9575: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9575, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:39:37Z", "level": "info", "message": "Test case 9576: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9576, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:39:38Z", "level": "info", "message": "Test case 9577: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9577, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:39:39Z", "level": "info", "message": "Test case 9578: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9578, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:39:40Z", "level": "info", "message": "Test case 9579: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9579, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:39:41Z", "level": "info", "message": "Test case 9580: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9580, "data": "wIA="} +{"timestamp": "2024-01-01T02:39:42Z", "level": "info", "message": "Test case 9581: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9581, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:39:43Z", "level": "info", "message": "Test case 9582: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9582, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:39:44Z", "level": "info", "message": "Test case 9583: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9583, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:39:45Z", "level": "info", "message": "Test case 9584: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9584, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:39:46Z", "level": "info", "message": "Test case 9585: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9585, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:39:47Z", "level": "info", "message": "Test case 9586: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9586, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:39:48Z", "level": "info", "message": "Test case 9587: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9587, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:39:49Z", "level": "info", "message": "Test case 9588: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9588, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:39:50Z", "level": "info", "message": "Test case 9589: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9589, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:39:51Z", "level": "info", "message": "Test case 9590: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9590, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:39:52Z", "level": "info", "message": "Test case 9591: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9591, "data": "4ICA"} +{"timestamp": "2024-01-01T02:39:53Z", "level": "info", "message": "Test case 9592: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9592, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:39:54Z", "level": "info", "message": "Test case 9593: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9593, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:39:55Z", "level": "info", "message": "Test case 9594: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9594, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:39:56Z", "level": "info", "message": "Test case 9595: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9595, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:39:57Z", "level": "info", "message": "Test case 9596: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9596, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:39:58Z", "level": "info", "message": "Test case 9597: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9597, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:39:59Z", "level": "info", "message": "Test case 9598: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9598, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:40:00Z", "level": "info", "message": "Test case 9599: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9599, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:40:01Z", "level": "info", "message": "Test case 9600: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9600, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:40:02Z", "level": "info", "message": "Test case 9601: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9601, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:40:03Z", "level": "info", "message": "Test case 9602: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9602, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:40:04Z", "level": "info", "message": "Test case 9603: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9603, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:40:05Z", "level": "info", "message": "Test case 9604: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9604, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:40:06Z", "level": "info", "message": "Test case 9605: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9605, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:40:07Z", "level": "info", "message": "Test case 9606: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9606, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:40:08Z", "level": "info", "message": "Test case 9607: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9607, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:40:09Z", "level": "info", "message": "Test case 9608: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9608, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:40:10Z", "level": "info", "message": "Test case 9609: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9609, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:40:11Z", "level": "info", "message": "Test case 9610: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9610, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:40:12Z", "level": "info", "message": "Test case 9611: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9611, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:40:13Z", "level": "info", "message": "Test case 9612: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9612, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:40:14Z", "level": "info", "message": "Test case 9613: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9613, "data": "4iih"} +{"timestamp": "2024-01-01T02:40:15Z", "level": "info", "message": "Test case 9614: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9614, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:40:16Z", "level": "info", "message": "Test case 9615: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9615, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:40:17Z", "level": "info", "message": "Test case 9616: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9616, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:40:18Z", "level": "info", "message": "Test case 9617: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9617, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:40:19Z", "level": "info", "message": "Test case 9618: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9618, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:40:20Z", "level": "info", "message": "Test case 9619: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9619, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:40:21Z", "level": "info", "message": "Test case 9620: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9620, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:40:22Z", "level": "info", "message": "Test case 9621: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9621, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:40:23Z", "level": "info", "message": "Test case 9622: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9622, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:40:24Z", "level": "info", "message": "Test case 9623: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9623, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:40:25Z", "level": "info", "message": "Test case 9624: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9624, "data": "wg=="} +{"timestamp": "2024-01-01T02:40:26Z", "level": "info", "message": "Test case 9625: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9625, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:40:27Z", "level": "info", "message": "Test case 9626: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9626, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:40:28Z", "level": "info", "message": "Test case 9627: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9627, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:40:29Z", "level": "info", "message": "Test case 9628: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9628, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:40:30Z", "level": "info", "message": "Test case 9629: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9629, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:40:31Z", "level": "info", "message": "Test case 9630: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9630, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:40:32Z", "level": "info", "message": "Test case 9631: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9631, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:40:33Z", "level": "info", "message": "Test case 9632: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9632, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:40:34Z", "level": "info", "message": "Test case 9633: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9633, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:40:35Z", "level": "info", "message": "Test case 9634: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9634, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:40:36Z", "level": "info", "message": "Test case 9635: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9635, "data": "wIA="} +{"timestamp": "2024-01-01T02:40:37Z", "level": "info", "message": "Test case 9636: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9636, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:40:38Z", "level": "info", "message": "Test case 9637: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9637, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:40:39Z", "level": "info", "message": "Test case 9638: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9638, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:40:40Z", "level": "info", "message": "Test case 9639: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9639, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:40:41Z", "level": "info", "message": "Test case 9640: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9640, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:40:42Z", "level": "info", "message": "Test case 9641: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9641, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:40:43Z", "level": "info", "message": "Test case 9642: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9642, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:40:44Z", "level": "info", "message": "Test case 9643: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9643, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:40:45Z", "level": "info", "message": "Test case 9644: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9644, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:40:46Z", "level": "info", "message": "Test case 9645: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9645, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:40:47Z", "level": "info", "message": "Test case 9646: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9646, "data": "4ICA"} +{"timestamp": "2024-01-01T02:40:48Z", "level": "info", "message": "Test case 9647: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9647, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:40:49Z", "level": "info", "message": "Test case 9648: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9648, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:40:50Z", "level": "info", "message": "Test case 9649: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9649, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:40:51Z", "level": "info", "message": "Test case 9650: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9650, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:40:52Z", "level": "info", "message": "Test case 9651: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9651, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:40:53Z", "level": "info", "message": "Test case 9652: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9652, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:40:54Z", "level": "info", "message": "Test case 9653: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9653, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:40:55Z", "level": "info", "message": "Test case 9654: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9654, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:40:56Z", "level": "info", "message": "Test case 9655: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9655, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:40:57Z", "level": "info", "message": "Test case 9656: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9656, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:40:58Z", "level": "info", "message": "Test case 9657: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9657, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:40:59Z", "level": "info", "message": "Test case 9658: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9658, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:41:00Z", "level": "info", "message": "Test case 9659: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9659, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:41:01Z", "level": "info", "message": "Test case 9660: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9660, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:41:02Z", "level": "info", "message": "Test case 9661: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9661, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:41:03Z", "level": "info", "message": "Test case 9662: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9662, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:41:04Z", "level": "info", "message": "Test case 9663: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9663, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:41:05Z", "level": "info", "message": "Test case 9664: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9664, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:41:06Z", "level": "info", "message": "Test case 9665: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9665, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:41:07Z", "level": "info", "message": "Test case 9666: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9666, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:41:08Z", "level": "info", "message": "Test case 9667: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9667, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:41:09Z", "level": "info", "message": "Test case 9668: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9668, "data": "4iih"} +{"timestamp": "2024-01-01T02:41:10Z", "level": "info", "message": "Test case 9669: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9669, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:41:11Z", "level": "info", "message": "Test case 9670: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9670, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:41:12Z", "level": "info", "message": "Test case 9671: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9671, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:41:13Z", "level": "info", "message": "Test case 9672: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9672, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:41:14Z", "level": "info", "message": "Test case 9673: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9673, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:41:15Z", "level": "info", "message": "Test case 9674: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9674, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:41:16Z", "level": "info", "message": "Test case 9675: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9675, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:41:17Z", "level": "info", "message": "Test case 9676: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9676, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:41:18Z", "level": "info", "message": "Test case 9677: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9677, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:41:19Z", "level": "info", "message": "Test case 9678: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9678, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:41:20Z", "level": "info", "message": "Test case 9679: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9679, "data": "wg=="} +{"timestamp": "2024-01-01T02:41:21Z", "level": "info", "message": "Test case 9680: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9680, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:41:22Z", "level": "info", "message": "Test case 9681: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9681, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:41:23Z", "level": "info", "message": "Test case 9682: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9682, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:41:24Z", "level": "info", "message": "Test case 9683: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9683, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:41:25Z", "level": "info", "message": "Test case 9684: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9684, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:41:26Z", "level": "info", "message": "Test case 9685: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9685, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:41:27Z", "level": "info", "message": "Test case 9686: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9686, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:41:28Z", "level": "info", "message": "Test case 9687: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9687, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:41:29Z", "level": "info", "message": "Test case 9688: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9688, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:41:30Z", "level": "info", "message": "Test case 9689: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9689, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:41:31Z", "level": "info", "message": "Test case 9690: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9690, "data": "wIA="} +{"timestamp": "2024-01-01T02:41:32Z", "level": "info", "message": "Test case 9691: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9691, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:41:33Z", "level": "info", "message": "Test case 9692: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9692, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:41:34Z", "level": "info", "message": "Test case 9693: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9693, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:41:35Z", "level": "info", "message": "Test case 9694: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9694, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:41:36Z", "level": "info", "message": "Test case 9695: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9695, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:41:37Z", "level": "info", "message": "Test case 9696: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9696, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:41:38Z", "level": "info", "message": "Test case 9697: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9697, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:41:39Z", "level": "info", "message": "Test case 9698: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9698, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:41:40Z", "level": "info", "message": "Test case 9699: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9699, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:41:41Z", "level": "info", "message": "Test case 9700: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9700, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:41:42Z", "level": "info", "message": "Test case 9701: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9701, "data": "4ICA"} +{"timestamp": "2024-01-01T02:41:43Z", "level": "info", "message": "Test case 9702: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9702, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:41:44Z", "level": "info", "message": "Test case 9703: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9703, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:41:45Z", "level": "info", "message": "Test case 9704: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9704, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:41:46Z", "level": "info", "message": "Test case 9705: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9705, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:41:47Z", "level": "info", "message": "Test case 9706: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9706, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:41:48Z", "level": "info", "message": "Test case 9707: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9707, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:41:49Z", "level": "info", "message": "Test case 9708: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9708, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:41:50Z", "level": "info", "message": "Test case 9709: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9709, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:41:51Z", "level": "info", "message": "Test case 9710: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9710, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:41:52Z", "level": "info", "message": "Test case 9711: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9711, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:41:53Z", "level": "info", "message": "Test case 9712: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9712, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:41:54Z", "level": "info", "message": "Test case 9713: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9713, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:41:55Z", "level": "info", "message": "Test case 9714: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9714, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:41:56Z", "level": "info", "message": "Test case 9715: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9715, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:41:57Z", "level": "info", "message": "Test case 9716: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9716, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:41:58Z", "level": "info", "message": "Test case 9717: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9717, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:41:59Z", "level": "info", "message": "Test case 9718: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9718, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:42:00Z", "level": "info", "message": "Test case 9719: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9719, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:42:01Z", "level": "info", "message": "Test case 9720: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9720, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:42:02Z", "level": "info", "message": "Test case 9721: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9721, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:42:03Z", "level": "info", "message": "Test case 9722: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9722, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:42:04Z", "level": "info", "message": "Test case 9723: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9723, "data": "4iih"} +{"timestamp": "2024-01-01T02:42:05Z", "level": "info", "message": "Test case 9724: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9724, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:42:06Z", "level": "info", "message": "Test case 9725: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9725, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:42:07Z", "level": "info", "message": "Test case 9726: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9726, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:42:08Z", "level": "info", "message": "Test case 9727: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9727, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:42:09Z", "level": "info", "message": "Test case 9728: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9728, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:42:10Z", "level": "info", "message": "Test case 9729: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9729, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:42:11Z", "level": "info", "message": "Test case 9730: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9730, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:42:12Z", "level": "info", "message": "Test case 9731: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9731, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:42:13Z", "level": "info", "message": "Test case 9732: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9732, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:42:14Z", "level": "info", "message": "Test case 9733: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9733, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:42:15Z", "level": "info", "message": "Test case 9734: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9734, "data": "wg=="} +{"timestamp": "2024-01-01T02:42:16Z", "level": "info", "message": "Test case 9735: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9735, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:42:17Z", "level": "info", "message": "Test case 9736: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9736, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:42:18Z", "level": "info", "message": "Test case 9737: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9737, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:42:19Z", "level": "info", "message": "Test case 9738: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9738, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:42:20Z", "level": "info", "message": "Test case 9739: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9739, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:42:21Z", "level": "info", "message": "Test case 9740: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9740, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:42:22Z", "level": "info", "message": "Test case 9741: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9741, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:42:23Z", "level": "info", "message": "Test case 9742: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9742, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:42:24Z", "level": "info", "message": "Test case 9743: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9743, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:42:25Z", "level": "info", "message": "Test case 9744: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9744, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:42:26Z", "level": "info", "message": "Test case 9745: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9745, "data": "wIA="} +{"timestamp": "2024-01-01T02:42:27Z", "level": "info", "message": "Test case 9746: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9746, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:42:28Z", "level": "info", "message": "Test case 9747: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9747, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:42:29Z", "level": "info", "message": "Test case 9748: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9748, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:42:30Z", "level": "info", "message": "Test case 9749: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9749, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:42:31Z", "level": "info", "message": "Test case 9750: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9750, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:42:32Z", "level": "info", "message": "Test case 9751: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9751, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:42:33Z", "level": "info", "message": "Test case 9752: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9752, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:42:34Z", "level": "info", "message": "Test case 9753: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9753, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:42:35Z", "level": "info", "message": "Test case 9754: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9754, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:42:36Z", "level": "info", "message": "Test case 9755: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9755, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:42:37Z", "level": "info", "message": "Test case 9756: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9756, "data": "4ICA"} +{"timestamp": "2024-01-01T02:42:38Z", "level": "info", "message": "Test case 9757: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9757, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:42:39Z", "level": "info", "message": "Test case 9758: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9758, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:42:40Z", "level": "info", "message": "Test case 9759: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9759, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:42:41Z", "level": "info", "message": "Test case 9760: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9760, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:42:42Z", "level": "info", "message": "Test case 9761: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9761, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:42:43Z", "level": "info", "message": "Test case 9762: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9762, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:42:44Z", "level": "info", "message": "Test case 9763: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9763, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:42:45Z", "level": "info", "message": "Test case 9764: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9764, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:42:46Z", "level": "info", "message": "Test case 9765: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9765, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:42:47Z", "level": "info", "message": "Test case 9766: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9766, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:42:48Z", "level": "info", "message": "Test case 9767: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9767, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:42:49Z", "level": "info", "message": "Test case 9768: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9768, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:42:50Z", "level": "info", "message": "Test case 9769: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9769, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:42:51Z", "level": "info", "message": "Test case 9770: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9770, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:42:52Z", "level": "info", "message": "Test case 9771: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9771, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:42:53Z", "level": "info", "message": "Test case 9772: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9772, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:42:54Z", "level": "info", "message": "Test case 9773: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9773, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:42:55Z", "level": "info", "message": "Test case 9774: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9774, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:42:56Z", "level": "info", "message": "Test case 9775: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9775, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:42:57Z", "level": "info", "message": "Test case 9776: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9776, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:42:58Z", "level": "info", "message": "Test case 9777: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9777, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:42:59Z", "level": "info", "message": "Test case 9778: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9778, "data": "4iih"} +{"timestamp": "2024-01-01T02:43:00Z", "level": "info", "message": "Test case 9779: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9779, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:43:01Z", "level": "info", "message": "Test case 9780: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9780, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:43:02Z", "level": "info", "message": "Test case 9781: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9781, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:43:03Z", "level": "info", "message": "Test case 9782: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9782, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:43:04Z", "level": "info", "message": "Test case 9783: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9783, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:43:05Z", "level": "info", "message": "Test case 9784: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9784, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:43:06Z", "level": "info", "message": "Test case 9785: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9785, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:43:07Z", "level": "info", "message": "Test case 9786: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9786, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:43:08Z", "level": "info", "message": "Test case 9787: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9787, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:43:09Z", "level": "info", "message": "Test case 9788: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9788, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:43:10Z", "level": "info", "message": "Test case 9789: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9789, "data": "wg=="} +{"timestamp": "2024-01-01T02:43:11Z", "level": "info", "message": "Test case 9790: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9790, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:43:12Z", "level": "info", "message": "Test case 9791: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9791, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:43:13Z", "level": "info", "message": "Test case 9792: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9792, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:43:14Z", "level": "info", "message": "Test case 9793: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9793, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:43:15Z", "level": "info", "message": "Test case 9794: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9794, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:43:16Z", "level": "info", "message": "Test case 9795: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9795, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:43:17Z", "level": "info", "message": "Test case 9796: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9796, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:43:18Z", "level": "info", "message": "Test case 9797: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9797, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:43:19Z", "level": "info", "message": "Test case 9798: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9798, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:43:20Z", "level": "info", "message": "Test case 9799: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9799, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:43:21Z", "level": "info", "message": "Test case 9800: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9800, "data": "wIA="} +{"timestamp": "2024-01-01T02:43:22Z", "level": "info", "message": "Test case 9801: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9801, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:43:23Z", "level": "info", "message": "Test case 9802: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9802, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:43:24Z", "level": "info", "message": "Test case 9803: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9803, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:43:25Z", "level": "info", "message": "Test case 9804: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9804, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:43:26Z", "level": "info", "message": "Test case 9805: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9805, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:43:27Z", "level": "info", "message": "Test case 9806: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9806, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:43:28Z", "level": "info", "message": "Test case 9807: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9807, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:43:29Z", "level": "info", "message": "Test case 9808: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9808, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:43:30Z", "level": "info", "message": "Test case 9809: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9809, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:43:31Z", "level": "info", "message": "Test case 9810: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9810, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:43:32Z", "level": "info", "message": "Test case 9811: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9811, "data": "4ICA"} +{"timestamp": "2024-01-01T02:43:33Z", "level": "info", "message": "Test case 9812: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9812, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:43:34Z", "level": "info", "message": "Test case 9813: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9813, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:43:35Z", "level": "info", "message": "Test case 9814: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9814, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:43:36Z", "level": "info", "message": "Test case 9815: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9815, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:43:37Z", "level": "info", "message": "Test case 9816: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9816, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:43:38Z", "level": "info", "message": "Test case 9817: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9817, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:43:39Z", "level": "info", "message": "Test case 9818: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9818, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:43:40Z", "level": "info", "message": "Test case 9819: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9819, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:43:41Z", "level": "info", "message": "Test case 9820: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9820, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:43:42Z", "level": "info", "message": "Test case 9821: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9821, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:43:43Z", "level": "info", "message": "Test case 9822: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9822, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:43:44Z", "level": "info", "message": "Test case 9823: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9823, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:43:45Z", "level": "info", "message": "Test case 9824: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9824, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:43:46Z", "level": "info", "message": "Test case 9825: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9825, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:43:47Z", "level": "info", "message": "Test case 9826: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9826, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:43:48Z", "level": "info", "message": "Test case 9827: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9827, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:43:49Z", "level": "info", "message": "Test case 9828: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9828, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:43:50Z", "level": "info", "message": "Test case 9829: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9829, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:43:51Z", "level": "info", "message": "Test case 9830: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9830, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:43:52Z", "level": "info", "message": "Test case 9831: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9831, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:43:53Z", "level": "info", "message": "Test case 9832: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9832, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:43:54Z", "level": "info", "message": "Test case 9833: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9833, "data": "4iih"} +{"timestamp": "2024-01-01T02:43:55Z", "level": "info", "message": "Test case 9834: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9834, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:43:56Z", "level": "info", "message": "Test case 9835: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9835, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:43:57Z", "level": "info", "message": "Test case 9836: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9836, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:43:58Z", "level": "info", "message": "Test case 9837: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9837, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:43:59Z", "level": "info", "message": "Test case 9838: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9838, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:44:00Z", "level": "info", "message": "Test case 9839: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9839, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:44:01Z", "level": "info", "message": "Test case 9840: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9840, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:44:02Z", "level": "info", "message": "Test case 9841: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9841, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:44:03Z", "level": "info", "message": "Test case 9842: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9842, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:44:04Z", "level": "info", "message": "Test case 9843: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9843, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:44:05Z", "level": "info", "message": "Test case 9844: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9844, "data": "wg=="} +{"timestamp": "2024-01-01T02:44:06Z", "level": "info", "message": "Test case 9845: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9845, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:44:07Z", "level": "info", "message": "Test case 9846: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9846, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:44:08Z", "level": "info", "message": "Test case 9847: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9847, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:44:09Z", "level": "info", "message": "Test case 9848: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9848, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:44:10Z", "level": "info", "message": "Test case 9849: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9849, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:44:11Z", "level": "info", "message": "Test case 9850: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9850, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:44:12Z", "level": "info", "message": "Test case 9851: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9851, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:44:13Z", "level": "info", "message": "Test case 9852: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9852, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:44:14Z", "level": "info", "message": "Test case 9853: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9853, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:44:15Z", "level": "info", "message": "Test case 9854: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9854, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:44:16Z", "level": "info", "message": "Test case 9855: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9855, "data": "wIA="} +{"timestamp": "2024-01-01T02:44:17Z", "level": "info", "message": "Test case 9856: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9856, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:44:18Z", "level": "info", "message": "Test case 9857: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9857, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:44:19Z", "level": "info", "message": "Test case 9858: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9858, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:44:20Z", "level": "info", "message": "Test case 9859: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9859, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:44:21Z", "level": "info", "message": "Test case 9860: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9860, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:44:22Z", "level": "info", "message": "Test case 9861: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9861, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:44:23Z", "level": "info", "message": "Test case 9862: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9862, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:44:24Z", "level": "info", "message": "Test case 9863: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9863, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:44:25Z", "level": "info", "message": "Test case 9864: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9864, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:44:26Z", "level": "info", "message": "Test case 9865: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9865, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:44:27Z", "level": "info", "message": "Test case 9866: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9866, "data": "4ICA"} +{"timestamp": "2024-01-01T02:44:28Z", "level": "info", "message": "Test case 9867: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9867, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:44:29Z", "level": "info", "message": "Test case 9868: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9868, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:44:30Z", "level": "info", "message": "Test case 9869: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9869, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:44:31Z", "level": "info", "message": "Test case 9870: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9870, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:44:32Z", "level": "info", "message": "Test case 9871: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9871, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:44:33Z", "level": "info", "message": "Test case 9872: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9872, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:44:34Z", "level": "info", "message": "Test case 9873: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9873, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:44:35Z", "level": "info", "message": "Test case 9874: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9874, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:44:36Z", "level": "info", "message": "Test case 9875: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9875, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:44:37Z", "level": "info", "message": "Test case 9876: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9876, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:44:38Z", "level": "info", "message": "Test case 9877: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9877, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:44:39Z", "level": "info", "message": "Test case 9878: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9878, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:44:40Z", "level": "info", "message": "Test case 9879: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9879, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:44:41Z", "level": "info", "message": "Test case 9880: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9880, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:44:42Z", "level": "info", "message": "Test case 9881: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9881, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:44:43Z", "level": "info", "message": "Test case 9882: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9882, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:44:44Z", "level": "info", "message": "Test case 9883: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9883, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:44:45Z", "level": "info", "message": "Test case 9884: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9884, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:44:46Z", "level": "info", "message": "Test case 9885: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9885, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:44:47Z", "level": "info", "message": "Test case 9886: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9886, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:44:48Z", "level": "info", "message": "Test case 9887: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9887, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:44:49Z", "level": "info", "message": "Test case 9888: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9888, "data": "4iih"} +{"timestamp": "2024-01-01T02:44:50Z", "level": "info", "message": "Test case 9889: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9889, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:44:51Z", "level": "info", "message": "Test case 9890: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9890, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:44:52Z", "level": "info", "message": "Test case 9891: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9891, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:44:53Z", "level": "info", "message": "Test case 9892: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9892, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:44:54Z", "level": "info", "message": "Test case 9893: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9893, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:44:55Z", "level": "info", "message": "Test case 9894: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9894, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:44:56Z", "level": "info", "message": "Test case 9895: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9895, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:44:57Z", "level": "info", "message": "Test case 9896: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9896, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:44:58Z", "level": "info", "message": "Test case 9897: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9897, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:44:59Z", "level": "info", "message": "Test case 9898: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9898, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:45:00Z", "level": "info", "message": "Test case 9899: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9899, "data": "wg=="} +{"timestamp": "2024-01-01T02:45:01Z", "level": "info", "message": "Test case 9900: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9900, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:45:02Z", "level": "info", "message": "Test case 9901: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9901, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:45:03Z", "level": "info", "message": "Test case 9902: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9902, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:45:04Z", "level": "info", "message": "Test case 9903: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9903, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:45:05Z", "level": "info", "message": "Test case 9904: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9904, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:45:06Z", "level": "info", "message": "Test case 9905: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9905, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:45:07Z", "level": "info", "message": "Test case 9906: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9906, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:45:08Z", "level": "info", "message": "Test case 9907: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9907, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:45:09Z", "level": "info", "message": "Test case 9908: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9908, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:45:10Z", "level": "info", "message": "Test case 9909: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9909, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:45:11Z", "level": "info", "message": "Test case 9910: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9910, "data": "wIA="} +{"timestamp": "2024-01-01T02:45:12Z", "level": "info", "message": "Test case 9911: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9911, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:45:13Z", "level": "info", "message": "Test case 9912: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9912, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:45:14Z", "level": "info", "message": "Test case 9913: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9913, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:45:15Z", "level": "info", "message": "Test case 9914: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9914, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:45:16Z", "level": "info", "message": "Test case 9915: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9915, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:45:17Z", "level": "info", "message": "Test case 9916: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9916, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:45:18Z", "level": "info", "message": "Test case 9917: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9917, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:45:19Z", "level": "info", "message": "Test case 9918: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9918, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:45:20Z", "level": "info", "message": "Test case 9919: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9919, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:45:21Z", "level": "info", "message": "Test case 9920: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9920, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:45:22Z", "level": "info", "message": "Test case 9921: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9921, "data": "4ICA"} +{"timestamp": "2024-01-01T02:45:23Z", "level": "info", "message": "Test case 9922: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9922, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:45:24Z", "level": "info", "message": "Test case 9923: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9923, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:45:25Z", "level": "info", "message": "Test case 9924: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9924, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:45:26Z", "level": "info", "message": "Test case 9925: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9925, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:45:27Z", "level": "info", "message": "Test case 9926: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9926, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:45:28Z", "level": "info", "message": "Test case 9927: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9927, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:45:29Z", "level": "info", "message": "Test case 9928: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9928, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:45:30Z", "level": "info", "message": "Test case 9929: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9929, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:45:31Z", "level": "info", "message": "Test case 9930: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9930, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:45:32Z", "level": "info", "message": "Test case 9931: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9931, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:45:33Z", "level": "info", "message": "Test case 9932: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9932, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:45:34Z", "level": "info", "message": "Test case 9933: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9933, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:45:35Z", "level": "info", "message": "Test case 9934: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9934, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:45:36Z", "level": "info", "message": "Test case 9935: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9935, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:45:37Z", "level": "info", "message": "Test case 9936: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9936, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:45:38Z", "level": "info", "message": "Test case 9937: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9937, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:45:39Z", "level": "info", "message": "Test case 9938: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9938, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:45:40Z", "level": "info", "message": "Test case 9939: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9939, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:45:41Z", "level": "info", "message": "Test case 9940: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9940, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:45:42Z", "level": "info", "message": "Test case 9941: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9941, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:45:43Z", "level": "info", "message": "Test case 9942: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9942, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:45:44Z", "level": "info", "message": "Test case 9943: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9943, "data": "4iih"} +{"timestamp": "2024-01-01T02:45:45Z", "level": "info", "message": "Test case 9944: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9944, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:45:46Z", "level": "info", "message": "Test case 9945: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9945, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:45:47Z", "level": "info", "message": "Test case 9946: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9946, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:45:48Z", "level": "info", "message": "Test case 9947: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9947, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:45:49Z", "level": "info", "message": "Test case 9948: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9948, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:45:50Z", "level": "info", "message": "Test case 9949: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9949, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:45:51Z", "level": "info", "message": "Test case 9950: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9950, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:45:52Z", "level": "info", "message": "Test case 9951: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9951, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:45:53Z", "level": "info", "message": "Test case 9952: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9952, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:45:54Z", "level": "info", "message": "Test case 9953: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9953, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:45:55Z", "level": "info", "message": "Test case 9954: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9954, "data": "wg=="} +{"timestamp": "2024-01-01T02:45:56Z", "level": "info", "message": "Test case 9955: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9955, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:45:57Z", "level": "info", "message": "Test case 9956: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9956, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:45:58Z", "level": "info", "message": "Test case 9957: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9957, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:45:59Z", "level": "info", "message": "Test case 9958: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9958, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:46:00Z", "level": "info", "message": "Test case 9959: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9959, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:46:01Z", "level": "info", "message": "Test case 9960: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9960, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:46:02Z", "level": "info", "message": "Test case 9961: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9961, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:46:03Z", "level": "info", "message": "Test case 9962: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9962, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:46:04Z", "level": "info", "message": "Test case 9963: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9963, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:46:05Z", "level": "info", "message": "Test case 9964: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9964, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:46:06Z", "level": "info", "message": "Test case 9965: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9965, "data": "wIA="} +{"timestamp": "2024-01-01T02:46:07Z", "level": "info", "message": "Test case 9966: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9966, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:46:08Z", "level": "info", "message": "Test case 9967: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9967, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:46:09Z", "level": "info", "message": "Test case 9968: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9968, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:46:10Z", "level": "info", "message": "Test case 9969: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9969, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:46:11Z", "level": "info", "message": "Test case 9970: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9970, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:46:12Z", "level": "info", "message": "Test case 9971: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9971, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:46:13Z", "level": "info", "message": "Test case 9972: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9972, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:46:14Z", "level": "info", "message": "Test case 9973: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9973, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:46:15Z", "level": "info", "message": "Test case 9974: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9974, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:46:16Z", "level": "info", "message": "Test case 9975: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9975, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:46:17Z", "level": "info", "message": "Test case 9976: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9976, "data": "4ICA"} +{"timestamp": "2024-01-01T02:46:18Z", "level": "info", "message": "Test case 9977: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9977, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:46:19Z", "level": "info", "message": "Test case 9978: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9978, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:46:20Z", "level": "info", "message": "Test case 9979: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9979, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:46:21Z", "level": "info", "message": "Test case 9980: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9980, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:46:22Z", "level": "info", "message": "Test case 9981: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9981, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:46:23Z", "level": "info", "message": "Test case 9982: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9982, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:46:24Z", "level": "info", "message": "Test case 9983: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9983, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:46:25Z", "level": "info", "message": "Test case 9984: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9984, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:46:26Z", "level": "info", "message": "Test case 9985: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9985, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:46:27Z", "level": "info", "message": "Test case 9986: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9986, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:46:28Z", "level": "info", "message": "Test case 9987: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9987, "data": "8ICAgA=="} +{"timestamp": "2024-01-01T02:46:29Z", "level": "info", "message": "Test case 9988: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9988, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:46:30Z", "level": "info", "message": "Test case 9989: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 9989, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} +{"timestamp": "2024-01-01T02:46:31Z", "level": "info", "message": "Test case 9990: Null bytes in string", "service": "test-service", "test_case": "null_bytes", "seq": 9990, "data": "Hello\u0000World\u0000Test"} +{"timestamp": "2024-01-01T02:46:32Z", "level": "info", "message": "Test case 9991: Lone high surrogate", "service": "test-service", "test_case": "lone_high", "seq": 9991, "data": "\ud83e,\ud83e,\ud83e,"} +{"timestamp": "2024-01-01T02:46:33Z", "level": "info", "message": "Test case 9992: Lone low surrogate", "service": "test-service", "test_case": "lone_low", "seq": 9992, "data": "\udc00,\udc00,\udc00,"} +{"timestamp": "2024-01-01T02:46:34Z", "level": "info", "message": "Test case 9993: Mixed surrogate issues", "service": "test-service", "test_case": "mixed_surrogates", "seq": 9993, "data": "\ud83e\udd25\ud83e,\udc00"} +{"timestamp": "2024-01-01T02:46:35Z", "level": "info", "message": "Test case 9994: Boundary surrogate valid pairs", "service": "test-service", "test_case": "boundary_valid", "seq": 9994, "data": "\ud800\udc00\udbff\udfff"} +{"timestamp": "2024-01-01T02:46:36Z", "level": "info", "message": "Test case 9995: Boundary surrogate invalid", "service": "test-service", "test_case": "boundary_invalid", "seq": 9995, "data": "\ud800,\udbff,\udc00,\udfff,"} +{"timestamp": "2024-01-01T02:46:37Z", "level": "info", "message": "Test case 9996: Arrays with mixed Unicode", "service": "test-service", "test_case": "array_mixed", "seq": 9996, "data": ["\ud83e\udd25", "\ud83e,", "\udee1", "ok"]} +{"timestamp": "2024-01-01T02:46:38Z", "level": "info", "message": "Test case 9997: Nested invalid", "service": "test-service", "test_case": "nested_invalid", "seq": 9997, "data": {"level1": {"data": "\ud83e,"}}} +{"timestamp": "2024-01-01T02:46:39Z", "level": "info", "message": "Test case 9998: Invalid UTF-8 via base64", "service": "test-service", "test_case": "invalid_utf8_base64", "seq": 9998, "data": "4iih"} +{"timestamp": "2024-01-01T02:46:40Z", "level": "info", "message": "Test case 9999: Valid UTF-8", "service": "test-service", "test_case": "valid_utf8", "seq": 9999, "data": "Hello World! \ud83e\udd25 Rocket \ud83d\ude80"} +{"timestamp": "2024-01-01T02:46:41Z", "level": "info", "message": "Test case 10000: Large valid Unicode payload", "service": "test-service", "test_case": "large_valid", "seq": 10000, "data": "\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25\ud83e\udd25"} diff --git a/cmake/headers.cmake b/cmake/headers.cmake index fe8d6fa9cb1..5abe376f53f 100755 --- a/cmake/headers.cmake +++ b/cmake/headers.cmake @@ -35,7 +35,7 @@ include_directories( ${FLB_PATH_ROOT_SOURCE}/${FLB_PATH_LIB_CTRACES}/include ${FLB_PATH_ROOT_SOURCE}/${FLB_PATH_LIB_CPROFILES}/include ${FLB_PATH_ROOT_SOURCE}/${FLB_PATH_LIB_RING_BUFFER}/lwrb/src/include - + ${FLB_PATH_ROOT_SOURCE}/${FLB_PATH_LIB_YYJSON}/src ${FLB_PATH_ROOT_BINARY_DIR}/${FLB_PATH_LIB_JANSSON}/include ${FLB_PATH_ROOT_BINARY_DIR}/lib/cmetrics ${FLB_PATH_ROOT_BINARY_DIR}/lib/cprofiles/include diff --git a/cmake/libraries.cmake b/cmake/libraries.cmake index a9ddf04df27..ee5c56c6527 100644 --- a/cmake/libraries.cmake +++ b/cmake/libraries.cmake @@ -28,3 +28,4 @@ set(FLB_PATH_LIB_WASM_MICRO_RUNTIME "lib/wasm-micro-runtime-WAMR-1.3.3") set(FLB_PATH_LIB_ZSTD "lib/zstd-1.5.7") set(FLB_PATH_LIB_SIMDUTF "lib/simdutf-amalgamation-5.5.0") set(FLB_PATH_LIB_ZIG_SDK "lib/zig_sdk") +set(FLB_PATH_LIB_YYJSON "lib/yyjson-0.12.0") diff --git a/include/fluent-bit/flb_pack.h b/include/fluent-bit/flb_pack.h index 875c20f4251..e3840939a03 100644 --- a/include/fluent-bit/flb_pack.h +++ b/include/fluent-bit/flb_pack.h @@ -2,7 +2,7 @@ /* Fluent Bit * ========== - * Copyright (C) 2015-2024 The Fluent Bit Authors + * Copyright (C) 2015-2025 The Fluent Bit Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,6 +27,7 @@ #include #include +#include /* JSON types */ #define FLB_PACK_JSON_UNDEFINED JSMN_UNDEFINED @@ -80,6 +81,11 @@ int flb_pack_json(const char *js, size_t len, char **buffer, size_t *size, int *root_type, size_t *consumed); int flb_pack_json_recs(const char *js, size_t len, char **buffer, size_t *size, int *root_type, int *out_records, size_t *consumed); +int flb_pack_json_yyjson(const char *js, size_t len, char **buffer, size_t *size, + int *root_type, size_t *consumed); +int flb_pack_json_recs_yyjson(const char *js, size_t len, char **buffer, + size_t *size, int *root_type, int *out_records, + size_t *consumed); int flb_pack_state_init(struct flb_pack_state *s); void flb_pack_state_reset(struct flb_pack_state *s); diff --git a/include/fluent-bit/flb_pack_json.h b/include/fluent-bit/flb_pack_json.h new file mode 100644 index 00000000000..e56fdf168a8 --- /dev/null +++ b/include/fluent-bit/flb_pack_json.h @@ -0,0 +1,43 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* Fluent Bit + * ========== + * Copyright (C) 2015-2024 The Fluent Bit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef FLB_PACK_JSON_H +#define FLB_PACK_JSON_H + +#include + +#define FLB_PACK_JSON_BACKEND_JSMN 1 +#define FLB_PACK_JSON_BACKEND_YYJSON 2 + + +struct flb_pack_opts { + /* which backend to use (default, jsmn, yyjson) */ + int backend; + + /* optional: required only for JSMN in streaming mode */ + struct flb_pack_state *state; +}; + +int flb_pack_json_ext(const char *json, size_t len, + char **out_buf, size_t *out_size, + int *out_root_type, + struct flb_pack_opts *opts); + +#endif + diff --git a/lib/yyjson-0.12.0/.gitattributes b/lib/yyjson-0.12.0/.gitattributes new file mode 100644 index 00000000000..dab4bd2c0ce --- /dev/null +++ b/lib/yyjson-0.12.0/.gitattributes @@ -0,0 +1 @@ +doc/** linguist-vendored \ No newline at end of file diff --git a/lib/yyjson-0.12.0/.github/ISSUE_TEMPLATE/bug_report.md b/lib/yyjson-0.12.0/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000000..8774aa8fd7b --- /dev/null +++ b/lib/yyjson-0.12.0/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,18 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**Your environment** + - OS: [e.g. Ubuntu 20.04 x64] + - Compiler: [e.g. gcc 9.3] + +**Additional context** +Add any other context about the problem here. diff --git a/lib/yyjson-0.12.0/.github/ISSUE_TEMPLATE/discussion.md b/lib/yyjson-0.12.0/.github/ISSUE_TEMPLATE/discussion.md new file mode 100644 index 00000000000..ec30cd709a4 --- /dev/null +++ b/lib/yyjson-0.12.0/.github/ISSUE_TEMPLATE/discussion.md @@ -0,0 +1,10 @@ +--- +name: Discussion +about: Add discussion +title: '' +labels: '' +assignees: '' + +--- + +Please use English to communicate so that people from other countries can understand it. diff --git a/lib/yyjson-0.12.0/.github/ISSUE_TEMPLATE/feature_request.md b/lib/yyjson-0.12.0/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000000..bbcbbe7d615 --- /dev/null +++ b/lib/yyjson-0.12.0/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/lib/yyjson-0.12.0/.github/codecov.yml b/lib/yyjson-0.12.0/.github/codecov.yml new file mode 100644 index 00000000000..6fb0be4c3e5 --- /dev/null +++ b/lib/yyjson-0.12.0/.github/codecov.yml @@ -0,0 +1,2 @@ +ignore: + - test \ No newline at end of file diff --git a/lib/yyjson-0.12.0/.github/workflows/cmake.yml b/lib/yyjson-0.12.0/.github/workflows/cmake.yml new file mode 100644 index 00000000000..9000a9cf330 --- /dev/null +++ b/lib/yyjson-0.12.0/.github/workflows/cmake.yml @@ -0,0 +1,408 @@ +name: cmake + +env: + FORCE_COLOR: 1 + CLICOLOR_FORCE: 1 + +on: + push: + paths-ignore: + - '**.md' + pull_request: + paths-ignore: + - '**.md' + +jobs: + + # Check different cmake options (ubuntu:gcc) + linux_checks: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + build_type: [Debug, Release, MinSizeRel] + build_flag: [Default, ReduceBinary] + checker: [Valgrind, Sanitizer] + + steps: + - uses: actions/checkout@v4 + + - name: Prepare + shell: bash + run: | + sudo apt-get update + sudo apt-get install -y valgrind + + - name: CMake + shell: bash + run: | + BUILD_OPTIONS="-DYYJSON_BUILD_TESTS=ON" + if [ "${{matrix.build_flag}}" == "ReduceBinary" ]; then + BUILD_OPTIONS="${BUILD_OPTIONS} -DYYJSON_DISABLE_FAST_FP_CONV=ON" + BUILD_OPTIONS="${BUILD_OPTIONS} -DYYJSON_DISABLE_NON_STANDARD=ON" + fi + if [ "${{matrix.checker}}" == "Valgrind" ]; then + BUILD_OPTIONS="${BUILD_OPTIONS} -DYYJSON_ENABLE_VALGRIND=ON" + fi + if [ "${{matrix.checker}}" == "Sanitizer" ]; then + BUILD_OPTIONS="${BUILD_OPTIONS} -DYYJSON_ENABLE_SANITIZE=ON" + fi + cmake -E make_directory ${{runner.workspace}}/build + cd ${{runner.workspace}}/build + cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{matrix.build_type}} $BUILD_OPTIONS + + - name: Build + shell: bash + working-directory: ${{runner.workspace}}/build + run: cmake --build . --config ${{matrix.build_type}} + + - name: Test + shell: bash + working-directory: ${{runner.workspace}}/build + run: ctest -C ${{matrix.build_type}} --output-on-failure + + + # Check different architectures (qemu, ubuntu:gcc) + linux_archs: + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + include: + - arch: i386 + plat: 386 + - arch: arm32v7 + plat: arm/v7 + - arch: arm64v8 + plat: arm64 + - arch: ppc64le + plat: ppc64le + - arch: s390x + plat: s390x + - arch: riscv64 + plat: riscv64 + + steps: + - uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: CMake and CTest + run: | + docker run --platform linux/${{ matrix.plat }} -v "$PWD:/yyjson" ${{ matrix.arch }}/ubuntu bash -e -c ' + FORCE_COLOR=1 + CLICOLOR_FORCE=1 + apt-get update + apt-get install -y gcc g++ cmake + mkdir build + cd build + cmake ../yyjson -DYYJSON_BUILD_TESTS=ON + cmake --build . --config Release + ctest -C Release --output-on-failure + ' + + + # Check different compile-time flags (ubuntu:gcc/clang) + linux_opts: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + compiler: + - gcc + - clang + opt: + - no_fp + - no_reader + - no_writer + - no_utf8 + - no_incr + - no_unalign + + steps: + - uses: actions/checkout@v4 + + - name: CMake + shell: bash + run: | + BUILD_OPTIONS="-DCMAKE_BUILD_TYPE=Release -DYYJSON_BUILD_TESTS=ON" + if [ "${{matrix.compiler}}" == "gcc" ]; then + BUILD_OPTIONS="${BUILD_OPTIONS} -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++" + fi + if [ "${{matrix.compiler}}" == "clang" ]; then + BUILD_OPTIONS="${BUILD_OPTIONS} -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++" + fi + if [ "${{matrix.opt}}" == "no_fp" ]; then + BUILD_OPTIONS="${BUILD_OPTIONS} -DYYJSON_DISABLE_FAST_FP_CONV=ON" + fi + if [ "${{matrix.opt}}" == "no_reader" ]; then + BUILD_OPTIONS="${BUILD_OPTIONS} -DYYJSON_DISABLE_READER=ON" + fi + if [ "${{matrix.opt}}" == "no_writer" ]; then + BUILD_OPTIONS="${BUILD_OPTIONS} -DYYJSON_DISABLE_WRITER=ON" + fi + if [ "${{matrix.opt}}" == "no_utf8" ]; then + BUILD_OPTIONS="${BUILD_OPTIONS} -DYYJSON_DISABLE_UTF8_VALIDATION=ON" + fi + if [ "${{matrix.opt}}" == "no_incr" ]; then + BUILD_OPTIONS="${BUILD_OPTIONS} -DYYJSON_DISABLE_INCR_READER=ON" + fi + if [ "${{matrix.opt}}" == "no_unalign" ]; then + BUILD_OPTIONS="${BUILD_OPTIONS} -DYYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS=ON" + fi + cmake -E make_directory ${{runner.workspace}}/build + cd ${{runner.workspace}}/build + cmake $GITHUB_WORKSPACE $BUILD_OPTIONS + + - name: Build + shell: bash + working-directory: ${{runner.workspace}}/build + run: cmake --build . --config Release + + - name: Test + shell: bash + working-directory: ${{runner.workspace}}/build + run: ctest -C Release --output-on-failure + + + # Check latest clang + linux_clang_latest: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install + run: | + sudo apt-get update + sudo apt-get install -y valgrind + sudo apt-get install -y lsb-release software-properties-common gnupg + wget https://apt.llvm.org/llvm.sh + chmod +x ./llvm.sh + sudo ./llvm.sh + CLANG_PATH=$(ls /usr/bin/clang* | grep "clang-[0-9]" | sort --version-sort | tail -1) + CLANGPP_PATH=$(ls /usr/bin/clang* | grep "clang++-[0-9]" | sort --version-sort | tail -1) + echo "Latest Clang: $CLANG_PATH" + echo "Latest Clang++: $CLANGPP_PATH" + echo "CC=$CLANG_PATH" >> $GITHUB_ENV + echo "CXX=$CLANGPP_PATH" >> $GITHUB_ENV + + - name: CMake + shell: bash + run: | + cmake -E make_directory ${{runner.workspace}}/build + cd ${{runner.workspace}}/build + cmake $GITHUB_WORKSPACE -DYYJSON_BUILD_TESTS=ON -DYYJSON_ENABLE_VALGRIND=ON + + - name: Build + shell: bash + working-directory: ${{runner.workspace}}/build + run: cmake --build . --config Release + + - name: Test + shell: bash + working-directory: ${{runner.workspace}}/build + run: ctest -C Release --output-on-failure + + + # Check latest gcc + linux_gcc_latest: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install + run: | + sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y + sudo apt-get update + GCC_VERSION=$(apt search ^gcc-[0-9]*$ 2>/dev/null | grep -Po 'gcc-(\d+)(?=/)' | sort --version-sort | tail -1) + GPP_VERSION=$(apt search ^g\+\+-[0-9]*$ 2>/dev/null | grep -Po 'g\+\+-(\d+)(?=/)' | sort --version-sort | tail -1) + echo "Latest GCC: $GCC_VERSION" + echo "Latest G++: $GPP_VERSION" + sudo apt-get install -y $GCC_VERSION $GPP_VERSION + sudo apt-get install -y valgrind + echo "CC=$GCC_VERSION" >> $GITHUB_ENV + echo "CXX=$GPP_VERSION" >> $GITHUB_ENV + + - name: CMake + shell: bash + run: | + cmake -E make_directory ${{runner.workspace}}/build + cd ${{runner.workspace}}/build + cmake $GITHUB_WORKSPACE -DYYJSON_BUILD_TESTS=ON -DYYJSON_ENABLE_VALGRIND=ON + + - name: Build + shell: bash + working-directory: ${{runner.workspace}}/build + run: cmake --build . --config Release + + - name: Test + shell: bash + working-directory: ${{runner.workspace}}/build + run: ctest -C Release --output-on-failure + + + # Check old gcc 32-bit + linux_gcc5_i386: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: CMake and CTest + run: | + docker run -v "$PWD:/yyjson" i386/ubuntu:16.04 bash -e -c ' + FORCE_COLOR=1 + CLICOLOR_FORCE=1 + apt-get update + apt-get install -y gcc g++ cmake + mkdir build + cd build + cmake ../yyjson -DYYJSON_BUILD_TESTS=ON + cmake --build . --config Release + ctest -C Release --output-on-failure + ' + + + # Check old gcc 64-bit + linux_gcc4: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Prepare + shell: bash + run: | + sudo apt-get update + wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/g++-4.8_4.8.5-4ubuntu8_amd64.deb + wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/libstdc++-4.8-dev_4.8.5-4ubuntu8_amd64.deb + wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/gcc-4.8-base_4.8.5-4ubuntu8_amd64.deb + wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/gcc-4.8_4.8.5-4ubuntu8_amd64.deb + wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/libgcc-4.8-dev_4.8.5-4ubuntu8_amd64.deb + wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/cpp-4.8_4.8.5-4ubuntu8_amd64.deb + wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/libasan0_4.8.5-4ubuntu8_amd64.deb + sudo apt install ./gcc-4.8_4.8.5-4ubuntu8_amd64.deb \ + ./gcc-4.8-base_4.8.5-4ubuntu8_amd64.deb \ + ./libstdc++-4.8-dev_4.8.5-4ubuntu8_amd64.deb \ + ./cpp-4.8_4.8.5-4ubuntu8_amd64.deb \ + ./libgcc-4.8-dev_4.8.5-4ubuntu8_amd64.deb \ + ./libasan0_4.8.5-4ubuntu8_amd64.deb \ + ./g++-4.8_4.8.5-4ubuntu8_amd64.deb + + - name: Build and Test + run: | + mkdir build + cd build + cmake .. -DCMAKE_C_COMPILER=gcc-4.8 -DCMAKE_CXX_COMPILER=g++-4.8 -DYYJSON_BUILD_TESTS=ON + cmake --build . --config Release + ctest -C Release --output-on-failure + + + # Check tinycc + linux_tinycc: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Prepare + shell: bash + run: | + sudo apt-get update + sudo apt-get install -y tcc + + - name: Build and Test + run: | + mkdir build + cd build + cmake .. -DCMAKE_C_COMPILER=tcc -DYYJSON_BUILD_TESTS=ON + cmake --build . --config Release + ctest -C Release --output-on-failure + + + # Check macOS clang + macos_clang: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - name: Build and Test + run: | + mkdir build + cd build + cmake .. -DCMAKE_BUILD_TYPE=Release -DYYJSON_BUILD_TESTS=ON + cmake --build . --config Release + ctest -C Release --output-on-failure + + + # Check Windows MSVC + windows_msvc: + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + - name: Build and Test + run: | + mkdir build + cd build + cmake .. -DCMAKE_BUILD_TYPE=Release -DYYJSON_BUILD_TESTS=ON + cmake --build . --config Release + ctest -C Release --output-on-failure + + + # Fuzzing with LLVM libFuzzer for a short time + fuzzing: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Fuzzing + run: | + mkdir build + cd build + cmake .. -DYYJSON_BUILD_FUZZER=ON -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ + cmake --build . --config Release + ctest -C Release --output-on-failure + + + # Upload coverage data to Codecov + codecov: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Prepare + shell: bash + run: | + sudo apt-get update + sudo apt-get install -y llvm + + - name: Build and Test with Coverage + shell: bash + run: | + mkdir build + cd build + export LLVM_PROFILE_FILE=cov/profile-%p.profraw + cmake .. -DCMAKE_BUILD_TYPE=Debug -DYYJSON_BUILD_TESTS=ON -DYYJSON_ENABLE_COVERAGE=ON \ + -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ + cmake --build . --config Debug + ctest --output-on-failure + + ctest_files=$(grep -o "test_\w\+" CTestTestfile.cmake | uniq | tr '\n' ' ') + ctest_files=$(echo $ctest_files | sed 's/ $//' | sed "s/ / -object /g") + + llvm-profdata merge -sparse cov/profile-*.profraw -o coverage.profdata + llvm-cov export $ctest_files -format=lcov -instr-profile=coverage.profdata --skip-branches > coverage.lcov + + - name: Upload Coverage Report + uses: codecov/codecov-action@v4 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: ./build/coverage.lcov + flags: unittests + name: llvm-cov-coverage + fail_ci_if_error: true diff --git a/lib/yyjson-0.12.0/.gitignore b/lib/yyjson-0.12.0/.gitignore new file mode 100644 index 00000000000..af38302799f --- /dev/null +++ b/lib/yyjson-0.12.0/.gitignore @@ -0,0 +1,105 @@ +# CMake +/build +CMakeLists.txt.user +CMakeCache.txt +CMakeFiles +CMakeScripts +Testing +Makefile +cmake_install.cmake +install_manifest.txt +compile_commands.json +CTestTestfile.cmake +_deps + +# GCC coverage testing tool files +*.gcno +*.gcda +*.gcov + +# VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.cache + +# JetBrains +.idea + +# CLion +cmake-build-*/ + +# Xcode +/xcode +.build/ +xcuserdata/ +*.xcscmblueprint +*.xccheckout +DerivedData/ +*.moved-aside +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +*.hmap +*.ipa +*.dSYM.zip +*.dSYM +Carthage/Build/ +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output +iOSInjectionProject/ + +# Prerequisites +*.d + +# Object files +*.o +*.ko +*.obj +*.elf + +# Linker output +*.ilk +*.map +*.exp + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb + +# OS +.DS_Store +.Spotlight-V100 +.Trashes +Thumbs.db diff --git a/lib/yyjson-0.12.0/CHANGELOG.md b/lib/yyjson-0.12.0/CHANGELOG.md new file mode 100644 index 00000000000..9300a5b49c2 --- /dev/null +++ b/lib/yyjson-0.12.0/CHANGELOG.md @@ -0,0 +1,206 @@ +# Changelog +All notable changes to this project will be documented in this file. + + + +## 0.12.0 (2025-08-18) +#### Added +- Add `yyjson_write_number()` and `yyjson_mut_write_number()` to write a number value to a string buffer. +- Add `YYJSON_READ_ALLOW_EXT_NUMBER` to support extended number formats, such as `0x7B`, `+.123`. +- Add `YYJSON_READ_ALLOW_EXT_ESCAPE` to support extended escape, such as `\a`, `\0`, `\x7B`. +- Add `YYJSON_READ_ALLOW_EXT_WHITESPACE` to support extended whitespace, such as `\v`, `\u2028`. +- Add `YYJSON_READ_ALLOW_SINGLE_QUOTED_STR` to support single-quoted strings, such as `'ab'`. +- Add `YYJSON_READ_ALLOW_UNQUOTED_KEY` to allow unquoted keys, such as `{a:1,b:2}`. +- Add `YYJSON_READ_JSON5` to enable full JSON5 support. + +#### Changed +- Removed support for non-standard JSON in the incremental reader `yyjson_incr_read()`. + + +## 0.11.1 (2025-05-14) +#### Fixed +- Fix errors when unaligned access is disallowed (no impact if your build was already successful). + + +## 0.11.0 (2025-05-05) +#### Added +- Add `YYJSON_READ_ALLOW_BOM` flag to allow UTF-8 BOM. +- Add `YYJSON_WRITE_FP_TO_FLOAT` flag to write real numbers using single-precison. +- Add `YYJSON_WRITE_FP_TO_FIXED(prec)` flag to write real numbers using fix-point notation. +- Add `set_fp_to_float()` and `set_fp_to_fixed()` functions to control the output format of a specific number. +- Add `set_str_noesc()` function to skip escaping for a specific string during writing. +- Add `yyjson_incr_read()`, `yyjson_incr_new()`, `yyjson_incr_free()` functions for incremental DOM reading. + +#### Changed +- Rewrite the floating-point number to string functions with a new fast path. +- When comments are allowed, return `UNEXPECTED_END` instead of `INVALID_COMMENT` for unclosed comments. +- Truncated escape sequences now report the error position at the sequence start rather than the end. + +#### Fixed +- Fix some warnings when directly including yyjson.c: #177 +- Fix missing indent for `YYJSON_TYPE_RAW` in prettify function: #178 +- Fix bug in `yyjson_mut_arr_iter_remove()`: #194 +- Fix clang 19 documentation warnings. +- Fix cmake 4 and cmake 3.5 warnings. + + +## 0.10.0 (2024-07-09) +#### Added +- Add `yyjson_locate_pos()` function to locate the line and column number for error position: #166 + +#### Changed +- Improve error messages for JSON reader: #168 + +#### Fixed +- Fix `YYJSON_READ_NUMBER_AS_RAW` not overriding `YYJSON_READ_BIGNUM_AS_RAW` as per documentation: #170 + + +## 0.9.0 (2024-04-08) +#### Added +- Add `YYJSON_WRITE_NEWLINE_AT_END` flag for JSON writer: #147 + +#### Changed +- Add auto-type conversion (uint<->sint) to `yyjson_ptr_get_uint/sint()`: #152 + +#### Fixed +- Fix incorrect output in environments lacking native `bool` type support: #161 + + +## 0.8.0 (2023-09-13) +#### Added +- Add `YYJSON_SUBTYPE_NOESC` subtype to mark strings that do not need to be escaped. +- Add `YYJSON_DISABLE_UTF8_VALIDATION` flag to allow disable UTF-8 validation at compile-time. +- Add dynamic allocator API: `yyjson_alc_dyn_new()`, `yyjson_alc_dyn_free()`. +- Add the missing `yyjson_mut_obj_add_arr/obj()` API: #140 + +#### Changed +- Improve the write performance of strings with `YYJSON_SUBTYPE_NOESC`. + +#### Fixed +- Fix clang-16 valgrind fail: #134 +- Fix compile break when both `FAST_FP` and `READER` are disabled + + +## 0.7.0 (2023-05-25) +#### Added +- Add `YYJSON_WRITE_PRETTY_TWO_SPACES` option to allow 2 spaces instead of 4 spaces when writing pretty JSON: #99 +- Add `YYJSON_READ_BIGNUM_AS_RAW` option to read big numbers as raw strings: #124 +- Add `yyjson_get_num()` function to convert and return any number value as `double`: #108 +- Add support for Loongarch: #112 +- Add functions to get type-specific values specified by JSON Pointer: #116 +- Add functions to read/write JSON with file pointer `FILE *`: #122 +- Add functions to support modifying memory pool size of `yyjson_mut_doc`. +- Add convenience functions `iter_with()` for creating iterator. +- Add functions to modify JSON using JSON Pointer, such as `ptr_set()` and `ptr_remove()`. +- Add support for JSON Patch (RFC 6902). + +#### Changed +- **BREAKING CHANGE:** Change the allocator's realloc function signature, add `old_size` parameter for custom allocator: #100 +- **BREAKING CHANGE:** Change `yyjson_read_number()` function, add `alc` parameter. +- **DEPRECATED:** Deprecate `get_pointer()` functions, rename to `ptr_get()`. +- Improve performance of `yyjson_mut_write()` function. + +#### Fixed +- Fix inaccurate error code for truncated JSON: #103 + + +## 0.6.0 (2022-12-12) +#### Added +- Add functions to modify the content of a JSON value, such as `yyjson_set_int(yyjson_val *val, int num)`. +- Add functions to copy from mutable doc to immutable doc. +- Add functions to support renaming an object's key. +- Add the `yyjson_read_number()` function to parse numeric strings. +- Add a placeholder allocator if `yyjson_alc_pool_init()` fails. + +#### Fixed +- Fix quite NaN on MIPS and HPPA arch. +- Fixed compile error before `GCC 4.5`, which doesn't support empty optional extended asm label. +- When the built-in floating point conversion is disabled, the `sprintf()` output for floating point numbers is missing a decimal point, for example 123 should be 123.0. + + +## 0.5.1 (2022-06-17) +#### Fixed +- Fix run-time error when compiling as cpp and 32-bit (g++-5 -m32 -fPIC) #85 +- Fix incurrect output number format, remove unnecessary digits (e.g. 2.0e34 -> 2e34). + + +## 0.5.0 (2022-05-25) +#### Added +- Add LibFuzzer support. +- Add Doxygen support. +- Add functions to support serializing a single JSON value. +- Add `yyjson_mut_doc_mut_copy()`, `yyjson_mut_val_mut_copy()`, `yyjson_mut_merge_patch()` functions for mutable input. +- Add `yyjson_equals()` and `yyjson_mut_equals()` functions to compare two values. +- Add `yyjson_mut_obj_remove_key()` and `yyjson_mut_obj_remove_keyn()` functions to simplify key removal. +- Add `YYJSON_READ_NUMBER_AS_RAW` option and `RAW` type support. +- Add `YYJSON_READ_ALLOW_INVALID_UNICODE` and `YYJSON_WRITE_ALLOW_INVALID_UNICODE` options to allow invalid unicode. + +#### Changed +- Change `yyjson_mut_obj_remove()` return type from `bool` to `yyjson_mut_val *`. +- Rewrite string serialization function, validate unicode encoding by default. +- Rewrite the JSON Pointer implementation, remove internal malloc() calls. + +#### Fixed +- Make the code work correctly with `setlocale()` function and `-ffast-math` flag: #54 +- Fix negative infinity literals read error: #64 +- Fix non null-terminated string write error. +- Fix incorrect behavior of `YYJSON_DISABLE_NON_STANDARD` flag: #80 + + +## 0.4.0 (2021-12-12) +#### Added +- Add `YYJSON_WRITE_INF_AND_NAN_AS_NULL` flag for JSON writer. +- Add `yyjson_merge_patch()` function for JSON Merge-Path API (RFC 7386). +- Add `yyjson_mut_obj_replace()` and `yyjson_mut_obj_insert()` functions for object modification. +- Add `yyjson_obj_iter_get()` and `yyjson_mut_obj_iter_get()` functions for faster object search. +- Add `yyjson_version()` function. + +#### Changed +- Replace `YYJSON_DISABLE_COMMENT_READER` and `YYJSON_DISABLE_INF_AND_NAN_READER` with `YYJSON_DISABLE_NON_STANDARD` compile-time flag. +- Replace `YYJSON_DISABLE_FP_READER` and `YYJSON_DISABLE_FP_WRITER` with `YYJSON_DISABLE_FAST_FP_CONV` compile-time flag. + +#### Fixed +- Fix compiler warning with `-Wconversion` +- Fix compiler error for GCC 4.4 (#53) and MSVC 6.0 (#55) + + +## 0.3.0 (2021-05-25) +#### Added +- Add `JSON Pointer` support. +- Add CMake install target. + +#### Changed +- Improve performance for some architectures that don't support unaligned memory access. + +#### Fixed +- Fix some compiler warnings for GCC and Clang. +- Fix MSVC build error on UWP (uninitialized local variable). +- Fix stream file reading error on some platforms. + + +## 0.2.0 (2020-12-12) +#### Added +- Add swift package manager support. + +#### Changed +- Improve JSON reader performance for gcc. +- Improve double number reader performance with a fast path. +- Rewrite double number writer with Schubfach algorithm: #4. +- Strict UTF-8 validation for JSON reader. + +#### Removed +- Remove `YYJSON_READ_FASTFP` compile-time flag. + +#### Fixed +- Fix a compile error for old version gcc on linux: #7. + + +## 0.1.0 (2020-10-26) +#### Added +- Initial release. +- Add the basic JSON reader and writer (RFC 8259). +- Add CMake support. +- Add GitHub CI workflow. +- Add test code and test data. +- Add `sanitizer` and `valgrind` memory checker. +- Add `API` and `DataStructure` documentation. diff --git a/lib/yyjson-0.12.0/CMakeLists.txt b/lib/yyjson-0.12.0/CMakeLists.txt new file mode 100644 index 00000000000..9c69b44140a --- /dev/null +++ b/lib/yyjson-0.12.0/CMakeLists.txt @@ -0,0 +1,555 @@ +# Copyright (C) 2019 Yaoyuan . +# Released under the MIT License: +# https://github.com/ibireme/yyjson/blob/master/LICENSE + +cmake_minimum_required(VERSION 3.5...3.31) +project(yyjson VERSION 0.12.0 LANGUAGES C) +set(YYJSON_SOVERSION 0) + + + +# ------------------------------------------------------------------------------ +# Build Type +if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + if(NOT CMAKE_BUILD_TYPE) + message(STATUS "No build type selected, default to: Release") + set(CMAKE_BUILD_TYPE Release) + endif() +endif() + + + +# ------------------------------------------------------------------------------ +# Build Options for tests and docs +option(YYJSON_BUILD_TESTS "Build all tests" OFF) +option(YYJSON_BUILD_FUZZER "Build fuzzer" OFF) +option(YYJSON_BUILD_MISC "Build misc" OFF) +option(YYJSON_BUILD_DOC "Build documentation with doxygen" OFF) +option(YYJSON_ENABLE_COVERAGE "Enable code coverage for tests" OFF) +option(YYJSON_ENABLE_VALGRIND "Enable valgrind memory checker for tests" OFF) +option(YYJSON_ENABLE_SANITIZE "Enable sanitizer for tests" OFF) +option(YYJSON_ENABLE_FASTMATH "Enable fast-math for tests" OFF) +option(YYJSON_FORCE_32_BIT "Force 32-bit for tests" OFF) +option(YYJSON_INSTALL "Generate installation target" ON) + + + +# ------------------------------------------------------------------------------ +# Compilation options, see yyjson.h for more explanation +option(YYJSON_DISABLE_READER "Disable JSON reader" OFF) +option(YYJSON_DISABLE_WRITER "Disable JSON writer" OFF) +option(YYJSON_DISABLE_INCR_READER "Disable incremental reader" OFF) +option(YYJSON_DISABLE_UTILS "Disable JSON Pointer, JSON Patch, JSON Merge Patch" OFF) +option(YYJSON_DISABLE_FAST_FP_CONV "Disable custom floating-point number conversion" OFF) +option(YYJSON_DISABLE_NON_STANDARD "Disable non-standard JSON support" OFF) +option(YYJSON_DISABLE_UTF8_VALIDATION "Disable UTF-8 validation" OFF) +option(YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS "Disable unaligned memory access explicit" OFF) + +if(YYJSON_DISABLE_READER) + add_definitions(-DYYJSON_DISABLE_READER) +endif() +if(YYJSON_DISABLE_WRITER) + add_definitions(-DYYJSON_DISABLE_WRITER) +endif() +if(YYJSON_DISABLE_INCR_READER) + add_definitions(-DYYJSON_DISABLE_INCR_READER) +endif() +if(YYJSON_DISABLE_UTILS) + add_definitions(-DYYJSON_DISABLE_UTILS) +endif() +if(YYJSON_DISABLE_FAST_FP_CONV) + add_definitions(-DYYJSON_DISABLE_FAST_FP_CONV) +endif() +if(YYJSON_DISABLE_NON_STANDARD) + add_definitions(-DYYJSON_DISABLE_NON_STANDARD) +endif() +if(YYJSON_DISABLE_UTF8_VALIDATION) + add_definitions(-DYYJSON_DISABLE_UTF8_VALIDATION) +endif() +if(YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS) + add_definitions(-DYYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS) +endif() + + + +# ------------------------------------------------------------------------------ +# Library +add_library(yyjson src/yyjson.h src/yyjson.c) +target_include_directories(yyjson PUBLIC $) +set_target_properties(yyjson PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${YYJSON_SOVERSION}) + + + +# ------------------------------------------------------------------------------ +# Project Configuration +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + +# Enable C++ for tests +if(YYJSON_BUILD_TESTS) + include(CheckLanguage) + check_language(CXX) + if(CMAKE_CXX_COMPILER) + enable_language(CXX) + endif() +endif() + +if(XCODE) + # Flag string for Xcode property + include(XcodeProperty) + set(YYJSON_FLAGS "-Wall -Wextra -Werror -pedantic -pedantic-errors") + if(YYJSON_ENABLE_FASTMATH) + set(YYJSON_FLAGS "${YYJSON_FLAGS} -ffast-math") + endif() + + set_default_xcode_property(yyjson) + set_xcode_deployment_version(yyjson "10.13" "12.0" "12.0" "4.0") + + set_xcode_property(yyjson GCC_C_LANGUAGE_STANDARD "c89") + set_xcode_property(yyjson CLANG_CXX_LANGUAGE_STANDARD "c++98") + + set_xcode_property(yyjson OTHER_CFLAGS[variant=Debug] ${YYJSON_FLAGS}) + set_xcode_property(yyjson OTHER_CFLAGS[variant=MinSizeRel] ${YYJSON_FLAGS}) + set_xcode_property(yyjson OTHER_CFLAGS[variant=RelWithDebInfo] ${YYJSON_FLAGS}) + set_xcode_property(yyjson OTHER_CFLAGS[variant=Release] ${YYJSON_FLAGS}) + +elseif(MSVC) + # Flag list for MSVC + set(YYJSON_FLAGS "/utf-8") + if(YYJSON_ENABLE_FASTMATH) + list(APPEND YYJSON_FLAGS "/fp:fast") + endif() + + target_compile_options(yyjson PRIVATE $<$:${YYJSON_FLAGS}>) + if(CMAKE_CXX_COMPILER) + target_compile_options(yyjson PRIVATE $<$:${YYJSON_FLAGS}>) + endif() + +elseif(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang|Intel") + # Flag list for GCC like compilers + set(YYJSON_FLAGS) + if(YYJSON_ENABLE_FASTMATH) + list(APPEND YYJSON_FLAGS "-ffast-math") + endif() + + target_compile_options(yyjson PRIVATE $<$:${YYJSON_FLAGS}>) + if(CMAKE_CXX_COMPILER) + target_compile_options(yyjson PRIVATE $<$:${YYJSON_FLAGS}>) + endif() + + if(YYJSON_FORCE_32_BIT) + set(CMAKE_C_FLAGS -m32) + set(CMAKE_CXX_FLAGS -m32) + endif() + +endif() + +include(CheckIncludeFile) +check_include_file(stdint.h YYJSON_HAS_STDINT_H) +check_include_file(stdbool.h YYJSON_HAS_STDBOOL_H) + + + +# ------------------------------------------------------------------------------ +# Build & Install + +if(BUILD_SHARED_LIBS) + if(WIN32) + target_compile_definitions(yyjson PUBLIC $) + if (YYJSON_INSTALL) + target_compile_definitions(yyjson PUBLIC $) + endif() + endif() +endif() + +if (YYJSON_INSTALL) + include(GNUInstallDirs) + + install(TARGETS yyjson + EXPORT yyjson-targets + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") + install(EXPORT yyjson-targets + FILE yyjson-config.cmake + NAMESPACE yyjson:: + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/yyjson") + install(FILES src/yyjson.h DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") + + configure_file(yyjson.pc.in ${CMAKE_BINARY_DIR}/yyjson.pc @ONLY) + install(FILES ${CMAKE_BINARY_DIR}/yyjson.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) +endif() + + + +# ------------------------------------------------------------------------------ +# Testing +if(YYJSON_BUILD_TESTS) + enable_testing() + + if(XCODE) + # Config XCTest + find_package(XCTest REQUIRED) + set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO") + set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") + set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "") + set(YYJSON_TEST_DATA ${CMAKE_CURRENT_SOURCE_DIR}/test/data) + + # CMake 4.0+ requires CMAKE_OSX_SYSROOT to be set manually + if(NOT CMAKE_OSX_SYSROOT OR CMAKE_OSX_SYSROOT STREQUAL "") + execute_process( + COMMAND xcrun --sdk macosx --show-sdk-path + OUTPUT_VARIABLE MACOSX_SYSROOT + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + set(CMAKE_OSX_SYSROOT "${MACOSX_SYSROOT}") + endif() + + # Add all test cases to XCTest: c files prefixed with 'test_' + file(GLOB YYJSON_TEST_SOURCE + "test/test_*.c" + ) + set(YYJSON_TEST_LINES "") + foreach(SRC_FILE ${YYJSON_TEST_SOURCE}) + string(REGEX REPLACE "(^.*/|\\.[^.]*$)" "" SRC_NAME ${SRC_FILE}) + set(YYJSON_TEST_LINES "${YYJSON_TEST_LINES}- (void)${SRC_NAME} {\n") + set(YYJSON_TEST_LINES "${YYJSON_TEST_LINES} extern void ${SRC_NAME}(void);\n") + set(YYJSON_TEST_LINES "${YYJSON_TEST_LINES} ${SRC_NAME}();\n") + set(YYJSON_TEST_LINES "${YYJSON_TEST_LINES}}\n\n") + endforeach() + configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/test/xctest/yy_xctest.m.in" + "${CMAKE_CURRENT_SOURCE_DIR}/test/xctest/yy_xctest.m" + @ONLY + ) + unset(YYJSON_TEST_LINES) + + # Add source files and search path to XCTest + file(GLOB YYJSON_TEST_SOURCE + "test/test_*.c" + "test/util/*.h" + "test/util/*.c" + "test/xctest/*" + ) + xctest_add_bundle(yyjson_tests yyjson + ${YYJSON_TEST_SOURCE} + ${YYJSON_TEST_DATA} + ) + set_target_properties(yyjson_tests PROPERTIES + MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/test/xctest/Info.plist + RESOURCE ${YYJSON_TEST_DATA} + ) + target_include_directories(yyjson_tests PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/test/util + ${CMAKE_CURRENT_SOURCE_DIR}/test/xctest + ) + xctest_add_test(XCTest.yyjson yyjson_tests) + + set_default_xcode_property(yyjson_tests) + set_xcode_deployment_version(yyjson_tests "10.13" "12.0" "12.0" "4.0") + + else() + # Check valgrind command + if (YYJSON_ENABLE_VALGRIND) + find_program(MEMORYCHECK_COMMAND valgrind) + if ("${MEMORYCHECK_COMMAND}" MATCHES "MEMORYCHECK_COMMAND-NOTFOUND") + message(WARNING "Valgrind not found") + unset(MEMORYCHECK_COMMAND) + else() + message(STATUS "Valgrind found") + set(MEMORYCHECK_COMMAND_OPTIONS + --tool=memcheck + --leak-check=full + --trace-children=yes + --error-exitcode=1 + ) + endif() + endif() + + # Copy test data + file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/test/data" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}") + add_definitions(-DYYJSON_TEST_DATA_PATH="${CMAKE_CURRENT_BINARY_DIR}") + + # Add dependency + add_library(yyjson_test_utils + test/util/yy_test_utils.c + test/util/goo_double_conv.c + ) + target_include_directories(yyjson_test_utils PUBLIC test/util) + if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang") + target_compile_options(yyjson_test_utils PRIVATE $<$:-std=c99>) + endif() + + # Add all test cases: c files prefixed with 'test_' + file(GLOB YYJSON_TEST_SOURCE + "test/test_*.c" + ) + foreach(SRC_FILE ${YYJSON_TEST_SOURCE}) + string(REGEX REPLACE "(^.*/|\\.[^.]*$)" "" SRC_NAME ${SRC_FILE}) + add_executable(${SRC_NAME} ${SRC_FILE}) + target_link_libraries(${SRC_NAME} PRIVATE yyjson yyjson_test_utils) + + if(MSVC) + target_compile_options(${SRC_NAME} PRIVATE $<$:/utf-8>) + target_compile_options(${SRC_NAME} PRIVATE $<$:/utf-8>) + endif() + + if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang") + target_compile_options(${SRC_NAME} PRIVATE $<$:-std=c99>) + endif() + + if(MEMORYCHECK_COMMAND) + add_test(NAME ${SRC_NAME} + COMMAND "${MEMORYCHECK_COMMAND}" ${MEMORYCHECK_COMMAND_OPTIONS} "${CMAKE_CURRENT_BINARY_DIR}/${SRC_NAME}") + else() + add_test(${SRC_NAME} ${SRC_NAME}) + endif() + + set_tests_properties(${SRC_NAME} PROPERTIES TIMEOUT 600) + message(STATUS "Add test: ${SRC_NAME}") + endforeach() + + # Add code coverage and sanitize + if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang") + if (YYJSON_ENABLE_COVERAGE) + if(CMAKE_C_COMPILER_ID MATCHES "Clang") + set(COMPILE_FLAGS -fprofile-instr-generate -fcoverage-mapping) + else() + set(COMPILE_FLAGS --coverage) + endif() + target_compile_options(yyjson PRIVATE ${COMPILE_FLAGS}) + target_link_libraries(yyjson INTERFACE ${COMPILE_FLAGS}) + foreach(SRC_FILE ${YYJSON_TEST_SOURCE}) + string(REGEX REPLACE "(^.*/|\\.[^.]*$)" "" SRC_NAME ${SRC_FILE}) + target_compile_options(${SRC_NAME} PRIVATE ${COMPILE_FLAGS}) + endforeach() + endif() + if (YYJSON_ENABLE_SANITIZE) + set(COMPILE_FLAGS + -fsanitize=address + -fsanitize=undefined + -fsanitize=leak + -fsanitize-recover=all + -fno-omit-frame-pointer + -fno-optimize-sibling-calls + -O1 + -g + ) + target_compile_options(yyjson PRIVATE ${COMPILE_FLAGS}) + target_link_libraries(yyjson INTERFACE ${COMPILE_FLAGS}) + endif() + endif() + + endif() + + + # Test compatibility + if(MSVC) + add_executable(test_compile_ansi_c test/compile_ansi.c) + target_include_directories(test_compile_ansi_c PRIVATE src) + add_executable(test_compile_ansi_cpp test/compile_ansi.cpp) + target_include_directories(test_compile_ansi_cpp PRIVATE src) + + # set warning level 4, treat warnings as errors + set(YYJSON_STRICT_FLAGS /W4 /WX) + target_compile_options(test_compile_ansi_c PRIVATE + $<$:${YYJSON_STRICT_FLAGS}>) + target_compile_options(test_compile_ansi_cpp PRIVATE + $<$:${YYJSON_STRICT_FLAGS}>) + + # add tests + add_test(test_compile_ansi_c test_compile_ansi_c) + message(STATUS "Add test: test_compile_ansi_c") + add_test(test_compile_ansi_cpp test_compile_ansi_cpp) + message(STATUS "Add test: test_compile_ansi_cpp") + + elseif(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang") + + # Compiler flag check + include(CheckCCompilerFlag) + include(CheckCXXCompilerFlag) + + # Flags to check ANSI C/C++ standard strictly, treat warnings as errors + set(YYJSON_STRICT_C_FLAGS "") + set(YYJSON_STRICT_CXX_FLAGS "") + + # Base flags + set(YYJSON_BASE_FLAGS + -pedantic + -pedantic-errors + -Werror + -Wall + -Wextra + -Wconversion + -Wundef + -Wcast-qual + -Wfloat-equal + -Wredundant-decls + -Wpointer-arith + ) + # Extra flags supported by different compilers + if(CMAKE_C_COMPILER_ID MATCHES "GNU") + set(YYJSON_EXTRA_FLAGS + -Wmissing-prototypes # C only + -Wstrict-prototypes # C only + -Wlogical-op # GCC 4.3 + -Wdouble-promotion # GCC 4.6 + -Wduplicated-cond # GCC 6.0 + -Wduplicated-branches # GCC 7.0 + -Wcast-align=strict # GCC 8.0 + -Wshadow=global # GCC 7.0 + ) + else() + set(YYJSON_EXTRA_FLAGS + -Wmissing-prototypes # C only + -Wstrict-prototypes # C only + -Wdouble-promotion # Clang + -Wcast-align # Clang + -Wcomma # Clang + -Wdeprecated # Clang + -Wdocumentation # Clang + -Wnewline-eof # Clang + -Wshadow-all # Clang + -Wunaligned-access # Clang + -Wunreachable-code # Clang + -Wextra-semi # Clang + -Wextra-semi-stmt # Clang + # used for finding potential issues, but too noisy for regular testing: + # -Weverything # enable all warnings + # -Wno-reserved-macro-identifier # disable for stdbool define + # -Wno-padded # disable for some structs + # -Wno-old-style-cast # disable for C++ + # -Wno-zero-as-null-pointer-constant # disable for C++ + ) + endif() + + # Combine all available flags + list(APPEND YYJSON_STRICT_C_FLAGS ${YYJSON_BASE_FLAGS}) + list(APPEND YYJSON_STRICT_CXX_FLAGS ${YYJSON_BASE_FLAGS}) + foreach(flag ${YYJSON_EXTRA_FLAGS}) + string(REGEX REPLACE "[-.+/:=]" "_" flag_name "${flag}") + + check_c_compiler_flag(${flag} COMPILER_SUPPORT_C_FLAG${flag_name}) + if(COMPILER_SUPPORT_C_FLAG${flag_name}) + list(APPEND YYJSON_STRICT_C_FLAGS ${flag}) + endif() + + if(CMAKE_CXX_COMPILER) + check_cxx_compiler_flag(${flag} COMPILER_SUPPORT_CXX_FLAG${flag_name}) + if(COMPILER_SUPPORT_CXX_FLAG${flag_name}) + list(APPEND YYJSON_STRICT_CXX_FLAGS ${flag}) + endif() + endif() + + endforeach() + + # Check ANSI C + check_c_compiler_flag("-ansi" COMPILER_SUPPORTS_ANSI_C) + if(COMPILER_SUPPORTS_ANSI_C) + add_executable(test_compile_ansi_c test/compile_ansi.c) + target_include_directories(test_compile_ansi_c PRIVATE src) + target_compile_options(test_compile_ansi_c PRIVATE + $<$:-ansi ${YYJSON_STRICT_C_FLAGS}>) + endif() + + # Check modern C + check_c_compiler_flag("-std=c11" COMPILER_SUPPORTS_C11) + if(COMPILER_SUPPORTS_C11) + add_executable(test_compile_c11 test/compile_ansi.c) + target_include_directories(test_compile_c11 PRIVATE src) + target_compile_options(test_compile_c11 PRIVATE + $<$:-std=c11 ${YYJSON_STRICT_C_FLAGS}>) + endif() + + if(CMAKE_CXX_COMPILER) + + # Check ANSI C++ + check_cxx_compiler_flag("-ansi" COMPILER_SUPPORTS_ANSI_CXX) + if(COMPILER_SUPPORTS_ANSI_CXX) + add_executable(test_compile_ansi_cxx test/compile_ansi.cpp) + target_include_directories(test_compile_ansi_cxx PRIVATE src) + target_compile_options(test_compile_ansi_cxx PRIVATE + $<$:-ansi ${YYJSON_STRICT_CXX_FLAGS}>) + endif() + + # Check modern C++ + check_cxx_compiler_flag("-std=c++17" COMPILER_SUPPORTS_CXX17) + if(COMPILER_SUPPORTS_CXX17) + add_executable(test_compile_cxx17 test/compile_ansi.cpp) + target_include_directories(test_compile_cxx17 PRIVATE src) + target_compile_options(test_compile_cxx17 PRIVATE + $<$:-std=c++17 ${YYJSON_STRICT_CXX_FLAGS}>) + endif() + + endif() + + endif() + +endif() + + + +# ------------------------------------------------------------------------------ +# Fuzzing +if (YYJSON_BUILD_FUZZER) + if(CMAKE_C_COMPILER_ID STREQUAL "Clang") + enable_testing() + file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/fuzz/fuzzer.dict" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}") + file(GLOB YYJSON_FILES "${CMAKE_CURRENT_SOURCE_DIR}/test/data/json/**/*.json") + file(COPY ${YYJSON_FILES} DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/corpus") + + set(COMPILE_FLAGS -fsanitize=fuzzer,address -O1 -g) + target_compile_options(yyjson PRIVATE ${COMPILE_FLAGS}) + target_link_libraries(yyjson INTERFACE ${COMPILE_FLAGS}) + + add_executable(fuzzer "fuzz/fuzzer.c") + target_link_libraries(fuzzer yyjson) + add_test(test_fuzzer ${CMAKE_CURRENT_BINARY_DIR}/fuzzer -dict=fuzzer.dict -max_total_time=300 ${CMAKE_CURRENT_BINARY_DIR}/corpus) + set_tests_properties(test_fuzzer PROPERTIES TIMEOUT 600) + else() + message(WARNING "LibFuzzer requires LLVM Clang as compiler") + endif() +endif() + + + +# ------------------------------------------------------------------------------ +# Miscellaneous +if(YYJSON_BUILD_MISC) + # jsoninfo + add_executable(jsoninfo "misc/jsoninfo.c") + target_link_libraries(jsoninfo PRIVATE yyjson) + if(XCODE) + set_default_xcode_property(jsoninfo) + endif() + + # make tables + add_executable(make_tables "misc/make_tables.c") + if(XCODE) + set_default_xcode_property(make_tables) + endif() +endif() + + + +# ------------------------------------------------------------------------------ +# Doxygen +if(YYJSON_BUILD_DOC) + find_package(Doxygen) + if(DOXYGEN_FOUND) + message(STATUS "Doxygen found") + + set(DOXYGEN_IN "${CMAKE_CURRENT_SOURCE_DIR}/doc/doxygen/Doxyfile.in") + set(DOXYGEN_OUT "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile") + configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY) + message(STATUS "Doxygen will output to ${CMAKE_CURRENT_BINARY_DIR}/doxygen/html") + + add_custom_target(yyjson_doc ALL + COMMAND ${DOXYGEN_EXECUTABLE} "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile" + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMENT "Generating documentation with Doxygen" + VERBATIM) + else() + message(WARNING "Doxygen not found") + endif() +endif() diff --git a/lib/yyjson-0.12.0/LICENSE b/lib/yyjson-0.12.0/LICENSE new file mode 100644 index 00000000000..a09bff35534 --- /dev/null +++ b/lib/yyjson-0.12.0/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 YaoYuan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/lib/yyjson-0.12.0/Package.swift b/lib/yyjson-0.12.0/Package.swift new file mode 100644 index 00000000000..8f27d611e56 --- /dev/null +++ b/lib/yyjson-0.12.0/Package.swift @@ -0,0 +1,24 @@ +// swift-tools-version:5.0 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "yyjson", + products: [ + // Products define the executables and libraries a package produces, and make them visible to other packages. + .library( + name: "yyjson", + targets: ["yyjson"]), + ], + targets: [ + // Targets are the basic building blocks of a package. A target can define a module or a test suite. + // Targets can depend on other targets in this package, and on products in packages this package depends on. + .target( + name: "yyjson", + path: ".", + sources: ["src"], + publicHeadersPath: "src" + ) + ] +) diff --git a/lib/yyjson-0.12.0/README.md b/lib/yyjson-0.12.0/README.md new file mode 100644 index 00000000000..a11f573cbd3 --- /dev/null +++ b/lib/yyjson-0.12.0/README.md @@ -0,0 +1,257 @@ + +# Introduction + +[![Build](https://img.shields.io/github/actions/workflow/status/ibireme/yyjson/cmake.yml?branch=master&style=flat-square)](https://github.com/ibireme/yyjson/actions/workflows/cmake.yml) +[![Codecov](https://img.shields.io/codecov/c/github/ibireme/yyjson/master?style=flat-square)](https://codecov.io/gh/ibireme/yyjson) +[![License](https://img.shields.io/github/license/ibireme/yyjson?color=blue&style=flat-square)](https://github.com/ibireme/yyjson/blob/master/LICENSE) +[![Version](https://img.shields.io/github/v/release/ibireme/yyjson?color=orange&style=flat-square)](https://github.com/ibireme/yyjson/releases) +[![Packaging status](https://img.shields.io/repology/repositories/yyjson.svg?style=flat-square)](https://repology.org/project/yyjson/versions) + +A high performance JSON library written in ANSI C. + +# Features +- **Fast**: can read or write gigabytes of JSON data per second on modern CPUs. +- **Portable**: complies with ANSI C (C89) for cross-platform compatibility. +- **Strict**: complies with [RFC 8259](https://datatracker.ietf.org/doc/html/rfc8259) JSON standard, ensuring strict number formats and UTF-8 validation. +- **Extendable**: offers options to enable individual [JSON5](https://json5.org) features and custom allocator. +- **Accuracy**: can accurately read and write `int64`, `uint64`, and `double` numbers. +- **Flexible**: supports unlimited JSON nesting levels, `\u0000` characters, and non-null-terminated strings. +- **Manipulation**: supports querying and modifying with [JSON Pointer](https://datatracker.ietf.org/doc/html/rfc6901), [JSON Patch](https://datatracker.ietf.org/doc/html/rfc6902), and [JSON Merge Patch](https://datatracker.ietf.org/doc/html/rfc7386). +- **Developer-Friendly**: easy integration with just one `.h` and one `.c` file. + +# Limitations +- An array or object is stored as a [data structure](https://ibireme.github.io/yyjson/doc/doxygen/html/md_doc__data_structure.html) such as linked list, which makes accessing elements by index or key slower than using an iterator. +- Duplicate keys are allowed in an object, and the order of the keys is preserved. +- JSON parsing result is immutable, requiring a `mutable copy` for modification. + +# Performance +Benchmark project and dataset: [yyjson_benchmark](https://github.com/ibireme/yyjson_benchmark) + +The simdjson's new `On Demand` API is faster if most JSON fields are known at compile-time. +This benchmark project only checks the DOM API, a new benchmark will be added later. + +#### AWS EC2 (AMD EPYC 7R32, gcc 9.3) +![ec2_chart](doc/images/perf_reader_ec2.svg) + +|twitter.json|parse (GB/s)|stringify (GB/s)| +|---|---|---| +|yyjson(insitu)|1.80|1.51| +|yyjson|1.72|1.42| +|simdjson|1.52|0.61| +|sajson|1.16| | +|rapidjson(insitu)|0.77| | +|rapidjson(utf8)|0.26|0.39| +|cjson|0.32|0.17| +|jansson|0.05|0.11| + + +#### iPhone (Apple A14, clang 12) +![a14_chart](doc/images/perf_reader_a14.svg) + +|twitter.json|parse (GB/s)|stringify (GB/s)| +|---|---|---| +|yyjson(insitu)|3.51|2.41| +|yyjson|2.39|2.01| +|simdjson|2.19|0.80| +|sajson|1.74|| +|rapidjson(insitu)|0.75| | +|rapidjson(utf8)|0.30|0.58| +|cjson|0.48|0.33| +|jansson|0.09|0.24| + +More benchmark reports with interactive charts (update 2020-12-12) + +|Platform|CPU|Compiler|OS|Report| +|---|---|---|---|---| +|Intel NUC 8i5|Core i5-8259U|msvc 2019|Windows 10 2004|[Charts](https://ibireme.github.io/yyjson_benchmark/reports/Intel_NUC_8i5_msvc_2019.html)| +|Intel NUC 8i5|Core i5-8259U|clang 10.0|Ubuntu 20.04|[Charts](https://ibireme.github.io/yyjson_benchmark/reports/Intel_NUC_8i5_clang_10.html)| +|Intel NUC 8i5|Core i5-8259U|gcc 9.3|Ubuntu 20.04|[Charts](https://ibireme.github.io/yyjson_benchmark/reports/Intel_NUC_8i5_gcc_9.html)| +|AWS EC2 c5a.large|AMD EPYC 7R32|gcc 9.3|Ubuntu 20.04|[Charts](https://ibireme.github.io/yyjson_benchmark/reports/EC2_c5a.large_gcc_9.html)| +|AWS EC2 t4g.medium|Graviton2 (ARM64)|gcc 9.3|Ubuntu 20.04|[Charts](https://ibireme.github.io/yyjson_benchmark/reports/EC2_t4g.medium_gcc_9.html)| +|Apple iPhone 12 Pro|A14 (ARM64)|clang 12.0|iOS 14|[Charts](https://ibireme.github.io/yyjson_benchmark/reports/Apple_A14_clang_12.html)| + +### For better performance, yyjson prefers: +* A modern processor with: + * high instruction level parallelism + * excellent branch predictor + * low penalty for misaligned memory access +* A modern compiler with good optimizer (e.g. clang) + + +# Sample Code + +### Read JSON string +```c +const char *json = "{\"name\":\"Mash\",\"star\":4,\"hits\":[2,2,1,3]}"; + +// Read JSON and get root +yyjson_doc *doc = yyjson_read(json, strlen(json), 0); +yyjson_val *root = yyjson_doc_get_root(doc); + +// Get root["name"] +yyjson_val *name = yyjson_obj_get(root, "name"); +printf("name: %s\n", yyjson_get_str(name)); +printf("name length:%d\n", (int)yyjson_get_len(name)); + +// Get root["star"] +yyjson_val *star = yyjson_obj_get(root, "star"); +printf("star: %d\n", (int)yyjson_get_int(star)); + +// Get root["hits"], iterate over the array +yyjson_val *hits = yyjson_obj_get(root, "hits"); +size_t idx, max; +yyjson_val *hit; +yyjson_arr_foreach(hits, idx, max, hit) { + printf("hit%d: %d\n", (int)idx, (int)yyjson_get_int(hit)); +} + +// Free the doc +yyjson_doc_free(doc); + +// All functions accept NULL input, and return NULL on error. +``` + +### Write JSON string +```c +// Create a mutable doc +yyjson_mut_doc *doc = yyjson_mut_doc_new(NULL); +yyjson_mut_val *root = yyjson_mut_obj(doc); +yyjson_mut_doc_set_root(doc, root); + +// Set root["name"] and root["star"] +yyjson_mut_obj_add_str(doc, root, "name", "Mash"); +yyjson_mut_obj_add_int(doc, root, "star", 4); + +// Set root["hits"] with an array +int hits_arr[] = {2, 2, 1, 3}; +yyjson_mut_val *hits = yyjson_mut_arr_with_sint32(doc, hits_arr, 4); +yyjson_mut_obj_add_val(doc, root, "hits", hits); + +// To string, minified +const char *json = yyjson_mut_write(doc, 0, NULL); +if (json) { + printf("json: %s\n", json); // {"name":"Mash","star":4,"hits":[2,2,1,3]} + free((void *)json); +} + +// Free the doc +yyjson_mut_doc_free(doc); +``` + +### Read JSON file with options +```c +// Read JSON file, allowing comments and trailing commas +yyjson_read_flag flg = YYJSON_READ_ALLOW_COMMENTS | YYJSON_READ_ALLOW_TRAILING_COMMAS; +yyjson_read_err err; +yyjson_doc *doc = yyjson_read_file("/tmp/config.json", flg, NULL, &err); + +// Iterate over the root object +if (doc) { + yyjson_val *obj = yyjson_doc_get_root(doc); + yyjson_obj_iter iter; + yyjson_obj_iter_init(obj, &iter); + yyjson_val *key, *val; + while ((key = yyjson_obj_iter_next(&iter))) { + val = yyjson_obj_iter_get_val(key); + printf("%s: %s\n", yyjson_get_str(key), yyjson_get_type_desc(val)); + } +} else { + printf("read error (%u): %s at position: %ld\n", err.code, err.msg, err.pos); +} + +// Free the doc +yyjson_doc_free(doc); +``` + +### Write JSON file with options +```c +// Read the JSON file as a mutable doc +yyjson_doc *idoc = yyjson_read_file("/tmp/config.json", 0, NULL, NULL); +yyjson_mut_doc *doc = yyjson_doc_mut_copy(idoc, NULL); +yyjson_mut_val *obj = yyjson_mut_doc_get_root(doc); + +// Remove null values in root object +yyjson_mut_obj_iter iter; +yyjson_mut_obj_iter_init(obj, &iter); +yyjson_mut_val *key, *val; +while ((key = yyjson_mut_obj_iter_next(&iter))) { + val = yyjson_mut_obj_iter_get_val(key); + if (yyjson_mut_is_null(val)) { + yyjson_mut_obj_iter_remove(&iter); + } +} + +// Write the json pretty, escape unicode +yyjson_write_flag flg = YYJSON_WRITE_PRETTY | YYJSON_WRITE_ESCAPE_UNICODE; +yyjson_write_err err; +yyjson_mut_write_file("/tmp/config.json", doc, flg, NULL, &err); +if (err.code) { + printf("write error (%u): %s\n", err.code, err.msg); +} + +// Free the doc +yyjson_doc_free(idoc); +yyjson_mut_doc_free(doc); +``` + +# Documentation +The latest (unreleased) documentation can be accessed in the [doc](https://github.com/ibireme/yyjson/tree/master/doc) directory. +The pre-generated Doxygen HTML for the release version can be viewed here: +* [Home Page](https://ibireme.github.io/yyjson/doc/doxygen/html/) + * [Build and test](https://ibireme.github.io/yyjson/doc/doxygen/html/md_doc__build_and_test.html) + * [API and sample code](https://ibireme.github.io/yyjson/doc/doxygen/html/md_doc__a_p_i.html) + * [Data structure](https://ibireme.github.io/yyjson/doc/doxygen/html/md_doc__data_structure.html) + * [Changelog](https://ibireme.github.io/yyjson/doc/doxygen/html/md__c_h_a_n_g_e_l_o_g.html) + +# Packaging status + +[![Packaging status](https://repology.org/badge/vertical-allrepos/yyjson.svg?columns=2)](https://repology.org/project/yyjson/versions) + +# Built With yyjson + +A non-exhaustive list of projects that expose yyjson to other languages or +use yyjson internally for a major feature. If you have a project that uses +yyjson, feel free to open a PR to add it to this list. + +| Project | Language | Description | +|-----------------|----------|------------------------------------------------------------------------------------------| +| [py_yyjson][] | Python | Python bindings for yyjson | +| [orjson][] | Python | JSON library for Python with an optional yyjson backend | +| [cpp-yyjson][] | C++ | C++ JSON library with a yyjson backend | +| [reflect-cpp][] | C++ | C++ library for serialization through automated field name retrieval from structs | +| [yyjsonr][] | R | R binding for yyjson | +| [Ananda][] | Swift | JSON model decoding based on yyjson | +| [duckdb][] | C++ | DuckDB is an in-process SQL OLAP Database Management System | +| [fastfetch][] | C | A neofetch-like tool for fetching system information and displaying them in a pretty way | +| [Zrythm][] | C | Digital Audio Workstation that uses yyjson to serialize JSON project files | +| [bemorehuman][] | C | Recommendation engine with a focus on uniqueness of the person receiving the rec | +| [mruby-yyjson][]| mruby | Efficient JSON parsing and serialization library for mruby using yyjson | +| [YYJSON.jl][] | Julia | Julia bindings for yyjson | + +# TODO for v1.0 +* [x] Add documentation page. +* [x] Add GitHub workflow for CI and codecov. +* [x] Add more tests: valgrind, sanitizer, fuzzing. +* [x] Support JSON Pointer to query and modify JSON. +* [x] Add `RAW` type for JSON reader and writer. +* [x] Add option to limit real number output precision. +* [x] Add option to support JSON5. +* [ ] Add functions to diff two JSON documents. +* [ ] Add documentation on performance optimizations. +* [ ] Ensure ABI stability. + +# License +This project is released under the MIT license. + +[py_yyjson]: https://github.com/tktech/py_yyjson +[orjson]: https://github.com/ijl/orjson +[cpp-yyjson]: https://github.com/yosh-matsuda/cpp-yyjson +[reflect-cpp]: https://github.com/getml/reflect-cpp +[yyjsonr]: https://github.com/coolbutuseless/yyjsonr +[Ananda]: https://github.com/nixzhu/Ananda +[duckdb]: https://github.com/duckdb/duckdb +[fastfetch]: https://github.com/fastfetch-cli/fastfetch +[Zrythm]: https://github.com/zrythm/zrythm +[bemorehuman]: https://github.com/BeMoreHumanOrg/bemorehuman +[mruby-yyjson]: https://github.com/buty4649/mruby-yyjson +[YYJSON.jl]: https://github.com/bhftbootcamp/YYJSON.jl diff --git a/lib/yyjson-0.12.0/cmake/XcodeProperty.cmake b/lib/yyjson-0.12.0/cmake/XcodeProperty.cmake new file mode 100644 index 00000000000..f95f5c2ebc8 --- /dev/null +++ b/lib/yyjson-0.12.0/cmake/XcodeProperty.cmake @@ -0,0 +1,134 @@ +# Copyright (C) 2019 Yaoyuan . +# Released under the MIT License: +# https://github.com/ibireme/yyjson/blob/master/LICENSE + + +# This module contains some macros for Xcode project. +# For example: +# if(XCODE) +# set_default_xcode_property(yyjson) +# set_xcode_deployment_version(yyjson "10.11" "9.0" "9.0" "2.0") +# set_xcode_property(yyjson GCC_C_LANGUAGE_STANDARD "c89") +# set_xcode_property(yyjson CLANG_CXX_LANGUAGE_STANDARD "c++98") +# endif() + + +# Set Xcode property to target +# For example: set_xcode_property(yyjson GCC_C_LANGUAGE_STANDARD "c89") +macro(set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE) + set_property(TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY} ${XCODE_VALUE}) +endmacro(set_xcode_property) + + +# Set default Xcode properties to target +# For example: set_default_xcode_property(yyjson) +macro(set_default_xcode_property TARGET) + + # Standard + set_xcode_property(${TARGET} GCC_C_LANGUAGE_STANDARD "gnu99") + set_xcode_property(${TARGET} CLANG_CXX_LANGUAGE_STANDARD "gnu++11") + set_xcode_property(${TARGET} CLANG_CXX_LIBRARY "libc++") + + # Compiler Flags + set_xcode_property(${TARGET} OTHER_CFLAGS[variant=Debug] " ") + set_xcode_property(${TARGET} OTHER_CFLAGS[variant=MinSizeRel] " ") + set_xcode_property(${TARGET} OTHER_CFLAGS[variant=RelWithDebInfo] " ") + set_xcode_property(${TARGET} OTHER_CFLAGS[variant=Release] " ") + set_xcode_property(${TARGET} OTHER_CPLUSPLUSFLAGS[variant=Debug] "$(OTHER_CFLAGS)") + set_xcode_property(${TARGET} OTHER_CPLUSPLUSFLAGS[variant=MinSizeRel] "$(OTHER_CFLAGS)") + set_xcode_property(${TARGET} OTHER_CPLUSPLUSFLAGS[variant=RelWithDebInfo] "$(OTHER_CFLAGS)") + set_xcode_property(${TARGET} OTHER_CPLUSPLUSFLAGS[variant=Release] "$(OTHER_CFLAGS)") + + # Macros + set_xcode_property(${TARGET} GCC_PREPROCESSOR_DEFINITIONS[variant=Debug] "DEBUG=1") + set_xcode_property(${TARGET} GCC_PREPROCESSOR_DEFINITIONS[variant=MinSizeRel] "NDEBUG=1") + set_xcode_property(${TARGET} GCC_PREPROCESSOR_DEFINITIONS[variant=RelWithDebInfo] "NDEBUG=1") + set_xcode_property(${TARGET} GCC_PREPROCESSOR_DEFINITIONS[variant=Release] "NDEBUG=1") + + # Architectures + set_xcode_property(${TARGET} ARCHS "$(ARCHS_STANDARD)") + set_xcode_property(${TARGET} ONLY_ACTIVE_ARCH[variant=Debug] "YES") + set_xcode_property(${TARGET} ONLY_ACTIVE_ARCH[variant=MinSizeRel] "NO") + set_xcode_property(${TARGET} ONLY_ACTIVE_ARCH[variant=RelWithDebInfo] "NO") + set_xcode_property(${TARGET} ONLY_ACTIVE_ARCH[variant=Release] "NO") + set_xcode_property(${TARGET} SDKROOT "macosx") + + # Debug Information + set_xcode_property(${TARGET} DEBUG_INFORMATION_FORMAT[variant=Debug] "dwarf") + set_xcode_property(${TARGET} DEBUG_INFORMATION_FORMAT[variant=MinSizeRel] "dwarf-with-dsym") + set_xcode_property(${TARGET} DEBUG_INFORMATION_FORMAT[variant=RelWithDebInfo] "dwarf") + set_xcode_property(${TARGET} DEBUG_INFORMATION_FORMAT[variant=Release] "dwarf-with-dsym") + set_xcode_property(${TARGET} GCC_GENERATE_DEBUGGING_SYMBOLS[variant=Debug] "YES") + set_xcode_property(${TARGET} GCC_GENERATE_DEBUGGING_SYMBOLS[variant=MinSizeRel] "NO") + set_xcode_property(${TARGET} GCC_GENERATE_DEBUGGING_SYMBOLS[variant=RelWithDebInfo] "YES") + set_xcode_property(${TARGET} GCC_GENERATE_DEBUGGING_SYMBOLS[variant=Release] "NO") + set_xcode_property(${TARGET} GCC_NO_COMMON_BLOCKS "YES") + + # Common Warnings + set_xcode_property(${TARGET} CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING "YES") + set_xcode_property(${TARGET} CLANG_WARN_DOCUMENTATION_COMMENTS "YES") + set_xcode_property(${TARGET} CLANG_WARN_EMPTY_BODY "YES") + set_xcode_property(${TARGET} GCC_WARN_SHADOW "YES") ### + set_xcode_property(${TARGET} CLANG_WARN_BOOL_CONVERSION "YES") + set_xcode_property(${TARGET} CLANG_WARN_CONSTANT_CONVERSION "YES") + set_xcode_property(${TARGET} GCC_WARN_64_TO_32_BIT_CONVERSION "YES") + set_xcode_property(${TARGET} CLANG_WARN_ENUM_CONVERSION "YES") + set_xcode_property(${TARGET} CLANG_WARN_FLOAT_CONVERSION "YES") ### + set_xcode_property(${TARGET} CLANG_WARN_INT_CONVERSION "YES") + set_xcode_property(${TARGET} CLANG_WARN_NON_LITERAL_NULL_CONVERSION "YES") + set_xcode_property(${TARGET} CLANG_WARN_INFINITE_RECURSION "YES") + set_xcode_property(${TARGET} GCC_WARN_ABOUT_RETURN_TYPE "YES_ERROR") + set_xcode_property(${TARGET} GCC_WARN_ABOUT_MISSING_NEWLINE "YES") ### + set_xcode_property(${TARGET} CLANG_WARN_ASSIGN_ENUM "YES") ### + set_xcode_property(${TARGET} CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER "YES") + set_xcode_property(${TARGET} GCC_WARN_SIGN_COMPARE "YES") ### + set_xcode_property(${TARGET} CLANG_WARN_STRICT_PROTOTYPES "YES") + set_xcode_property(${TARGET} CLANG_WARN_COMMA "YES") + set_xcode_property(${TARGET} CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION "YES") ### + set_xcode_property(${TARGET} CLANG_WARN_UNGUARDED_AVAILABILITY "YES_AGGRESSIVE") + set_xcode_property(${TARGET} GCC_WARN_UNINITIALIZED_AUTOS "YES_AGGRESSIVE") + set_xcode_property(${TARGET} CLANG_WARN_UNREACHABLE_CODE "YES") + set_xcode_property(${TARGET} GCC_WARN_UNUSED_FUNCTION "YES") + set_xcode_property(${TARGET} GCC_WARN_UNUSED_VALUE "YES") + set_xcode_property(${TARGET} GCC_WARN_UNUSED_VARIABLE "YES") ### + + # C++ Warnings + set_xcode_property(${TARGET} CLANG_WARN_RANGE_LOOP_ANALYSIS "YES") + set_xcode_property(${TARGET} CLANG_WARN_SUSPICIOUS_MOVE "YES") + + # ObjC Warnings + set_xcode_property(${TARGET} CLANG_WARN_DIRECT_OBJC_ISA_USAGE "YES_ERROR") + set_xcode_property(${TARGET} CLANG_WARN__DUPLICATE_METHOD_MATCH "YES") + set_xcode_property(${TARGET} CLANG_WARN_OBJC_LITERAL_CONVERSION "YES") + set_xcode_property(${TARGET} CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS "YES") + set_xcode_property(${TARGET} GCC_WARN_UNDECLARED_SELECTOR "YES") + set_xcode_property(${TARGET} CLANG_WARN_OBJC_ROOT_CLASS "YES_ERROR") + set_xcode_property(${TARGET} CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF "YES") + + # ObjC Options + set_xcode_property(${TARGET} CLANG_ENABLE_OBJC_ARC "YES") + set_xcode_property(${TARGET} CLANG_ENABLE_OBJC_WEAK "YES") + set_xcode_property(${TARGET} ENABLE_NS_ASSERTIONS[variant=Debug] "YES") + set_xcode_property(${TARGET} ENABLE_NS_ASSERTIONS[variant=MinSizeRel] "NO") + set_xcode_property(${TARGET} ENABLE_NS_ASSERTIONS[variant=RelWithDebInfo] "NO") + set_xcode_property(${TARGET} ENABLE_NS_ASSERTIONS[variant=Release] "NO") + +endmacro(set_default_xcode_property) + + +# Set Xcode deployment version (macOS, iOS, tvOS, watchOS) +# For example: set_xcode_deployment_version(some_target "10.11" "9.0" "9.0" "2.0") +macro(set_xcode_deployment_version TARGET macOS iOS tvOS watchOS) + set_xcode_property(${TARGET} MACOSX_DEPLOYMENT_TARGET ${macOS}) + set_xcode_property(${TARGET} IPHONEOS_DEPLOYMENT_TARGET ${iOS}) + set_xcode_property(${TARGET} TVOS_DEPLOYMENT_TARGET ${tvOS}) + set_xcode_property(${TARGET} WATCHOS_DEPLOYMENT_TARGET ${watchOS}) +endmacro(set_xcode_deployment_version) + + +# Set Xcode language standard (C, CXX) +# For example: set_xcode_language_standard(some_target "gnu11" "gnu++17") +macro(set_xcode_language_standard TARGET C CXX) + set_xcode_property(${TARGET} GCC_C_LANGUAGE_STANDARD ${C}) + set_xcode_property(${TARGET} CLANG_CXX_LANGUAGE_STANDARD ${CXX}) +endmacro(set_xcode_language_standard) diff --git a/lib/yyjson-0.12.0/doc/API.md b/lib/yyjson-0.12.0/doc/API.md new file mode 100644 index 00000000000..0b7a971d73c --- /dev/null +++ b/lib/yyjson-0.12.0/doc/API.md @@ -0,0 +1,1770 @@ +API +=== + +This document contains all the API usage and examples for the yyjson library. + + +# API Design + +## API prefix + +All public functions and structs are prefixed with `yyjson_`, and all constants are prefixed with `YYJSON_`. + +## API for immutable/mutable data + +The library have 2 types of data structures: immutable and mutable: + +| | Immutable | Mutable | +|----------|------------|----------------| +| Document | yyjson_doc | yyjson_mut_doc | +| Value | yyjson_val | yyjson_mut_val | + +When reading a JSON, yyjson returns immutable documents and values.
+When building a JSON, yyjson creates mutable documents and values.
+The document holds the memory for all its JSON values and strings.
+ +For most immutable APIs, you can just add a `mut` after `yyjson_` to get the mutable version, for example: +```c +char *yyjson_write(yyjson_doc *doc, ...); +char *yyjson_mut_write(yyjson_mut_doc *doc, ...); + +bool yyjson_is_str(yyjson_val *val); +bool yyjson_mut_is_str(yyjson_mut_val *val); +``` + +The library also provides some functions to convert values between immutable and mutable:
+ +```c +// doc -> mut_doc +yyjson_mut_doc *yyjson_doc_mut_copy(yyjson_doc *doc, ...); +// val -> mut_val +yyjson_mut_val *yyjson_val_mut_copy(yyjson_val *val, ...); + +// mut_doc -> doc +yyjson_doc *yyjson_mut_doc_imut_copy(yyjson_mut_doc *doc, ...); +// mut_val -> val +yyjson_doc *yyjson_mut_val_imut_copy(yyjson_mut_val *val, ...); +``` + +## API for string +The library supports strings with or without null-terminator ('\0').
+When you need to use a string without a null-terminator or when you explicitly know the length of the string, you can use the function that ends with `n`, for example: +```c +// null-terminator is required +bool yyjson_equals_str(yyjson_val *val, const char *str); +// null-terminator is optional +bool yyjson_equals_strn(yyjson_val *val, const char *str, size_t len); +``` + +When creating JSON, yyjson treats strings as constants for better performance. However, if your string will be modified, you should use a function with a `cpy` to copy the string to the document, for example: +```c +// reference only, null-terminated is required +yyjson_mut_val *yyjson_mut_str(yyjson_mut_doc *doc, const char *str); +// reference only, null-terminator is optional +yyjson_mut_val *yyjson_mut_strn(yyjson_mut_doc *doc, const char *str, size_t len); + +// copied, null-terminated is required +yyjson_mut_val *yyjson_mut_strcpy(yyjson_mut_doc *doc, const char *str); +// copied, null-terminator is optional +yyjson_mut_val *yyjson_mut_strncpy(yyjson_mut_doc *doc, const char *str, size_t len); +``` + + + +--------------- + +# Reading JSON +The library provides 5 functions for reading JSON.
+Each function accepts an input of UTF-8 data or a file,
+returns a document if it successful or `NULL` if it fails. + +## Read JSON from string +The `dat` should be a UTF-8 string, null-terminator is not required.
+The `len` is the byte length of `dat`.
+The `flg` is reader flag, pass 0 if you don't need it, see `reader flag` for details.
+If input is invalid, `NULL` is returned. + +```c +yyjson_doc *yyjson_read(const char *dat, + size_t len, + yyjson_read_flag flg); +``` +Sample code: + +```c +const char *str = "[1,2,3,4]"; +yyjson_doc *doc = yyjson_read(str, strlen(str), 0); +if (doc) {...} +yyjson_doc_free(doc); +``` + +## Read JSON from file + +The `path` is JSON file path. This should be a null-terminated string using the system's native encoding.
+The `flg` is reader flag, pass 0 if you don't need it, see `reader flag` for details.
+The `alc` is memory allocator, pass NULL if you don't need it, see `memory allocator` for details.
+The `err` is a pointer to receive error message, pass NULL if you don't need it.
+If input is invalid, `NULL` is returned. + +```c +yyjson_doc *yyjson_read_file(const char *path, + yyjson_read_flag flg, + const yyjson_alc *alc, + yyjson_read_err *err); +``` + +Sample code: + +```c +yyjson_doc *doc = yyjson_read_file("/tmp/test.json", 0, NULL, NULL); +if (doc) {...} +yyjson_doc_free(doc); +``` + +## Read JSON from file pointer + +The `fp` is file pointer. The data will be read from the current position of the FILE to the end.
+The `flg` is reader flag, pass 0 if you don't need it, see `reader flag` for details.
+The `alc` is memory allocator, pass NULL if you don't need it, see `memory allocator` for details.
+The `err` is a pointer to receive error message, pass NULL if you don't need it.
+If input is invalid, `NULL` is returned. + +```c +yyjson_doc *yyjson_read_fp(FILE *fp, + yyjson_read_flag flg, + const yyjson_alc *alc, + yyjson_read_err *err); +``` + +Sample code: + +```c +FILE *fp = fdopen(fd, "rb"); // POSIX file descriptor (fd) +yyjson_doc *doc = yyjson_read_fp(fp, 0, NULL, NULL); +if (fp) fclose(fp); +if (doc) {...} +yyjson_doc_free(doc); +``` + +## Read JSON with options +The `dat` should be a UTF-8 string, you can pass a const string if you don't use `YYJSON_READ_INSITU` flag.
+The `len` is the `dat`'s length in bytes.
+The `flg` is reader flag, pass 0 if you don't need it, see `reader flag` for details.
+The `alc` is memory allocator, pass NULL if you don't need it, see `memory allocator` for details.
+The `err` is a pointer to receive error message, pass NULL if you don't need it.
+ +```c +yyjson_doc *yyjson_read_opts(char *dat, + size_t len, + yyjson_read_flag flg, + const yyjson_alc *alc, + yyjson_read_err *err); +``` + +Sample code: + +```c +const char *dat = your_file.bytes; +size_t len = your_file.size; + +yyjson_read_flag flg = YYJSON_READ_ALLOW_COMMENTS | YYJSON_READ_ALLOW_INF_AND_NAN; +yyjson_doc *doc = yyjson_read_opts((char *)dat, len, flg, NULL, NULL); + +if (doc) {...} + +yyjson_doc_free(doc); +``` + +## Read JSON incrementally + +Reading a very large JSON document can freeze the program for a short while. If +this is not acceptable, incremental reading can be used. + +Incremental reading is recommended only for large documents and only when the +program needs to be responsive. Incremental reading is slightly slower than +`yyjson_read()` and `yyjson_read_opts()`. + +Note: The incremental JSON reader only supports standard JSON. +Flags for non-standard features (e.g. comments, trailing commas) are ignored. + +To read a large JSON document incrementally: + +1. Call `yyjson_incr_new()` to create the state for incremental reading. +2. Call `yyjson_incr_read()` repeatedly. +3. Call `yyjson_incr_free()` to free the state. + +### Create the state for incremental reading + +The `buf` should be a UTF-8 string, null-terminator is not required. +You can pass a const string if you don't use the `YYJSON_READ_INSITU` flag.
+The `buf_len` is the length of `buf` in bytes. +The `flg` is reader flag. Pass 0 if you don't need it. See reader flag for details. +The `alc` is memory allocator, pass NULL if you don't need it. See `memory allocator` for details.
+ +The function returns a new state, or NULL if `flg` is invalid or if a memory allocation error occurs. + +```c +yyjson_incr_state *yyjson_incr_new(char *buf, size_t buf_len, yyjson_read_flag flg, const yyjson_alc *alc); +``` + +### Perform incremental read + +Performs incremental read of up to `len` bytes. + +The `state` for incremental reading is created using `yyjson_incr_new()`.
+The `len` is the maximum number of bytes to read, counting from the start of the JSON data.
+The `err` is a pointer to receive the error information. Required.
+ +The function returns a document object when the reading is complete and NULL otherwise. +If `err->code` is set to `YYJSON_READ_ERROR_MORE`, it indicates that parsing is not yet complete. +Then, increase `len` by some kilobytes and call this function again. +Continue increasing `len` until `len == buf_len` (the total length of the input buffer) or until an error other than `YYJSON_READ_ERROR_MORE` is returned. + +Note: Parsing in very small increments is not efficient. +An increment of several kilobytes or megabytes is recommended. + +```c +yyjson_doc *yyjson_incr_read(yyjson_incr_state *state, size_t len, yyjson_read_err *err); +``` + +### Free the state used for incremental reading + +Free the `state` created by `yyjson_incr_new()`. + +```c +void yyjson_incr_free(yyjson_incr_state *state); +``` + +### Sample code + +```c +const char *dat = your_file.bytes; +size_t len = your_file.size; + +yyjson_read_flag flg = YYJSON_READ_NOFLAG; +yyjson_incr_state *state = yyjson_incr_new(dat, len, flg, NULL); +yyjson_doc *doc; +yyjson_read_err err; +size_t read_so_far = 0; +do { + read_so_far += 100000; + if (read_so_far > len) + read_so_far = len; + doc = yyjson_incr_read(state, read_so_far, &err); + if (err.code != YYJSON_READ_ERROR_MORE) + break; +} while (read_so_far < len); +yyjson_incr_free(state); + +if (doc != NULL) { ... } + +yyjson_doc_free(doc); +``` + +## Reader error handling + +When reading JSON fails and you need error information, you can pass a `yyjson_read_err` pointer to the `yyjson_read_xxx()` functions to receive the error details. + +Sample code: +```c +char *dat = ...; +size_t dat_len = ...; +yyjson_read_err err; +yyjson_doc *doc = yyjson_read_opts(dat, dat_len, 0, NULL, &err); + +if (!doc) { + printf("read error: %s, code: %u at byte position: %lu\n", + err.msg, err.code, err.pos); + // printed: + // read error: trailing comma is not allowed, code: 7, at byte position: 40 +} + +yyjson_doc_free(doc); +``` + +The pos in the error information indicates the byte position where the error occurred. If you need the line and column number of the error, you can use the `yyjson_locate_pos()` function. Note that the `line` and `column` start from 1, while `character` starts from 0. All values are calculated based on Unicode characters to ensure compatibility with various text editors. + +Sample code: +```c +char *dat = ...; +size_t dat_len = ...; +yyjson_read_err err = ...; + +size_t line, col, chr; +if (yyjson_locate_pos(dat, dat_len, err.pos, &line, &col, &chr)) { + printf("error at line: %lu, column: %lu, character index: %lu\n", + line, col, chr); + // printed: + // error at line: 3, column: 5, character index: 32 +} +``` + +## Reader flag +The library provides a set of flags for JSON reader.
+ +You can use a single flag, or combine multiple flags with bitwise `|` operator.
+ +Non-standard flags (such as `YYJSON_READ_JSON5`) have no performance impact when reading standard JSON input. + +### **YYJSON_READ_NOFLAG = 0** + +This is the default flag for JSON reader (RFC-8259 or ECMA-404 compliant): + +- Read positive integer as `uint64_t`. +- Read negative integer as `int64_t`. +- Read floating-point number as `double` with correct rounding. +- Read integer which cannot fit in `uint64_t` or `int64_t` as `double`. +- Report error if double number is infinity. +- Report error if string contains invalid UTF-8 character or BOM. +- Report error on trailing commas, comments, `Inf` and `NaN` literals. + +### **YYJSON_READ_INSITU** +Read the input data in-situ.
+ +This option allows the reader to modify and use the input data to store string values, which can slightly improve reading speed. However, the caller must ensure that the input data is held until the document is freed. The input data must be padded with at least `YYJSON_PADDING_SIZE` bytes. For example: `[1,2]` should be `[1,2]\0\0\0\0`, input length should be 5. + +Sample code: + +```c +size_t dat_len = ...; +char *buf = malloc(dat_len + YYJSON_PADDING_SIZE); // create a buffer larger than (len + 4) +read_from_socket(buf, ...); +memset(buf + file_size, 0, YYJSON_PADDING_SIZE); // set 4-byte padding after data + +yyjson_doc *doc = yyjson_read_opts(buf, dat_len, YYJSON_READ_INSITU, NULL, NULL); +if (doc) {...} +yyjson_doc_free(doc); +free(buf); // the input dat should free after document. +``` + +### **YYJSON_READ_STOP_WHEN_DONE** +Stop parsing when reaching the end of a JSON document instead of issues an error if there's additional content after it.
+ +This option is useful for parsing small pieces of JSON within larger data, such as [NDJSON](https://en.wikipedia.org/wiki/JSON_streaming).
+ +Sample code: + +```c +// Single file with multiple JSON, such as: +// [1,2,3] [4,5,6] {"a":"b"} + +size_t file_size = ...; +char *dat = malloc(file_size + 4); +your_read_file(dat, file); +memset(dat + file_size, 0, 4); // add padding + +char *hdr = dat; +char *end = dat + file_size; +yyjson_read_flag flg = YYJSON_READ_INSITU | YYJSON_READ_STOP_WHEN_DONE; + +while (true) { + yyjson_doc *doc = yyjson_read_opts(hdr, end - hdr, flg, NULL, NULL); + if (!doc) break; + your_doc_process(doc); + hdr += yyjson_doc_get_read_size(doc); // move to next position + yyjson_doc_free(doc); +} +free(dat); +``` + +### **YYJSON_READ_ALLOW_TRAILING_COMMAS** +Allow a single trailing comma at the end of an object or array (non-standard), for example: + +``` +{ + "a": 1, + "b": 2, +} + +[ + "a", + "b", +] +``` + +### **YYJSON_READ_ALLOW_COMMENTS** +Allow C-style single-line and multi-line comments (non-standard), for example: + +``` +{ + "name": "Harry", // single-line comment + "id": /* multi-line comment */ 123 +} +``` + +### **YYJSON_READ_ALLOW_INF_AND_NAN** +Allow nan/inf number or case-insensitive literal (non-standard), for example: + +``` +{ + "large": 123e999, + "nan1": NaN, + "nan2": nan, + "inf1": Inf, + "inf2": -Infinity +} +``` + +### **YYJSON_READ_NUMBER_AS_RAW** +Read all numbers as raw strings without parsing. + +This flag is useful if you want to handle number parsing yourself. +You can use the following functions to extract raw strings: +```c +bool yyjson_is_raw(yyjson_val *val); +const char *yyjson_get_raw(yyjson_val *val); +size_t yyjson_get_len(yyjson_val *val) +``` + +### **YYJSON_READ_BIGNUM_AS_RAW** +Read big numbers as raw strings. + +This flag is useful if you want to parse these big numbers yourself. +These big numbers include integers that cannot be represented by `int64_t` and `uint64_t`, and floating-point numbers that cannot be represented by finite `double`. + +Note that this flag will be overridden by `YYJSON_READ_NUMBER_AS_RAW` flag. + +### **YYJSON_READ_ALLOW_INVALID_UNICODE** +Allow reading invalid unicode when parsing string values (non-standard), +for example: +``` +"\x80xyz" +"\xF0\x81\x81\x81" +``` +This flag permits invalid characters to appear in the string values, but it still reports errors for invalid escape sequences. It does not impact the performance of correctly encoded strings. + +***Warning***: when using this option, be aware that strings within JSON values may contain incorrect encoding, so you need to handle these strings carefully to avoid security risks. + +### **YYJSON_READ_ALLOW_BOM** +Allow UTF-8 BOM and skip it before parsing if any (non-standard). + +### **YYJSON_READ_ALLOW_EXT_NUMBER** +Allow extended number formats (non-standard): +- Hexadecimal numbers, such as `0x7B`. +- Numbers with leading or trailing decimal point, such as `.123`, `123.`. +- Numbers with a leading plus sign, such as `+123`. + +### **YYJSON_READ_ALLOW_EXT_ESCAPE** +Allow extended escape sequences in strings (non-standard): +- Additional escapes: `\a`, `\e`, `\v`, ``\'``, `\?`, `\0`. +- Hex escapes: `\xNN`, such as `\x7B`. +- Line continuation: backslash followed by line terminator sequences. +- Unknown escape: if backslash is followed by an unsupported character, + the backslash will be removed and the character will be kept as-is. + However, `\1`-`\9` will still trigger an error. + +### **YYJSON_READ_ALLOW_EXT_WHITESPACE** +Allow extended whitespace characters (non-standard): +- Vertical tab `\v` and form feed `\f`. +- Line separator `\u2028` and paragraph separator `\u2029`. +- Non-breaking space `\xA0`. +- Byte order mark: `\uFEFF`. +- Other Unicode characters in the Zs (Separator, space) category. + +### **YYJSON_READ_ALLOW_SINGLE_QUOTED_STR** +Allow strings enclosed in single quotes (non-standard), such as ``'ab'``. + +### **YYJSON_READ_ALLOW_UNQUOTED_KEY** +Allow object keys without quotes (non-standard), such as `{a:1,b:2}`. +This extends the ECMAScript IdentifierName rule by allowing any +non-whitespace character with code point above `U+007F`. + +### **YYJSON_READ_JSON5** +Allow JSON5 format, see: https://json5.org. + +This flag supports all JSON5 features with some additional extensions: +- Accepts more escape sequences than JSON5 (e.g. `\a`, `\e`). +- Unquoted keys are and not limited to ECMAScript IdentifierName. +- Allow case-insensitive `NaN`, `Inf` and `Infinity` literals. + +For example: +```json +{ + /* JSON5 example */ + id: 123, + name: 'Harry', + color: 0x66CCFF, + min: .001, + max: Inf, + data: '\x00\xAA\xFF', +} +``` + +--------------- +# Writing JSON +The library provides 4 sets of functions for writing JSON.
+Each function accepts an input of JSON document or root value, and returns a UTF-8 string or file. + +## Write JSON to string +The `doc/val` is JSON document or root value, if you pass NULL, you will get NULL result.
+The `flg` is writer flag, pass 0 if you don't need it, see `writer flag` for details.
+The `len` is a pointer to receive output length (not including the + null-terminator), pass NULL if you don't need it.
+This function returns a new JSON string, or NULL if error occurs.
+The string is encoded as UTF-8 with a null-terminator.
+You should use free() or alc->free() to release it when it's no longer needed. + +```c +// doc -> str +char *yyjson_write(const yyjson_doc *doc, yyjson_write_flag flg, size_t *len); +// mut_doc -> str +char *yyjson_mut_write(const yyjson_mut_doc *doc, yyjson_write_flag flg, size_t *len); +// val -> str +char *yyjson_val_write(const yyjson_val *val, yyjson_write_flag flg, size_t *len); +// mut_val -> str +char *yyjson_mut_val_write(const yyjson_mut_val *val, yyjson_write_flag flg, size_t *len); +``` + +Sample code 1: + +```c +yyjson_doc *doc = yyjson_read("[1,2,3]", 7, 0); +char *json = yyjson_write(doc, YYJSON_WRITE_PRETTY, NULL); +printf("%s\n", json); +free(json); +``` + +Sample code 2: +```c +yyjson_mut_doc *doc = yyjson_mut_doc_new(NULL); +yyjson_mut_val *arr = yyjson_mut_arr(doc); +yyjson_mut_doc_set_root(doc, arr); +yyjson_mut_arr_add_int(doc, arr, 1); +yyjson_mut_arr_add_int(doc, arr, 2); +yyjson_mut_arr_add_int(doc, arr, 3); + +char *json = yyjson_mut_write(doc, YYJSON_WRITE_PRETTY, NULL); +printf("%s\n", json); +free(json); +``` + +## Write JSON to file +The `path` is output JSON file path. This should be a null-terminated string using the system's native encoding. If the path is invalid, you will get an error. If the file is not empty, the content will be discarded.
+The `doc/val` is JSON document or root value, if you pass NULL, you will get an error.
+The `flg` is writer flag, pass 0 if you don't need it, see `writer flag` for details.
+The `alc` is memory allocator, pass NULL if you don't need it, see `memory allocator` for details.
+The `err` is a pointer to receive error message, pass NULL if you don't need it.
+This function returns true on success, or false if error occurs.
+ +```c +// doc -> file +bool yyjson_write_file(const char *path, const yyjson_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err); +// mut_doc -> file +bool yyjson_mut_write_file(const char *path, const yyjson_mut_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err); +// val -> file +bool yyjson_val_write_file(const char *path, const yyjson_val *val, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err); +// mut_val -> file +bool yyjson_mut_val_write_file(const char *path, const yyjson_mut_val *val, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err); +``` + +Sample code: + +```c +yyjson_doc *doc = yyjson_read_file("/tmp/test.json", 0, NULL, NULL); +bool suc = yyjson_write_file("tmp/test.json", doc, YYJSON_WRITE_PRETTY, NULL, NULL); +if (suc) printf("OK"); +``` + +## Write JSON to file pointer +The `fp` is output file pointer, The data will be written to the current position of the file.
+The `doc/val` is JSON document or root value, if you pass NULL, you will get an error.
+The `flg` is writer flag, pass 0 if you don't need it, see `writer flag` for details.
+The `alc` is memory allocator, pass NULL if you don't need it, see `memory allocator` for details.
+The `err` is a pointer to receive error message, pass NULL if you don't need it.
+This function returns true on success, or false if error occurs.
+ +```c +// doc -> file +bool yyjson_write_fp(FILE *fp, const yyjson_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err); +// mut_doc -> file +bool yyjson_mut_write_fp(FILE *fp, const yyjson_mut_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err); +// val -> file +bool yyjson_val_write_fp(FILE *fp, const yyjson_val *val, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err); +// mut_val -> file +bool yyjson_mut_val_write_fp(FILE *fp, const yyjson_mut_val *val, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err); +``` + +Sample code: + +```c +FILE *fp = fdopen(fd, "wb"); // POSIX file descriptor (fd) +bool suc = yyjson_write_fp(fp, doc, YYJSON_WRITE_PRETTY, NULL, NULL); +if (fp) fclose(fp); +if (suc) printf("OK"); +``` + +## Write JSON with options +The `doc/val` is JSON document or root value, if you pass NULL, you will get NULL result.
+The `flg` is writer flag, pass 0 if you don't need it, see `writer flag` for details.
+The `alc` is memory allocator, pass NULL if you don't need it, see `memory allocator` for details.
+The `len` is a pointer to receive output length (not including the + null-terminator), pass NULL if you don't need it.
+The `err` is a pointer to receive error message, pass NULL if you don't need it.
+ +This function returns a new JSON string, or NULL if error occurs.
+The string is encoded as UTF-8 with a null-terminator.
+You should use free() or alc->free() to release it when it's no longer needed. + +```c +char *yyjson_write_opts(const yyjson_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, size_t *len, yyjson_write_err *err); + +char *yyjson_mut_write_opts(const yyjson_mut_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, size_t *len, yyjson_write_err *err); + +char *yyjson_val_write_opts(const yyjson_val *val, yyjson_write_flag flg, const yyjson_alc *alc, size_t *len, yyjson_write_err *err); + +char *yyjson_mut_val_write_opts(const yyjson_mut_val *val, yyjson_write_flag flg, const yyjson_alc *alc, size_t *len, yyjson_write_err *err); +``` + +Sample code: + +```c +yyjson_doc *doc = ...; + +// init an allocator with stack memory +char buf[64 * 1024]; +yyjson_alc alc; +yyjson_alc_pool_init(&alc, buf, sizeof(buf)); + +// write +size_t len; +yyjson_write_err err; +char *json = yyjson_write_opts(doc, YYJSON_WRITE_PRETTY | YYJSON_WRITE_ESCAPE_UNICODE, &alc, &len, &err); + +// get result +if (json) { + printf("suc: %lu\n%s\n", len, json); +} else { + printf("err: %u msg:%s\n", err.code, err.msg); +} +alc.free(alc.ctx, json); +``` + + +## Writer flag +The library provides a set of flags for JSON writer.
+You can use a single flag, or combine multiple flags with bitwise `|` operator. + +### **YYJSON_WRITE_NOFLAG = 0** +This is the default flag for JSON writer: + +- Writes JSON in minified format. +- Reports an error on encountering `inf` or `nan` number. +- Reports an error on encountering invalid UTF-8 strings. +- Does not escape unicode or slashes. + +### **YYJSON_WRITE_PRETTY** +Writes JSON with a pretty format uing a 4-space indent. + +### **YYJSON_WRITE_PRETTY_TWO_SPACES** +Writes JSON with a pretty format uing a 2-space indent. +This flag will override `YYJSON_WRITE_PRETTY` flag. + +### **YYJSON_WRITE_ESCAPE_UNICODE** +Escape unicode as `\uXXXX`, making the output ASCII-only, for example: + +```json +["Alizée, 😊"] +["Aliz\\u00E9e, \\uD83D\\uDE0A"] +``` + +### **YYJSON_WRITE_ESCAPE_SLASHES** +Escapes the forward slash character `/` as `\/`, for example: + +```json +["https://github.com"] +["https:\/\/github.com"] +``` + +### **YYJSON_WRITE_ALLOW_INF_AND_NAN** +Writes inf/nan numbers as `Infinity` and `NaN` literals instead of reporting errors.
+ +Note that this output is **NOT** standard JSON and may be rejected by other JSON libraries, for example: + +```js +{"not_a_number":NaN,"large_number":Infinity} +``` + +### **YYJSON_WRITE_INF_AND_NAN_AS_NULL** +Writes inf/nan numbers as `null` literals instead of reporting errors.
+This flag will override `YYJSON_WRITE_ALLOW_INF_AND_NAN` flag, for example: + +```js +{"not_a_number":null,"large_number":null} +``` + +### **YYJSON_WRITE_ALLOW_INVALID_UNICODE** +Allows invalid unicode when encoding string values. + +Invalid characters within string values will be copied byte by byte. If `YYJSON_WRITE_ESCAPE_UNICODE` flag is also set, invalid characters will be escaped as `\uFFFD` (replacement character). + +This flag does not affect the performance of correctly encoded string. + +### **YYJSON_WRITE_NEWLINE_AT_END** +Adds a newline character `\n` at the end of the JSON. +This can be helpful for text editors or NDJSON. + +### **YYJSON_WRITE_FP_TO_FLOAT** +Write floating-point numbers using single-precision (float). +This casts `double` to `float` before serialization. +This will produce shorter output, but may lose some precision. +This flag is ignored if `YYJSON_WRITE_FP_TO_FIXED(prec)` is also used. + +### **YYJSON_WRITE_FP_TO_FIXED(prec)** +Write floating-point number using fixed-point notation. +This is similar to ECMAScript `Number.prototype.toFixed(prec)`, +but with trailing zeros removed. The `prec` ranges from 1 to 15. +This will produce shorter output but may lose some precision. + + + +--------------- +# Accessing JSON Document + +## JSON Document + +You can access the content of a document with the following functions: +```c +// Get the root value of this JSON document. +yyjson_val *yyjson_doc_get_root(yyjson_doc *doc); + +// Get how many bytes are read when parsing JSON. +// e.g. "[1,2,3]" returns 7. +size_t yyjson_doc_get_read_size(yyjson_doc *doc); + +// Get total value count in this JSON document. +// e.g. "[1,2,3]" returns 4 (1 array and 3 numbers). +size_t yyjson_doc_get_val_count(yyjson_doc *doc); +``` + +A document holds all the memory for its internal values and strings. When you no longer need it, you should release the document and free up all the memory: +```c +// Free the document; if NULL is passed in, do nothing. +void yyjson_doc_free(yyjson_doc *doc); +``` + +## JSON Value + +Each JSON Value has a type and subtype, as specified in the table: + +| Type | Subtype | | +| ---------------- | -------------------- | ----------------------- | +| YYJSON_TYPE_NONE | | Invalid value | +| YYJSON_TYPE_RAW | | Raw string | +| YYJSON_TYPE_NULL | | `null` literal | +| YYJSON_TYPE_BOOL | YYJSON_SUBTYPE_FALSE | `false` literal | +| YYJSON_TYPE_BOOL | YYJSON_SUBTYPE_TRUE | `true` literal | +| YYJSON_TYPE_NUM | YYJSON_SUBTYPE_UINT | `uint64_t` nummer | +| YYJSON_TYPE_NUM | YYJSON_SUBTYPE_SINT | `int64_t` number | +| YYJSON_TYPE_NUM | YYJSON_SUBTYPE_REAL | `double` number | +| YYJSON_TYPE_STR | | String value | +| YYJSON_TYPE_STR | YYJSON_SUBTYPE_NOESC | String value, no-escape | +| YYJSON_TYPE_ARR | | Array value | +| YYJSON_TYPE_OBJ | | Object value | + +- `YYJSON_TYPE_NONE` means invalid value, it does not appear when the JSON is successfully parsed. +- `YYJSON_TYPE_RAW` only appears when the corresponding flag `YYJSON_READ_XXX_AS_RAW` is used. +- `YYJSON_SUBTYPE_NOESC` is used to optimize the writing speed of strings that do not need to be escaped. This subtype is used internally, and the user does not need to handle it. + +The following functions can be used to determine the type of a JSON value. + +```c +// Returns the type and subtype of a JSON value. +// Returns 0 if the input is NULL. +yyjson_type yyjson_get_type(yyjson_val *val); +yyjson_subtype yyjson_get_subtype(yyjson_val *val); + +// Returns value's tag, see `Data Structures` doc for details. +uint8_t yyjson_get_tag(yyjson_val *val); + +// returns type description, such as: +// "null", "string", "array", "object", "true", "false", +// "uint", "sint", "real", "unknown" +const char *yyjson_get_type_desc(yyjson_val *val); + +// Returns true if the JSON value is specified type. +// Returns false if the input is NULL or not the specified type. +bool yyjson_is_null(yyjson_val *val); // null +bool yyjson_is_true(yyjson_val *val); // true +bool yyjson_is_false(yyjson_val *val); // false +bool yyjson_is_bool(yyjson_val *val); // true/false +bool yyjson_is_uint(yyjson_val *val); // uint64_t +bool yyjson_is_sint(yyjson_val *val); // int64_t +bool yyjson_is_int(yyjson_val *val); // uint64_t/int64_t +bool yyjson_is_real(yyjson_val *val); // double +bool yyjson_is_num(yyjson_val *val); // uint64_t/int64_t/double +bool yyjson_is_str(yyjson_val *val); // string +bool yyjson_is_arr(yyjson_val *val); // array +bool yyjson_is_obj(yyjson_val *val); // object +bool yyjson_is_ctn(yyjson_val *val); // array/object +bool yyjson_is_raw(yyjson_val *val); // raw string +``` + +The following functions can be used to get the contents of the JSON value. + +```c +// Returns the raw string, or NULL if `val` is not raw type. +const char *yyjson_get_raw(yyjson_val *val); + +// Returns bool value, or false if `val` is not bool type. +bool yyjson_get_bool(yyjson_val *val); + +// Returns uint64_t value, or 0 if `val` is not uint type. +uint64_t yyjson_get_uint(yyjson_val *val); + +// Returns int64_t value, or 0 if `val` is not sint type. +int64_t yyjson_get_sint(yyjson_val *val); + +// Returns int value (may overflow), or 0 if `val` is not uint/sint type. +int yyjson_get_int(yyjson_val *val); + +// Returns double value, or 0 if `val` is not real type. +double yyjson_get_real(yyjson_val *val); + +// Returns double value (typecast), or 0 if `val` is not uint/sint/real type. +double yyjson_get_num(yyjson_val *val); + +// Returns the string value, or NULL if `val` is not string type. +const char *yyjson_get_str(yyjson_val *val); + +// Returns the content length (string length in bytes, array size, +// object size), or 0 if the value does not contains length data. +size_t yyjson_get_len(yyjson_val *val); + +// Returns whether the value is equals to a string. +// Returns false if input is NULL or `val` is not string. +bool yyjson_equals_str(yyjson_val *val, const char *str); +bool yyjson_equals_strn(yyjson_val *val, const char *str, size_t len); +``` + + +The following functions can be used to modify the content of a JSON value.
+ +Warning: For immutable documents, these functions will break the `immutable` convention, you should use this set of APIs with caution (e.g. make sure the document is only accessed in a single thread). + +```c +// Set the value to new type and content. +// Returns false if input is NULL or `val` is object or array. +bool yyjson_set_raw(yyjson_val *val, const char *raw, size_t len); +bool yyjson_set_null(yyjson_val *val); +bool yyjson_set_bool(yyjson_val *val, bool num); +bool yyjson_set_uint(yyjson_val *val, uint64_t num); +bool yyjson_set_sint(yyjson_val *val, int64_t num); +bool yyjson_set_int(yyjson_val *val, int num); +bool yyjson_set_float(yyjson_val *val, float num); +bool yyjson_set_double(yyjson_val *val, double num); +bool yyjson_set_real(yyjson_val *val, double num); + +// The string is not copied, should be held by caller. +bool yyjson_set_str(yyjson_val *val, const char *str); +bool yyjson_set_strn(yyjson_val *val, const char *str, size_t len); +``` + + +## JSON Array + +The following functions can be used to access a JSON array.
+ +Note that accessing elements by index may take a linear search time. Therefore, if you need to iterate through an array, it is recommended to use the iterator API. + +```c +// Returns the number of elements in this array. +// Returns 0 if the input is not an array. +size_t yyjson_arr_size(yyjson_val *arr); + +// Returns the element at the specified position (linear search time). +// Returns NULL if the index is out of bounds, or input is not an array. +yyjson_val *yyjson_arr_get(yyjson_val *arr, size_t idx); + +// Returns the first element of this array (constant time). +// Returns NULL if array is empty or intput is not an array. +yyjson_val *yyjson_arr_get_first(yyjson_val *arr); + +// Returns the last element of this array (linear search time). +// Returns NULL if array is empty or intput is not an array. +yyjson_val *yyjson_arr_get_last(yyjson_val *arr); +``` + +## JSON Array Iterator +There are two ways to traverse an array:
+ +Sample code 1 (iterator API): +```c +yyjson_val *arr; // the array to be traversed + +yyjson_val *val; +yyjson_arr_iter iter = yyjson_arr_iter_with(arr); +while ((val = yyjson_arr_iter_next(&iter))) { + your_func(val); +} +``` + +Sample code 2 (foreach macro): +```c +yyjson_val *arr; // the array to be traversed + +size_t idx, max; +yyjson_val *val; +yyjson_arr_foreach(arr, idx, max, val) { + your_func(idx, val); +} +``` +
+ +There's also mutable version API to traverse an mutable array:
+ +Sample code 1 (mutable iterator API): +```c +yyjson_mut_val *arr; // the array to be traversed + +yyjson_mut_val *val; +yyjson_mut_arr_iter iter = yyjson_mut_arr_iter_with(arr); +while ((val = yyjson_mut_arr_iter_next(&iter))) { + if (your_val_is_unused(val)) { + // you can remove current value inside iteration + yyjson_mut_arr_iter_remove(&iter); + } +} +``` + +Sample code 2 (mutable foreach macro): +```c +yyjson_mut_val *arr; // the array to be traversed + +size_t idx, max; +yyjson_mut_val *val; +yyjson_mut_arr_foreach(arr, idx, max, val) { + your_func(idx, val); +} +``` + + +## JSON Object +The following functions can be used to access a JSON object.
+ +Note that accessing elements by key may take a linear search time. Therefore, if you need to iterate through an object, it is recommended to use the iterator API. + + +```c +// Returns the number of key-value pairs in this object. +// Returns 0 if input is not an object. +size_t yyjson_obj_size(yyjson_val *obj); + +// Returns the value to which the specified key is mapped. +// Returns NULL if this object contains no mapping for the key. +yyjson_val *yyjson_obj_get(yyjson_val *obj, const char *key); +yyjson_val *yyjson_obj_getn(yyjson_val *obj, const char *key, size_t key_len); + +// If the order of object's key is known at compile-time, +// you can use this method to avoid searching the entire object. +// e.g. { "x":1, "y":2, "z":3 } +yyjson_val *obj = ...; +yyjson_obj_iter iter = yyjson_obj_iter_with(obj); + +yyjson_val *x = yyjson_obj_iter_get(&iter, "x"); +yyjson_val *z = yyjson_obj_iter_get(&iter, "z"); +``` + +## JSON Object Iterator +There are two ways to traverse an object:
+ +Sample code 1 (iterator API): +```c +yyjson_val *obj; // the object to be traversed + +yyjson_val *key, *val; +yyjson_obj_iter iter = yyjson_obj_iter_with(obj); +while ((key = yyjson_obj_iter_next(&iter))) { + val = yyjson_obj_iter_get_val(key); + your_func(key, val); +} +``` + +Sample code 2 (foreach macro): +```c +yyjson_val *obj; // this is your object + +size_t idx, max; +yyjson_val *key, *val; +yyjson_obj_foreach(obj, idx, max, key, val) { + your_func(key, val); +} +``` +
+ +There's also mutable version API to traverse an mutable object:
+ +Sample code 1 (mutable iterator API): +```c +yyjson_mut_val *obj; // the object to be traversed + +yyjson_mut_val *key, *val; +yyjson_mut_obj_iter iter = yyjson_mut_obj_iter_with(obj); +while ((key = yyjson_mut_obj_iter_next(&iter))) { + val = yyjson_mut_obj_iter_get_val(key); + if (your_key_is_unused(key)) { + // you can remove current kv pair inside iteration + yyjson_mut_obj_iter_remove(&iter); + } +} +``` + +Sample code 2 (mutable foreach macro): +```c +yyjson_mut_val *obj; // the object to be traversed + +size_t idx, max; +yyjson_val *key, *val; +yyjson_obj_foreach(obj, idx, max, key, val) { + your_func(key, val); +} +``` + + +--------------- +# Creating JSON Document +The `yyjson_mut_doc` and related APIs are used to build JSON documents.
+ +Please note that `yyjson_mut_doc` uses a **memory pool** to hold all strings and values. The pool can only be created, grown, or freed in its entirety. Therefore, `yyjson_mut_doc` is more suitable for write-once than mutation of an existing document.
+ +JSON objects and arrays are composed of linked lists, so each `yyjson_mut_val` can only be added to one object or array. + +Sample code: + +```c +// Build this JSON: +// { +// "page": 123, +// "names": [ "Harry", "Ron", "Hermione" ] +// } + +// Create a mutable document. +yyjson_mut_doc *doc = yyjson_mut_doc_new(NULL); + +// Create an object, the value's memory is held by doc. +yyjson_mut_val *root = yyjson_mut_obj(doc); + +// Create key and value, add to the root object. +yyjson_mut_val *key = yyjson_mut_str(doc, "page"); +yyjson_mut_val *num = yyjson_mut_int(doc, 123); +yyjson_mut_obj_add(root, key, num); + +// Create 3 string value, add to the array object. +yyjson_mut_val *names = yyjson_mut_arr(doc); +yyjson_mut_val *name1 = yyjson_mut_str(doc, "Harry"); +yyjson_mut_val *name2 = yyjson_mut_str(doc, "Ron"); +yyjson_mut_val *name3 = yyjson_mut_str(doc, "Hermione"); +yyjson_mut_arr_append(names, name1); +yyjson_mut_arr_append(names, name2); +yyjson_mut_arr_append(names, name3); +yyjson_mut_obj_add(root, yyjson_mut_str(doc, "names"), names); + +// ⌠Wrong! the value is already added to another container. +yyjson_mut_obj_add(root, key, name1); + +// Set the document's root value. +yyjson_mut_doc_set_root(doc, root); + +// Write to JSON string +const char *json = yyjson_mut_write(doc, 0, NULL); + +// Free the memory of doc and all values which is created from this doc. +yyjson_mut_doc_free(doc); +``` + + +## Mutable Document + +The following functions are used to create, modify, copy, and destroy a JSON document.
+ +```c +// Creates and returns a new mutable JSON document. +// Returns NULL on error (e.g. memory allocation failure). +// If `alc` is NULL, the default allocator will be used. +yyjson_mut_doc *yyjson_mut_doc_new(yyjson_alc *alc); + +// Delete the JSON document, free the memory of this doc +// and all values created from this doc +void yyjson_mut_doc_free(yyjson_mut_doc *doc); + +// Set the internal memory pool size (string length and value count). +// It can be used to reserve memory for the next string and value creation. +bool yyjson_mut_doc_set_str_pool_size(yyjson_mut_doc *doc, size_t len); +bool yyjson_mut_doc_set_val_pool_size(yyjson_mut_doc *doc, size_t count); + +// Get or set the root value of this JSON document. +yyjson_mut_val *yyjson_mut_doc_get_root(yyjson_mut_doc *doc); +void yyjson_mut_doc_set_root(yyjson_mut_doc *doc, yyjson_mut_val *root); + +// Copies and returns a new mutable document/value from input. +// Returns NULL on error (e.g. memory allocation failure). + +// doc -> mut_doc +yyjson_mut_doc *yyjson_doc_mut_copy(yyjson_doc *doc, const yyjson_alc *alc); +// val -> mut_val +yyjson_mut_val *yyjson_val_mut_copy(yyjson_mut_doc *doc, yyjson_val *val); +// mut_doc -> mut_doc +yyjson_mut_doc *yyjson_mut_doc_mut_copy(yyjson_mut_doc *doc, const yyjson_alc *alc); +// mut_val -> mut_val +yyjson_mut_val *yyjson_mut_val_mut_copy(yyjson_mut_doc *doc, yyjson_mut_val *val); +// mut_doc -> doc +yyjson_doc *yyjson_mut_doc_imut_copy(yyjson_mut_doc *doc, yyjson_alc *alc); +// mut_val -> doc +yyjson_doc *yyjson_mut_val_imut_copy(yyjson_mut_val *val, yyjson_alc *alc); +``` + +## JSON Value Creation +The following functions are used to create mutable JSON value, +the value's memory is held by the document.
+ +```c +// Creates and returns a new value, returns NULL on error. +yyjson_mut_val *yyjson_mut_null(yyjson_mut_doc *doc); +yyjson_mut_val *yyjson_mut_true(yyjson_mut_doc *doc); +yyjson_mut_val *yyjson_mut_false(yyjson_mut_doc *doc); +yyjson_mut_val *yyjson_mut_bool(yyjson_mut_doc *doc, bool val); +yyjson_mut_val *yyjson_mut_uint(yyjson_mut_doc *doc, uint64_t num); +yyjson_mut_val *yyjson_mut_sint(yyjson_mut_doc *doc, int64_t num); +yyjson_mut_val *yyjson_mut_int(yyjson_mut_doc *doc, int64_t num); +yyjson_mut_val *yyjson_mut_float(yyjson_mut_doc *doc, float num); +yyjson_mut_val *yyjson_mut_double(yyjson_mut_doc *doc, double num); +yyjson_mut_val *yyjson_mut_real(yyjson_mut_doc *doc, double num); + +// Creates a string value, the input string is NOT copied. +yyjson_mut_val *yyjson_mut_str(yyjson_mut_doc *doc, const char *str); +yyjson_mut_val *yyjson_mut_strn(yyjson_mut_doc *doc, const char *str, size_t len); + +// Creates a string value, the input string is copied and held by the document. +yyjson_mut_val *yyjson_mut_strcpy(yyjson_mut_doc *doc, const char *str); +yyjson_mut_val *yyjson_mut_strncpy(yyjson_mut_doc *doc, const char *str, size_t len); +``` + + +## JSON Array Creation +The following functions are used to create mutable JSON array.
+ +```c +// Creates and returns an empty mutable array, returns NULL on error. +yyjson_mut_val *yyjson_mut_arr(yyjson_mut_doc *doc); + +// Creates and returns a mutable array with c array. +yyjson_mut_val *yyjson_mut_arr_with_bool(yyjson_mut_doc *doc, bool *vals, size_t count); +yyjson_mut_val *yyjson_mut_arr_with_sint(yyjson_mut_doc *doc, int64_t *vals, size_t count); +yyjson_mut_val *yyjson_mut_arr_with_uint(yyjson_mut_doc *doc, uint64_t *vals, size_t count); +yyjson_mut_val *yyjson_mut_arr_with_real(yyjson_mut_doc *doc, double *vals, size_t count); +yyjson_mut_val *yyjson_mut_arr_with_sint8(yyjson_mut_doc *doc, int8_t *vals, size_t count); +yyjson_mut_val *yyjson_mut_arr_with_sint16(yyjson_mut_doc *doc, int16_t *vals, size_t count); +yyjson_mut_val *yyjson_mut_arr_with_sint32(yyjson_mut_doc *doc, int32_t *vals, size_t count); +yyjson_mut_val *yyjson_mut_arr_with_sint64(yyjson_mut_doc *doc, int64_t *vals, size_t count); +yyjson_mut_val *yyjson_mut_arr_with_uint8(yyjson_mut_doc *doc, uint8_t *vals, size_t count); +yyjson_mut_val *yyjson_mut_arr_with_uint16(yyjson_mut_doc *doc, uint16_t *vals, size_t count); +yyjson_mut_val *yyjson_mut_arr_with_uint32(yyjson_mut_doc *doc, uint32_t *vals, size_t count); +yyjson_mut_val *yyjson_mut_arr_with_uint64(yyjson_mut_doc *doc, uint64_t *vals, size_t count); +yyjson_mut_val *yyjson_mut_arr_with_float(yyjson_mut_doc *doc, float *vals, size_t count); +yyjson_mut_val *yyjson_mut_arr_with_double(yyjson_mut_doc *doc, double *vals, size_t count); +// sample code: +int vals[3] = {-1, 0, 1}; +yyjson_mut_val *arr = yyjson_mut_arr_with_sint32(doc, vals, 3); + +// Creates and returns a mutable array with strings, +// the strings should be encoded as UTF-8. +yyjson_mut_val *yyjson_mut_arr_with_str(yyjson_mut_doc *doc, const char **vals, size_t count); +yyjson_mut_val *yyjson_mut_arr_with_strn(yyjson_mut_doc *doc, const char **vals, const size_t *lens, size_t count); +yyjson_mut_val *yyjson_mut_arr_with_strcpy(yyjson_mut_doc *doc, const char **vals, size_t count); +yyjson_mut_val *yyjson_mut_arr_with_strncpy(yyjson_mut_doc *doc, const char **vals, const size_t *lens, size_t count); +// sample code: +const char strs[3] = {"Jan", "Feb", "Mar"}; +yyjson_mut_val *arr = yyjson_mut_arr_with_str(doc, strs, 3); +``` + +## JSON Array Modification + +The following functions are used to modify the contents of a JSON array.
+ +```c +// Inserts a value into an array at a given index. +// Returns false on error (e.g. out of bounds). +// Note that this function takes a linear search time. +bool yyjson_mut_arr_insert(yyjson_mut_val *arr, yyjson_mut_val *val, size_t idx); + +// Inserts a val at the end of the array, returns false on error. +bool yyjson_mut_arr_append(yyjson_mut_val *arr, yyjson_mut_val *val); + +// Inserts a val at the head of the array, returns false on error. +bool yyjson_mut_arr_prepend(yyjson_mut_val *arr, yyjson_mut_val *val); + +// Replaces a value at index and returns old value, returns NULL on error. +// Note that this function takes a linear search time. +yyjson_mut_val *yyjson_mut_arr_replace(yyjson_mut_val *arr, size_t idx, yyjson_mut_val *val); + +// Removes and returns a value at index, returns NULL on error. +// Note that this function takes a linear search time. +yyjson_mut_val *yyjson_mut_arr_remove(yyjson_mut_val *arr, size_t idx); + +// Removes and returns the first value in this array, returns NULL on error. +yyjson_mut_val *yyjson_mut_arr_remove_first(yyjson_mut_val *arr); + +// Removes and returns the last value in this array, returns NULL on error. +yyjson_mut_val *yyjson_mut_arr_remove_last(yyjson_mut_val *arr); + +// Removes all values within a specified range in the array. +// Note that this function takes a linear search time. +bool yyjson_mut_arr_remove_range(yyjson_mut_val *arr, size_t idx, size_t len); + +// Removes all values in this array. +bool yyjson_mut_arr_clear(yyjson_mut_val *arr); + +// Convenience API: +// Adds a value at the end of this array, returns false on error. +bool yyjson_mut_arr_add_val(yyjson_mut_val *arr, yyjson_mut_val *val); +bool yyjson_mut_arr_add_null(yyjson_mut_doc *doc, yyjson_mut_val *arr); +bool yyjson_mut_arr_add_true(yyjson_mut_doc *doc, yyjson_mut_val *arr); +bool yyjson_mut_arr_add_false(yyjson_mut_doc *doc, yyjson_mut_val *arr); +bool yyjson_mut_arr_add_bool(yyjson_mut_doc *doc, yyjson_mut_val *arr, bool val); +bool yyjson_mut_arr_add_uint(yyjson_mut_doc *doc, yyjson_mut_val *arr, uint64_t num); +bool yyjson_mut_arr_add_sint(yyjson_mut_doc *doc, yyjson_mut_val *arr, int64_t num); +bool yyjson_mut_arr_add_int(yyjson_mut_doc *doc, yyjson_mut_val *arr, int64_t num); +bool yyjson_mut_arr_add_float(yyjson_mut_doc *doc, yyjson_mut_val *arr, float num); +bool yyjson_mut_arr_add_double(yyjson_mut_doc *doc, yyjson_mut_val *arr, double num); +bool yyjson_mut_arr_add_real(yyjson_mut_doc *doc, yyjson_mut_val *arr, double num); +bool yyjson_mut_arr_add_str(yyjson_mut_doc *doc, yyjson_mut_val *arr, const char *str); +bool yyjson_mut_arr_add_strn(yyjson_mut_doc *doc, yyjson_mut_val *arr, const char *str, size_t len); +bool yyjson_mut_arr_add_strcpy(yyjson_mut_doc *doc, yyjson_mut_val *arr, const char *str); +bool yyjson_mut_arr_add_strncpy(yyjson_mut_doc *doc, yyjson_mut_val *arr, const char *str, size_t len); + +// Convenience API: +// Creates and adds a new array at the end of the array. +// Returns the new array, or NULL on error. +yyjson_mut_val *yyjson_mut_arr_add_arr(yyjson_mut_doc *doc, yyjson_mut_val *arr); + +// Convenience API: +// Creates and adds a new object at the end of the array. +// Returns the new object, or NULL on error. +yyjson_mut_val *yyjson_mut_arr_add_obj(yyjson_mut_doc *doc, yyjson_mut_val *arr); +``` + +## JSON Object Creation +The following functions are used to create mutable JSON object.
+ +```c +// Creates and returns a mutable object, returns NULL on error. +yyjson_mut_val *yyjson_mut_obj(yyjson_mut_doc *doc); + +// Creates and returns a mutable object with keys and values, +// returns NULL on error. The keys and values are NOT copied. +// The strings should be encoded as UTF-8 with null-terminator. +yyjson_mut_val *yyjson_mut_obj_with_str(yyjson_mut_doc *doc, + const char **keys, + const char **vals, + size_t count); +// sample code: +const char keys[] = {"name", "type", "id"}; +const char *vals[] = {"Harry", "student", "123456"}; +yyjson_mut_obj_with_str(doc, keys, vals, 3); + +// Creates and returns a mutable object with key-value pairs, +// returns NULL on error. The keys and values are NOT copied. +// The strings should be encoded as UTF-8 with null-terminator. +yyjson_mut_val *yyjson_mut_obj_with_kv(yyjson_mut_doc *doc, + const char **kv_pairs, + size_t pair_count); +// sample code: +const char *pairs[] = {"name", "Harry", "type", "student", "id", "123456"}; +yyjson_mut_obj_with_kv(doc, pairs, 3); +``` + +## JSON Object Modification +The following functions are used to modify the contents of a JSON object.
+ +```c +// Adds a key-value pair at the end of the object. +// The key must be a string value. +// This function allows duplicated key in one object. +bool yyjson_mut_obj_add(yyjson_mut_val *obj, yyjson_mut_val *key,yyjson_mut_val *val); + +// Adds a key-value pair to the object. +// The key must be a string value. +// This function may remove all key-value pairs for the given key before add. +// Note that this function takes a linear search time. +bool yyjson_mut_obj_put(yyjson_mut_val *obj, yyjson_mut_val *key, yyjson_mut_val *val); + +// Removes key-value pair from the object with a given key. +// Note that this function takes a linear search time. +bool yyjson_mut_obj_remove(yyjson_mut_val *obj, yyjson_mut_val *key); + +// Removes all key-value pairs in this object. +bool yyjson_mut_obj_clear(yyjson_mut_val *obj); + +// Convenience API: +// Adds a key-value pair at the end of the object. The key is not copied. +// Note that these functions allow duplicated key in one object. +bool yyjson_mut_obj_add_null(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key); +bool yyjson_mut_obj_add_true(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key); +bool yyjson_mut_obj_add_false(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key); +bool yyjson_mut_obj_add_bool(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, bool val); +bool yyjson_mut_obj_add_uint(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, uint64_t val); +bool yyjson_mut_obj_add_sint(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, int64_t val); +bool yyjson_mut_obj_add_int(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, int64_t val); +bool yyjson_mut_obj_add_float(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, float val); +bool yyjson_mut_obj_add_double(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, double val); +bool yyjson_mut_obj_add_real(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, double val); +bool yyjson_mut_obj_add_str(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, const char *val); +bool yyjson_mut_obj_add_strn(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, const char *val, size_t len); +bool yyjson_mut_obj_add_strcpy(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, const char *val); +bool yyjson_mut_obj_add_strncpy(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, const char *val, size_t len); +yyjson_mut_val *yyjson_mut_obj_add_arr(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *_key); +yyjson_mut_val *yyjson_mut_obj_add_obj(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *_key); + +// Convenience API: +// Removes all key-value pairs for the given key. +// Note that this function takes a linear search time. +bool yyjson_mut_obj_remove_str(yyjson_mut_val *obj, const char *key); +bool yyjson_mut_obj_remove_strn(yyjson_mut_val *obj, const char *key, size_t len); + +// Convenience API: +// Replaces all matching keys with the new key. +// Returns true if at least one key was renamed. +// This function takes a linear search time. +yyjson_api_inline bool yyjson_mut_obj_rename_key(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, const char *new_key); +yyjson_api_inline bool yyjson_mut_obj_rename_keyn(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, size_t len, const char *new_key, size_t new_len); +``` + + +--------------- +# JSON Pointer and Patch + +## JSON Pointer +The library supports querying JSON values using `JSON Pointer` ([RFC 6901](https://tools.ietf.org/html/rfc6901)). + +```c +// `JSON pointer` is a null-terminated string. +yyjson_val *yyjson_ptr_get(yyjson_val *val, const char *ptr); +yyjson_val *yyjson_doc_ptr_get(yyjson_doc *doc, const char *ptr); +yyjson_mut_val *yyjson_mut_ptr_get(yyjson_mut_val *val, const char *ptr); +yyjson_mut_val *yyjson_mut_doc_ptr_get(yyjson_mut_doc *doc, const char *ptr); + +// `JSON pointer` with string length, allow NUL (Unicode U+0000) characters inside. +yyjson_val *yyjson_ptr_getn(yyjson_val *val, const char *ptr, size_t len); +yyjson_val *yyjson_doc_ptr_getn(yyjson_doc *doc, const char *ptr, size_t len); +yyjson_mut_val *yyjson_mut_ptr_getn(yyjson_mut_val *val, const char *ptr, size_t len); +yyjson_mut_val *yyjson_mut_doc_ptr_getn(yyjson_mut_doc *doc, const char *ptr, size_t len); + +// `JSON pointer` with string length, context and error information. +yyjson_val *yyjson_ptr_getx(yyjson_val *val, const char *ptr, size_t len, yyjson_ptr_err *err); +yyjson_val *yyjson_doc_ptr_getx(yyjson_doc *doc, const char *ptr, size_t len, yyjson_ptr_err *err); +yyjson_mut_val *yyjson_mut_ptr_getx(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err); +yyjson_mut_val *yyjson_mut_doc_ptr_getx(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err); +``` + +For example, given the JSON document: +```json +{ + "size" : 3, + "users" : [ + {"id": 1, "name": "Harry"}, + {"id": 2, "name": "Ron"}, + {"id": 3, "name": "Hermione"} + ] +} +``` +The following JSON strings evaluate to the accompanying values: + +|Pointer|Matched Value| +|:--|:--| +| `""` | `the whole document` | +| `"/size"`| `3` | +| `"/users/0"` | `{"id": 1, "name": "Harry"}` | +| `"/users/1/name"` | `"Ron"` | +| `"/no_match"` | NULL | +| `"no_slash"` | NULL | +| `"/"` | NULL (match to empty key: root[""]) | + +```c +yyjson_doc *doc = ...; +yyjson_val *val = yyjson_doc_ptr_get(doc, "/users/1/name"); +printf("%s\n", yyjson_get_str(val)); // Ron + +yyjson_ptr_err err; +yyjson_val *val2 = yyjson_doc_ptr_getx(doc, "/", 1, &err); +if (!val2) printf("err %d: %s\n", err.code, err.msg); // err 3: cannot be resolved +``` + +The library also supports modifying JSON values using `JSON Pointer`. +```c +// Add or insert a new value. +bool yyjson_mut_ptr_add(yyjson_mut_val *val, const char *ptr, yyjson_mut_val *new_val, yyjson_mut_doc *doc); +bool yyjson_mut_ptr_addn(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_mut_doc *doc); +bool yyjson_mut_ptr_addx(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_mut_doc *doc, bool create_parent, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err); + +bool yyjson_mut_doc_ptr_add(yyjson_mut_doc *doc, const char *ptr, yyjson_mut_val *new_val); +bool yyjson_mut_doc_ptr_addn(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val); +bool yyjson_mut_doc_ptr_addx(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val, bool create_parent, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err); + +// Set a new value (add if it doesn't exist, replace if it does). +bool yyjson_mut_ptr_set(yyjson_mut_val *val, const char *ptr, yyjson_mut_val *new_val, yyjson_mut_doc *doc); +bool yyjson_mut_ptr_setn(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_mut_doc *doc); +bool yyjson_mut_ptr_setx(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_mut_doc *doc, bool create_parent, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err); + +bool yyjson_mut_doc_ptr_set(yyjson_mut_doc *doc, const char *ptr, yyjson_mut_val *new_val); +bool yyjson_mut_doc_ptr_setn(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val); +bool yyjson_mut_doc_ptr_setx(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val, bool create_parent, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err); + +// Replace an existing value. +yyjson_mut_val *yyjson_mut_ptr_replace(yyjson_mut_val *val, const char *ptr, yyjson_mut_val *new_val); +yyjson_mut_val *yyjson_mut_ptr_replacen(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val); +yyjson_mut_val *yyjson_mut_ptr_replacex(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err); + +yyjson_mut_val *yyjson_mut_doc_ptr_replace(yyjson_mut_doc *doc, const char *ptr, yyjson_mut_val *new_val); +yyjson_mut_val *yyjson_mut_doc_ptr_replacen(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val); +yyjson_mut_val *yyjson_mut_doc_ptr_replacex(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err); + +// Remove an existing value. +yyjson_mut_val *yyjson_mut_ptr_remove(yyjson_mut_val *val, const char *ptr); +yyjson_mut_val *yyjson_mut_ptr_removen(yyjson_mut_val *val, const char *ptr, size_t len); +yyjson_mut_val *yyjson_mut_ptr_removex(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err); + +yyjson_mut_val *yyjson_mut_doc_ptr_remove(yyjson_mut_doc *doc, const char *ptr); +yyjson_mut_val *yyjson_mut_doc_ptr_removen(yyjson_mut_doc *doc, const char *ptr, size_t len); +yyjson_mut_val *yyjson_mut_doc_ptr_removex(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err); +``` + +For example: +```c +yyjson_mut_doc *doc = ...; +// doc: {"a":0,"b":[1,2,3]} + +yyjson_mut_doc_ptr_set(doc, "/a", yyjson_mut_int(doc, 9)); +// now: {"a":9,"b":[1,2,3]} + +yyjson_mut_doc_ptr_add(doc, "/b/-", yyjson_mut_int(doc, 4)); +// now: {"a":9,"b":[1,2,3,4]} + +yyjson_mut_doc_ptr_remove(doc, "/b"); +// now: {"a":9} +``` + +All the above functions ending with `x` can be used to get the result context `ctx`, and the error message `err`. For example: +```c +// doc: {"a":0,"b":[null,2,3]} +yyjson_mut_doc *doc = ...; + +// get error code and message +yyjson_ptr_err err; +yyjson_mut_doc_ptr_setx(doc, "/b/99", 4, yyjson_mut_int(doc, 99), true, NULL, &err); +if (err.code) printf("err: %s\n", err.msg); // err: cannot resolve + +// get target value's context +// perform some operations without re-parsing the JSON Pointer +yyjson_mut_val *val = yyjson_mut_doc_ptr_getx(doc, "/b/0", 4, &ctx, &err); +if (yyjson_mut_is_null(val)) yyjson_ptr_ctx_remove(&ctx); +// now: {"a":0,"b":[2,3]} +``` + + + +## JSON Patch +The library supports JSON Patch (RFC 6902). +Specification and example: +```c +// Creates and returns a patched JSON value. +// Returns NULL if the patch could not be applied. +yyjson_mut_val *yyjson_patch(yyjson_mut_doc *doc, + yyjson_val *orig, + yyjson_val *patch, + yyjson_patch_err *err); + +yyjson_mut_val *yyjson_mut_patch(yyjson_mut_doc *doc, + yyjson_mut_val *orig, + yyjson_mut_val *patch, + yyjson_patch_err *err); +``` + + +## JSON Merge Patch +The library supports JSON Merge Patch (RFC 7386). +Specification and example: +```c +// Creates and returns a merge-patched JSON value. +// Returns NULL if the patch could not be applied. +yyjson_mut_val *yyjson_merge_patch(yyjson_mut_doc *doc, + yyjson_val *orig, + yyjson_val *patch); + +yyjson_mut_val *yyjson_mut_merge_patch(yyjson_mut_doc *doc, + yyjson_mut_val *orig, + yyjson_mut_val *patch); +``` + + +--------------- +# Number Processing + +## Number reader +The library has a built-in high-performance number reader,
+it will read numbers according to these rules by default:
+ +* Positive integers are read as `uint64_t`. If an overflow occurs, it is converted to `double`. +* Negative integers are read as `int64_t`. If an overflow occurs, it is converted to `double`. +* Floating-point numbers are read as `double` with correct rounding. +* If a `double` number overflow (reaches infinity), an error is reported. +* If a number does not conform to the [JSON](https://www.json.org) standard, an error is reported. + +There are 3 flags that can be used to adjust the number parsing strategy: + +- `YYJSON_READ_ALLOW_INF_AND_NAN`: read nan/inf number or literal as `double` (non-standard). +- `YYJSON_READ_NUMBER_AS_RAW`: read all numbers as raw strings without parsing. +- `YYJSON_READ_BIGNUM_AS_RAW`: read big numbers (overflow or infinity) as raw strings without parsing. + +See the `Reader flag` section for more details. + +## Number writer +The library has a built-in high-performance number writer,
+it will write numbers according to these rules by default:
+ +* Positive integers are written without a sign. +* Negative integers are written with a negative sign. +* Floating-point numbers are written using the [ECMAScript format](https://www.ecma-international.org/ecma-262/11.0/index.html#sec-numeric-types-number-tostring), with the following modifications: + * If the number is `Infinity` or `NaN`, an error is reported. + * The negative sign of `-0.0` is preserved to maintain input information. + * The positive sign in the exponent part is removed. +* The floating-point number writer will generate the shortest correctly rounded decimal representation. + +There are several flags that can be used to adjust the number writing strategy: + +- `YYJSON_WRITE_ALLOW_INF_AND_NAN` writes inf/nan numbers as `Infinity` and `NaN` literals without error (non-standard). +- `YYJSON_WRITE_INF_AND_NAN_AS_NULL` writes inf/nan numbers as `null` literal. +- `YYJSON_WRITE_FP_TO_FLOAT` writes real numbers as `float` instead of `double`. +- `YYJSON_WRITE_FP_TO_FIXED(prec)` writes real numbers using fixed-point notation. + +See the `Writer flag` section for more details. + +There are also some helper functions to control the output format of individual values: +- `yyjson_set_fp_to_float(yyjson_val *val, bool fpt)` and `yyjson_mut_set_fp_to_float(yyjson_mut_val *val, bool flt)` write this real number with `float` or `double` precision. +- `yyjson_set_fp_to_fixed(yyjson_val *val, int prec)` and `yyjson_mut_set_fp_to_fixed(yyjson_mut_val *val, int prec)` write this real number using fixed-point notation, the prec should be in the range of 1 to 15. + +## Number conversion function + +There are also two utility functions provide direct access to the library's internal number conversion logic. +They are intended for standalone use and typically do not allocate memory. +```c +// parse a number from strin +const char *yyjson_read_number(const char *dat, + yyjson_val *val, + yyjson_read_flag flg, + const yyjson_alc *alc, + yyjson_read_err *err); +// write a number to string +char *yyjson_write_number(const yyjson_val *val, char *buf); +``` + + + +# Text Processing + +## Character Encoding +By default, this library supports UTF-8 encoding without a BOM, as specified in [RFC 8259](https://datatracker.ietf.org/doc/html/rfc8259#section-8.1): + +> JSON text exchanged between systems that are not part of a closed ecosystem MUST be encoded using UTF-8. +> Implementations MUST NOT add a byte order mark (U+FEFF) to the beginning of a networked-transmitted JSON text. + +This library performs strict UTF-8 encoding validation on input strings by default. If an invalid character is encountered, an error will be reported. + +To allow a BOM, use the `YYJSON_READ_ALLOW_BOM` or `YYJSON_READ_ALLOW_EXT_WHITESPACE` flags. + +To allow invalid Unicode encoding, use the `YYJSON_READ_ALLOW_INVALID_UNICODE` and `YYJSON_WRITE_ALLOW_INVALID_UNICODE` flags. **Note:** Enabling these flags may result in yyjson producing values that contain invalid characters, which could be processed by other code and potentially introduce security risks. + +To mark a string as not requiring escaping during JSON writing, use `yyjson_set_str_noesc(yyjson_val *val, bool noesc)` or `yyjson_mut_set_str_noesc(yyjson_mut_val *val, bool noesc)`. This can improve string-writing performance and preserve the original string bytes. + +## NUL Character +This library supports the `NUL` character (also known as the `null terminator`, or Unicode `U+0000`, ASCII `\0`) inside strings. + +When reading JSON, `\u0000` will be unescaped to `NUL` character. If a string contains the `NUL` character, the length obtained with `strlen()` will be inaccurate, and you should use `yyjson_get_len()` to get the actual length. + +When building JSON, the input string is treated as null-terminated by default. If you need to pass in a string that contains the `NUL` character, you should use the API with the `n` suffix and provide the actual length of the string. + +For example: +```c +// null-terminated string +yyjson_mut_str(doc, str); +yyjson_obj_get(obj, str); + +// any string, with or without null terminator +yyjson_mut_strn(doc, str, len); +yyjson_obj_getn(obj, str, len); + +// C++ string +std::string sstr = ...; +yyjson_obj_getn(obj, sstr.data(), sstr.length()); +``` + + + +# Memory Allocator +The library does not directly call libc's memory allocation functions (malloc/realloc/free). Instead, when memory allocation is required, yyjson's API takes a parameter named `alc` that allows the caller to pass in an allocator. If the `alc` is NULL, yyjson will use the default memory allocator, which is a simple wrapper of libc's functions. + +Using a custom memory allocator allows you to have more control over memory allocation, here are a few examples: + + +## Single allocator for multiple JSON +If you need to parse multiple small JSON one by one, you can use a single allocator to avoid multiple memory allocations. + +Sample code: +```c +// max data size for single JSON +size_t max_json_size = 64 * 1024; +// calculate the max memory usage for a single JSON +size_t buf_size = yyjson_read_max_memory_usage(max_json_size, 0); +// create a buffer for allocator +void *buf = malloc(buf_size); +// setup the allocator with buffer +yyjson_alc alc; +yyjson_alc_pool_init(&alc, buf, buf_size); + +// read multiple JSON using one allocator +for(int i = 0, i < your_json_file_count; i++) { + const char *your_json_file_path = ...; + yyjson_doc *doc = yyjson_read_file(your_json_file_path, 0, &alc, NULL); + ... + yyjson_doc_free(doc); +} + +// free the buffer +free(buf); +``` + +If you are not sure about the amount of memory required to process JSON, you can use the dynamic allocator. +```c +// create a dynamic allocator +yyjson_alc *alc = yyjson_alc_dyn_new(); + +// read multiple JSON using one allocator +for(int i = 0, i < your_json_file_count; i++) { + const char *your_json_file_path = ...; + yyjson_doc *doc = yyjson_read_file(your_json_file_path, 0, alc, NULL); + ... + yyjson_doc_free(doc); +} + +// free the allocator +yyjson_alc_dyn_free(alc); +``` + + + +## Stack memory allocator +If the JSON is small enough, you can use stack memory to read or write it. + +Sample code: +```c +char buf[128 * 1024]; // stack buffer +yyjson_alc alc; +yyjson_alc_pool_init(&alc, buf, sizeof(buf)); + +yyjson_doc *doc = yyjson_read_opts(dat, len, 0, &alc, NULL); +... +yyjson_doc_free(doc); // this is optional, as the memory is on stack +``` + +## Use a third-party allocator library +You can use a third-party high-performance memory allocator for yyjson, such as [jemalloc](https://github.com/jemalloc/jemalloc), [tcmalloc](https://github.com/google/tcmalloc), [mimalloc](https://github.com/microsoft/mimalloc). You can also refer to the following code to implement your own allocator. + +Sample code: +```c +// Use https://github.com/microsoft/mimalloc + +#include + +// same as malloc(size) +static void *priv_malloc(void *ctx, size_t size) { + return mi_malloc(size); +} + +// same as realloc(ptr, size) +// `old_size` is the size of the originally allocated memory +static void *priv_realloc(void *ctx, void *ptr, size_t old_size, size_t size) { + return mi_realloc(ptr, size); +} + +// same as free(ptr) +static void priv_free(void *ctx, void *ptr) { + mi_free(ptr); +} + +// the allocator object +static const yyjson_alc PRIV_ALC = { + priv_malloc, + priv_realloc, + priv_free, + NULL // `ctx` which will be passed into the functions above +}; + +// Read with custom allocator +yyjson_doc *doc = yyjson_doc_read_opts(dat, len, 0, &PRIV_ALC, NULL); +... +yyjson_doc_free(doc); + +// Write with custom allocator +yyjson_alc *alc = &PRIV_ALC; +char *json = yyjson_doc_write(doc, 0, alc, NULL, NULL); +... +alc->free(alc->ctx, json); + +``` + + + +# Stack Memory Usage +Most functions in the library use fixed-size stack memory. This includes functions for JSON reading and writing, as well as JSON Pointer handling. + +However, a few functions use recursion and may cause a stack overflow if the object level is too deep. These functions are marked with the following warning in the header file: +> @warning +> This function is recursive and may cause a stack overflow +> if the object level is too deep. + + + +# Null Check +The library's public APIs perform a `null check` for every input parameter to prevent crashes. + +For example, when reading a JSON, you don't need to perform null checks or type checks on each value: +```c +yyjson_doc *doc = yyjson_read(NULL, 0, 0); // doc is NULL +yyjson_val *val = yyjson_doc_get_root(doc); // val is NULL +const char *str = yyjson_get_str(val); // str is NULL +if (!str) printf("err!"); +yyjson_doc_free(doc); // do nothing +``` + +However, if you are certain that a value is non-null and matches the expected type, you can use the `unsafe` prefix API to avoid the null check. + +For example, when iterating over an array or object, the value and key must be non-null: +```c +size_t idx, max; +yyjson_val *key, *val; +yyjson_obj_foreach(obj, idx, max, key, val) { + // this is a valid JSON, so the key must be a valid string + if (unsafe_yyjson_equals_str(key, "id") && + unsafe_yyjson_is_uint(val) && + unsafe_yyjson_get_uint(val) == 1234) { + ... + } +} +``` + + + +# Thread Safety +The library does not use global variables. Therefore, if you can ensure that the input parameters of a function are thread-safe, then the function calls are also thread-safe.
+ +In general, `yyjson_doc` and `yyjson_val` are immutable and thread-safe, while `yyjson_mut_doc` and `yyjson_mut_val` are mutable and not thread-safe. + + + +# Locale Independence +The library is designed to be locale-independent. + +However, there are certain conditions that you should be aware of: + +1. You use libc's `setlocale()` function to change the locale. +2. Your environment does not adhere the IEEE 754 floating-point standard (e.g. some IBM mainframes), or you explicitly set `YYJSON_DISABLE_FAST_FP_CONV` during build, in such case yyjson will use `strtod()` to parse floating-point numbers. + +If **both** of these conditions are met, it is recommended to avoid calling `setlocale()` while another thread is parsing JSON. Otherwise, an error may be returned during JSON floating-point number parsing. diff --git a/lib/yyjson-0.12.0/doc/BuildAndTest.md b/lib/yyjson-0.12.0/doc/BuildAndTest.md new file mode 100644 index 00000000000..72a3745be80 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/BuildAndTest.md @@ -0,0 +1,290 @@ +Building and testing +============== + +There are several ways to integrate this library into your project: source code, package manager, and CMake. + + +# Source code +This library aims to provide a cross-platform JSON library, so it is written in ANSI C (actually C99, but compatible with strict C89). You can copy `yyjson.h` and `yyjson.c` to your project and start using it without any configuration. + +The library has been tested with `gcc`, `clang`, `msvc`, `tcc` compilers and `x86`, `arm`, `ppc`, `riscv`, `s390x` architectures in [Github CI](https://github.com/ibireme/yyjson/actions). Please [report a bug](https://github.com/ibireme/yyjson/issues/new?template=bug_report.md) if you encounter any compilation issues. + +The library has all features enabled by default, but you can trim out some of them by adding compile-time options. For example, you can disable the JSON writer to reduce the binary size when you don't need serialization, or disable comments support to improve parsing performance. See `Compile-time Options` for details. + + +# Package manager + +You can use some popular package managers like `vcpkg`, `conan`, and `xmake` to download and install yyjson. The yyjson package in these package managers is kept up to date by community contributors. If the version is out of date, please create an issue or pull request on their repository. + +## Use vcpkg + +You can build and install yyjson using [vcpkg](https://github.com/Microsoft/vcpkg/) dependency manager: + +```shell +git clone https://github.com/Microsoft/vcpkg.git +cd vcpkg +./bootstrap-vcpkg.sh # ./bootstrap-vcpkg.bat for Powershell +./vcpkg integrate install +./vcpkg install yyjson +``` + +If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository. + +# CMake + +## Use CMake to build the library + +Clone the repository and create build directory: +```shell +git clone https://github.com/ibireme/yyjson.git +cmake -E make_directory build; cd build +``` + +Build static library: +```shell +cmake .. +cmake --build . +``` + +Build shared library: +```shell +cmake .. -DBUILD_SHARED_LIBS=ON +cmake --build . +``` + +Supported CMake options (default OFF): + +- `-DYYJSON_BUILD_TESTS=ON` Build all tests. +- `-DYYJSON_BUILD_FUZZER=ON` Build fuzzer with LibFuzzing. +- `-DYYJSON_BUILD_MISC=ON` Build misc. +- `-DYYJSON_BUILD_DOC=ON` Build documentation with doxygen. +- `-DYYJSON_ENABLE_COVERAGE=ON` Enable code coverage for tests. +- `-DYYJSON_ENABLE_VALGRIND=ON` Enable valgrind memory checker for tests. +- `-DYYJSON_ENABLE_SANITIZE=ON` Enable sanitizer for tests. +- `-DYYJSON_ENABLE_FASTMATH=ON` Enable fast-math for tests. +- `-DYYJSON_FORCE_32_BIT=ON` Force 32-bit for tests (gcc/clang/icc). + +- `-DYYJSON_DISABLE_READER=ON` Disable JSON reader if you don't need it. +- `-DYYJSON_DISABLE_WRITER=ON` Disable JSON writer if you don't need it. +- `-DYYJSON_DISABLE_INCR_READER=ON` Disable incremental reader if you don't need it. +- `-DYYJSON_DISABLE_UTILS=ON` Disable JSON Pointer, JSON Patch and JSON Merge Patch. +- `-DYYJSON_DISABLE_FAST_FP_CONV=ON` Disable builtin fast floating-pointer conversion. +- `-DYYJSON_DISABLE_NON_STANDARD=ON` Disable non-standard JSON support at compile-time. +- `-DYYJSON_DISABLE_UTF8_VALIDATION=ON` Disable UTF-8 validation at compile-time. +- `-DYYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS=ON` Disable unaligned memory access support at compile-time. + + +## Use CMake as a dependency + +You can download and unzip yyjson to your project directory and link it in your `CMakeLists.txt` file: +```cmake +# Add some options (optional) +set(YYJSON_DISABLE_NON_STANDARD ON CACHE INTERNAL "") + +# Add the `yyjson` subdirectory +add_subdirectory(vendor/yyjson) + +# Link yyjson to your target +target_link_libraries(your_target PRIVATE yyjson) +``` + +If your CMake version is higher than 3.11, you can use the following code to let CMake automatically download it: +```cmake +include(FetchContent) + +# Let CMake download yyjson +FetchContent_Declare( + yyjson + GIT_REPOSITORY https://github.com/ibireme/yyjson.git + GIT_TAG master # master, or version number, e.g. 0.6.0 +) +FetchContent_GetProperties(yyjson) +if(NOT yyjson_POPULATED) + FetchContent_Populate(yyjson) + add_subdirectory(${yyjson_SOURCE_DIR} ${yyjson_BINARY_DIR} EXCLUDE_FROM_ALL) +endif() + +# Link yyjson to your target +target_link_libraries(your_target PRIVATE yyjson) +``` + + +## Use CMake to generate project +If you want to build or debug yyjson with another compiler or IDE, try these commands: +```shell +cmake -E make_directory build; cd build + +# Clang for Linux/Unix: +cmake .. -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ + +# Intel ICC for Linux/Unix: +cmake .. -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc + +# Other version of GCC: +cmake .. -DCMAKE_C_COMPILER=/usr/local/gcc-8.2/bin/gcc -DCMAKE_CXX_COMPILER=/usr/local/gcc-8.2/bin/g++ + +# Microsoft Visual Studio for Windows: +cmake .. -G "Visual Studio 16 2019" -A x64 +cmake .. -G "Visual Studio 16 2019" -A Win32 +cmake .. -G "Visual Studio 15 2017 Win64" + +# Xcode for macOS: +cmake .. -G Xcode + +# Xcode for iOS: +cmake .. -G Xcode -DCMAKE_SYSTEM_NAME=iOS + +# Xcode with XCTest +cmake .. -G Xcode -DYYJSON_BUILD_TESTS=ON +``` + +## Use CMake to generate documentation + +This project uses [doxygen](https://www.doxygen.nl/) to generate the documentation. +Make sure `doxygen` is installed on your system before proceeding, +it's best to use the version specified in `doc/Doxyfile.in`. + + +To build the documentation: +```shell +cmake -E make_directory build; cd build +cmake .. -DYYJSON_BUILD_DOC=ON +cmake --build . +``` + +The generated HTML files will be located in `build/doxygen/html`. + +You can also browse the pre-generated documentation online: +https://ibireme.github.io/yyjson/doc/doxygen/html/ + + +## Testing With CMake and CTest + +Build and run all tests: +```shell +cmake -E make_directory build; cd build +cmake .. -DYYJSON_BUILD_TESTS=ON +cmake --build . +ctest --output-on-failure +``` + +Build and run tests with [valgrind](https://valgrind.org/) memory checker, (make sure you have `valgrind` installed before proceeding): +```shell +cmake -E make_directory build; cd build +cmake .. -DYYJSON_BUILD_TESTS=ON -DYYJSON_ENABLE_VALGRIND=ON +cmake --build . +ctest --output-on-failure +``` + +Build and run tests with sanitizer (compiler should be `gcc` or `clang`): +```shell +cmake -E make_directory build; cd build +cmake .. -DYYJSON_BUILD_TESTS=ON -DYYJSON_ENABLE_SANITIZE=ON +cmake --build . +ctest --output-on-failure +``` + +Build and run code coverage with `gcc`: +```shell +cmake -E make_directory build; cd build +cmake .. -DCMAKE_BUILD_TYPE=Debug -DYYJSON_BUILD_TESTS=ON -DYYJSON_ENABLE_COVERAGE=ON +cmake --build . --config Debug +ctest --output-on-failure + +lcov -c -d ./CMakeFiles --include "*/yyjson.*" -o cov.info +genhtml cov.info -o ./cov_report +``` + +Build and run code coverage with `clang`: +```shell +cmake -E make_directory build; cd build +cmake .. -DCMAKE_BUILD_TYPE=Debug -DYYJSON_BUILD_TESTS=ON -DYYJSON_ENABLE_COVERAGE=ON -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ +cmake --build . --config Debug + +export LLVM_PROFILE_FILE=cov/profile-%p.profraw +ctest --output-on-failure + +ctest_files=$(grep -o "test_\w\+" CTestTestfile.cmake | uniq | tr '\n' ' ') +ctest_files=$(echo $ctest_files | sed 's/ $//' | sed "s/ / -object /g") +llvm-profdata merge -sparse cov/profile-*.profraw -o coverage.profdata +llvm-cov show $ctest_files -instr-profile=coverage.profdata -format=html > coverage.html +``` + +Build and run fuzz test with [LibFuzzer](https://llvm.org/docs/LibFuzzer.html) (compiler should be `LLVM Clang`, while `Apple Clang` or `gcc` are not supported): +```shell +cmake -E make_directory build; cd build +cmake .. -DYYJSON_BUILD_FUZZER=ON -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ +cmake --build . +./fuzzer -dict=fuzzer.dict ./corpus +``` + + +# Compile-time Options +This library provides some compile-time options that can be defined as 1 to disable specific features during compilation. +For example, to disable the JSON writer: +```shell +cmake -E make_directory build; cd build +cmake .. -DYYJSON_DISABLE_WRITER=ON +gcc -DYYJSON_DISABLE_WRITER=1 ... +``` + +## YYJSON_DISABLE_READER +Define as 1 to disable JSON reader at compile-time.
+This disables functions with `read` in their name.
+Reduces binary size by about 60%.
+It is recommended when JSON parsing is not required.
+ +## YYJSON_DISABLE_WRITER +Define as 1 to disable JSON writer at compile-time.
+This disables functions with `write` in their name.
+Reduces binary size by about 30%.
+It is recommended when JSON serialization is not required.
+ +## YYJSON_DISABLE_INCR_READER +Define as 1 to disable JSON incremental reader at compile-time.
+This disables functions with `incr` in their name.
+It is recommended when JSON incremental reader is not required.
+ +## YYJSON_DISABLE_UTILS +Define as 1 to disable JSON Pointer, JSON Patch and JSON Merge Patch supports.
+This disables functions with `ptr` or `patch` in their name.
+It is recommended when these functions are not required.
+ +## YYJSON_DISABLE_FAST_FP_CONV +Define as 1 to disable the fast floating-point number conversion in yyjson.
+Libc's `strtod/snprintf` will be used instead.
+This reduces binary size by about 30%, but significantly slows down the floating-point read/write speed.
+It is recommended when processing JSON with few floating-point numbers.
+ +## YYJSON_DISABLE_NON_STANDARD +Define as 1 to disable non-standard JSON features support at compile-time: +- YYJSON_READ_ALLOW_INF_AND_NAN +- YYJSON_READ_ALLOW_COMMENTS +- YYJSON_READ_ALLOW_TRAILING_COMMAS +- YYJSON_READ_ALLOW_INVALID_UNICODE +- YYJSON_READ_ALLOW_BOM +- YYJSON_WRITE_ALLOW_INF_AND_NAN +- YYJSON_WRITE_ALLOW_INVALID_UNICODE + +This reduces binary size by about 10%, and slightly improves performance.
+It is recommended when not dealing with non-standard JSON. + +## YYJSON_DISABLE_UTF8_VALIDATION +Define as 1 to disable UTF-8 validation at compile-time. + +Use this if all input strings are guaranteed to be valid UTF-8 +(e.g. language-level String types are already validated). + +Disabling UTF-8 validation improves performance for non-ASCII strings by about +3% to 7%. + +Note: If this flag is enabled while passing illegal UTF-8 strings, the following errors may occur: +- Escaped characters may be ignored when parsing JSON strings. +- Ending quotes may be ignored when parsing JSON strings, causing the string to merge with the next value. +- When serializing with `yyjson_mut_val`, the string's end may be accessed out of bounds, potentially causing a segmentation fault. + +## YYJSON_EXPORTS +Define as 1 to export symbols when building the library as a Windows DLL. + +## YYJSON_IMPORTS +Define as 1 to import symbols when using the library as a Windows DLL. diff --git a/lib/yyjson-0.12.0/doc/DataStructure.md b/lib/yyjson-0.12.0/doc/DataStructure.md new file mode 100644 index 00000000000..9ee42216ff3 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/DataStructure.md @@ -0,0 +1,95 @@ +Data Structures +=============== + +yyjson consists of two types of data structures: immutable and mutable. + +| | Immutable | Mutable | +|----------|------------|----------------| +| Document | yyjson_doc | yyjson_mut_doc | +| Value | yyjson_val | yyjson_mut_val | + +- Immutable data structures are returned when reading a JSON document. They cannot be modified. +- Mutable data structures are created when building a JSON document. They can be modified. +- yyjson also provides some functions to convert between these two types of data structures. + +Please note that the data structures described in this document are considered private, and it is recommended to use the public API to access them. + +--------------- +## Immutable Value +Each JSON value is stored in an immutable `yyjson_val` struct: +```c +struct yyjson_val { + uint64_t tag; + union { + uint64_t u64; + int64_t i64; + double f64; + const char *str; + void *ptr; + size_t ofs; + } uni; +} +``` +![yyjson_val](images/struct_ival.svg) + +The type of the value is stored in the lower 8 bits of the `tag`.
+The size of the value, such as string length, object size, or array size, is stored in the higher 56 bits of the `tag`. + +Modern 64-bit processors are typically limited to supporting fewer than 64 bits for RAM addresses ([Wikipedia](https://en.wikipedia.org/wiki/RAM_limit)). For example, Intel64, AMD64, and ARMv8 have a 52-bit (4PB) physical address limit. Therefore, it is safe to store the type and size information within the 64-bit `tag`. + +## Immutable Document +A JSON document stores all strings in a **contiguous** memory area.
+Each string is unescaped in-place and ended with a null-terminator.
+For example: + +![yyjson_doc](images/struct_idoc1.svg) + + +A JSON document stores all values in another **contiguous** memory area.
+The `object` and `array` containers store their own memory usage, allowing easy traversal of the child values.
+For example: + +![yyjson_doc](images/struct_idoc2.svg) + +--------------- +## Mutable Value +Each mutable JSON value is stored in an `yyjson_mut_val` struct: +```c +struct yyjson_mut_val { + uint64_t tag; + union { + uint64_t u64; + int64_t i64; + double f64; + const char *str; + void *ptr; + size_t ofs; + } uni; + yyjson_mut_val *next; +} +``` +![yyjson_mut_val](images/struct_mval.svg) + +The `tag` and `uni` fields are the same as the immutable value, and the `next` field is used to build a linked list. + + +## Mutable Document +A mutable JSON document is composed of multiple `yyjson_mut_val`. + +The child values of an `object` or `array` are linked as a cycle,
+the parent holds the **tail** of the circular linked list, enabling yyjson to perform operations `append`, `prepend` and `remove_first` in constant time. + +For example: + +![yyjson_mut_doc](images/struct_mdoc.svg) + + +--------------- +## Memory Management + +A JSON document (`yyjson_doc`, `yyjson_mut_doc`) is responsible for managing the memory of all its JSON values and strings. When a document it is no longer needed, it is important for the user to call `yyjson_doc_free()` or `yyjson_mut_doc_free()` to free the memory associated with it. + +A JSON value (`yyjson_val`, `yyjson_mut_val`) has the same lifetime as its document. The memory is managed by its + document and and cannot be freed independently. + +For more information, refer to the API documentation. diff --git a/lib/yyjson-0.12.0/doc/Performance.md b/lib/yyjson-0.12.0/doc/Performance.md new file mode 100644 index 00000000000..30404ce4c54 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/Performance.md @@ -0,0 +1 @@ +TODO \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/DoxyLayout.xml b/lib/yyjson-0.12.0/doc/doxygen/DoxyLayout.xml new file mode 100644 index 00000000000..8a82449bbef --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/DoxyLayout.xml @@ -0,0 +1,269 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/Doxyfile.in b/lib/yyjson-0.12.0/doc/doxygen/Doxyfile.in new file mode 100644 index 00000000000..6ecc5c11508 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/Doxyfile.in @@ -0,0 +1,37 @@ +# Doxyfile 1.13.2 + +PROJECT_NAME = yyjson +PROJECT_NUMBER = @PROJECT_VERSION@ +PROJECT_BRIEF = "A high performance C JSON library." +OUTPUT_DIRECTORY = @CMAKE_CURRENT_BINARY_DIR@/doxygen +FULL_PATH_NAMES = NO +OPTIMIZE_OUTPUT_FOR_C = YES +MARKDOWN_ID_STYLE = GITHUB +INLINE_SIMPLE_STRUCTS = YES +TYPEDEF_HIDES_STRUCT = YES +EXTRACT_STATIC = YES +HIDE_UNDOC_MEMBERS = YES +SORT_MEMBER_DOCS = NO +LAYOUT_FILE = @CMAKE_CURRENT_SOURCE_DIR@/doc/doxygen/DoxyLayout.xml +INPUT = @CMAKE_CURRENT_SOURCE_DIR@/src/yyjson.h \ + @CMAKE_CURRENT_SOURCE_DIR@/README.md \ + @CMAKE_CURRENT_SOURCE_DIR@/doc/BuildAndTest.md \ + @CMAKE_CURRENT_SOURCE_DIR@/doc/API.md \ + @CMAKE_CURRENT_SOURCE_DIR@/doc/DataStructure.md \ + @CMAKE_CURRENT_SOURCE_DIR@/CHANGELOG.md +IMAGE_PATH = @CMAKE_CURRENT_SOURCE_DIR@/doc/images +USE_MDFILE_AS_MAINPAGE = README.md +VERBATIM_HEADERS = NO +HTML_HEADER = @CMAKE_CURRENT_SOURCE_DIR@/doc/doxygen/theme/yyjson-header.html +HTML_FOOTER = @CMAKE_CURRENT_SOURCE_DIR@/doc/doxygen/theme/yyjson-footer.html +HTML_EXTRA_STYLESHEET = @CMAKE_CURRENT_SOURCE_DIR@/doc/doxygen/theme/doxygen-awesome.css \ + @CMAKE_CURRENT_SOURCE_DIR@/doc/doxygen/theme/doxygen-awesome-sidebar-only.css \ + @CMAKE_CURRENT_SOURCE_DIR@/doc/doxygen/theme/doxygen-awesome-sidebar-only-darkmode-toggle.css \ + @CMAKE_CURRENT_SOURCE_DIR@/doc/doxygen/theme/yyjson-style.css +HTML_EXTRA_FILES = @CMAKE_CURRENT_SOURCE_DIR@/doc/doxygen/theme/doxygen-awesome-darkmode-toggle.js +HTML_COLORSTYLE = LIGHT +DISABLE_INDEX = NO +GENERATE_TREEVIEW = YES +FULL_SIDEBAR = NO +GENERATE_LATEX = NO +QUIET = YES \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/annotated.html b/lib/yyjson-0.12.0/doc/doxygen/html/annotated.html new file mode 100644 index 00000000000..e70ca16235f --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/annotated.html @@ -0,0 +1,146 @@ + + + + + + + + +yyjson: Data Structures + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
yyjson 0.12.0 +
+
A high performance C JSON library.
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Data Structures
+
+ +
+ + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/annotated_dup.js b/lib/yyjson-0.12.0/doc/doxygen/html/annotated_dup.js new file mode 100644 index 00000000000..d1ec9c2d430 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/annotated_dup.js @@ -0,0 +1,22 @@ +var annotated_dup = +[ + [ "yyjson_alc", "yyjson_8h.html#structyyjson__alc", "yyjson_8h_structyyjson__alc" ], + [ "yyjson_arr_iter", "yyjson_8h.html#structyyjson__arr__iter", "yyjson_8h_structyyjson__arr__iter" ], + [ "yyjson_doc", "yyjson_8h.html#structyyjson__doc", "yyjson_8h_structyyjson__doc" ], + [ "yyjson_mut_arr_iter", "yyjson_8h.html#structyyjson__mut__arr__iter", "yyjson_8h_structyyjson__mut__arr__iter" ], + [ "yyjson_mut_doc", "yyjson_8h.html#structyyjson__mut__doc", "yyjson_8h_structyyjson__mut__doc" ], + [ "yyjson_mut_obj_iter", "yyjson_8h.html#structyyjson__mut__obj__iter", "yyjson_8h_structyyjson__mut__obj__iter" ], + [ "yyjson_mut_val", "yyjson_8h.html#structyyjson__mut__val", "yyjson_8h_structyyjson__mut__val" ], + [ "yyjson_obj_iter", "yyjson_8h.html#structyyjson__obj__iter", "yyjson_8h_structyyjson__obj__iter" ], + [ "yyjson_patch_err", "yyjson_8h.html#structyyjson__patch__err", "yyjson_8h_structyyjson__patch__err" ], + [ "yyjson_ptr_ctx", "yyjson_8h.html#structyyjson__ptr__ctx", "yyjson_8h_structyyjson__ptr__ctx" ], + [ "yyjson_ptr_err", "yyjson_8h.html#structyyjson__ptr__err", "yyjson_8h_structyyjson__ptr__err" ], + [ "yyjson_read_err", "yyjson_8h.html#structyyjson__read__err", "yyjson_8h_structyyjson__read__err" ], + [ "yyjson_str_chunk", "yyjson_8h.html#structyyjson__str__chunk", null ], + [ "yyjson_str_pool", "yyjson_8h.html#structyyjson__str__pool", null ], + [ "yyjson_val", "yyjson_8h.html#structyyjson__val", "yyjson_8h_structyyjson__val" ], + [ "yyjson_val_chunk", "yyjson_8h.html#structyyjson__val__chunk", null ], + [ "yyjson_val_pool", "yyjson_8h.html#structyyjson__val__pool", null ], + [ "yyjson_val_uni", "yyjson_8h.html#unionyyjson__val__uni", null ], + [ "yyjson_write_err", "yyjson_8h.html#structyyjson__write__err", "yyjson_8h_structyyjson__write__err" ] +]; \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/api.html b/lib/yyjson-0.12.0/doc/doxygen/html/api.html new file mode 100644 index 00000000000..544eca5916d --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/api.html @@ -0,0 +1,1841 @@ + + + + + + + + +yyjson: API + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
yyjson 0.12.0 +
+
A high performance C JSON library.
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
API
+
+
+

This document contains all the API usage and examples for the yyjson library.

+

+API Design

+

+API prefix

+

All public functions and structs are prefixed with yyjson_, and all constants are prefixed with YYJSON_.

+

+API for immutable/mutable data

+

The library have 2 types of data structures: immutable and mutable:

+ + + + + + + +
Immutable Mutable
Document yyjson_doc yyjson_mut_doc
Value yyjson_val yyjson_mut_val
+

When reading a JSON, yyjson returns immutable documents and values.
+ When building a JSON, yyjson creates mutable documents and values.
+ The document holds the memory for all its JSON values and strings.
+

+

For most immutable APIs, you can just add a mut after yyjson_ to get the mutable version, for example:

char *yyjson_write(yyjson_doc *doc, ...);
+ +
+ + +
yyjson_api_inline bool yyjson_is_str(yyjson_val *val)
Definition yyjson.h:5185
+
yyjson_api_inline char * yyjson_mut_write(const yyjson_mut_doc *doc, yyjson_write_flag flg, size_t *len)
Definition yyjson.h:1461
+
yyjson_api_inline char * yyjson_write(const yyjson_doc *doc, yyjson_write_flag flg, size_t *len)
Definition yyjson.h:1356
+
yyjson_api_inline bool yyjson_mut_is_str(yyjson_mut_val *val)
Definition yyjson.h:5756
+
Definition yyjson.h:4770
+
Definition yyjson.h:5638
+
Definition yyjson.h:5590
+
Definition yyjson.h:4765
+

The library also provides some functions to convert values between immutable and mutable:
+

+
// doc -> mut_doc
+ +
// val -> mut_val
+ +
+
// mut_doc -> doc
+ +
// mut_val -> val
+ +
yyjson_api yyjson_mut_val * yyjson_val_mut_copy(yyjson_mut_doc *doc, yyjson_val *val)
+
yyjson_api yyjson_mut_doc * yyjson_doc_mut_copy(yyjson_doc *doc, const yyjson_alc *alc)
+
yyjson_api yyjson_doc * yyjson_mut_doc_imut_copy(yyjson_mut_doc *doc, const yyjson_alc *alc)
+
yyjson_api yyjson_doc * yyjson_mut_val_imut_copy(yyjson_mut_val *val, const yyjson_alc *alc)
+

+API for string

+

The library supports strings with or without null-terminator ('\0').
+ When you need to use a string without a null-terminator or when you explicitly know the length of the string, you can use the function that ends with n, for example:

// null-terminator is required
+
bool yyjson_equals_str(yyjson_val *val, const char *str);
+
// null-terminator is optional
+
bool yyjson_equals_strn(yyjson_val *val, const char *str, size_t len);
+
yyjson_api_inline bool yyjson_equals_str(yyjson_val *val, const char *str)
Definition yyjson.h:5272
+
yyjson_api_inline bool yyjson_equals_strn(yyjson_val *val, const char *str, size_t len)
Definition yyjson.h:5280
+

When creating JSON, yyjson treats strings as constants for better performance. However, if your string will be modified, you should use a function with a cpy to copy the string to the document, for example:

// reference only, null-terminated is required
+ +
// reference only, null-terminator is optional
+
yyjson_mut_val *yyjson_mut_strn(yyjson_mut_doc *doc, const char *str, size_t len);
+
+
// copied, null-terminated is required
+ +
// copied, null-terminator is optional
+
yyjson_mut_val *yyjson_mut_strncpy(yyjson_mut_doc *doc, const char *str, size_t len);
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_strn(yyjson_mut_doc *doc, const char *str, size_t len)
Definition yyjson.h:6060
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_strncpy(yyjson_mut_doc *doc, const char *str, size_t len)
Definition yyjson.h:6079
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_strcpy(yyjson_mut_doc *doc, const char *str)
Definition yyjson.h:6066
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_str(yyjson_mut_doc *doc, const char *str)
Definition yyjson.h:6055
+

+

+Reading JSON

+

The library provides 5 functions for reading JSON.
+ Each function accepts an input of UTF-8 data or a file,
+ returns a document if it successful or NULL if it fails.

+

+Read JSON from string

+

The dat should be a UTF-8 string, null-terminator is not required.
+ The len is the byte length of dat.
+ The flg is reader flag, pass 0 if you don't need it, see reader flag for details.
+ If input is invalid, NULL is returned.

+
yyjson_doc *yyjson_read(const char *dat,
+
size_t len,
+ +
uint32_t yyjson_read_flag
Definition yyjson.h:723
+
yyjson_api_inline yyjson_doc * yyjson_read(const char *dat, size_t len, yyjson_read_flag flg)
Definition yyjson.h:983
+

Sample code:

+
const char *str = "[1,2,3,4]";
+
yyjson_doc *doc = yyjson_read(str, strlen(str), 0);
+
if (doc) {...}
+ +
yyjson_api_inline void yyjson_doc_free(yyjson_doc *doc)
Definition yyjson.h:5130
+

+Read JSON from file

+

The path is JSON file path. This should be a null-terminated string using the system's native encoding.
+ The flg is reader flag, pass 0 if you don't need it, see reader flag for details.
+ The alc is memory allocator, pass NULL if you don't need it, see memory allocator for details.
+ The err is a pointer to receive error message, pass NULL if you don't need it.
+ If input is invalid, NULL is returned.

+
yyjson_doc *yyjson_read_file(const char *path,
+ +
const yyjson_alc *alc,
+ +
yyjson_api yyjson_doc * yyjson_read_file(const char *path, yyjson_read_flag flg, const yyjson_alc *alc, yyjson_read_err *err)
+
Definition yyjson.h:586
+
Definition yyjson.h:879
+

Sample code:

+
yyjson_doc *doc = yyjson_read_file("/tmp/test.json", 0, NULL, NULL);
+
if (doc) {...}
+ +

+Read JSON from file pointer

+

The fp is file pointer. The data will be read from the current position of the FILE to the end.
+ The flg is reader flag, pass 0 if you don't need it, see reader flag for details.
+ The alc is memory allocator, pass NULL if you don't need it, see memory allocator for details.
+ The err is a pointer to receive error message, pass NULL if you don't need it.
+ If input is invalid, NULL is returned.

+
+ +
const yyjson_alc *alc,
+ +
yyjson_api yyjson_doc * yyjson_read_fp(FILE *fp, yyjson_read_flag flg, const yyjson_alc *alc, yyjson_read_err *err)
+

Sample code:

+
FILE *fp = fdopen(fd, "rb"); // POSIX file descriptor (fd)
+
yyjson_doc *doc = yyjson_read_fp(fp, 0, NULL, NULL);
+
if (fp) fclose(fp);
+
if (doc) {...}
+ +

+Read JSON with options

+

The dat should be a UTF-8 string, you can pass a const string if you don't use YYJSON_READ_INSITU flag.
+ The len is the dat's length in bytes.
+ The flg is reader flag, pass 0 if you don't need it, see reader flag for details.
+ The alc is memory allocator, pass NULL if you don't need it, see memory allocator for details.
+ The err is a pointer to receive error message, pass NULL if you don't need it.
+

+
+
size_t len,
+ +
const yyjson_alc *alc,
+ +
yyjson_api yyjson_doc * yyjson_read_opts(char *dat, size_t len, yyjson_read_flag flg, const yyjson_alc *alc, yyjson_read_err *err)
+

Sample code:

+
const char *dat = your_file.bytes;
+
size_t len = your_file.size;
+
+ +
yyjson_doc *doc = yyjson_read_opts((char *)dat, len, flg, NULL, NULL);
+
+
if (doc) {...}
+
+ +
static const yyjson_read_flag YYJSON_READ_ALLOW_INF_AND_NAN
Definition yyjson.h:757
+
static const yyjson_read_flag YYJSON_READ_ALLOW_COMMENTS
Definition yyjson.h:753
+

+Read JSON incrementally

+

Reading a very large JSON document can freeze the program for a short while. If this is not acceptable, incremental reading can be used.

+

Incremental reading is recommended only for large documents and only when the program needs to be responsive. Incremental reading is slightly slower than yyjson_read() and yyjson_read_opts().

+

Note: The incremental JSON reader only supports standard JSON. Flags for non-standard features (e.g. comments, trailing commas) are ignored.

+

To read a large JSON document incrementally:

+
    +
  1. Call yyjson_incr_new() to create the state for incremental reading.
  2. +
  3. Call yyjson_incr_read() repeatedly.
  4. +
  5. Call yyjson_incr_free() to free the state.
  6. +
+

+Create the state for incremental reading

+

The buf should be a UTF-8 string, null-terminator is not required. You can pass a const string if you don't use the YYJSON_READ_INSITU flag.
+ The buf_len is the length of buf in bytes. The flg is reader flag. Pass 0 if you don't need it. See reader flag for details. The alc is memory allocator, pass NULL if you don't need it. See memory allocator for details.
+

+

The function returns a new state, or NULL if flg is invalid or if a memory allocation error occurs.

+
yyjson_incr_state *yyjson_incr_new(char *buf, size_t buf_len, yyjson_read_flag flg, const yyjson_alc *alc);
+
struct yyjson_incr_state yyjson_incr_state
Definition yyjson.h:996
+
yyjson_api yyjson_incr_state * yyjson_incr_new(char *buf, size_t buf_len, yyjson_read_flag flg, const yyjson_alc *alc)
+

+Perform incremental read

+

Performs incremental read of up to len bytes.

+

The state for incremental reading is created using yyjson_incr_new().
+ The len is the maximum number of bytes to read, counting from the start of the JSON data.
+ The err is a pointer to receive the error information. Required.
+

+

The function returns a document object when the reading is complete and NULL otherwise. If err->code is set to YYJSON_READ_ERROR_MORE, it indicates that parsing is not yet complete. Then, increase len by some kilobytes and call this function again. Continue increasing len until len == buf_len (the total length of the input buffer) or until an error other than YYJSON_READ_ERROR_MORE is returned.

+

Note: Parsing in very small increments is not efficient. An increment of several kilobytes or megabytes is recommended.

+
+
yyjson_api yyjson_doc * yyjson_incr_read(yyjson_incr_state *state, size_t len, yyjson_read_err *err)
+

+Free the state used for incremental reading

+

Free the state created by yyjson_incr_new().

+
+
yyjson_api void yyjson_incr_free(yyjson_incr_state *state)
+

+Sample code

+
const char *dat = your_file.bytes;
+
size_t len = your_file.size;
+
+ +
yyjson_incr_state *state = yyjson_incr_new(dat, len, flg, NULL);
+ + +
size_t read_so_far = 0;
+
do {
+
read_so_far += 100000;
+
if (read_so_far > len)
+
read_so_far = len;
+
doc = yyjson_incr_read(state, read_so_far, &err);
+ +
break;
+
} while (read_so_far < len);
+ +
+
if (doc != NULL) { ... }
+
+ +
static const yyjson_read_code YYJSON_READ_ERROR_MORE
Definition yyjson.h:876
+
yyjson_read_code code
Definition yyjson.h:881
+
static const yyjson_read_flag YYJSON_READ_NOFLAG
Definition yyjson.h:733
+

+Reader error handling

+

When reading JSON fails and you need error information, you can pass a yyjson_read_err pointer to the yyjson_read_xxx() functions to receive the error details.

+

Sample code:

char *dat = ...;
+
size_t dat_len = ...;
+ +
yyjson_doc *doc = yyjson_read_opts(dat, dat_len, 0, NULL, &err);
+
+
if (!doc) {
+
printf("read error: %s, code: %u at byte position: %lu\n",
+
err.msg, err.code, err.pos);
+
// printed:
+
// read error: trailing comma is not allowed, code: 7, at byte position: 40
+
}
+
+ +
size_t pos
Definition yyjson.h:885
+
const char * msg
Definition yyjson.h:883
+

The pos in the error information indicates the byte position where the error occurred. If you need the line and column number of the error, you can use the yyjson_locate_pos() function. Note that the line and column start from 1, while character starts from 0. All values are calculated based on Unicode characters to ensure compatibility with various text editors.

+

Sample code:

char *dat = ...;
+
size_t dat_len = ...;
+
yyjson_read_err err = ...;
+
+
size_t line, col, chr;
+
if (yyjson_locate_pos(dat, dat_len, err.pos, &line, &col, &chr)) {
+
printf("error at line: %lu, column: %lu, character index: %lu\n",
+
line, col, chr);
+
// printed:
+
// error at line: 3, column: 5, character index: 32
+
}
+
yyjson_api bool yyjson_locate_pos(const char *str, size_t len, size_t pos, size_t *line, size_t *col, size_t *chr)
+

+Reader flag

+

The library provides a set of flags for JSON reader.
+

+

You can use a single flag, or combine multiple flags with bitwise | operator.
+

+

Non-standard flags (such as YYJSON_READ_JSON5) have no performance impact when reading standard JSON input.

+

+YYJSON_READ_NOFLAG = 0

+

This is the default flag for JSON reader (RFC-8259 or ECMA-404 compliant):

+
    +
  • Read positive integer as uint64_t.
  • +
  • Read negative integer as int64_t.
  • +
  • Read floating-point number as double with correct rounding.
  • +
  • Read integer which cannot fit in uint64_t or int64_t as double.
  • +
  • Report error if double number is infinity.
  • +
  • Report error if string contains invalid UTF-8 character or BOM.
  • +
  • Report error on trailing commas, comments, Inf and NaN literals.
  • +
+

+YYJSON_READ_INSITU

+

Read the input data in-situ.
+

+

This option allows the reader to modify and use the input data to store string values, which can slightly improve reading speed. However, the caller must ensure that the input data is held until the document is freed. The input data must be padded with at least YYJSON_PADDING_SIZE bytes. For example: [1,2] should be [1,2]\0\0\0\0, input length should be 5.

+

Sample code:

+
size_t dat_len = ...;
+
char *buf = malloc(dat_len + YYJSON_PADDING_SIZE); // create a buffer larger than (len + 4)
+
read_from_socket(buf, ...);
+
memset(buf + file_size, 0, YYJSON_PADDING_SIZE); // set 4-byte padding after data
+
+
yyjson_doc *doc = yyjson_read_opts(buf, dat_len, YYJSON_READ_INSITU, NULL, NULL);
+
if (doc) {...}
+ +
free(buf); // the input dat should free after document.
+
static const yyjson_read_flag YYJSON_READ_INSITU
Definition yyjson.h:741
+
#define YYJSON_PADDING_SIZE
Definition yyjson.h:572
+

+YYJSON_READ_STOP_WHEN_DONE

+

Stop parsing when reaching the end of a JSON document instead of issues an error if there's additional content after it.
+

+

This option is useful for parsing small pieces of JSON within larger data, such as NDJSON.
+

+

Sample code:

+
// Single file with multiple JSON, such as:
+
// [1,2,3] [4,5,6] {"a":"b"}
+
+
size_t file_size = ...;
+
char *dat = malloc(file_size + 4);
+
your_read_file(dat, file);
+
memset(dat + file_size, 0, 4); // add padding
+
+
char *hdr = dat;
+
char *end = dat + file_size;
+ +
+
while (true) {
+
yyjson_doc *doc = yyjson_read_opts(hdr, end - hdr, flg, NULL, NULL);
+
if (!doc) break;
+
your_doc_process(doc);
+
hdr += yyjson_doc_get_read_size(doc); // move to next position
+ +
}
+
free(dat);
+
yyjson_api_inline size_t yyjson_doc_get_read_size(yyjson_doc *doc)
Definition yyjson.h:5122
+
static const yyjson_read_flag YYJSON_READ_STOP_WHEN_DONE
Definition yyjson.h:746
+

+YYJSON_READ_ALLOW_TRAILING_COMMAS

+

Allow a single trailing comma at the end of an object or array (non-standard), for example:

+
{
+
"a": 1,
+
"b": 2,
+
}
+
+
[
+
"a",
+
"b",
+
]
+

+YYJSON_READ_ALLOW_COMMENTS

+

Allow C-style single-line and multi-line comments (non-standard), for example:

+
{
+
"name": "Harry", // single-line comment
+
"id": /* multi-line comment */ 123
+
}
+

+YYJSON_READ_ALLOW_INF_AND_NAN

+

Allow nan/inf number or case-insensitive literal (non-standard), for example:

+
{
+
"large": 123e999,
+
"nan1": NaN,
+
"nan2": nan,
+
"inf1": Inf,
+
"inf2": -Infinity
+
}
+

+YYJSON_READ_NUMBER_AS_RAW

+

Read all numbers as raw strings without parsing.

+

This flag is useful if you want to handle number parsing yourself. You can use the following functions to extract raw strings:

+
const char *yyjson_get_raw(yyjson_val *val);
+ +
yyjson_api_inline bool yyjson_is_raw(yyjson_val *val)
Definition yyjson.h:5145
+
yyjson_api_inline const char * yyjson_get_raw(yyjson_val *val)
Definition yyjson.h:5236
+
yyjson_api_inline size_t yyjson_get_len(yyjson_val *val)
Definition yyjson.h:5268
+

+YYJSON_READ_BIGNUM_AS_RAW

+

Read big numbers as raw strings.

+

This flag is useful if you want to parse these big numbers yourself. These big numbers include integers that cannot be represented by int64_t and uint64_t, and floating-point numbers that cannot be represented by finite double.

+

Note that this flag will be overridden by YYJSON_READ_NUMBER_AS_RAW flag.

+

+YYJSON_READ_ALLOW_INVALID_UNICODE

+

Allow reading invalid unicode when parsing string values (non-standard), for example:

"\x80xyz"
+
"\xF0\x81\x81\x81"
+

This flag permits invalid characters to appear in the string values, but it still reports errors for invalid escape sequences. It does not impact the performance of correctly encoded strings.

+

Warning: when using this option, be aware that strings within JSON values may contain incorrect encoding, so you need to handle these strings carefully to avoid security risks.

+

+YYJSON_READ_ALLOW_BOM

+

Allow UTF-8 BOM and skip it before parsing if any (non-standard).

+

+YYJSON_READ_ALLOW_EXT_NUMBER

+

Allow extended number formats (non-standard):

    +
  • Hexadecimal numbers, such as 0x7B.
  • +
  • Numbers with leading or trailing decimal point, such as .123, 123..
  • +
  • Numbers with a leading plus sign, such as +123.
  • +
+

+YYJSON_READ_ALLOW_EXT_ESCAPE

+

Allow extended escape sequences in strings (non-standard):

    +
  • Additional escapes: \a, \e, \v, \', \?, \0.
  • +
  • Hex escapes: \xNN, such as \x7B.
  • +
  • Line continuation: backslash followed by line terminator sequences.
  • +
  • Unknown escape: if backslash is followed by an unsupported character, the backslash will be removed and the character will be kept as-is. However, \1-\9 will still trigger an error.
  • +
+

+YYJSON_READ_ALLOW_EXT_WHITESPACE

+

Allow extended whitespace characters (non-standard):

    +
  • Vertical tab \v and form feed \f.
  • +
  • Line separator \u2028 and paragraph separator \u2029.
  • +
  • Non-breaking space \xA0.
  • +
  • Byte order mark: \uFEFF.
  • +
  • Other Unicode characters in the Zs (Separator, space) category.
  • +
+

+YYJSON_READ_ALLOW_SINGLE_QUOTED_STR

+

Allow strings enclosed in single quotes (non-standard), such as 'ab'.

+

+YYJSON_READ_ALLOW_UNQUOTED_KEY

+

Allow object keys without quotes (non-standard), such as {a:1,b:2}. This extends the ECMAScript IdentifierName rule by allowing any non-whitespace character with code point above U+007F.

+

+YYJSON_READ_JSON5

+

Allow JSON5 format, see: https://json5.org.

+

This flag supports all JSON5 features with some additional extensions:

    +
  • Accepts more escape sequences than JSON5 (e.g. \a, \e).
  • +
  • Unquoted keys are and not limited to ECMAScript IdentifierName.
  • +
  • Allow case-insensitive NaN, Inf and Infinity literals.
  • +
+

For example:

{
+
/* JSON5 example */
+
id: 123,
+
name: 'Harry',
+
color: 0x66CCFF,
+
min: .001,
+
max: Inf,
+
data: '\x00\xAA\xFF',
+
}
+

+

+Writing JSON

+

The library provides 4 sets of functions for writing JSON.
+ Each function accepts an input of JSON document or root value, and returns a UTF-8 string or file.

+

+Write JSON to string

+

The doc/val is JSON document or root value, if you pass NULL, you will get NULL result.
+ The flg is writer flag, pass 0 if you don't need it, see writer flag for details.
+ The len is a pointer to receive output length (not including the null-terminator), pass NULL if you don't need it.
+ This function returns a new JSON string, or NULL if error occurs.
+ The string is encoded as UTF-8 with a null-terminator.
+ You should use free() or alc->free() to release it when it's no longer needed.

+
// doc -> str
+
char *yyjson_write(const yyjson_doc *doc, yyjson_write_flag flg, size_t *len);
+
// mut_doc -> str
+
char *yyjson_mut_write(const yyjson_mut_doc *doc, yyjson_write_flag flg, size_t *len);
+
// val -> str
+
char *yyjson_val_write(const yyjson_val *val, yyjson_write_flag flg, size_t *len);
+
// mut_val -> str
+
char *yyjson_mut_val_write(const yyjson_mut_val *val, yyjson_write_flag flg, size_t *len);
+
yyjson_api_inline char * yyjson_val_write(const yyjson_val *val, yyjson_write_flag flg, size_t *len)
Definition yyjson.h:1567
+
yyjson_api_inline char * yyjson_mut_val_write(const yyjson_mut_val *val, yyjson_write_flag flg, size_t *len)
Definition yyjson.h:1670
+
uint32_t yyjson_write_flag
Definition yyjson.h:1155
+

Sample code 1:

+
yyjson_doc *doc = yyjson_read("[1,2,3]", 7, 0);
+
char *json = yyjson_write(doc, YYJSON_WRITE_PRETTY, NULL);
+
printf("%s\n", json);
+
free(json);
+
static const yyjson_write_flag YYJSON_WRITE_PRETTY
Definition yyjson.h:1165
+

Sample code 2:

+ + + + + +
+
char *json = yyjson_mut_write(doc, YYJSON_WRITE_PRETTY, NULL);
+
printf("%s\n", json);
+
free(json);
+
yyjson_api_inline void yyjson_mut_doc_set_root(yyjson_mut_doc *doc, yyjson_mut_val *root)
Definition yyjson.h:5705
+
yyjson_api_inline bool yyjson_mut_arr_add_int(yyjson_mut_doc *doc, yyjson_mut_val *arr, int64_t num)
Definition yyjson.h:6646
+
yyjson_api yyjson_mut_doc * yyjson_mut_doc_new(const yyjson_alc *alc)
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr(yyjson_mut_doc *doc)
Definition yyjson.h:6194
+

+Write JSON to file

+

The path is output JSON file path. This should be a null-terminated string using the system's native encoding. If the path is invalid, you will get an error. If the file is not empty, the content will be discarded.
+ The doc/val is JSON document or root value, if you pass NULL, you will get an error.
+ The flg is writer flag, pass 0 if you don't need it, see writer flag for details.
+ The alc is memory allocator, pass NULL if you don't need it, see memory allocator for details.
+ The err is a pointer to receive error message, pass NULL if you don't need it.
+ This function returns true on success, or false if error occurs.
+

+
// doc -> file
+
bool yyjson_write_file(const char *path, const yyjson_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err);
+
// mut_doc -> file
+
bool yyjson_mut_write_file(const char *path, const yyjson_mut_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err);
+
// val -> file
+
bool yyjson_val_write_file(const char *path, const yyjson_val *val, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err);
+
// mut_val -> file
+
bool yyjson_mut_val_write_file(const char *path, const yyjson_mut_val *val, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err);
+
yyjson_api bool yyjson_write_file(const char *path, const yyjson_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err)
+
yyjson_api bool yyjson_val_write_file(const char *path, const yyjson_val *val, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err)
+
yyjson_api bool yyjson_mut_write_file(const char *path, const yyjson_mut_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err)
+
yyjson_api bool yyjson_mut_val_write_file(const char *path, const yyjson_mut_val *val, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err)
+
Definition yyjson.h:1247
+

Sample code:

+
yyjson_doc *doc = yyjson_read_file("/tmp/test.json", 0, NULL, NULL);
+
bool suc = yyjson_write_file("tmp/test.json", doc, YYJSON_WRITE_PRETTY, NULL, NULL);
+
if (suc) printf("OK");
+

+Write JSON to file pointer

+

The fp is output file pointer, The data will be written to the current position of the file.
+ The doc/val is JSON document or root value, if you pass NULL, you will get an error.
+ The flg is writer flag, pass 0 if you don't need it, see writer flag for details.
+ The alc is memory allocator, pass NULL if you don't need it, see memory allocator for details.
+ The err is a pointer to receive error message, pass NULL if you don't need it.
+ This function returns true on success, or false if error occurs.
+

+
// doc -> file
+
bool yyjson_write_fp(FILE *fp, const yyjson_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err);
+
// mut_doc -> file
+
bool yyjson_mut_write_fp(FILE *fp, const yyjson_mut_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err);
+
// val -> file
+
bool yyjson_val_write_fp(FILE *fp, const yyjson_val *val, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err);
+
// mut_val -> file
+
bool yyjson_mut_val_write_fp(FILE *fp, const yyjson_mut_val *val, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err);
+
yyjson_api bool yyjson_write_fp(FILE *fp, const yyjson_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err)
+
yyjson_api bool yyjson_val_write_fp(FILE *fp, const yyjson_val *val, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err)
+
yyjson_api bool yyjson_mut_write_fp(FILE *fp, const yyjson_mut_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err)
+
yyjson_api bool yyjson_mut_val_write_fp(FILE *fp, const yyjson_mut_val *val, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err)
+

Sample code:

+
FILE *fp = fdopen(fd, "wb"); // POSIX file descriptor (fd)
+
bool suc = yyjson_write_fp(fp, doc, YYJSON_WRITE_PRETTY, NULL, NULL);
+
if (fp) fclose(fp);
+
if (suc) printf("OK");
+

+Write JSON with options

+

The doc/val is JSON document or root value, if you pass NULL, you will get NULL result.
+ The flg is writer flag, pass 0 if you don't need it, see writer flag for details.
+ The alc is memory allocator, pass NULL if you don't need it, see memory allocator for details.
+ The len is a pointer to receive output length (not including the null-terminator), pass NULL if you don't need it.
+ The err is a pointer to receive error message, pass NULL if you don't need it.
+

+

This function returns a new JSON string, or NULL if error occurs.
+ The string is encoded as UTF-8 with a null-terminator.
+ You should use free() or alc->free() to release it when it's no longer needed.

+
char *yyjson_write_opts(const yyjson_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, size_t *len, yyjson_write_err *err);
+
+
char *yyjson_mut_write_opts(const yyjson_mut_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, size_t *len, yyjson_write_err *err);
+
+
char *yyjson_val_write_opts(const yyjson_val *val, yyjson_write_flag flg, const yyjson_alc *alc, size_t *len, yyjson_write_err *err);
+
+
char *yyjson_mut_val_write_opts(const yyjson_mut_val *val, yyjson_write_flag flg, const yyjson_alc *alc, size_t *len, yyjson_write_err *err);
+
yyjson_api char * yyjson_write_opts(const yyjson_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, size_t *len, yyjson_write_err *err)
+
yyjson_api char * yyjson_val_write_opts(const yyjson_val *val, yyjson_write_flag flg, const yyjson_alc *alc, size_t *len, yyjson_write_err *err)
+
yyjson_api char * yyjson_mut_write_opts(const yyjson_mut_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, size_t *len, yyjson_write_err *err)
+
yyjson_api char * yyjson_mut_val_write_opts(const yyjson_mut_val *val, yyjson_write_flag flg, const yyjson_alc *alc, size_t *len, yyjson_write_err *err)
+

Sample code:

+
yyjson_doc *doc = ...;
+
+
// init an allocator with stack memory
+
char buf[64 * 1024];
+ +
yyjson_alc_pool_init(&alc, buf, sizeof(buf));
+
+
// write
+
size_t len;
+ +
char *json = yyjson_write_opts(doc, YYJSON_WRITE_PRETTY | YYJSON_WRITE_ESCAPE_UNICODE, &alc, &len, &err);
+
+
// get result
+
if (json) {
+
printf("suc: %lu\n%s\n", len, json);
+
} else {
+
printf("err: %u msg:%s\n", err.code, err.msg);
+
}
+
alc.free(alc.ctx, json);
+
void(* free)(void *ctx, void *ptr)
Definition yyjson.h:592
+
const char * msg
Definition yyjson.h:1251
+
yyjson_api bool yyjson_alc_pool_init(yyjson_alc *alc, void *buf, size_t size)
+
static const yyjson_write_flag YYJSON_WRITE_ESCAPE_UNICODE
Definition yyjson.h:1168
+
yyjson_write_code code
Definition yyjson.h:1249
+
void * ctx
Definition yyjson.h:594
+

+Writer flag

+

The library provides a set of flags for JSON writer.
+ You can use a single flag, or combine multiple flags with bitwise | operator.

+

+YYJSON_WRITE_NOFLAG = 0

+

This is the default flag for JSON writer:

+
    +
  • Writes JSON in minified format.
  • +
  • Reports an error on encountering inf or nan number.
  • +
  • Reports an error on encountering invalid UTF-8 strings.
  • +
  • Does not escape unicode or slashes.
  • +
+

+YYJSON_WRITE_PRETTY

+

Writes JSON with a pretty format uing a 4-space indent.

+

+YYJSON_WRITE_PRETTY_TWO_SPACES

+

Writes JSON with a pretty format uing a 2-space indent. This flag will override YYJSON_WRITE_PRETTY flag.

+

+YYJSON_WRITE_ESCAPE_UNICODE

+

Escape unicode as \uXXXX, making the output ASCII-only, for example:

+
["Alizée, 😊"]
+
["Aliz\\u00E9e, \\uD83D\\uDE0A"]
+

+YYJSON_WRITE_ESCAPE_SLASHES

+

Escapes the forward slash character / as \/, for example:

+
["https://github.com"]
+
["https:\/\/github.com"]
+

+YYJSON_WRITE_ALLOW_INF_AND_NAN

+

Writes inf/nan numbers as Infinity and NaN literals instead of reporting errors.
+

+

Note that this output is NOT standard JSON and may be rejected by other JSON libraries, for example:

+
{"not_a_number":NaN,"large_number":Infinity}
+

+YYJSON_WRITE_INF_AND_NAN_AS_NULL

+

Writes inf/nan numbers as null literals instead of reporting errors.
+ This flag will override YYJSON_WRITE_ALLOW_INF_AND_NAN flag, for example:

+
{"not_a_number":null,"large_number":null}
+

+YYJSON_WRITE_ALLOW_INVALID_UNICODE

+

Allows invalid unicode when encoding string values.

+

Invalid characters within string values will be copied byte by byte. If YYJSON_WRITE_ESCAPE_UNICODE flag is also set, invalid characters will be escaped as \uFFFD (replacement character).

+

This flag does not affect the performance of correctly encoded string.

+

+YYJSON_WRITE_NEWLINE_AT_END

+

Adds a newline character \n at the end of the JSON. This can be helpful for text editors or NDJSON.

+

+YYJSON_WRITE_FP_TO_FLOAT

+

Write floating-point numbers using single-precision (float). This casts double to float before serialization. This will produce shorter output, but may lose some precision. This flag is ignored if YYJSON_WRITE_FP_TO_FIXED(prec) is also used.

+

+YYJSON_WRITE_FP_TO_FIXED(prec)

+

Write floating-point number using fixed-point notation. This is similar to ECMAScript Number.prototype.toFixed(prec), but with trailing zeros removed. The prec ranges from 1 to 15. This will produce shorter output but may lose some precision.

+
+

+Accessing JSON Document

+

+JSON Document

+

You can access the content of a document with the following functions:

// Get the root value of this JSON document.
+ +
+
// Get how many bytes are read when parsing JSON.
+
// e.g. "[1,2,3]" returns 7.
+ +
+
// Get total value count in this JSON document.
+
// e.g. "[1,2,3]" returns 4 (1 array and 3 numbers).
+ +
yyjson_api_inline size_t yyjson_doc_get_val_count(yyjson_doc *doc)
Definition yyjson.h:5126
+
yyjson_api_inline yyjson_val * yyjson_doc_get_root(yyjson_doc *doc)
Definition yyjson.h:5118
+

A document holds all the memory for its internal values and strings. When you no longer need it, you should release the document and free up all the memory:

// Free the document; if NULL is passed in, do nothing.
+ +

+JSON Value

+

Each JSON Value has a type and subtype, as specified in the table:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Type Subtype
YYJSON_TYPE_NONE Invalid value
YYJSON_TYPE_RAW Raw string
YYJSON_TYPE_NULL null literal
YYJSON_TYPE_BOOL YYJSON_SUBTYPE_FALSE false literal
YYJSON_TYPE_BOOL YYJSON_SUBTYPE_TRUE true literal
YYJSON_TYPE_NUM YYJSON_SUBTYPE_UINT uint64_t nummer
YYJSON_TYPE_NUM YYJSON_SUBTYPE_SINT int64_t number
YYJSON_TYPE_NUM YYJSON_SUBTYPE_REAL double number
YYJSON_TYPE_STR String value
YYJSON_TYPE_STR YYJSON_SUBTYPE_NOESC String value, no-escape
YYJSON_TYPE_ARR Array value
YYJSON_TYPE_OBJ Object value
+
    +
  • YYJSON_TYPE_NONE means invalid value, it does not appear when the JSON is successfully parsed.
  • +
  • YYJSON_TYPE_RAW only appears when the corresponding flag YYJSON_READ_XXX_AS_RAW is used.
  • +
  • YYJSON_SUBTYPE_NOESC is used to optimize the writing speed of strings that do not need to be escaped. This subtype is used internally, and the user does not need to handle it.
  • +
+

The following functions can be used to determine the type of a JSON value.

+
// Returns the type and subtype of a JSON value.
+
// Returns 0 if the input is NULL.
+ + +
+
// Returns value's tag, see `Data Structures` doc for details.
+
uint8_t yyjson_get_tag(yyjson_val *val);
+
+
// returns type description, such as:
+
// "null", "string", "array", "object", "true", "false",
+
// "uint", "sint", "real", "unknown"
+
const char *yyjson_get_type_desc(yyjson_val *val);
+
+
// Returns true if the JSON value is specified type.
+
// Returns false if the input is NULL or not the specified type.
+
bool yyjson_is_null(yyjson_val *val); // null
+
bool yyjson_is_true(yyjson_val *val); // true
+
bool yyjson_is_false(yyjson_val *val); // false
+
bool yyjson_is_bool(yyjson_val *val); // true/false
+
bool yyjson_is_uint(yyjson_val *val); // uint64_t
+
bool yyjson_is_sint(yyjson_val *val); // int64_t
+
bool yyjson_is_int(yyjson_val *val); // uint64_t/int64_t
+
bool yyjson_is_real(yyjson_val *val); // double
+
bool yyjson_is_num(yyjson_val *val); // uint64_t/int64_t/double
+
bool yyjson_is_str(yyjson_val *val); // string
+
bool yyjson_is_arr(yyjson_val *val); // array
+
bool yyjson_is_obj(yyjson_val *val); // object
+
bool yyjson_is_ctn(yyjson_val *val); // array/object
+
bool yyjson_is_raw(yyjson_val *val); // raw string
+
uint8_t yyjson_subtype
Definition yyjson.h:538
+
yyjson_api_inline bool yyjson_is_ctn(yyjson_val *val)
Definition yyjson.h:5197
+
yyjson_api_inline uint8_t yyjson_get_tag(yyjson_val *val)
Definition yyjson.h:5215
+
yyjson_api_inline bool yyjson_is_bool(yyjson_val *val)
Definition yyjson.h:5161
+
yyjson_api_inline bool yyjson_is_real(yyjson_val *val)
Definition yyjson.h:5177
+
yyjson_api_inline const char * yyjson_get_type_desc(yyjson_val *val)
Definition yyjson.h:5219
+
uint8_t yyjson_type
Definition yyjson.h:519
+
yyjson_api_inline bool yyjson_is_int(yyjson_val *val)
Definition yyjson.h:5173
+
yyjson_api_inline bool yyjson_is_true(yyjson_val *val)
Definition yyjson.h:5153
+
yyjson_api_inline bool yyjson_is_false(yyjson_val *val)
Definition yyjson.h:5157
+
yyjson_api_inline yyjson_subtype yyjson_get_subtype(yyjson_val *val)
Definition yyjson.h:5211
+
yyjson_api_inline yyjson_type yyjson_get_type(yyjson_val *val)
Definition yyjson.h:5207
+
yyjson_api_inline bool yyjson_is_null(yyjson_val *val)
Definition yyjson.h:5149
+
yyjson_api_inline bool yyjson_is_sint(yyjson_val *val)
Definition yyjson.h:5169
+
yyjson_api_inline bool yyjson_is_uint(yyjson_val *val)
Definition yyjson.h:5165
+
yyjson_api_inline bool yyjson_is_arr(yyjson_val *val)
Definition yyjson.h:5189
+
yyjson_api_inline bool yyjson_is_num(yyjson_val *val)
Definition yyjson.h:5181
+
yyjson_api_inline bool yyjson_is_obj(yyjson_val *val)
Definition yyjson.h:5193
+

The following functions can be used to get the contents of the JSON value.

+
// Returns the raw string, or NULL if `val` is not raw type.
+
const char *yyjson_get_raw(yyjson_val *val);
+
+
// Returns bool value, or false if `val` is not bool type.
+ +
+
// Returns uint64_t value, or 0 if `val` is not uint type.
+
uint64_t yyjson_get_uint(yyjson_val *val);
+
+
// Returns int64_t value, or 0 if `val` is not sint type.
+ +
+
// Returns int value (may overflow), or 0 if `val` is not uint/sint type.
+ +
+
// Returns double value, or 0 if `val` is not real type.
+ +
+
// Returns double value (typecast), or 0 if `val` is not uint/sint/real type.
+ +
+
// Returns the string value, or NULL if `val` is not string type.
+
const char *yyjson_get_str(yyjson_val *val);
+
+
// Returns the content length (string length in bytes, array size,
+
// object size), or 0 if the value does not contains length data.
+ +
+
// Returns whether the value is equals to a string.
+
// Returns false if input is NULL or `val` is not string.
+
bool yyjson_equals_str(yyjson_val *val, const char *str);
+
bool yyjson_equals_strn(yyjson_val *val, const char *str, size_t len);
+
yyjson_api_inline int yyjson_get_int(yyjson_val *val)
Definition yyjson.h:5252
+
yyjson_api_inline double yyjson_get_real(yyjson_val *val)
Definition yyjson.h:5256
+
yyjson_api_inline const char * yyjson_get_str(yyjson_val *val)
Definition yyjson.h:5264
+
yyjson_api_inline bool yyjson_get_bool(yyjson_val *val)
Definition yyjson.h:5240
+
yyjson_api_inline uint64_t yyjson_get_uint(yyjson_val *val)
Definition yyjson.h:5244
+
yyjson_api_inline double yyjson_get_num(yyjson_val *val)
Definition yyjson.h:5260
+
yyjson_api_inline int64_t yyjson_get_sint(yyjson_val *val)
Definition yyjson.h:5248
+

The following functions can be used to modify the content of a JSON value.
+

+

Warning: For immutable documents, these functions will break the immutable convention, you should use this set of APIs with caution (e.g. make sure the document is only accessed in a single thread).

+
// Set the value to new type and content.
+
// Returns false if input is NULL or `val` is object or array.
+
bool yyjson_set_raw(yyjson_val *val, const char *raw, size_t len);
+ +
bool yyjson_set_bool(yyjson_val *val, bool num);
+
bool yyjson_set_uint(yyjson_val *val, uint64_t num);
+
bool yyjson_set_sint(yyjson_val *val, int64_t num);
+
bool yyjson_set_int(yyjson_val *val, int num);
+
bool yyjson_set_float(yyjson_val *val, float num);
+
bool yyjson_set_double(yyjson_val *val, double num);
+
bool yyjson_set_real(yyjson_val *val, double num);
+
+
// The string is not copied, should be held by caller.
+
bool yyjson_set_str(yyjson_val *val, const char *str);
+
bool yyjson_set_strn(yyjson_val *val, const char *str, size_t len);
+
yyjson_api_inline bool yyjson_set_null(yyjson_val *val)
Definition yyjson.h:5303
+
yyjson_api_inline bool yyjson_set_raw(yyjson_val *val, const char *raw, size_t len)
Definition yyjson.h:5296
+
yyjson_api_inline bool yyjson_set_uint(yyjson_val *val, uint64_t num)
Definition yyjson.h:5315
+
yyjson_api_inline bool yyjson_set_str(yyjson_val *val, const char *str)
Definition yyjson.h:5363
+
yyjson_api_inline bool yyjson_set_strn(yyjson_val *val, const char *str, size_t len)
Definition yyjson.h:5370
+
yyjson_api_inline bool yyjson_set_float(yyjson_val *val, float num)
Definition yyjson.h:5333
+
yyjson_api_inline bool yyjson_set_real(yyjson_val *val, double num)
Definition yyjson.h:5345
+
yyjson_api_inline bool yyjson_set_double(yyjson_val *val, double num)
Definition yyjson.h:5339
+
yyjson_api_inline bool yyjson_set_sint(yyjson_val *val, int64_t num)
Definition yyjson.h:5321
+
yyjson_api_inline bool yyjson_set_bool(yyjson_val *val, bool num)
Definition yyjson.h:5309
+
yyjson_api_inline bool yyjson_set_int(yyjson_val *val, int num)
Definition yyjson.h:5327
+

+JSON Array

+

The following functions can be used to access a JSON array.
+

+

Note that accessing elements by index may take a linear search time. Therefore, if you need to iterate through an array, it is recommended to use the iterator API.

+
// Returns the number of elements in this array.
+
// Returns 0 if the input is not an array.
+ +
+
// Returns the element at the specified position (linear search time).
+
// Returns NULL if the index is out of bounds, or input is not an array.
+ +
+
// Returns the first element of this array (constant time).
+
// Returns NULL if array is empty or intput is not an array.
+ +
+
// Returns the last element of this array (linear search time).
+
// Returns NULL if array is empty or intput is not an array.
+ +
yyjson_api_inline size_t yyjson_arr_size(yyjson_val *arr)
Definition yyjson.h:5390
+
yyjson_api_inline yyjson_val * yyjson_arr_get_last(yyjson_val *arr)
Definition yyjson.h:5418
+
yyjson_api_inline yyjson_val * yyjson_arr_get(yyjson_val *arr, size_t idx)
Definition yyjson.h:5394
+
yyjson_api_inline yyjson_val * yyjson_arr_get_first(yyjson_val *arr)
Definition yyjson.h:5409
+

+JSON Array Iterator

+

There are two ways to traverse an array:
+

+

Sample code 1 (iterator API):

yyjson_val *arr; // the array to be traversed
+
+ + +
while ((val = yyjson_arr_iter_next(&iter))) {
+
your_func(val);
+
}
+
yyjson_api_inline yyjson_arr_iter yyjson_arr_iter_with(yyjson_val *arr)
Definition yyjson.h:5452
+
yyjson_api_inline yyjson_val * yyjson_arr_iter_next(yyjson_arr_iter *iter)
Definition yyjson.h:5462
+
Definition yyjson.h:1990
+

Sample code 2 (foreach macro):

yyjson_val *arr; // the array to be traversed
+
+
size_t idx, max;
+ +
yyjson_arr_foreach(arr, idx, max, val) {
+
your_func(idx, val);
+
}
+
#define yyjson_arr_foreach(arr, idx, max, val)
Definition yyjson.h:2046
+


+

+

There's also mutable version API to traverse an mutable array:
+

+

Sample code 1 (mutable iterator API):

yyjson_mut_val *arr; // the array to be traversed
+
+ + +
while ((val = yyjson_mut_arr_iter_next(&iter))) {
+
if (your_val_is_unused(val)) {
+
// you can remove current value inside iteration
+ +
}
+
}
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_iter_remove(yyjson_mut_arr_iter *iter)
Definition yyjson.h:6171
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_iter_next(yyjson_mut_arr_iter *iter)
Definition yyjson.h:6159
+
yyjson_api_inline yyjson_mut_arr_iter yyjson_mut_arr_iter_with(yyjson_mut_val *arr)
Definition yyjson.h:6148
+
Definition yyjson.h:2711
+

Sample code 2 (mutable foreach macro):

yyjson_mut_val *arr; // the array to be traversed
+
+
size_t idx, max;
+ +
yyjson_mut_arr_foreach(arr, idx, max, val) {
+
your_func(idx, val);
+
}
+
#define yyjson_mut_arr_foreach(arr, idx, max, val)
Definition yyjson.h:2781
+

+JSON Object

+

The following functions can be used to access a JSON object.
+

+

Note that accessing elements by key may take a linear search time. Therefore, if you need to iterate through an object, it is recommended to use the iterator API.

+
// Returns the number of key-value pairs in this object.
+
// Returns 0 if input is not an object.
+ +
+
// Returns the value to which the specified key is mapped.
+
// Returns NULL if this object contains no mapping for the key.
+
yyjson_val *yyjson_obj_get(yyjson_val *obj, const char *key);
+
yyjson_val *yyjson_obj_getn(yyjson_val *obj, const char *key, size_t key_len);
+
+
// If the order of object's key is known at compile-time,
+
// you can use this method to avoid searching the entire object.
+
// e.g. { "x":1, "y":2, "z":3 }
+
yyjson_val *obj = ...;
+ +
+ + +
yyjson_api_inline yyjson_val * yyjson_obj_get(yyjson_val *obj, const char *key)
Definition yyjson.h:5483
+
yyjson_api_inline yyjson_val * yyjson_obj_iter_get(yyjson_obj_iter *iter, const char *key)
Definition yyjson.h:5545
+
yyjson_api_inline yyjson_val * yyjson_obj_getn(yyjson_val *obj, const char *key, size_t key_len)
Definition yyjson.h:5488
+
yyjson_api_inline yyjson_obj_iter yyjson_obj_iter_with(yyjson_val *obj)
Definition yyjson.h:5521
+
yyjson_api_inline size_t yyjson_obj_size(yyjson_val *obj)
Definition yyjson.h:5479
+
Definition yyjson.h:2114
+

+JSON Object Iterator

+

There are two ways to traverse an object:
+

+

Sample code 1 (iterator API):

yyjson_val *obj; // the object to be traversed
+
+
yyjson_val *key, *val;
+ +
while ((key = yyjson_obj_iter_next(&iter))) {
+ +
your_func(key, val);
+
}
+
yyjson_api_inline yyjson_val * yyjson_obj_iter_get_val(yyjson_val *key)
Definition yyjson.h:5541
+
yyjson_api_inline yyjson_val * yyjson_obj_iter_next(yyjson_obj_iter *iter)
Definition yyjson.h:5531
+

Sample code 2 (foreach macro):

yyjson_val *obj; // this is your object
+
+
size_t idx, max;
+
yyjson_val *key, *val;
+
yyjson_obj_foreach(obj, idx, max, key, val) {
+
your_func(key, val);
+
}
+
#define yyjson_obj_foreach(obj, idx, max, key, val)
Definition yyjson.h:2217
+


+

+

There's also mutable version API to traverse an mutable object:
+

+

Sample code 1 (mutable iterator API):

yyjson_mut_val *obj; // the object to be traversed
+
+
yyjson_mut_val *key, *val;
+ +
while ((key = yyjson_mut_obj_iter_next(&iter))) {
+ +
if (your_key_is_unused(key)) {
+
// you can remove current kv pair inside iteration
+ +
}
+
}
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_iter_next(yyjson_mut_obj_iter *iter)
Definition yyjson.h:6804
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_iter_remove(yyjson_mut_obj_iter *iter)
Definition yyjson.h:6821
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_iter_get_val(yyjson_mut_val *key)
Definition yyjson.h:6816
+
yyjson_api_inline yyjson_mut_obj_iter yyjson_mut_obj_iter_with(yyjson_mut_val *obj)
Definition yyjson.h:6793
+
Definition yyjson.h:3537
+

Sample code 2 (mutable foreach macro):

yyjson_mut_val *obj; // the object to be traversed
+
+
size_t idx, max;
+
yyjson_val *key, *val;
+
yyjson_obj_foreach(obj, idx, max, key, val) {
+
your_func(key, val);
+
}
+

+

+Creating JSON Document

+

The yyjson_mut_doc and related APIs are used to build JSON documents.
+

+

Please note that yyjson_mut_doc uses a memory pool to hold all strings and values. The pool can only be created, grown, or freed in its entirety. Therefore, yyjson_mut_doc is more suitable for write-once than mutation of an existing document.
+

+

JSON objects and arrays are composed of linked lists, so each yyjson_mut_val can only be added to one object or array.

+

Sample code:

+
// Build this JSON:
+
// {
+
// "page": 123,
+
// "names": [ "Harry", "Ron", "Hermione" ]
+
// }
+
+
// Create a mutable document.
+ +
+
// Create an object, the value's memory is held by doc.
+ +
+
// Create key and value, add to the root object.
+
yyjson_mut_val *key = yyjson_mut_str(doc, "page");
+
yyjson_mut_val *num = yyjson_mut_int(doc, 123);
+
yyjson_mut_obj_add(root, key, num);
+
+
// Create 3 string value, add to the array object.
+ +
yyjson_mut_val *name1 = yyjson_mut_str(doc, "Harry");
+
yyjson_mut_val *name2 = yyjson_mut_str(doc, "Ron");
+
yyjson_mut_val *name3 = yyjson_mut_str(doc, "Hermione");
+
yyjson_mut_arr_append(names, name1);
+
yyjson_mut_arr_append(names, name2);
+
yyjson_mut_arr_append(names, name3);
+
yyjson_mut_obj_add(root, yyjson_mut_str(doc, "names"), names);
+
+
// ⌠Wrong! the value is already added to another container.
+
yyjson_mut_obj_add(root, key, name1);
+
+
// Set the document's root value.
+ +
+
// Write to JSON string
+
const char *json = yyjson_mut_write(doc, 0, NULL);
+
+
// Free the memory of doc and all values which is created from this doc.
+ +
yyjson_api_inline yyjson_mut_val * yyjson_mut_obj(yyjson_mut_doc *doc)
Definition yyjson.h:6870
+
yyjson_api void yyjson_mut_doc_free(yyjson_mut_doc *doc)
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_int(yyjson_mut_doc *doc, int64_t num)
Definition yyjson.h:6035
+
yyjson_api_inline bool yyjson_mut_obj_add(yyjson_mut_val *obj, yyjson_mut_val *key, yyjson_mut_val *val)
Definition yyjson.h:7024
+
yyjson_api_inline bool yyjson_mut_arr_append(yyjson_mut_val *arr, yyjson_mut_val *val)
Definition yyjson.h:6405
+

+Mutable Document

+

The following functions are used to create, modify, copy, and destroy a JSON document.
+

+
// Creates and returns a new mutable JSON document.
+
// Returns NULL on error (e.g. memory allocation failure).
+
// If `alc` is NULL, the default allocator will be used.
+ +
+
// Delete the JSON document, free the memory of this doc
+
// and all values created from this doc
+ +
+
// Set the internal memory pool size (string length and value count).
+
// It can be used to reserve memory for the next string and value creation.
+ + +
+
// Get or set the root value of this JSON document.
+ + +
+
// Copies and returns a new mutable document/value from input.
+
// Returns NULL on error (e.g. memory allocation failure).
+
+
// doc -> mut_doc
+ +
// val -> mut_val
+ +
// mut_doc -> mut_doc
+ +
// mut_val -> mut_val
+ +
// mut_doc -> doc
+ +
// mut_val -> doc
+ +
yyjson_api yyjson_mut_val * yyjson_mut_val_mut_copy(yyjson_mut_doc *doc, yyjson_mut_val *val)
+
yyjson_api yyjson_mut_doc * yyjson_mut_doc_mut_copy(yyjson_mut_doc *doc, const yyjson_alc *alc)
+
yyjson_api bool yyjson_mut_doc_set_val_pool_size(yyjson_mut_doc *doc, size_t count)
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_doc_get_root(yyjson_mut_doc *doc)
Definition yyjson.h:5701
+
yyjson_api bool yyjson_mut_doc_set_str_pool_size(yyjson_mut_doc *doc, size_t len)
+

+JSON Value Creation

+

The following functions are used to create mutable JSON value, the value's memory is held by the document.
+

+
// Creates and returns a new value, returns NULL on error.
+ + + + + + + + + + +
+
// Creates a string value, the input string is NOT copied.
+ +
yyjson_mut_val *yyjson_mut_strn(yyjson_mut_doc *doc, const char *str, size_t len);
+
+
// Creates a string value, the input string is copied and held by the document.
+ +
yyjson_mut_val *yyjson_mut_strncpy(yyjson_mut_doc *doc, const char *str, size_t len);
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_true(yyjson_mut_doc *doc)
Definition yyjson.h:6012
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_real(yyjson_mut_doc *doc, double num)
Definition yyjson.h:6050
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_false(yyjson_mut_doc *doc)
Definition yyjson.h:6016
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_float(yyjson_mut_doc *doc, float num)
Definition yyjson.h:6040
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_bool(yyjson_mut_doc *doc, bool val)
Definition yyjson.h:6020
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_null(yyjson_mut_doc *doc)
Definition yyjson.h:6008
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_uint(yyjson_mut_doc *doc, uint64_t num)
Definition yyjson.h:6025
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_double(yyjson_mut_doc *doc, double num)
Definition yyjson.h:6045
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_sint(yyjson_mut_doc *doc, int64_t num)
Definition yyjson.h:6030
+

+JSON Array Creation

+

The following functions are used to create mutable JSON array.
+

+
// Creates and returns an empty mutable array, returns NULL on error.
+ +
+
// Creates and returns a mutable array with c array.
+
yyjson_mut_val *yyjson_mut_arr_with_bool(yyjson_mut_doc *doc, bool *vals, size_t count);
+
yyjson_mut_val *yyjson_mut_arr_with_sint(yyjson_mut_doc *doc, int64_t *vals, size_t count);
+
yyjson_mut_val *yyjson_mut_arr_with_uint(yyjson_mut_doc *doc, uint64_t *vals, size_t count);
+
yyjson_mut_val *yyjson_mut_arr_with_real(yyjson_mut_doc *doc, double *vals, size_t count);
+
yyjson_mut_val *yyjson_mut_arr_with_sint8(yyjson_mut_doc *doc, int8_t *vals, size_t count);
+
yyjson_mut_val *yyjson_mut_arr_with_sint16(yyjson_mut_doc *doc, int16_t *vals, size_t count);
+
yyjson_mut_val *yyjson_mut_arr_with_sint32(yyjson_mut_doc *doc, int32_t *vals, size_t count);
+
yyjson_mut_val *yyjson_mut_arr_with_sint64(yyjson_mut_doc *doc, int64_t *vals, size_t count);
+
yyjson_mut_val *yyjson_mut_arr_with_uint8(yyjson_mut_doc *doc, uint8_t *vals, size_t count);
+
yyjson_mut_val *yyjson_mut_arr_with_uint16(yyjson_mut_doc *doc, uint16_t *vals, size_t count);
+
yyjson_mut_val *yyjson_mut_arr_with_uint32(yyjson_mut_doc *doc, uint32_t *vals, size_t count);
+
yyjson_mut_val *yyjson_mut_arr_with_uint64(yyjson_mut_doc *doc, uint64_t *vals, size_t count);
+
yyjson_mut_val *yyjson_mut_arr_with_float(yyjson_mut_doc *doc, float *vals, size_t count);
+
yyjson_mut_val *yyjson_mut_arr_with_double(yyjson_mut_doc *doc, double *vals, size_t count);
+
// sample code:
+
int vals[3] = {-1, 0, 1};
+ +
+
// Creates and returns a mutable array with strings,
+
// the strings should be encoded as UTF-8.
+
yyjson_mut_val *yyjson_mut_arr_with_str(yyjson_mut_doc *doc, const char **vals, size_t count);
+
yyjson_mut_val *yyjson_mut_arr_with_strn(yyjson_mut_doc *doc, const char **vals, const size_t *lens, size_t count);
+
yyjson_mut_val *yyjson_mut_arr_with_strcpy(yyjson_mut_doc *doc, const char **vals, size_t count);
+
yyjson_mut_val *yyjson_mut_arr_with_strncpy(yyjson_mut_doc *doc, const char **vals, const size_t *lens, size_t count);
+
// sample code:
+
const char strs[3] = {"Jan", "Feb", "Mar"};
+ +
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_sint(yyjson_mut_doc *doc, const int64_t *vals, size_t count)
Definition yyjson.h:6233
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_uint8(yyjson_mut_doc *doc, const uint8_t *vals, size_t count)
Definition yyjson.h:6278
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_sint64(yyjson_mut_doc *doc, const int64_t *vals, size_t count)
Definition yyjson.h:6271
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_strn(yyjson_mut_doc *doc, const char **vals, const size_t *lens, size_t count)
Definition yyjson.h:6328
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_float(yyjson_mut_doc *doc, const float *vals, size_t count)
Definition yyjson.h:6306
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_sint32(yyjson_mut_doc *doc, const int32_t *vals, size_t count)
Definition yyjson.h:6264
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_real(yyjson_mut_doc *doc, const double *vals, size_t count)
Definition yyjson.h:6243
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_sint16(yyjson_mut_doc *doc, const int16_t *vals, size_t count)
Definition yyjson.h:6257
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_uint16(yyjson_mut_doc *doc, const uint16_t *vals, size_t count)
Definition yyjson.h:6285
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_strcpy(yyjson_mut_doc *doc, const char **vals, size_t count)
Definition yyjson.h:6337
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_uint64(yyjson_mut_doc *doc, const uint64_t *vals, size_t count)
Definition yyjson.h:6299
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_uint(yyjson_mut_doc *doc, const uint64_t *vals, size_t count)
Definition yyjson.h:6238
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_sint8(yyjson_mut_doc *doc, const int8_t *vals, size_t count)
Definition yyjson.h:6250
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_uint32(yyjson_mut_doc *doc, const uint32_t *vals, size_t count)
Definition yyjson.h:6292
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_double(yyjson_mut_doc *doc, const double *vals, size_t count)
Definition yyjson.h:6313
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_strncpy(yyjson_mut_doc *doc, const char **vals, const size_t *lens, size_t count)
Definition yyjson.h:6351
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_str(yyjson_mut_doc *doc, const char **vals, size_t count)
Definition yyjson.h:6320
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_bool(yyjson_mut_doc *doc, const bool *vals, size_t count)
Definition yyjson.h:6226
+

+JSON Array Modification

+

The following functions are used to modify the contents of a JSON array.
+

+
// Inserts a value into an array at a given index.
+
// Returns false on error (e.g. out of bounds).
+
// Note that this function takes a linear search time.
+ +
+
// Inserts a val at the end of the array, returns false on error.
+ +
+
// Inserts a val at the head of the array, returns false on error.
+ +
+
// Replaces a value at index and returns old value, returns NULL on error.
+
// Note that this function takes a linear search time.
+ +
+
// Removes and returns a value at index, returns NULL on error.
+
// Note that this function takes a linear search time.
+ +
+
// Removes and returns the first value in this array, returns NULL on error.
+ +
+
// Removes and returns the last value in this array, returns NULL on error.
+ +
+
// Removes all values within a specified range in the array.
+
// Note that this function takes a linear search time.
+
bool yyjson_mut_arr_remove_range(yyjson_mut_val *arr, size_t idx, size_t len);
+
+
// Removes all values in this array.
+ +
+
// Convenience API:
+
// Adds a value at the end of this array, returns false on error.
+ + + + + +
bool yyjson_mut_arr_add_uint(yyjson_mut_doc *doc, yyjson_mut_val *arr, uint64_t num);
+ + + + + +
bool yyjson_mut_arr_add_str(yyjson_mut_doc *doc, yyjson_mut_val *arr, const char *str);
+
bool yyjson_mut_arr_add_strn(yyjson_mut_doc *doc, yyjson_mut_val *arr, const char *str, size_t len);
+
bool yyjson_mut_arr_add_strcpy(yyjson_mut_doc *doc, yyjson_mut_val *arr, const char *str);
+
bool yyjson_mut_arr_add_strncpy(yyjson_mut_doc *doc, yyjson_mut_val *arr, const char *str, size_t len);
+
+
// Convenience API:
+
// Creates and adds a new array at the end of the array.
+
// Returns the new array, or NULL on error.
+ +
+
// Convenience API:
+
// Creates and adds a new object at the end of the array.
+
// Returns the new object, or NULL on error.
+ +
yyjson_api_inline bool yyjson_mut_arr_add_str(yyjson_mut_doc *doc, yyjson_mut_val *arr, const char *str)
Definition yyjson.h:6686
+
yyjson_api_inline bool yyjson_mut_arr_add_true(yyjson_mut_doc *doc, yyjson_mut_val *arr)
Definition yyjson.h:6598
+
yyjson_api_inline bool yyjson_mut_arr_prepend(yyjson_mut_val *arr, yyjson_mut_val *val)
Definition yyjson.h:6424
+
yyjson_api_inline bool yyjson_mut_arr_add_strncpy(yyjson_mut_doc *doc, yyjson_mut_val *arr, const char *str, size_t len)
Definition yyjson.h:6716
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_remove(yyjson_mut_val *arr, size_t idx)
Definition yyjson.h:6471
+
yyjson_api_inline bool yyjson_mut_arr_clear(yyjson_mut_val *arr)
Definition yyjson.h:6558
+
yyjson_api_inline bool yyjson_mut_arr_add_strcpy(yyjson_mut_doc *doc, yyjson_mut_val *arr, const char *str)
Definition yyjson.h:6706
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_replace(yyjson_mut_val *arr, size_t idx, yyjson_mut_val *val)
Definition yyjson.h:6443
+
yyjson_api_inline bool yyjson_mut_arr_add_double(yyjson_mut_doc *doc, yyjson_mut_val *arr, double num)
Definition yyjson.h:6666
+
yyjson_api_inline bool yyjson_mut_arr_add_bool(yyjson_mut_doc *doc, yyjson_mut_val *arr, bool val)
Definition yyjson.h:6616
+
yyjson_api_inline bool yyjson_mut_arr_add_uint(yyjson_mut_doc *doc, yyjson_mut_val *arr, uint64_t num)
Definition yyjson.h:6626
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_add_arr(yyjson_mut_doc *doc, yyjson_mut_val *arr)
Definition yyjson.h:6726
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_remove_last(yyjson_mut_val *arr)
Definition yyjson.h:6514
+
yyjson_api_inline bool yyjson_mut_arr_add_false(yyjson_mut_doc *doc, yyjson_mut_val *arr)
Definition yyjson.h:6607
+
yyjson_api_inline bool yyjson_mut_arr_add_strn(yyjson_mut_doc *doc, yyjson_mut_val *arr, const char *str, size_t len)
Definition yyjson.h:6696
+
yyjson_api_inline bool yyjson_mut_arr_add_real(yyjson_mut_doc *doc, yyjson_mut_val *arr, double num)
Definition yyjson.h:6676
+
yyjson_api_inline bool yyjson_mut_arr_add_float(yyjson_mut_doc *doc, yyjson_mut_val *arr, float num)
Definition yyjson.h:6656
+
yyjson_api_inline bool yyjson_mut_arr_add_val(yyjson_mut_val *arr, yyjson_mut_val *val)
Definition yyjson.h:6584
+
yyjson_api_inline bool yyjson_mut_arr_add_sint(yyjson_mut_doc *doc, yyjson_mut_val *arr, int64_t num)
Definition yyjson.h:6636
+
yyjson_api_inline bool yyjson_mut_arr_remove_range(yyjson_mut_val *arr, size_t idx, size_t len)
Definition yyjson.h:6536
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_add_obj(yyjson_mut_doc *doc, yyjson_mut_val *arr)
Definition yyjson.h:6735
+
yyjson_api_inline bool yyjson_mut_arr_insert(yyjson_mut_val *arr, yyjson_mut_val *val, size_t idx)
Definition yyjson.h:6374
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_remove_first(yyjson_mut_val *arr)
Definition yyjson.h:6495
+
yyjson_api_inline bool yyjson_mut_arr_add_null(yyjson_mut_doc *doc, yyjson_mut_val *arr)
Definition yyjson.h:6589
+

+JSON Object Creation

+

The following functions are used to create mutable JSON object.
+

+
// Creates and returns a mutable object, returns NULL on error.
+ +
+
// Creates and returns a mutable object with keys and values,
+
// returns NULL on error. The keys and values are NOT copied.
+
// The strings should be encoded as UTF-8 with null-terminator.
+ +
const char **keys,
+
const char **vals,
+
size_t count);
+
// sample code:
+
const char keys[] = {"name", "type", "id"};
+
const char *vals[] = {"Harry", "student", "123456"};
+
yyjson_mut_obj_with_str(doc, keys, vals, 3);
+
+
// Creates and returns a mutable object with key-value pairs,
+
// returns NULL on error. The keys and values are NOT copied.
+
// The strings should be encoded as UTF-8 with null-terminator.
+ +
const char **kv_pairs,
+
size_t pair_count);
+
// sample code:
+
const char *pairs[] = {"name", "Harry", "type", "student", "id", "123456"};
+
yyjson_mut_obj_with_kv(doc, pairs, 3);
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_with_str(yyjson_mut_doc *doc, const char **keys, const char **vals, size_t count)
Definition yyjson.h:6881
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_with_kv(yyjson_mut_doc *doc, const char **kv_pairs, size_t pair_count)
Definition yyjson.h:6912
+

+JSON Object Modification

+

The following functions are used to modify the contents of a JSON object.
+

+
// Adds a key-value pair at the end of the object.
+
// The key must be a string value.
+
// This function allows duplicated key in one object.
+ +
+
// Adds a key-value pair to the object.
+
// The key must be a string value.
+
// This function may remove all key-value pairs for the given key before add.
+
// Note that this function takes a linear search time.
+ +
+
// Removes key-value pair from the object with a given key.
+
// Note that this function takes a linear search time.
+ +
+
// Removes all key-value pairs in this object.
+ +
+
// Convenience API:
+
// Adds a key-value pair at the end of the object. The key is not copied.
+
// Note that these functions allow duplicated key in one object.
+
bool yyjson_mut_obj_add_null(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key);
+
bool yyjson_mut_obj_add_true(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key);
+
bool yyjson_mut_obj_add_false(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key);
+
bool yyjson_mut_obj_add_bool(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, bool val);
+
bool yyjson_mut_obj_add_uint(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, uint64_t val);
+
bool yyjson_mut_obj_add_sint(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, int64_t val);
+
bool yyjson_mut_obj_add_int(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, int64_t val);
+
bool yyjson_mut_obj_add_float(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, float val);
+
bool yyjson_mut_obj_add_double(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, double val);
+
bool yyjson_mut_obj_add_real(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, double val);
+
bool yyjson_mut_obj_add_str(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, const char *val);
+
bool yyjson_mut_obj_add_strn(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, const char *val, size_t len);
+
bool yyjson_mut_obj_add_strcpy(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, const char *val);
+
bool yyjson_mut_obj_add_strncpy(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, const char *val, size_t len);
+ + +
+
// Convenience API:
+
// Removes all key-value pairs for the given key.
+
// Note that this function takes a linear search time.
+
bool yyjson_mut_obj_remove_str(yyjson_mut_val *obj, const char *key);
+
bool yyjson_mut_obj_remove_strn(yyjson_mut_val *obj, const char *key, size_t len);
+
+
// Convenience API:
+
// Replaces all matching keys with the new key.
+
// Returns true if at least one key was renamed.
+
// This function takes a linear search time.
+
yyjson_api_inline bool yyjson_mut_obj_rename_key(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, const char *new_key);
+
yyjson_api_inline bool yyjson_mut_obj_rename_keyn(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, size_t len, const char *new_key, size_t new_len);
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_add_arr(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key)
Definition yyjson.h:7281
+
yyjson_api_inline bool yyjson_mut_obj_add_strncpy(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, const char *val, size_t len)
Definition yyjson.h:7268
+
yyjson_api_inline bool yyjson_mut_obj_add_double(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, double val)
Definition yyjson.h:7215
+
yyjson_api_inline bool yyjson_mut_obj_rename_keyn(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, size_t len, const char *new_key, size_t new_len)
Definition yyjson.h:7339
+
yyjson_api_inline bool yyjson_mut_obj_add_sint(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, int64_t val)
Definition yyjson.h:7194
+
yyjson_api_inline bool yyjson_mut_obj_add_strn(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, const char *val, size_t len)
Definition yyjson.h:7243
+
yyjson_api_inline bool yyjson_mut_obj_add_false(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key)
Definition yyjson.h:7174
+
yyjson_api_inline bool yyjson_mut_obj_add_int(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, int64_t val)
Definition yyjson.h:7201
+
yyjson_api_inline bool yyjson_mut_obj_add_uint(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, uint64_t val)
Definition yyjson.h:7187
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_remove_str(yyjson_mut_val *obj, const char *key)
Definition yyjson.h:7307
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_remove(yyjson_mut_val *obj, yyjson_mut_val *key)
Definition yyjson.h:7083
+
#define yyjson_api_inline
Definition yyjson.h:340
+
yyjson_api_inline bool yyjson_mut_obj_add_null(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key)
Definition yyjson.h:7162
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_add_obj(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key)
Definition yyjson.h:7289
+
yyjson_api_inline bool yyjson_mut_obj_add_true(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key)
Definition yyjson.h:7168
+
yyjson_api_inline bool yyjson_mut_obj_add_str(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, const char *val)
Definition yyjson.h:7229
+
yyjson_api_inline bool yyjson_mut_obj_add_real(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, double val)
Definition yyjson.h:7222
+
yyjson_api_inline bool yyjson_mut_obj_add_bool(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, bool val)
Definition yyjson.h:7180
+
yyjson_api_inline bool yyjson_mut_obj_add_strcpy(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, const char *val)
Definition yyjson.h:7255
+
yyjson_api_inline bool yyjson_mut_obj_put(yyjson_mut_val *obj, yyjson_mut_val *key, yyjson_mut_val *val)
Definition yyjson.h:7035
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_remove_strn(yyjson_mut_val *obj, const char *key, size_t len)
Definition yyjson.h:7312
+
yyjson_api_inline bool yyjson_mut_obj_rename_key(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, const char *new_key)
Definition yyjson.h:7330
+
yyjson_api_inline bool yyjson_mut_obj_add_float(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, float val)
Definition yyjson.h:7208
+
yyjson_api_inline bool yyjson_mut_obj_clear(yyjson_mut_val *obj)
Definition yyjson.h:7109
+

+

+JSON Pointer and Patch

+

+JSON Pointer

+

The library supports querying JSON values using JSON Pointer (RFC 6901).

+
// `JSON pointer` is a null-terminated string.
+
yyjson_val *yyjson_ptr_get(yyjson_val *val, const char *ptr);
+
yyjson_val *yyjson_doc_ptr_get(yyjson_doc *doc, const char *ptr);
+ + +
+
// `JSON pointer` with string length, allow NUL (Unicode U+0000) characters inside.
+
yyjson_val *yyjson_ptr_getn(yyjson_val *val, const char *ptr, size_t len);
+
yyjson_val *yyjson_doc_ptr_getn(yyjson_doc *doc, const char *ptr, size_t len);
+
yyjson_mut_val *yyjson_mut_ptr_getn(yyjson_mut_val *val, const char *ptr, size_t len);
+
yyjson_mut_val *yyjson_mut_doc_ptr_getn(yyjson_mut_doc *doc, const char *ptr, size_t len);
+
+
// `JSON pointer` with string length, context and error information.
+
yyjson_val *yyjson_ptr_getx(yyjson_val *val, const char *ptr, size_t len, yyjson_ptr_err *err);
+
yyjson_val *yyjson_doc_ptr_getx(yyjson_doc *doc, const char *ptr, size_t len, yyjson_ptr_err *err);
+
yyjson_mut_val *yyjson_mut_ptr_getx(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err);
+
yyjson_mut_val *yyjson_mut_doc_ptr_getx(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err);
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_doc_ptr_getn(yyjson_mut_doc *doc, const char *ptr, size_t len)
Definition yyjson.h:7479
+
yyjson_api_inline yyjson_val * yyjson_ptr_getx(yyjson_val *val, const char *ptr, size_t len, yyjson_ptr_err *err)
Definition yyjson.h:7455
+
yyjson_api_inline yyjson_val * yyjson_doc_ptr_getx(yyjson_doc *doc, const char *ptr, size_t len, yyjson_ptr_err *err)
Definition yyjson.h:7422
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_doc_ptr_get(yyjson_mut_doc *doc, const char *ptr)
Definition yyjson.h:7473
+
yyjson_api_inline yyjson_val * yyjson_doc_ptr_getn(yyjson_doc *doc, const char *ptr, size_t len)
Definition yyjson.h:7417
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_doc_ptr_getx(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err)
Definition yyjson.h:7485
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_ptr_getn(yyjson_mut_val *val, const char *ptr, size_t len)
Definition yyjson.h:7517
+
yyjson_api_inline yyjson_val * yyjson_ptr_get(yyjson_val *val, const char *ptr)
Definition yyjson.h:7444
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_ptr_get(yyjson_mut_val *val, const char *ptr)
Definition yyjson.h:7511
+
yyjson_api_inline yyjson_val * yyjson_doc_ptr_get(yyjson_doc *doc, const char *ptr)
Definition yyjson.h:7411
+
yyjson_api_inline yyjson_val * yyjson_ptr_getn(yyjson_val *val, const char *ptr, size_t len)
Definition yyjson.h:7450
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_ptr_getx(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err)
Definition yyjson.h:7523
+
Definition yyjson.h:4120
+
Definition yyjson.h:4092
+

For example, given the JSON document:

{
+
"size" : 3,
+
"users" : [
+
{"id": 1, "name": "Harry"},
+
{"id": 2, "name": "Ron"},
+
{"id": 3, "name": "Hermione"}
+
]
+
}
+

The following JSON strings evaluate to the accompanying values:

+ + + + + + + + + + + + + + + + + +
Pointer Matched Value
"" the whole document
"/size" 3
"/users/0" {"id": 1, "name": "Harry"}
"/users/1/name" "Ron"
"/no_match" NULL
"no_slash" NULL
"/" NULL (match to empty key: root[""])
+
yyjson_doc *doc = ...;
+
yyjson_val *val = yyjson_doc_ptr_get(doc, "/users/1/name");
+
printf("%s\n", yyjson_get_str(val)); // Ron
+
+ +
yyjson_val *val2 = yyjson_doc_ptr_getx(doc, "/", 1, &err);
+
if (!val2) printf("err %d: %s\n", err.code, err.msg); // err 3: cannot be resolved
+
const char * msg
Definition yyjson.h:4096
+
yyjson_ptr_code code
Definition yyjson.h:4094
+

The library also supports modifying JSON values using JSON Pointer.

// Add or insert a new value.
+
bool yyjson_mut_ptr_add(yyjson_mut_val *val, const char *ptr, yyjson_mut_val *new_val, yyjson_mut_doc *doc);
+
bool yyjson_mut_ptr_addn(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_mut_doc *doc);
+
bool yyjson_mut_ptr_addx(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_mut_doc *doc, bool create_parent, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err);
+
+
bool yyjson_mut_doc_ptr_add(yyjson_mut_doc *doc, const char *ptr, yyjson_mut_val *new_val);
+
bool yyjson_mut_doc_ptr_addn(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val);
+
bool yyjson_mut_doc_ptr_addx(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val, bool create_parent, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err);
+
+
// Set a new value (add if it doesn't exist, replace if it does).
+
bool yyjson_mut_ptr_set(yyjson_mut_val *val, const char *ptr, yyjson_mut_val *new_val, yyjson_mut_doc *doc);
+
bool yyjson_mut_ptr_setn(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_mut_doc *doc);
+
bool yyjson_mut_ptr_setx(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_mut_doc *doc, bool create_parent, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err);
+
+
bool yyjson_mut_doc_ptr_set(yyjson_mut_doc *doc, const char *ptr, yyjson_mut_val *new_val);
+
bool yyjson_mut_doc_ptr_setn(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val);
+
bool yyjson_mut_doc_ptr_setx(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val, bool create_parent, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err);
+
+
// Replace an existing value.
+ +
yyjson_mut_val *yyjson_mut_ptr_replacen(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val);
+
yyjson_mut_val *yyjson_mut_ptr_replacex(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err);
+
+ +
yyjson_mut_val *yyjson_mut_doc_ptr_replacen(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val);
+ +
+
// Remove an existing value.
+ +
yyjson_mut_val *yyjson_mut_ptr_removen(yyjson_mut_val *val, const char *ptr, size_t len);
+
yyjson_mut_val *yyjson_mut_ptr_removex(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err);
+
+ +
yyjson_mut_val *yyjson_mut_doc_ptr_removen(yyjson_mut_doc *doc, const char *ptr, size_t len);
+ +
yyjson_api_inline yyjson_mut_val * yyjson_mut_doc_ptr_remove(yyjson_mut_doc *doc, const char *ptr)
Definition yyjson.h:7831
+
yyjson_api_inline bool yyjson_mut_ptr_setx(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_mut_doc *doc, bool create_parent, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err)
Definition yyjson.h:7725
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_doc_ptr_replace(yyjson_mut_doc *doc, const char *ptr, yyjson_mut_val *new_val)
Definition yyjson.h:7754
+
yyjson_api_inline bool yyjson_mut_doc_ptr_setn(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val)
Definition yyjson.h:7654
+
yyjson_api_inline bool yyjson_mut_ptr_addx(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_mut_doc *doc, bool create_parent, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err)
Definition yyjson.h:7621
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_doc_ptr_removex(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err)
Definition yyjson.h:7842
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_ptr_removen(yyjson_mut_val *val, const char *ptr, size_t len)
Definition yyjson.h:7876
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_ptr_replacex(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err)
Definition yyjson.h:7809
+
yyjson_api_inline bool yyjson_mut_doc_ptr_setx(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val, bool create_parent, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err)
Definition yyjson.h:7660
+
yyjson_api_inline bool yyjson_mut_ptr_set(yyjson_mut_val *val, const char *ptr, yyjson_mut_val *new_val, yyjson_mut_doc *doc)
Definition yyjson.h:7710
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_doc_ptr_removen(yyjson_mut_doc *doc, const char *ptr, size_t len)
Definition yyjson.h:7837
+
yyjson_api_inline bool yyjson_mut_doc_ptr_addn(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val)
Definition yyjson.h:7552
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_ptr_removex(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err)
Definition yyjson.h:7882
+
yyjson_api_inline bool yyjson_mut_doc_ptr_set(yyjson_mut_doc *doc, const char *ptr, yyjson_mut_val *new_val)
Definition yyjson.h:7647
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_doc_ptr_replacen(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val)
Definition yyjson.h:7760
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_ptr_remove(yyjson_mut_val *val, const char *ptr)
Definition yyjson.h:7870
+
yyjson_api_inline bool yyjson_mut_ptr_addn(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_mut_doc *doc)
Definition yyjson.h:7614
+
yyjson_api_inline bool yyjson_mut_ptr_add(yyjson_mut_val *val, const char *ptr, yyjson_mut_val *new_val, yyjson_mut_doc *doc)
Definition yyjson.h:7606
+
yyjson_api_inline bool yyjson_mut_ptr_setn(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_mut_doc *doc)
Definition yyjson.h:7718
+
yyjson_api_inline bool yyjson_mut_doc_ptr_addx(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val, bool create_parent, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err)
Definition yyjson.h:7559
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_ptr_replace(yyjson_mut_val *val, const char *ptr, yyjson_mut_val *new_val)
Definition yyjson.h:7798
+
yyjson_api_inline bool yyjson_mut_doc_ptr_add(yyjson_mut_doc *doc, const char *ptr, yyjson_mut_val *new_val)
Definition yyjson.h:7545
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_doc_ptr_replacex(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err)
Definition yyjson.h:7765
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_ptr_replacen(yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val)
Definition yyjson.h:7804
+

For example:

yyjson_mut_doc *doc = ...;
+
// doc: {"a":0,"b":[1,2,3]}
+
+ +
// now: {"a":9,"b":[1,2,3]}
+
+
yyjson_mut_doc_ptr_add(doc, "/b/-", yyjson_mut_int(doc, 4));
+
// now: {"a":9,"b":[1,2,3,4]}
+
+ +
// now: {"a":9}
+

All the above functions ending with x can be used to get the result context ctx, and the error message err. For example:

// doc: {"a":0,"b":[null,2,3]}
+
yyjson_mut_doc *doc = ...;
+
+
// get error code and message
+ +
yyjson_mut_doc_ptr_setx(doc, "/b/99", 4, yyjson_mut_int(doc, 99), true, NULL, &err);
+
if (err.code) printf("err: %s\n", err.msg); // err: cannot resolve
+
+
// get target value's context
+
// perform some operations without re-parsing the JSON Pointer
+
yyjson_mut_val *val = yyjson_mut_doc_ptr_getx(doc, "/b/0", 4, &ctx, &err);
+ +
// now: {"a":0,"b":[2,3]}
+
yyjson_api_inline bool yyjson_mut_is_null(yyjson_mut_val *val)
Definition yyjson.h:5720
+
yyjson_api_inline bool yyjson_ptr_ctx_remove(yyjson_ptr_ctx *ctx)
Definition yyjson.h:7991
+

+JSON Patch

+

The library supports JSON Patch (RFC 6902). Specification and example: https://tools.ietf.org/html/rfc6902

// Creates and returns a patched JSON value.
+
// Returns NULL if the patch could not be applied.
+ +
yyjson_val *orig,
+
yyjson_val *patch,
+ +
+ + + + +
yyjson_api yyjson_mut_val * yyjson_patch(yyjson_mut_doc *doc, yyjson_val *orig, yyjson_val *patch, yyjson_patch_err *err)
+
yyjson_api yyjson_mut_val * yyjson_mut_patch(yyjson_mut_doc *doc, yyjson_mut_val *orig, yyjson_mut_val *patch, yyjson_patch_err *err)
+
Definition yyjson.h:4680
+

+JSON Merge Patch

+

The library supports JSON Merge Patch (RFC 7386). Specification and example: https://tools.ietf.org/html/rfc7386

// Creates and returns a merge-patched JSON value.
+
// Returns NULL if the patch could not be applied.
+ +
yyjson_val *orig,
+
yyjson_val *patch);
+
+ + +
yyjson_mut_val *patch);
+
yyjson_api yyjson_mut_val * yyjson_merge_patch(yyjson_mut_doc *doc, yyjson_val *orig, yyjson_val *patch)
+
yyjson_api yyjson_mut_val * yyjson_mut_merge_patch(yyjson_mut_doc *doc, yyjson_mut_val *orig, yyjson_mut_val *patch)
+

+

+Number Processing

+

+Number reader

+

The library has a built-in high-performance number reader,
+ it will read numbers according to these rules by default:
+

+
    +
  • Positive integers are read as uint64_t. If an overflow occurs, it is converted to double.
  • +
  • Negative integers are read as int64_t. If an overflow occurs, it is converted to double.
  • +
  • Floating-point numbers are read as double with correct rounding.
  • +
  • If a double number overflow (reaches infinity), an error is reported.
  • +
  • If a number does not conform to the JSON standard, an error is reported.
  • +
+

There are 3 flags that can be used to adjust the number parsing strategy:

+
    +
  • YYJSON_READ_ALLOW_INF_AND_NAN: read nan/inf number or literal as double (non-standard).
  • +
  • YYJSON_READ_NUMBER_AS_RAW: read all numbers as raw strings without parsing.
  • +
  • YYJSON_READ_BIGNUM_AS_RAW: read big numbers (overflow or infinity) as raw strings without parsing.
  • +
+

See the Reader flag section for more details.

+

+Number writer

+

The library has a built-in high-performance number writer,
+ it will write numbers according to these rules by default:
+

+
    +
  • Positive integers are written without a sign.
  • +
  • Negative integers are written with a negative sign.
  • +
  • Floating-point numbers are written using the ECMAScript format, with the following modifications:
      +
    • If the number is Infinity or NaN, an error is reported.
    • +
    • The negative sign of -0.0 is preserved to maintain input information.
    • +
    • The positive sign in the exponent part is removed.
    • +
    +
  • +
  • The floating-point number writer will generate the shortest correctly rounded decimal representation.
  • +
+

There are several flags that can be used to adjust the number writing strategy:

+
    +
  • YYJSON_WRITE_ALLOW_INF_AND_NAN writes inf/nan numbers as Infinity and NaN literals without error (non-standard).
  • +
  • YYJSON_WRITE_INF_AND_NAN_AS_NULL writes inf/nan numbers as null literal.
  • +
  • YYJSON_WRITE_FP_TO_FLOAT writes real numbers as float instead of double.
  • +
  • YYJSON_WRITE_FP_TO_FIXED(prec) writes real numbers using fixed-point notation.
  • +
+

See the Writer flag section for more details.

+

There are also some helper functions to control the output format of individual values:

+

+Number conversion function

+

There are also two utility functions provide direct access to the library's internal number conversion logic.
+ They are intended for standalone use and typically do not allocate memory.

// parse a number from strin
+
const char *yyjson_read_number(const char *dat,
+
yyjson_val *val,
+ +
const yyjson_alc *alc,
+ +
// write a number to string
+
char *yyjson_write_number(const yyjson_val *val, char *buf);
+
yyjson_api char * yyjson_write_number(const yyjson_val *val, char *buf)
+
yyjson_api const char * yyjson_read_number(const char *dat, yyjson_val *val, yyjson_read_flag flg, const yyjson_alc *alc, yyjson_read_err *err)
+

+Text Processing

+

+Character Encoding

+

By default, this library supports UTF-8 encoding without a BOM, as specified in RFC 8259:

+
+

JSON text exchanged between systems that are not part of a closed ecosystem MUST be encoded using UTF-8. Implementations MUST NOT add a byte order mark (U+FEFF) to the beginning of a networked-transmitted JSON text.

+
+

This library performs strict UTF-8 encoding validation on input strings by default. If an invalid character is encountered, an error will be reported.

+

To allow a BOM, use the YYJSON_READ_ALLOW_BOM or YYJSON_READ_ALLOW_EXT_WHITESPACE flags.

+

To allow invalid Unicode encoding, use the YYJSON_READ_ALLOW_INVALID_UNICODE and YYJSON_WRITE_ALLOW_INVALID_UNICODE flags. Note: Enabling these flags may result in yyjson producing values that contain invalid characters, which could be processed by other code and potentially introduce security risks.

+

To mark a string as not requiring escaping during JSON writing, use yyjson_set_str_noesc(yyjson_val *val, bool noesc) or yyjson_mut_set_str_noesc(yyjson_mut_val *val, bool noesc). This can improve string-writing performance and preserve the original string bytes.

+

+NUL Character

+

This library supports the NUL character (also known as the null terminator, or Unicode U+0000, ASCII \0) inside strings.

+

When reading JSON, \u0000 will be unescaped to NUL character. If a string contains the NUL character, the length obtained with strlen() will be inaccurate, and you should use yyjson_get_len() to get the actual length.

+

When building JSON, the input string is treated as null-terminated by default. If you need to pass in a string that contains the NUL character, you should use the API with the n suffix and provide the actual length of the string.

+

For example:

// null-terminated string
+
yyjson_mut_str(doc, str);
+
yyjson_obj_get(obj, str);
+
+
// any string, with or without null terminator
+
yyjson_mut_strn(doc, str, len);
+
yyjson_obj_getn(obj, str, len);
+
+
// C++ string
+
std::string sstr = ...;
+
yyjson_obj_getn(obj, sstr.data(), sstr.length());
+

+Memory Allocator

+

The library does not directly call libc's memory allocation functions (malloc/realloc/free). Instead, when memory allocation is required, yyjson's API takes a parameter named alc that allows the caller to pass in an allocator. If the alc is NULL, yyjson will use the default memory allocator, which is a simple wrapper of libc's functions.

+

Using a custom memory allocator allows you to have more control over memory allocation, here are a few examples:

+

+Single allocator for multiple JSON

+

If you need to parse multiple small JSON one by one, you can use a single allocator to avoid multiple memory allocations.

+

Sample code:

// max data size for single JSON
+
size_t max_json_size = 64 * 1024;
+
// calculate the max memory usage for a single JSON
+
size_t buf_size = yyjson_read_max_memory_usage(max_json_size, 0);
+
// create a buffer for allocator
+
void *buf = malloc(buf_size);
+
// setup the allocator with buffer
+ +
yyjson_alc_pool_init(&alc, buf, buf_size);
+
+
// read multiple JSON using one allocator
+
for(int i = 0, i < your_json_file_count; i++) {
+
const char *your_json_file_path = ...;
+
yyjson_doc *doc = yyjson_read_file(your_json_file_path, 0, &alc, NULL);
+
...
+ +
}
+
+
// free the buffer
+
free(buf);
+
yyjson_api_inline size_t yyjson_read_max_memory_usage(size_t len, yyjson_read_flag flg)
Definition yyjson.h:1090
+

If you are not sure about the amount of memory required to process JSON, you can use the dynamic allocator.

// create a dynamic allocator
+ +
+
// read multiple JSON using one allocator
+
for(int i = 0, i < your_json_file_count; i++) {
+
const char *your_json_file_path = ...;
+
yyjson_doc *doc = yyjson_read_file(your_json_file_path, 0, alc, NULL);
+
...
+ +
}
+
+
// free the allocator
+ +
yyjson_api yyjson_alc * yyjson_alc_dyn_new(void)
+
yyjson_api void yyjson_alc_dyn_free(yyjson_alc *alc)
+

+Stack memory allocator

+

If the JSON is small enough, you can use stack memory to read or write it.

+

Sample code:

char buf[128 * 1024]; // stack buffer
+ +
yyjson_alc_pool_init(&alc, buf, sizeof(buf));
+
+
yyjson_doc *doc = yyjson_read_opts(dat, len, 0, &alc, NULL);
+
...
+
yyjson_doc_free(doc); // this is optional, as the memory is on stack
+

+Use a third-party allocator library

+

You can use a third-party high-performance memory allocator for yyjson, such as jemalloc, tcmalloc, mimalloc. You can also refer to the following code to implement your own allocator.

+

Sample code:

// Use https://github.com/microsoft/mimalloc
+
+
#include <mimalloc.h>
+
+
// same as malloc(size)
+
static void *priv_malloc(void *ctx, size_t size) {
+
return mi_malloc(size);
+
}
+
+
// same as realloc(ptr, size)
+
// `old_size` is the size of the originally allocated memory
+
static void *priv_realloc(void *ctx, void *ptr, size_t old_size, size_t size) {
+
return mi_realloc(ptr, size);
+
}
+
+
// same as free(ptr)
+
static void priv_free(void *ctx, void *ptr) {
+
mi_free(ptr);
+
}
+
+
// the allocator object
+
static const yyjson_alc PRIV_ALC = {
+
priv_malloc,
+
priv_realloc,
+
priv_free,
+
NULL // `ctx` which will be passed into the functions above
+
};
+
+
// Read with custom allocator
+
yyjson_doc *doc = yyjson_doc_read_opts(dat, len, 0, &PRIV_ALC, NULL);
+
...
+
yyjson_doc_free(doc);
+
+
// Write with custom allocator
+
yyjson_alc *alc = &PRIV_ALC;
+
char *json = yyjson_doc_write(doc, 0, alc, NULL, NULL);
+
...
+
alc->free(alc->ctx, json);
+

+Stack Memory Usage

+

Most functions in the library use fixed-size stack memory. This includes functions for JSON reading and writing, as well as JSON Pointer handling.

+

However, a few functions use recursion and may cause a stack overflow if the object level is too deep. These functions are marked with the following warning in the header file:

+
Warning
This function is recursive and may cause a stack overflow if the object level is too deep.
+
+

+Null Check

+

The library's public APIs perform a null check for every input parameter to prevent crashes.

+

For example, when reading a JSON, you don't need to perform null checks or type checks on each value:

yyjson_doc *doc = yyjson_read(NULL, 0, 0); // doc is NULL
+
yyjson_val *val = yyjson_doc_get_root(doc); // val is NULL
+
const char *str = yyjson_get_str(val); // str is NULL
+
if (!str) printf("err!");
+
yyjson_doc_free(doc); // do nothing
+

However, if you are certain that a value is non-null and matches the expected type, you can use the unsafe prefix API to avoid the null check.

+

For example, when iterating over an array or object, the value and key must be non-null:

size_t idx, max;
+
yyjson_val *key, *val;
+
yyjson_obj_foreach(obj, idx, max, key, val) {
+
// this is a valid JSON, so the key must be a valid string
+
if (unsafe_yyjson_equals_str(key, "id") &&
+
unsafe_yyjson_is_uint(val) &&
+
unsafe_yyjson_get_uint(val) == 1234) {
+
...
+
}
+
}
+

+Thread Safety

+

The library does not use global variables. Therefore, if you can ensure that the input parameters of a function are thread-safe, then the function calls are also thread-safe.
+

+

In general, yyjson_doc and yyjson_val are immutable and thread-safe, while yyjson_mut_doc and yyjson_mut_val are mutable and not thread-safe.

+

+Locale Independence

+

The library is designed to be locale-independent.

+

However, there are certain conditions that you should be aware of:

+
    +
  1. You use libc's setlocale() function to change the locale.
  2. +
  3. Your environment does not adhere the IEEE 754 floating-point standard (e.g. some IBM mainframes), or you explicitly set YYJSON_DISABLE_FAST_FP_CONV during build, in such case yyjson will use strtod() to parse floating-point numbers.
  4. +
+

If both of these conditions are met, it is recommended to avoid calling setlocale() while another thread is parsing JSON. Otherwise, an error may be returned during JSON floating-point number parsing.

+
+
+
+ + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/bc_s.png b/lib/yyjson-0.12.0/doc/doxygen/html/bc_s.png new file mode 100644 index 00000000000..224b29aa984 Binary files /dev/null and b/lib/yyjson-0.12.0/doc/doxygen/html/bc_s.png differ diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/bc_sd.png b/lib/yyjson-0.12.0/doc/doxygen/html/bc_sd.png new file mode 100644 index 00000000000..31ca888dc71 Binary files /dev/null and b/lib/yyjson-0.12.0/doc/doxygen/html/bc_sd.png differ diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/building-and-testing.html b/lib/yyjson-0.12.0/doc/doxygen/html/building-and-testing.html new file mode 100644 index 00000000000..49054912405 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/building-and-testing.html @@ -0,0 +1,335 @@ + + + + + + + + +yyjson: Building and testing + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
yyjson 0.12.0 +
+
A high performance C JSON library.
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Building and testing
+
+
+

There are several ways to integrate this library into your project: source code, package manager, and CMake.

+

+Source code

+

This library aims to provide a cross-platform JSON library, so it is written in ANSI C (actually C99, but compatible with strict C89). You can copy yyjson.h and yyjson.c to your project and start using it without any configuration.

+

The library has been tested with gcc, clang, msvc, tcc compilers and x86, arm, ppc, riscv, s390x architectures in Github CI. Please report a bug if you encounter any compilation issues.

+

The library has all features enabled by default, but you can trim out some of them by adding compile-time options. For example, you can disable the JSON writer to reduce the binary size when you don't need serialization, or disable comments support to improve parsing performance. See Compile-time Options for details.

+

+Package manager

+

You can use some popular package managers like vcpkg, conan, and xmake to download and install yyjson. The yyjson package in these package managers is kept up to date by community contributors. If the version is out of date, please create an issue or pull request on their repository.

+

+Use vcpkg

+

You can build and install yyjson using vcpkg dependency manager:

+
git clone https://github.com/Microsoft/vcpkg.git
+
cd vcpkg
+
./bootstrap-vcpkg.sh # ./bootstrap-vcpkg.bat for Powershell
+
./vcpkg integrate install
+
./vcpkg install yyjson
+

If the version is out of date, please create an issue or pull request on the vcpkg repository.

+

+CMake

+

+Use CMake to build the library

+

Clone the repository and create build directory:

git clone https://github.com/ibireme/yyjson.git
+
cmake -E make_directory build; cd build
+

Build static library:

cmake ..
+
cmake --build .
+

Build shared library:

cmake .. -DBUILD_SHARED_LIBS=ON
+
cmake --build .
+

Supported CMake options (default OFF):

+
    +
  • -DYYJSON_BUILD_TESTS=ON Build all tests.
  • +
  • -DYYJSON_BUILD_FUZZER=ON Build fuzzer with LibFuzzing.
  • +
  • -DYYJSON_BUILD_MISC=ON Build misc.
  • +
  • -DYYJSON_BUILD_DOC=ON Build documentation with doxygen.
  • +
  • -DYYJSON_ENABLE_COVERAGE=ON Enable code coverage for tests.
  • +
  • -DYYJSON_ENABLE_VALGRIND=ON Enable valgrind memory checker for tests.
  • +
  • -DYYJSON_ENABLE_SANITIZE=ON Enable sanitizer for tests.
  • +
  • -DYYJSON_ENABLE_FASTMATH=ON Enable fast-math for tests.
  • +
  • -DYYJSON_FORCE_32_BIT=ON Force 32-bit for tests (gcc/clang/icc).
  • +
  • -DYYJSON_DISABLE_READER=ON Disable JSON reader if you don't need it.
  • +
  • -DYYJSON_DISABLE_WRITER=ON Disable JSON writer if you don't need it.
  • +
  • -DYYJSON_DISABLE_INCR_READER=ON Disable incremental reader if you don't need it.
  • +
  • -DYYJSON_DISABLE_UTILS=ON Disable JSON Pointer, JSON Patch and JSON Merge Patch.
  • +
  • -DYYJSON_DISABLE_FAST_FP_CONV=ON Disable builtin fast floating-pointer conversion.
  • +
  • -DYYJSON_DISABLE_NON_STANDARD=ON Disable non-standard JSON support at compile-time.
  • +
  • -DYYJSON_DISABLE_UTF8_VALIDATION=ON Disable UTF-8 validation at compile-time.
  • +
  • -DYYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS=ON Disable unaligned memory access support at compile-time.
  • +
+

+Use CMake as a dependency

+

You can download and unzip yyjson to your project directory and link it in your CMakeLists.txt file:

# Add some options (optional)
+
set(YYJSON_DISABLE_NON_STANDARD ON CACHE INTERNAL "")
+
+
# Add the `yyjson` subdirectory
+
add_subdirectory(vendor/yyjson)
+
+
# Link yyjson to your target
+
target_link_libraries(your_target PRIVATE yyjson)
+

If your CMake version is higher than 3.11, you can use the following code to let CMake automatically download it:

include(FetchContent)
+
+
# Let CMake download yyjson
+
FetchContent_Declare(
+
yyjson
+
GIT_REPOSITORY https://github.com/ibireme/yyjson.git
+
GIT_TAG master # master, or version number, e.g. 0.6.0
+
)
+
FetchContent_GetProperties(yyjson)
+
if(NOT yyjson_POPULATED)
+
FetchContent_Populate(yyjson)
+
add_subdirectory(${yyjson_SOURCE_DIR} ${yyjson_BINARY_DIR} EXCLUDE_FROM_ALL)
+
endif()
+
+
# Link yyjson to your target
+
target_link_libraries(your_target PRIVATE yyjson)
+

+Use CMake to generate project

+

If you want to build or debug yyjson with another compiler or IDE, try these commands:

cmake -E make_directory build; cd build
+
+
# Clang for Linux/Unix:
+
cmake .. -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
+
+
# Intel ICC for Linux/Unix:
+
cmake .. -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc
+
+
# Other version of GCC:
+
cmake .. -DCMAKE_C_COMPILER=/usr/local/gcc-8.2/bin/gcc -DCMAKE_CXX_COMPILER=/usr/local/gcc-8.2/bin/g++
+
+
# Microsoft Visual Studio for Windows:
+
cmake .. -G "Visual Studio 16 2019" -A x64
+
cmake .. -G "Visual Studio 16 2019" -A Win32
+
cmake .. -G "Visual Studio 15 2017 Win64"
+
+
# Xcode for macOS:
+
cmake .. -G Xcode
+
+
# Xcode for iOS:
+
cmake .. -G Xcode -DCMAKE_SYSTEM_NAME=iOS
+
+
# Xcode with XCTest
+
cmake .. -G Xcode -DYYJSON_BUILD_TESTS=ON
+

+Use CMake to generate documentation

+

This project uses doxygen to generate the documentation. Make sure doxygen is installed on your system before proceeding, it's best to use the version specified in doc/Doxyfile.in.

+

To build the documentation:

cmake -E make_directory build; cd build
+
cmake .. -DYYJSON_BUILD_DOC=ON
+
cmake --build .
+

The generated HTML files will be located in build/doxygen/html.

+

You can also browse the pre-generated documentation online: https://ibireme.github.io/yyjson/doc/doxygen/html/

+

+Testing With CMake and CTest

+

Build and run all tests:

cmake -E make_directory build; cd build
+
cmake .. -DYYJSON_BUILD_TESTS=ON
+
cmake --build .
+
ctest --output-on-failure
+

Build and run tests with valgrind memory checker, (make sure you have valgrind installed before proceeding):

cmake -E make_directory build; cd build
+
cmake .. -DYYJSON_BUILD_TESTS=ON -DYYJSON_ENABLE_VALGRIND=ON
+
cmake --build .
+
ctest --output-on-failure
+

Build and run tests with sanitizer (compiler should be gcc or clang):

cmake -E make_directory build; cd build
+
cmake .. -DYYJSON_BUILD_TESTS=ON -DYYJSON_ENABLE_SANITIZE=ON
+
cmake --build .
+
ctest --output-on-failure
+

Build and run code coverage with gcc:

cmake -E make_directory build; cd build
+
cmake .. -DCMAKE_BUILD_TYPE=Debug -DYYJSON_BUILD_TESTS=ON -DYYJSON_ENABLE_COVERAGE=ON
+
cmake --build . --config Debug
+
ctest --output-on-failure
+
+
lcov -c -d ./CMakeFiles --include "*/yyjson.*" -o cov.info
+
genhtml cov.info -o ./cov_report
+

Build and run code coverage with clang:

cmake -E make_directory build; cd build
+
cmake .. -DCMAKE_BUILD_TYPE=Debug -DYYJSON_BUILD_TESTS=ON -DYYJSON_ENABLE_COVERAGE=ON -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
+
cmake --build . --config Debug
+
+
export LLVM_PROFILE_FILE=cov/profile-%p.profraw
+
ctest --output-on-failure
+
+
ctest_files=$(grep -o "test_\w\+" CTestTestfile.cmake | uniq | tr '\n' ' ')
+
ctest_files=$(echo $ctest_files | sed 's/ $//' | sed "s/ / -object /g")
+
llvm-profdata merge -sparse cov/profile-*.profraw -o coverage.profdata
+
llvm-cov show $ctest_files -instr-profile=coverage.profdata -format=html > coverage.html
+

Build and run fuzz test with LibFuzzer (compiler should be LLVM Clang, while Apple Clang or gcc are not supported):

cmake -E make_directory build; cd build
+
cmake .. -DYYJSON_BUILD_FUZZER=ON -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
+
cmake --build .
+
./fuzzer -dict=fuzzer.dict ./corpus
+

+Compile-time Options

+

This library provides some compile-time options that can be defined as 1 to disable specific features during compilation. For example, to disable the JSON writer:

cmake -E make_directory build; cd build
+
cmake .. -DYYJSON_DISABLE_WRITER=ON
+
gcc -DYYJSON_DISABLE_WRITER=1 ...
+

+YYJSON_DISABLE_READER

+

Define as 1 to disable JSON reader at compile-time.
+ This disables functions with read in their name.
+ Reduces binary size by about 60%.
+ It is recommended when JSON parsing is not required.
+

+

+YYJSON_DISABLE_WRITER

+

Define as 1 to disable JSON writer at compile-time.
+ This disables functions with write in their name.
+ Reduces binary size by about 30%.
+ It is recommended when JSON serialization is not required.
+

+

+YYJSON_DISABLE_INCR_READER

+

Define as 1 to disable JSON incremental reader at compile-time.
+ This disables functions with incr in their name.
+ It is recommended when JSON incremental reader is not required.
+

+

+YYJSON_DISABLE_UTILS

+

Define as 1 to disable JSON Pointer, JSON Patch and JSON Merge Patch supports.
+ This disables functions with ptr or patch in their name.
+ It is recommended when these functions are not required.
+

+

+YYJSON_DISABLE_FAST_FP_CONV

+

Define as 1 to disable the fast floating-point number conversion in yyjson.
+ Libc's strtod/snprintf will be used instead.
+ This reduces binary size by about 30%, but significantly slows down the floating-point read/write speed.
+ It is recommended when processing JSON with few floating-point numbers.
+

+

+YYJSON_DISABLE_NON_STANDARD

+

Define as 1 to disable non-standard JSON features support at compile-time:

    +
  • YYJSON_READ_ALLOW_INF_AND_NAN
  • +
  • YYJSON_READ_ALLOW_COMMENTS
  • +
  • YYJSON_READ_ALLOW_TRAILING_COMMAS
  • +
  • YYJSON_READ_ALLOW_INVALID_UNICODE
  • +
  • YYJSON_READ_ALLOW_BOM
  • +
  • YYJSON_WRITE_ALLOW_INF_AND_NAN
  • +
  • YYJSON_WRITE_ALLOW_INVALID_UNICODE
  • +
+

This reduces binary size by about 10%, and slightly improves performance.
+ It is recommended when not dealing with non-standard JSON.

+

+YYJSON_DISABLE_UTF8_VALIDATION

+

Define as 1 to disable UTF-8 validation at compile-time.

+

Use this if all input strings are guaranteed to be valid UTF-8 (e.g. language-level String types are already validated).

+

Disabling UTF-8 validation improves performance for non-ASCII strings by about 3% to 7%.

+

Note: If this flag is enabled while passing illegal UTF-8 strings, the following errors may occur:

    +
  • Escaped characters may be ignored when parsing JSON strings.
  • +
  • Ending quotes may be ignored when parsing JSON strings, causing the string to merge with the next value.
  • +
  • When serializing with yyjson_mut_val, the string's end may be accessed out of bounds, potentially causing a segmentation fault.
  • +
+

+YYJSON_EXPORTS

+

Define as 1 to export symbols when building the library as a Windows DLL.

+

+YYJSON_IMPORTS

+

Define as 1 to import symbols when using the library as a Windows DLL.

+
+
+
+ + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/classes.html b/lib/yyjson-0.12.0/doc/doxygen/html/classes.html new file mode 100644 index 00000000000..77896634bcf --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/classes.html @@ -0,0 +1,129 @@ + + + + + + + + +yyjson: Data Structure Index + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
yyjson 0.12.0 +
+
A high performance C JSON library.
+
+
+ + + + + + + + +
+
+ +
+
+
+ + + + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/clipboard.js b/lib/yyjson-0.12.0/doc/doxygen/html/clipboard.js new file mode 100644 index 00000000000..9da9f3ca43d --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/clipboard.js @@ -0,0 +1,61 @@ +/** + +The code below is based on the Doxygen Awesome project, see +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2022 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +let clipboard_title = "Copy to clipboard" +let clipboard_icon = `` +let clipboard_successIcon = `` +let clipboard_successDuration = 1000 + +$(function() { + if(navigator.clipboard) { + const fragments = document.getElementsByClassName("fragment") + for(const fragment of fragments) { + const clipboard_div = document.createElement("div") + clipboard_div.classList.add("clipboard") + clipboard_div.innerHTML = clipboard_icon + clipboard_div.title = clipboard_title + $(clipboard_div).click(function() { + const content = this.parentNode.cloneNode(true) + // filter out line number and folded fragments from file listings + content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) + let text = content.textContent + // remove trailing newlines and trailing spaces from empty lines + text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'') + navigator.clipboard.writeText(text); + this.classList.add("success") + this.innerHTML = clipboard_successIcon + window.setTimeout(() => { // switch back to normal icon after timeout + this.classList.remove("success") + this.innerHTML = clipboard_icon + }, clipboard_successDuration); + }) + fragment.insertBefore(clipboard_div, fragment.firstChild) + } + } +}) diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/closed.png b/lib/yyjson-0.12.0/doc/doxygen/html/closed.png new file mode 100644 index 00000000000..98cc2c909da Binary files /dev/null and b/lib/yyjson-0.12.0/doc/doxygen/html/closed.png differ diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/cookie.js b/lib/yyjson-0.12.0/doc/doxygen/html/cookie.js new file mode 100644 index 00000000000..53ad21d9811 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/cookie.js @@ -0,0 +1,58 @@ +/*! + Cookie helper functions + Copyright (c) 2023 Dimitri van Heesch + Released under MIT license. +*/ +let Cookie = { + cookie_namespace: 'doxygen_', + + readSetting(cookie,defVal) { + if (window.chrome) { + const val = localStorage.getItem(this.cookie_namespace+cookie) || + sessionStorage.getItem(this.cookie_namespace+cookie); + if (val) return val; + } else { + let myCookie = this.cookie_namespace+cookie+"="; + if (document.cookie) { + const index = document.cookie.indexOf(myCookie); + if (index != -1) { + const valStart = index + myCookie.length; + let valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + return document.cookie.substring(valStart, valEnd); + } + } + } + return defVal; + }, + + writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete + if (window.chrome) { + if (days==0) { + sessionStorage.setItem(this.cookie_namespace+cookie,val); + } else { + localStorage.setItem(this.cookie_namespace+cookie,val); + } + } else { + let date = new Date(); + date.setTime(date.getTime()+(days*24*60*60*1000)); + const expiration = days!=0 ? "expires="+date.toGMTString()+";" : ""; + document.cookie = this.cookie_namespace + cookie + "=" + + val + "; SameSite=Lax;" + expiration + "path=/"; + } + }, + + eraseSetting(cookie) { + if (window.chrome) { + if (localStorage.getItem(this.cookie_namespace+cookie)) { + localStorage.removeItem(this.cookie_namespace+cookie); + } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) { + sessionStorage.removeItem(this.cookie_namespace+cookie); + } + } else { + this.writeSetting(cookie,'',-1); + } + }, +} diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/data-structures.html b/lib/yyjson-0.12.0/doc/doxygen/html/data-structures.html new file mode 100644 index 00000000000..d6629280a29 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/data-structures.html @@ -0,0 +1,213 @@ + + + + + + + + +yyjson: Data Structures + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
yyjson 0.12.0 +
+
A high performance C JSON library.
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Data Structures
+
+
+

yyjson consists of two types of data structures: immutable and mutable.

+ + + + + + + +
Immutable Mutable
Document yyjson_doc yyjson_mut_doc
Value yyjson_val yyjson_mut_val
+
    +
  • Immutable data structures are returned when reading a JSON document. They cannot be modified.
  • +
  • Mutable data structures are created when building a JSON document. They can be modified.
  • +
  • yyjson also provides some functions to convert between these two types of data structures.
  • +
+

Please note that the data structures described in this document are considered private, and it is recommended to use the public API to access them.

+
+

+Immutable Value

+

Each JSON value is stored in an immutable yyjson_val struct:

struct yyjson_val {
+
uint64_t tag;
+
union {
+
uint64_t u64;
+
int64_t i64;
+
double f64;
+
const char *str;
+
void *ptr;
+
size_t ofs;
+
} uni;
+
}
+
yyjson_val_uni uni
Definition yyjson.h:4767
+
uint64_t tag
Definition yyjson.h:4766
+
Definition yyjson.h:4765
+

+

The type of the value is stored in the lower 8 bits of the tag.
+ The size of the value, such as string length, object size, or array size, is stored in the higher 56 bits of the tag.

+

Modern 64-bit processors are typically limited to supporting fewer than 64 bits for RAM addresses (Wikipedia). For example, Intel64, AMD64, and ARMv8 have a 52-bit (4PB) physical address limit. Therefore, it is safe to store the type and size information within the 64-bit tag.

+

+Immutable Document

+

A JSON document stores all strings in a contiguous memory area.
+ Each string is unescaped in-place and ended with a null-terminator.
+ For example:

+
+ +
+yyjson_doc
+

A JSON document stores all values in another contiguous memory area.
+ The object and array containers store their own memory usage, allowing easy traversal of the child values.
+ For example:

+
+ +
+yyjson_doc
+
+

+Mutable Value

+

Each mutable JSON value is stored in an yyjson_mut_val struct:

+
uint64_t tag;
+
union {
+
uint64_t u64;
+
int64_t i64;
+
double f64;
+
const char *str;
+
void *ptr;
+
size_t ofs;
+
} uni;
+ +
}
+
yyjson_mut_val * next
Definition yyjson.h:5593
+
yyjson_val_uni uni
Definition yyjson.h:5592
+
uint64_t tag
Definition yyjson.h:5591
+
Definition yyjson.h:5590
+

+

The tag and uni fields are the same as the immutable value, and the next field is used to build a linked list.

+

+Mutable Document

+

A mutable JSON document is composed of multiple yyjson_mut_val.

+

The child values of an object or array are linked as a cycle,
+ the parent holds the tail of the circular linked list, enabling yyjson to perform operations append, prepend and remove_first in constant time.

+

For example:

+
+ +
+yyjson_mut_doc
+
+

+Memory Management

+

A JSON document (yyjson_doc, yyjson_mut_doc) is responsible for managing the memory of all its JSON values and strings. When a document it is no longer needed, it is important for the user to call yyjson_doc_free() or yyjson_mut_doc_free() to free the memory associated with it.

+

A JSON value (yyjson_val, yyjson_mut_val) has the same lifetime as its document. The memory is managed by its document and and cannot be freed independently.

+

For more information, refer to the API documentation.

+
+
+
+ + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/deprecated.html b/lib/yyjson-0.12.0/doc/doxygen/html/deprecated.html new file mode 100644 index 00000000000..9c9b2536a30 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/deprecated.html @@ -0,0 +1,146 @@ + + + + + + + + +yyjson: Deprecated List + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
yyjson 0.12.0 +
+
A high performance C JSON library.
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Deprecated List
+
+
+
+
Global yyjson_deprecated ("renamed to yyjson_doc_ptr_get") yyjson_api_inline yyjson_val *yyjson_doc_get_pointer(yyjson_doc *doc
+
renamed to yyjson_doc_ptr_get
+
Global yyjson_deprecated ("renamed to yyjson_doc_ptr_getn") yyjson_api_inline yyjson_val *yyjson_doc_get_pointern(yyjson_doc *doc
+
renamed to yyjson_doc_ptr_getn
+
Global yyjson_deprecated ("renamed to yyjson_mut_doc_ptr_get") yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_get_pointer(yyjson_mut_doc *doc
+
renamed to yyjson_mut_doc_ptr_get
+
Global yyjson_deprecated ("renamed to yyjson_mut_doc_ptr_getn") yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_get_pointern(yyjson_mut_doc *doc
+
renamed to yyjson_mut_doc_ptr_getn
+
Global yyjson_deprecated ("renamed to yyjson_ptr_get") yyjson_api_inline yyjson_val *yyjson_get_pointer(yyjson_val *val
+
renamed to yyjson_ptr_get
+
Global yyjson_deprecated ("renamed to yyjson_ptr_getn") yyjson_api_inline yyjson_val *yyjson_get_pointern(yyjson_val *val
+
renamed to yyjson_ptr_getn
+
Global yyjson_deprecated ("renamed to yyjson_mut_ptr_get") yyjson_api_inline yyjson_mut_val *yyjson_mut_get_pointer(yyjson_mut_val *val
+
renamed to yyjson_mut_ptr_get
+
Global yyjson_deprecated ("renamed to yyjson_mut_ptr_getn") yyjson_api_inline yyjson_mut_val *yyjson_mut_get_pointern(yyjson_mut_val *val
+
renamed to yyjson_mut_ptr_getn
+
Global yyjson_deprecated ("renamed to unsafe_yyjson_ptr_getn") yyjson_api_inline yyjson_val *unsafe_yyjson_get_pointer(yyjson_val *val
+
renamed to yyjson_mut_ptr_getn
+
Global yyjson_deprecated ("renamed to unsafe_yyjson_mut_ptr_getx") yyjson_api_inline yyjson_mut_val *unsafe_yyjson_mut_get_pointer(yyjson_mut_val *val
+
renamed to unsafe_yyjson_mut_ptr_getx
+
+
+
+
+ + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/lib/yyjson-0.12.0/doc/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 00000000000..8ff00854d62 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,130 @@ + + + + + + + + +yyjson: src Directory Reference + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
yyjson 0.12.0 +
+
A high performance C JSON library.
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
src Directory Reference
+
+
+ + + + +

+Files

 yyjson.h
 
+
+
+ + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js b/lib/yyjson-0.12.0/doc/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js new file mode 100644 index 00000000000..f27fe163a63 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js @@ -0,0 +1,4 @@ +var dir_68267d1309a1af8e8297ef4c3efbcdba = +[ + [ "yyjson.h", "yyjson_8h.html", "yyjson_8h" ] +]; \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/dir_e68e8157741866f444e17edd764ebbae.html b/lib/yyjson-0.12.0/doc/doxygen/html/dir_e68e8157741866f444e17edd764ebbae.html new file mode 100644 index 00000000000..5b93332cc74 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/dir_e68e8157741866f444e17edd764ebbae.html @@ -0,0 +1,124 @@ + + + + + + + + +yyjson: doc Directory Reference + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
yyjson 0.12.0 +
+
A high performance C JSON library.
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
doc Directory Reference
+
+
+
+
+ + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/doc.svg b/lib/yyjson-0.12.0/doc/doxygen/html/doc.svg new file mode 100644 index 00000000000..0b928a53171 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/docd.svg b/lib/yyjson-0.12.0/doc/doxygen/html/docd.svg new file mode 100644 index 00000000000..ac18b275522 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/doxygen-awesome-darkmode-toggle.js b/lib/yyjson-0.12.0/doc/doxygen/html/doxygen-awesome-darkmode-toggle.js new file mode 100644 index 00000000000..40fe2d38e09 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/doxygen-awesome-darkmode-toggle.js @@ -0,0 +1,157 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +class DoxygenAwesomeDarkModeToggle extends HTMLElement { + // SVG icons from https://fonts.google.com/icons + // Licensed under the Apache 2.0 license: + // https://www.apache.org/licenses/LICENSE-2.0.html + static lightModeIcon = `` + static darkModeIcon = `` + static title = "Toggle Light/Dark Mode" + + static prefersLightModeInDarkModeKey = "prefers-light-mode-in-dark-mode" + static prefersDarkModeInLightModeKey = "prefers-dark-mode-in-light-mode" + + static _staticConstructor = function() { + DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.userPreference) + // Update the color scheme when the browsers preference changes + // without user interaction on the website. + window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => { + DoxygenAwesomeDarkModeToggle.onSystemPreferenceChanged() + }) + // Update the color scheme when the tab is made visible again. + // It is possible that the appearance was changed in another tab + // while this tab was in the background. + document.addEventListener("visibilitychange", visibilityState => { + if (document.visibilityState === 'visible') { + DoxygenAwesomeDarkModeToggle.onSystemPreferenceChanged() + } + }); + }() + + static init() { + $(function() { + $(document).ready(function() { + const toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle') + toggleButton.title = DoxygenAwesomeDarkModeToggle.title + toggleButton.updateIcon() + + window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => { + toggleButton.updateIcon() + }) + document.addEventListener("visibilitychange", visibilityState => { + if (document.visibilityState === 'visible') { + toggleButton.updateIcon() + } + }); + + $(document).ready(function(){ + document.getElementById("MSearchBox").parentNode.appendChild(toggleButton) + }) + $(window).resize(function(){ + document.getElementById("MSearchBox").parentNode.appendChild(toggleButton) + }) + }) + }) + } + + constructor() { + super(); + this.onclick=this.toggleDarkMode + } + + /** + * @returns `true` for dark-mode, `false` for light-mode system preference + */ + static get systemPreference() { + return window.matchMedia('(prefers-color-scheme: dark)').matches + } + + /** + * @returns `true` for dark-mode, `false` for light-mode user preference + */ + static get userPreference() { + return (!DoxygenAwesomeDarkModeToggle.systemPreference && localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey)) || + (DoxygenAwesomeDarkModeToggle.systemPreference && !localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey)) + } + + static set userPreference(userPreference) { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = userPreference + if(!userPreference) { + if(DoxygenAwesomeDarkModeToggle.systemPreference) { + localStorage.setItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey, true) + } else { + localStorage.removeItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey) + } + } else { + if(!DoxygenAwesomeDarkModeToggle.systemPreference) { + localStorage.setItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey, true) + } else { + localStorage.removeItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey) + } + } + DoxygenAwesomeDarkModeToggle.onUserPreferenceChanged() + } + + static enableDarkMode(enable) { + if(enable) { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = true + document.documentElement.classList.add("dark-mode") + document.documentElement.classList.remove("light-mode") + } else { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = false + document.documentElement.classList.remove("dark-mode") + document.documentElement.classList.add("light-mode") + } + } + + static onSystemPreferenceChanged() { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = DoxygenAwesomeDarkModeToggle.userPreference + DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.darkModeEnabled) + } + + static onUserPreferenceChanged() { + DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.darkModeEnabled) + } + + toggleDarkMode() { + DoxygenAwesomeDarkModeToggle.userPreference = !DoxygenAwesomeDarkModeToggle.userPreference + this.updateIcon() + } + + updateIcon() { + if(DoxygenAwesomeDarkModeToggle.darkModeEnabled) { + this.innerHTML = DoxygenAwesomeDarkModeToggle.darkModeIcon + } else { + this.innerHTML = DoxygenAwesomeDarkModeToggle.lightModeIcon + } + } +} + +customElements.define("doxygen-awesome-dark-mode-toggle", DoxygenAwesomeDarkModeToggle); diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/doxygen-awesome-sidebar-only-darkmode-toggle.css b/lib/yyjson-0.12.0/doc/doxygen/html/doxygen-awesome-sidebar-only-darkmode-toggle.css new file mode 100644 index 00000000000..d207446e0be --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/doxygen-awesome-sidebar-only-darkmode-toggle.css @@ -0,0 +1,40 @@ + +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +@media screen and (min-width: 768px) { + + #MSearchBox { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - var(--searchbar-height) - 1px); + } + + #MSearchField { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - 66px - var(--searchbar-height)); + } +} diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/doxygen-awesome-sidebar-only.css b/lib/yyjson-0.12.0/doc/doxygen/html/doxygen-awesome-sidebar-only.css new file mode 100644 index 00000000000..853f6d6926e --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/doxygen-awesome-sidebar-only.css @@ -0,0 +1,116 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + */ + +html { + /* side nav width. MUST be = `TREEVIEW_WIDTH`. + * Make sure it is wide enough to contain the page title (logo + title + version) + */ + --side-nav-fixed-width: 335px; + --menu-display: none; + + --top-height: 120px; + --toc-sticky-top: -25px; + --toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 25px); +} + +#projectname { + white-space: nowrap; +} + + +@media screen and (min-width: 768px) { + html { + --searchbar-background: var(--page-background-color); + } + + #side-nav { + min-width: var(--side-nav-fixed-width); + max-width: var(--side-nav-fixed-width); + top: var(--top-height); + overflow: visible; + } + + #nav-tree, #side-nav { + height: calc(100vh - var(--top-height)) !important; + } + + #nav-tree { + padding: 0; + } + + #top { + display: block; + border-bottom: none; + height: var(--top-height); + margin-bottom: calc(0px - var(--top-height)); + max-width: var(--side-nav-fixed-width); + overflow: hidden; + background: var(--side-nav-background); + } + #main-nav { + float: left; + padding-right: 0; + } + + .ui-resizable-handle { + cursor: default; + width: 1px !important; + background: var(--separator-color); + box-shadow: 0 calc(-2 * var(--top-height)) 0 0 var(--separator-color); + } + + #nav-path { + position: fixed; + right: 0; + left: var(--side-nav-fixed-width); + bottom: 0; + width: auto; + } + + #doc-content { + height: calc(100vh - 31px) !important; + padding-bottom: calc(3 * var(--spacing-large)); + padding-top: calc(var(--top-height) - 80px); + box-sizing: border-box; + margin-left: var(--side-nav-fixed-width) !important; + } + + #MSearchBox { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium))); + } + + #MSearchField { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - 65px); + } + + #MSearchResultsWindow { + left: var(--spacing-medium) !important; + right: auto; + } +} diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/doxygen-awesome.css b/lib/yyjson-0.12.0/doc/doxygen/html/doxygen-awesome.css new file mode 100644 index 00000000000..c2f41142f99 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/doxygen-awesome.css @@ -0,0 +1,2681 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +html { + /* primary theme color. This will affect the entire websites color scheme: links, arrows, labels, ... */ + --primary-color: #1779c4; + --primary-dark-color: #335c80; + --primary-light-color: #70b1e9; + + /* page base colors */ + --page-background-color: #ffffff; + --page-foreground-color: #2f4153; + --page-secondary-foreground-color: #6f7e8e; + + /* color for all separators on the website: hr, borders, ... */ + --separator-color: #dedede; + + /* border radius for all rounded components. Will affect many components, like dropdowns, memitems, codeblocks, ... */ + --border-radius-large: 8px; + --border-radius-small: 4px; + --border-radius-medium: 6px; + + /* default spacings. Most components reference these values for spacing, to provide uniform spacing on the page. */ + --spacing-small: 5px; + --spacing-medium: 10px; + --spacing-large: 16px; + + /* default box shadow used for raising an element above the normal content. Used in dropdowns, search result, ... */ + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.075); + + --odd-color: rgba(0,0,0,.028); + + /* font-families. will affect all text on the website + * font-family: the normal font for text, headlines, menus + * font-family-monospace: used for preformatted text in memtitle, code, fragments + */ + --font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif; + --font-family-monospace: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; + + /* font sizes */ + --page-font-size: 15.6px; + --navigation-font-size: 14.4px; + --toc-font-size: 13.4px; + --code-font-size: 14px; /* affects code, fragment */ + --title-font-size: 22px; + + /* content text properties. These only affect the page content, not the navigation or any other ui elements */ + --content-line-height: 27px; + /* The content is centered and constraint in it's width. To make the content fill the whole page, set the variable to auto.*/ + --content-maxwidth: 1050px; + --table-line-height: 24px; + --toc-sticky-top: var(--spacing-medium); + --toc-width: 200px; + --toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 85px); + + /* colors for various content boxes: @warning, @note, @deprecated @bug */ + --warning-color: #faf3d8; + --warning-color-dark: #f3a600; + --warning-color-darker: #5f4204; + --note-color: #e4f3ff; + --note-color-dark: #1879C4; + --note-color-darker: #274a5c; + --todo-color: #e4dafd; + --todo-color-dark: #5b2bdd; + --todo-color-darker: #2a0d72; + --deprecated-color: #ecf0f3; + --deprecated-color-dark: #5b6269; + --deprecated-color-darker: #43454a; + --bug-color: #f8d1cc; + --bug-color-dark: #b61825; + --bug-color-darker: #75070f; + --invariant-color: #d8f1e3; + --invariant-color-dark: #44b86f; + --invariant-color-darker: #265532; + + /* blockquote colors */ + --blockquote-background: #f8f9fa; + --blockquote-foreground: #636568; + + /* table colors */ + --tablehead-background: #f1f1f1; + --tablehead-foreground: var(--page-foreground-color); + + /* menu-display: block | none + * Visibility of the top navigation on screens >= 768px. On smaller screen the menu is always visible. + * `GENERATE_TREEVIEW` MUST be enabled! + */ + --menu-display: block; + + --menu-focus-foreground: var(--page-background-color); + --menu-focus-background: var(--primary-color); + --menu-selected-background: rgba(0,0,0,.05); + + + --header-background: var(--page-background-color); + --header-foreground: var(--page-foreground-color); + + /* searchbar colors */ + --searchbar-background: var(--side-nav-background); + --searchbar-foreground: var(--page-foreground-color); + + /* searchbar size + * (`searchbar-width` is only applied on screens >= 768px. + * on smaller screens the searchbar will always fill the entire screen width) */ + --searchbar-height: 33px; + --searchbar-width: 210px; + --searchbar-border-radius: var(--searchbar-height); + + /* code block colors */ + --code-background: #f5f5f5; + --code-foreground: var(--page-foreground-color); + + /* fragment colors */ + --fragment-background: #F8F9FA; + --fragment-foreground: #37474F; + --fragment-keyword: #bb6bb2; + --fragment-keywordtype: #8258b3; + --fragment-keywordflow: #d67c3b; + --fragment-token: #438a59; + --fragment-comment: #969696; + --fragment-link: #5383d6; + --fragment-preprocessor: #46aaa5; + --fragment-linenumber-color: #797979; + --fragment-linenumber-background: #f4f4f5; + --fragment-linenumber-border: #e3e5e7; + --fragment-lineheight: 20px; + + /* sidebar navigation (treeview) colors */ + --side-nav-background: #fbfbfb; + --side-nav-foreground: var(--page-foreground-color); + --side-nav-arrow-opacity: 0; + --side-nav-arrow-hover-opacity: 0.9; + + --toc-background: var(--side-nav-background); + --toc-foreground: var(--side-nav-foreground); + + /* height of an item in any tree / collapsible table */ + --tree-item-height: 30px; + + --memname-font-size: var(--code-font-size); + --memtitle-font-size: 18px; + + --webkit-scrollbar-size: 7px; + --webkit-scrollbar-padding: 4px; + --webkit-scrollbar-color: var(--separator-color); + + --animation-duration: .12s +} + +@media screen and (max-width: 767px) { + html { + --page-font-size: 16px; + --navigation-font-size: 16px; + --toc-font-size: 15px; + --code-font-size: 15px; /* affects code, fragment */ + --title-font-size: 22px; + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.35); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #3b2e04; + --warning-color-dark: #f1b602; + --warning-color-darker: #ceb670; + --note-color: #163750; + --note-color-dark: #1982D2; + --note-color-darker: #dcf0fa; + --todo-color: #2a2536; + --todo-color-dark: #7661b3; + --todo-color-darker: #ae9ed6; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2e1917; + --bug-color-dark: #ad2617; + --bug-color-darker: #f5b1aa; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; + } +} + +/* dark mode variables are defined twice, to support both the dark-mode without and with doxygen-awesome-darkmode-toggle.js */ +html.dark-mode { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.30); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #3b2e04; + --warning-color-dark: #f1b602; + --warning-color-darker: #ceb670; + --note-color: #163750; + --note-color-dark: #1982D2; + --note-color-darker: #dcf0fa; + --todo-color: #2a2536; + --todo-color-dark: #7661b3; + --todo-color-darker: #ae9ed6; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2e1917; + --bug-color-dark: #ad2617; + --bug-color-darker: #f5b1aa; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; +} + +body { + color: var(--page-foreground-color); + background-color: var(--page-background-color); + font-size: var(--page-font-size); +} + +body, table, div, p, dl, #nav-tree .label, .title, +.sm-dox a, .sm-dox a:hover, .sm-dox a:focus, #projectname, +.SelectItem, #MSearchField, .navpath li.navelem a, +.navpath li.navelem a:hover, p.reference, p.definition, div.toc li, div.toc h3 { + font-family: var(--font-family); +} + +h1, h2, h3, h4, h5 { + margin-top: 1em; + font-weight: 600; + line-height: initial; +} + +p, div, table, dl, p.reference, p.definition { + font-size: var(--page-font-size); +} + +p.reference, p.definition { + color: var(--page-secondary-foreground-color); +} + +a:link, a:visited, a:hover, a:focus, a:active { + color: var(--primary-color) !important; + font-weight: 500; + background: none; +} + +a.anchor { + scroll-margin-top: var(--spacing-large); + display: block; +} + +/* + Title and top navigation + */ + +#top { + background: var(--header-background); + border-bottom: 1px solid var(--separator-color); +} + +@media screen and (min-width: 768px) { + #top { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + } +} + +#main-nav { + flex-grow: 5; + padding: var(--spacing-small) var(--spacing-medium); +} + +#titlearea { + width: auto; + padding: var(--spacing-medium) var(--spacing-large); + background: none; + color: var(--header-foreground); + border-bottom: none; +} + +@media screen and (max-width: 767px) { + #titlearea { + padding-bottom: var(--spacing-small); + } +} + +#titlearea table tbody tr { + height: auto !important; +} + +#projectname { + font-size: var(--title-font-size); + font-weight: 600; +} + +#projectnumber { + font-family: inherit; + font-size: 60%; +} + +#projectbrief { + font-family: inherit; + font-size: 80%; +} + +#projectlogo { + vertical-align: middle; +} + +#projectlogo img { + max-height: calc(var(--title-font-size) * 2); + margin-right: var(--spacing-small); +} + +.sm-dox, .tabs, .tabs2, .tabs3 { + background: none; + padding: 0; +} + +.tabs, .tabs2, .tabs3 { + border-bottom: 1px solid var(--separator-color); + margin-bottom: -1px; +} + +.main-menu-btn-icon, .main-menu-btn-icon:before, .main-menu-btn-icon:after { + background: var(--page-secondary-foreground-color); +} + +@media screen and (max-width: 767px) { + .sm-dox a span.sub-arrow { + background: var(--code-background); + } + + #main-menu a.has-submenu span.sub-arrow { + color: var(--page-secondary-foreground-color); + border-radius: var(--border-radius-medium); + } + + #main-menu a.has-submenu:hover span.sub-arrow { + color: var(--page-foreground-color); + } +} + +@media screen and (min-width: 768px) { + .sm-dox li, .tablist li { + display: var(--menu-display); + } + + .sm-dox a span.sub-arrow { + border-color: var(--header-foreground) transparent transparent transparent; + } + + .sm-dox a:hover span.sub-arrow { + border-color: var(--menu-focus-foreground) transparent transparent transparent; + } + + .sm-dox ul a span.sub-arrow { + border-color: transparent transparent transparent var(--page-foreground-color); + } + + .sm-dox ul a:hover span.sub-arrow { + border-color: transparent transparent transparent var(--menu-focus-foreground); + } +} + +.sm-dox ul { + background: var(--page-background-color); + box-shadow: var(--box-shadow); + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium) !important; + padding: var(--spacing-small); + animation: ease-out 150ms slideInMenu; +} + +@keyframes slideInMenu { + from { + opacity: 0; + transform: translate(0px, -2px); + } + + to { + opacity: 1; + transform: translate(0px, 0px); + } +} + +.sm-dox ul a { + color: var(--page-foreground-color) !important; + background: var(--page-background-color); + font-size: var(--navigation-font-size); +} + +.sm-dox>li>ul:after { + border-bottom-color: var(--page-background-color) !important; +} + +.sm-dox>li>ul:before { + border-bottom-color: var(--separator-color) !important; +} + +.sm-dox ul a:hover, .sm-dox ul a:active, .sm-dox ul a:focus { + font-size: var(--navigation-font-size) !important; + color: var(--menu-focus-foreground) !important; + text-shadow: none; + background-color: var(--menu-focus-background); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a, .sm-dox a:focus, .tablist li, .tablist li a, .tablist li.current a { + text-shadow: none; + background: transparent; + background-image: none !important; + color: var(--header-foreground) !important; + font-weight: normal; + font-size: var(--navigation-font-size); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a:focus { + outline: auto; +} + +.sm-dox a:hover, .sm-dox a:active, .tablist li a:hover { + text-shadow: none; + font-weight: normal; + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; + border-radius: var(--border-radius-small) !important; + font-size: var(--navigation-font-size); +} + +.tablist li.current { + border-radius: var(--border-radius-small); + background: var(--menu-selected-background); +} + +.tablist li { + margin: var(--spacing-small) 0 var(--spacing-small) var(--spacing-small); +} + +.tablist a { + padding: 0 var(--spacing-large); +} + + +/* + Search box + */ + +#MSearchBox { + height: var(--searchbar-height); + background: var(--searchbar-background); + border-radius: var(--searchbar-border-radius); + border: 1px solid var(--separator-color); + overflow: hidden; + width: var(--searchbar-width); + position: relative; + box-shadow: none; + display: block; + margin-top: 0; +} + +/* until Doxygen 1.9.4 */ +.left img#MSearchSelect { + left: 0; + user-select: none; + padding-left: 8px; +} + +/* Doxygen 1.9.5 */ +.left span#MSearchSelect { + left: 0; + user-select: none; + margin-left: 8px; + padding: 0; +} + +.left #MSearchSelect[src$=".png"] { + padding-left: 0 +} + +.SelectionMark { + user-select: none; +} + +.tabs .left #MSearchSelect { + padding-left: 0; +} + +.tabs #MSearchBox { + position: absolute; + right: var(--spacing-medium); +} + +@media screen and (max-width: 767px) { + .tabs #MSearchBox { + position: relative; + right: 0; + margin-left: var(--spacing-medium); + margin-top: 0; + } +} + +#MSearchSelectWindow, #MSearchResultsWindow { + z-index: 9999; +} + +#MSearchBox.MSearchBoxActive { + border-color: var(--primary-color); + box-shadow: inset 0 0 0 1px var(--primary-color); +} + +#main-menu > li:last-child { + margin-right: 0; +} + +@media screen and (max-width: 767px) { + #main-menu > li:last-child { + height: 50px; + } +} + +#MSearchField { + font-size: var(--navigation-font-size); + height: calc(var(--searchbar-height) - 2px); + background: transparent; + width: calc(var(--searchbar-width) - 64px); +} + +.MSearchBoxActive #MSearchField { + color: var(--searchbar-foreground); +} + +#MSearchSelect { + top: calc(calc(var(--searchbar-height) / 2) - 11px); +} + +#MSearchBox span.left, #MSearchBox span.right { + background: none; + background-image: none; +} + +#MSearchBox span.right { + padding-top: calc(calc(var(--searchbar-height) / 2) - 12px); + position: absolute; + right: var(--spacing-small); +} + +.tabs #MSearchBox span.right { + top: calc(calc(var(--searchbar-height) / 2) - 12px); +} + +@keyframes slideInSearchResults { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } +} + +#MSearchResultsWindow { + left: auto !important; + right: var(--spacing-medium); + border-radius: var(--border-radius-large); + border: 1px solid var(--separator-color); + transform: translate(0, 20px); + box-shadow: var(--box-shadow); + animation: ease-out 280ms slideInSearchResults; + background: var(--page-background-color); +} + +iframe#MSearchResults { + margin: 4px; +} + +iframe { + color-scheme: normal; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) iframe#MSearchResults { + filter: invert() hue-rotate(180deg); + } +} + +html.dark-mode iframe#MSearchResults { + filter: invert() hue-rotate(180deg); +} + +#MSearchResults .SRPage { + background-color: transparent; +} + +#MSearchResults .SRPage .SREntry { + font-size: 10pt; + padding: var(--spacing-small) var(--spacing-medium); +} + +#MSearchSelectWindow { + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + box-shadow: var(--box-shadow); + background: var(--page-background-color); + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); +} + +#MSearchSelectWindow a.SelectItem { + font-size: var(--navigation-font-size); + line-height: var(--content-line-height); + margin: 0 var(--spacing-small); + border-radius: var(--border-radius-small); + color: var(--page-foreground-color) !important; + font-weight: normal; +} + +#MSearchSelectWindow a.SelectItem:hover { + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; +} + +@media screen and (max-width: 767px) { + #MSearchBox { + margin-top: var(--spacing-medium); + margin-bottom: var(--spacing-medium); + width: calc(100vw - 30px); + } + + #main-menu > li:last-child { + float: none !important; + } + + #MSearchField { + width: calc(100vw - 110px); + } + + @keyframes slideInSearchResultsMobile { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } + } + + #MSearchResultsWindow { + left: var(--spacing-medium) !important; + right: var(--spacing-medium); + overflow: auto; + transform: translate(0, 20px); + animation: ease-out 280ms slideInSearchResultsMobile; + width: auto !important; + } + + /* + * Overwrites for fixing the searchbox on mobile in doxygen 1.9.2 + */ + label.main-menu-btn ~ #searchBoxPos1 { + top: 3px !important; + right: 6px !important; + left: 45px; + display: flex; + } + + label.main-menu-btn ~ #searchBoxPos1 > #MSearchBox { + margin-top: 0; + margin-bottom: 0; + flex-grow: 2; + float: left; + } +} + +/* + Tree view + */ + +#side-nav { + padding: 0 !important; + background: var(--side-nav-background); + min-width: 8px; + max-width: 50vw; +} + +@media screen and (max-width: 767px) { + #side-nav { + display: none; + } + + #doc-content { + margin-left: 0 !important; + } +} + +#nav-tree { + background: transparent; + margin-right: 1px; +} + +#nav-tree .label { + font-size: var(--navigation-font-size); +} + +#nav-tree .item { + height: var(--tree-item-height); + line-height: var(--tree-item-height); + overflow: hidden; + text-overflow: ellipsis; +} + +#nav-tree .item > a:focus { + outline: none; +} + +#nav-sync { + bottom: 12px; + right: 12px; + top: auto !important; + user-select: none; +} + +#nav-tree .selected { + text-shadow: none; + background-image: none; + background-color: transparent; + position: relative; + color: var(--primary-color) !important; + font-weight: 500; +} + +#nav-tree .selected::after { + content: ""; + position: absolute; + top: 1px; + bottom: 1px; + left: 0; + width: 4px; + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + background: var(--primary-color); +} + + +#nav-tree a { + color: var(--side-nav-foreground) !important; + font-weight: normal; +} + +#nav-tree a:focus { + outline-style: auto; +} + +#nav-tree .arrow { + opacity: var(--side-nav-arrow-opacity); + background: none; +} + +.arrow { + color: inherit; + cursor: pointer; + font-size: 45%; + vertical-align: middle; + margin-right: 2px; + font-family: serif; + height: auto; + text-align: right; +} + +#nav-tree div.item:hover .arrow, #nav-tree a:focus .arrow { + opacity: var(--side-nav-arrow-hover-opacity); +} + +#nav-tree .selected a { + color: var(--primary-color) !important; + font-weight: bolder; + font-weight: 600; +} + +.ui-resizable-e { + width: 4px; + background: transparent; + box-shadow: inset -1px 0 0 0 var(--separator-color); +} + +/* + Contents + */ + +div.header { + border-bottom: 1px solid var(--separator-color); + background-color: var(--page-background-color); + background-image: none; +} + +@media screen and (min-width: 1000px) { + #doc-content > div > div.contents, + .PageDoc > div.contents { + display: flex; + flex-direction: row-reverse; + flex-wrap: nowrap; + align-items: flex-start; + } + + div.contents .textblock { + min-width: 200px; + flex-grow: 1; + } +} + +div.contents, div.header .title, div.header .summary { + max-width: var(--content-maxwidth); +} + +div.contents, div.header .title { + line-height: initial; + margin: calc(var(--spacing-medium) + .2em) auto var(--spacing-medium) auto; +} + +div.header .summary { + margin: var(--spacing-medium) auto 0 auto; +} + +div.headertitle { + padding: 0; +} + +div.header .title { + font-weight: 600; + font-size: 225%; + padding: var(--spacing-medium) var(--spacing-large); + word-break: break-word; +} + +div.header .summary { + width: auto; + display: block; + float: none; + padding: 0 var(--spacing-large); +} + +td.memSeparator { + border-color: var(--separator-color); +} + +span.mlabel { + background: var(--primary-color); + border: none; + padding: 4px 9px; + border-radius: 12px; + margin-right: var(--spacing-medium); +} + +span.mlabel:last-of-type { + margin-right: 2px; +} + +div.contents { + padding: 0 var(--spacing-large); +} + +div.contents p, div.contents li { + line-height: var(--content-line-height); +} + +div.contents div.dyncontent { + margin: var(--spacing-medium) 0; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) div.contents div.dyncontent img, + html:not(.light-mode) div.contents center img, + html:not(.light-mode) div.contents > table img, + html:not(.light-mode) div.contents div.dyncontent iframe, + html:not(.light-mode) div.contents center iframe, + html:not(.light-mode) div.contents table iframe, + html:not(.light-mode) div.contents .dotgraph iframe { + filter: brightness(89%) hue-rotate(180deg) invert(); + } +} + +html.dark-mode div.contents div.dyncontent img, +html.dark-mode div.contents center img, +html.dark-mode div.contents > table img, +html.dark-mode div.contents div.dyncontent iframe, +html.dark-mode div.contents center iframe, +html.dark-mode div.contents table iframe, +html.dark-mode div.contents .dotgraph iframe + { + filter: brightness(89%) hue-rotate(180deg) invert(); +} + +h2.groupheader { + border-bottom: 0px; + color: var(--page-foreground-color); + box-shadow: + 100px 0 var(--page-background-color), + -100px 0 var(--page-background-color), + 100px 0.75px var(--separator-color), + -100px 0.75px var(--separator-color), + 500px 0 var(--page-background-color), + -500px 0 var(--page-background-color), + 500px 0.75px var(--separator-color), + -500px 0.75px var(--separator-color), + 900px 0 var(--page-background-color), + -900px 0 var(--page-background-color), + 900px 0.75px var(--separator-color), + -900px 0.75px var(--separator-color), + 1400px 0 var(--page-background-color), + -1400px 0 var(--page-background-color), + 1400px 0.75px var(--separator-color), + -1400px 0.75px var(--separator-color), + 1900px 0 var(--page-background-color), + -1900px 0 var(--page-background-color), + 1900px 0.75px var(--separator-color), + -1900px 0.75px var(--separator-color); +} + +blockquote { + margin: 0 var(--spacing-medium) 0 var(--spacing-medium); + padding: var(--spacing-small) var(--spacing-large); + background: var(--blockquote-background); + color: var(--blockquote-foreground); + border-left: 0; + overflow: visible; + border-radius: var(--border-radius-medium); + overflow: visible; + position: relative; +} + +blockquote::before, blockquote::after { + font-weight: bold; + font-family: serif; + font-size: 360%; + opacity: .15; + position: absolute; +} + +blockquote::before { + content: "“"; + left: -10px; + top: 4px; +} + +blockquote::after { + content: "â€"; + right: -8px; + bottom: -25px; +} + +blockquote p { + margin: var(--spacing-small) 0 var(--spacing-medium) 0; +} +.paramname, .paramname em { + font-weight: 600; + color: var(--primary-dark-color); +} + +.paramname > code { + border: 0; +} + +table.params .paramname { + font-weight: 600; + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + padding-right: var(--spacing-small); + line-height: var(--table-line-height); +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--primary-light-color); +} + +.alphachar a { + color: var(--page-foreground-color); +} + +.dotgraph { + max-width: 100%; + overflow-x: scroll; +} + +.dotgraph .caption { + position: sticky; + left: 0; +} + +/* Wrap Graphviz graphs with the `interactive_dotgraph` class if `INTERACTIVE_SVG = YES` */ +.interactive_dotgraph .dotgraph iframe { + max-width: 100%; +} + +/* + Table of Contents + */ + +div.contents .toc { + max-height: var(--toc-max-height); + min-width: var(--toc-width); + border: 0; + border-left: 1px solid var(--separator-color); + border-radius: 0; + background-color: var(--page-background-color); + box-shadow: none; + position: sticky; + top: var(--toc-sticky-top); + padding: 0 var(--spacing-large); + margin: var(--spacing-small) 0 var(--spacing-large) var(--spacing-large); +} + +div.toc h3 { + color: var(--toc-foreground); + font-size: var(--navigation-font-size); + margin: var(--spacing-large) 0 var(--spacing-medium) 0; +} + +div.toc li { + padding: 0; + background: none; + line-height: var(--toc-font-size); + margin: var(--toc-font-size) 0 0 0; +} + +div.toc li::before { + display: none; +} + +div.toc ul { + margin-top: 0 +} + +div.toc li a { + font-size: var(--toc-font-size); + color: var(--page-foreground-color) !important; + text-decoration: none; +} + +div.toc li a:hover, div.toc li a.active { + color: var(--primary-color) !important; +} + +div.toc li a.aboveActive { + color: var(--page-secondary-foreground-color) !important; +} + + +@media screen and (max-width: 999px) { + div.contents .toc { + max-height: 45vh; + float: none; + width: auto; + margin: 0 0 var(--spacing-medium) 0; + position: relative; + top: 0; + position: relative; + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + background-color: var(--toc-background); + box-shadow: var(--box-shadow); + } + + div.contents .toc.interactive { + max-height: calc(var(--navigation-font-size) + 2 * var(--spacing-large)); + overflow: hidden; + } + + div.contents .toc > h3 { + -webkit-tap-highlight-color: transparent; + cursor: pointer; + position: sticky; + top: 0; + background-color: var(--toc-background); + margin: 0; + padding: var(--spacing-large) 0; + display: block; + } + + div.contents .toc.interactive > h3::before { + content: ""; + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid var(--primary-color); + display: inline-block; + margin-right: var(--spacing-small); + margin-bottom: calc(var(--navigation-font-size) / 4); + transform: rotate(-90deg); + transition: transform var(--animation-duration) ease-out; + } + + div.contents .toc.interactive.open > h3::before { + transform: rotate(0deg); + } + + div.contents .toc.interactive.open { + max-height: 45vh; + overflow: auto; + transition: max-height 0.2s ease-in-out; + } + + div.contents .toc a, div.contents .toc a.active { + color: var(--primary-color) !important; + } + + div.contents .toc a:hover { + text-decoration: underline; + } +} + +/* + Code & Fragments + */ + +code, div.fragment, pre.fragment { + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + overflow: hidden; +} + +code { + display: inline; + background: var(--code-background); + color: var(--code-foreground); + padding: 2px 6px; +} + +div.fragment, pre.fragment { + margin: var(--spacing-medium) 0; + padding: calc(var(--spacing-large) - (var(--spacing-large) / 6)) var(--spacing-large); + background: var(--fragment-background); + color: var(--fragment-foreground); + overflow-x: auto; +} + +@media screen and (max-width: 767px) { + div.fragment, pre.fragment { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-right: 0; + } + + .contents > div.fragment, + .textblock > div.fragment, + .textblock > pre.fragment, + .textblock > .tabbed > ul > li > div.fragment, + .textblock > .tabbed > ul > li > pre.fragment, + .contents > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > pre.fragment, + .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + border-radius: 0; + border-left: 0; + } + + .textblock li > .fragment, + .textblock li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + } + + .memdoc li > .fragment, + .memdoc li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + } + + .textblock ul, .memdoc ul { + overflow: initial; + } + + .memdoc > div.fragment, + .memdoc > pre.fragment, + dl dd > div.fragment, + dl dd pre.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > div.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > pre.fragment, + dl dd > .doxygen-awesome-fragment-wrapper > div.fragment, + dl dd .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + border-radius: 0; + border-left: 0; + } +} + +code, code a, pre.fragment, div.fragment, div.fragment .line, div.fragment span, div.fragment .line a, div.fragment .line span { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size) !important; +} + +div.line:after { + margin-right: var(--spacing-medium); +} + +div.fragment .line, pre.fragment { + white-space: pre; + word-wrap: initial; + line-height: var(--fragment-lineheight); +} + +div.fragment span.keyword { + color: var(--fragment-keyword); +} + +div.fragment span.keywordtype { + color: var(--fragment-keywordtype); +} + +div.fragment span.keywordflow { + color: var(--fragment-keywordflow); +} + +div.fragment span.stringliteral { + color: var(--fragment-token) +} + +div.fragment span.comment { + color: var(--fragment-comment); +} + +div.fragment a.code { + color: var(--fragment-link) !important; +} + +div.fragment span.preprocessor { + color: var(--fragment-preprocessor); +} + +div.fragment span.lineno { + display: inline-block; + width: 27px; + border-right: none; + background: var(--fragment-linenumber-background); + color: var(--fragment-linenumber-color); +} + +div.fragment span.lineno a { + background: none; + color: var(--fragment-link) !important; +} + +div.fragment > .line:first-child .lineno { + box-shadow: -999999px 0px 0 999999px var(--fragment-linenumber-background), -999998px 0px 0 999999px var(--fragment-linenumber-border); + background-color: var(--fragment-linenumber-background) !important; +} + +div.line { + border-radius: var(--border-radius-small); +} + +div.line.glow { + background-color: var(--primary-light-color); + box-shadow: none; +} + +/* + dl warning, attention, note, deprecated, bug, ... + */ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, dl.invariant, dl.pre, dl.post, dl.todo, dl.remark { + padding: var(--spacing-medium); + margin: var(--spacing-medium) 0; + color: var(--page-background-color); + overflow: hidden; + margin-left: 0; + border-radius: var(--border-radius-small); +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention { + background: var(--warning-color); + border-left: 8px solid var(--warning-color-dark); + color: var(--warning-color-darker); +} + +dl.warning dt, dl.attention dt { + color: var(--warning-color-dark); +} + +dl.note, dl.remark { + background: var(--note-color); + border-left: 8px solid var(--note-color-dark); + color: var(--note-color-darker); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-dark); +} + +dl.todo { + background: var(--todo-color); + border-left: 8px solid var(--todo-color-dark); + color: var(--todo-color-darker); +} + +dl.todo dt a { + color: var(--todo-color-dark) !important; +} + +dl.bug dt a { + color: var(--todo-color-dark) !important; +} + +dl.bug { + background: var(--bug-color); + border-left: 8px solid var(--bug-color-dark); + color: var(--bug-color-darker); +} + +dl.bug dt a { + color: var(--bug-color-dark) !important; +} + +dl.deprecated { + background: var(--deprecated-color); + border-left: 8px solid var(--deprecated-color-dark); + color: var(--deprecated-color-darker); +} + +dl.deprecated dt a { + color: var(--deprecated-color-dark) !important; +} + +dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color); + border-left: 8px solid var(--invariant-color-dark); + color: var(--invariant-color-darker); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-dark); +} + +/* + memitem + */ + +div.memdoc, div.memproto, h2.memtitle { + box-shadow: none; + background-image: none; + border: none; +} + +div.memdoc { + padding: 0 var(--spacing-medium); + background: var(--page-background-color); +} + +h2.memtitle, div.memitem { + border: 1px solid var(--separator-color); + box-shadow: var(--box-shadow); +} + +h2.memtitle { + box-shadow: 0px var(--spacing-medium) 0 -1px var(--fragment-background), var(--box-shadow); +} + +div.memitem { + transition: none; +} + +div.memproto, h2.memtitle { + background: var(--fragment-background); +} + +h2.memtitle { + font-weight: 500; + font-size: var(--memtitle-font-size); + font-family: var(--font-family-monospace); + border-bottom: none; + border-top-left-radius: var(--border-radius-medium); + border-top-right-radius: var(--border-radius-medium); + word-break: break-all; + position: relative; +} + +h2.memtitle:after { + content: ""; + display: block; + background: var(--fragment-background); + height: var(--spacing-medium); + bottom: calc(0px - var(--spacing-medium)); + left: 0; + right: -14px; + position: absolute; + border-top-right-radius: var(--border-radius-medium); +} + +h2.memtitle > span.permalink { + font-size: inherit; +} + +h2.memtitle > span.permalink > a { + text-decoration: none; + padding-left: 3px; + margin-right: -4px; + user-select: none; + display: inline-block; + margin-top: -6px; +} + +h2.memtitle > span.permalink > a:hover { + color: var(--primary-dark-color) !important; +} + +a:target + h2.memtitle, a:target + h2.memtitle + div.memitem { + border-color: var(--primary-light-color); +} + +div.memitem { + border-top-right-radius: var(--border-radius-medium); + border-bottom-right-radius: var(--border-radius-medium); + border-bottom-left-radius: var(--border-radius-medium); + overflow: hidden; + display: block !important; +} + +div.memdoc { + border-radius: 0; +} + +div.memproto { + border-radius: 0 var(--border-radius-small) 0 0; + overflow: auto; + border-bottom: 1px solid var(--separator-color); + padding: var(--spacing-medium); + margin-bottom: -1px; +} + +div.memtitle { + border-top-right-radius: var(--border-radius-medium); + border-top-left-radius: var(--border-radius-medium); +} + +div.memproto table.memname { + font-family: var(--font-family-monospace); + color: var(--page-foreground-color); + font-size: var(--memname-font-size); + text-shadow: none; +} + +div.memproto div.memtemplate { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--memname-font-size); + margin-left: 2px; + text-shadow: none; +} + +table.mlabels, table.mlabels > tbody { + display: block; +} + +td.mlabels-left { + width: auto; +} + +td.mlabels-right { + margin-top: 3px; + position: sticky; + left: 0; +} + +table.mlabels > tbody > tr:first-child { + display: flex; + justify-content: space-between; + flex-wrap: wrap; +} + +.memname, .memitem span.mlabels { + margin: 0 +} + +/* + reflist + */ + +dl.reflist { + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-medium); + border: 1px solid var(--separator-color); + overflow: hidden; + padding: 0; +} + + +dl.reflist dt, dl.reflist dd { + box-shadow: none; + text-shadow: none; + background-image: none; + border: none; + padding: 12px; +} + + +dl.reflist dt { + font-weight: 500; + border-radius: 0; + background: var(--code-background); + border-bottom: 1px solid var(--separator-color); + color: var(--page-foreground-color) +} + + +dl.reflist dd { + background: none; +} + +/* + Table + */ + +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname), +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { + display: inline-block; + max-width: 100%; +} + +.contents > table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname):not(.classindex) { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); +} + +table.fieldtable, +table.markdownTable tbody, +table.doxtable tbody { + border: none; + margin: var(--spacing-medium) 0; + box-shadow: 0 0 0 1px var(--separator-color); + border-radius: var(--border-radius-small); +} + +table.markdownTable, table.doxtable, table.fieldtable { + padding: 1px; +} + +table.doxtable caption { + display: block; +} + +table.fieldtable { + border-collapse: collapse; + width: 100%; +} + +th.markdownTableHeadLeft, +th.markdownTableHeadRight, +th.markdownTableHeadCenter, +th.markdownTableHeadNone, +table.doxtable th { + background: var(--tablehead-background); + color: var(--tablehead-foreground); + font-weight: 600; + font-size: var(--page-font-size); +} + +th.markdownTableHeadLeft:first-child, +th.markdownTableHeadRight:first-child, +th.markdownTableHeadCenter:first-child, +th.markdownTableHeadNone:first-child, +table.doxtable tr th:first-child { + border-top-left-radius: var(--border-radius-small); +} + +th.markdownTableHeadLeft:last-child, +th.markdownTableHeadRight:last-child, +th.markdownTableHeadCenter:last-child, +th.markdownTableHeadNone:last-child, +table.doxtable tr th:last-child { + border-top-right-radius: var(--border-radius-small); +} + +table.markdownTable td, +table.markdownTable th, +table.fieldtable td, +table.fieldtable th, +table.doxtable td, +table.doxtable th { + border: 1px solid var(--separator-color); + padding: var(--spacing-small) var(--spacing-medium); +} + +table.markdownTable td:last-child, +table.markdownTable th:last-child, +table.fieldtable td:last-child, +table.fieldtable th:last-child, +table.doxtable td:last-child, +table.doxtable th:last-child { + border-right: none; +} + +table.markdownTable td:first-child, +table.markdownTable th:first-child, +table.fieldtable td:first-child, +table.fieldtable th:first-child, +table.doxtable td:first-child, +table.doxtable th:first-child { + border-left: none; +} + +table.markdownTable tr:first-child td, +table.markdownTable tr:first-child th, +table.fieldtable tr:first-child td, +table.fieldtable tr:first-child th, +table.doxtable tr:first-child td, +table.doxtable tr:first-child th { + border-top: none; +} + +table.markdownTable tr:last-child td, +table.markdownTable tr:last-child th, +table.fieldtable tr:last-child td, +table.fieldtable tr:last-child th, +table.doxtable tr:last-child td, +table.doxtable tr:last-child th { + border-bottom: none; +} + +table.markdownTable tr, table.doxtable tr { + border-bottom: 1px solid var(--separator-color); +} + +table.markdownTable tr:last-child, table.doxtable tr:last-child { + border-bottom: none; +} + +.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) { + display: block; +} + +.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { + display: table; + width: 100%; +} + +table.fieldtable th { + font-size: var(--page-font-size); + font-weight: 600; + background-image: none; + background-color: var(--tablehead-background); + color: var(--tablehead-foreground); +} + +table.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fieldinit, .fieldtable td.fielddoc, .fieldtable th { + border-bottom: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); +} + +table.fieldtable tr:last-child td:first-child { + border-bottom-left-radius: var(--border-radius-small); +} + +table.fieldtable tr:last-child td:last-child { + border-bottom-right-radius: var(--border-radius-small); +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--primary-light-color); + box-shadow: none; +} + +table.memberdecls { + display: block; + -webkit-tap-highlight-color: transparent; +} + +table.memberdecls tr[class^='memitem'] { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); +} + +table.memberdecls tr[class^='memitem'] .memTemplParams { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + color: var(--primary-dark-color); + white-space: normal; +} + +table.memberdecls .memItemLeft, +table.memberdecls .memItemRight, +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight, +table.memberdecls .memTemplParams { + transition: none; + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + background-color: var(--fragment-background); +} + +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight { + padding-top: 2px; +} + +table.memberdecls .memTemplParams { + border-bottom: 0; + border-left: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + padding-bottom: var(--spacing-small); +} + +table.memberdecls .memTemplItemLeft { + border-radius: 0 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + border-top: 0; +} + +table.memberdecls .memTemplItemRight { + border-radius: 0 0 var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-left: 0; + border-top: 0; +} + +table.memberdecls .memItemLeft { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + padding-left: var(--spacing-medium); + padding-right: 0; +} + +table.memberdecls .memItemRight { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-right: var(--spacing-medium); + padding-left: 0; + +} + +table.memberdecls .mdescLeft, table.memberdecls .mdescRight { + background: none; + color: var(--page-foreground-color); + padding: var(--spacing-small) 0; +} + +table.memberdecls .memItemLeft, +table.memberdecls .memTemplItemLeft { + padding-right: var(--spacing-medium); +} + +table.memberdecls .memSeparator { + background: var(--page-background-color); + height: var(--spacing-large); + border: 0; + transition: none; +} + +table.memberdecls .groupheader { + margin-bottom: var(--spacing-large); +} + +table.memberdecls .inherit_header td { + padding: 0 0 var(--spacing-medium) 0; + text-indent: -12px; + color: var(--page-secondary-foreground-color); +} + +table.memberdecls img[src="closed.png"], +table.memberdecls img[src="open.png"], +div.dynheader img[src="open.png"], +div.dynheader img[src="closed.png"] { + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid var(--primary-color); + margin-top: 8px; + display: block; + float: left; + margin-left: -10px; + transition: transform var(--animation-duration) ease-out; +} + +table.memberdecls img { + margin-right: 10px; +} + +table.memberdecls img[src="closed.png"], +div.dynheader img[src="closed.png"] { + transform: rotate(-90deg); + +} + +.compoundTemplParams { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--code-font-size); +} + +@media screen and (max-width: 767px) { + + table.memberdecls .memItemLeft, + table.memberdecls .memItemRight, + table.memberdecls .mdescLeft, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemLeft, + table.memberdecls .memTemplItemRight, + table.memberdecls .memTemplParams { + display: block; + text-align: left; + padding-left: var(--spacing-large); + margin: 0 calc(0px - var(--spacing-large)) 0 calc(0px - var(--spacing-large)); + border-right: none; + border-left: none; + border-radius: 0; + white-space: normal; + } + + table.memberdecls .memItemLeft, + table.memberdecls .mdescLeft, + table.memberdecls .memTemplItemLeft { + border-bottom: 0; + padding-bottom: 0; + } + + table.memberdecls .memTemplItemLeft { + padding-top: 0; + } + + table.memberdecls .mdescLeft { + margin-bottom: calc(0px - var(--page-font-size)); + } + + table.memberdecls .memItemRight, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemRight { + border-top: 0; + padding-top: 0; + padding-right: var(--spacing-large); + overflow-x: auto; + } + + table.memberdecls tr[class^='memitem']:not(.inherit) { + display: block; + width: calc(100vw - 2 * var(--spacing-large)); + } + + table.memberdecls .mdescRight { + color: var(--page-foreground-color); + } + + table.memberdecls tr.inherit { + visibility: hidden; + } + + table.memberdecls tr[style="display: table-row;"] { + display: block !important; + visibility: visible; + width: calc(100vw - 2 * var(--spacing-large)); + animation: fade .5s; + } + + @keyframes fade { + 0% { + opacity: 0; + max-height: 0; + } + + 100% { + opacity: 1; + max-height: 200px; + } + } +} + + +/* + Horizontal Rule + */ + +hr { + margin-top: var(--spacing-large); + margin-bottom: var(--spacing-large); + height: 1px; + background-color: var(--separator-color); + border: 0; +} + +.contents hr { + box-shadow: 100px 0 var(--separator-color), + -100px 0 var(--separator-color), + 500px 0 var(--separator-color), + -500px 0 var(--separator-color), + 900px 0 var(--separator-color), + -900px 0 var(--separator-color), + 1400px 0 var(--separator-color), + -1400px 0 var(--separator-color), + 1900px 0 var(--separator-color), + -1900px 0 var(--separator-color); +} + +.contents img, .contents .center, .contents center, .contents div.image object { + max-width: 100%; + overflow: auto; +} + +@media screen and (max-width: 767px) { + .contents .dyncontent > .center, .contents > center { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); + } +} + +/* + Directories + */ +div.directory { + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + width: auto; +} + +table.directory { + font-family: var(--font-family); + font-size: var(--page-font-size); + font-weight: normal; + width: 100%; +} + +table.directory td.entry, table.directory td.desc { + padding: calc(var(--spacing-small) / 2) var(--spacing-small); + line-height: var(--table-line-height); +} + +table.directory tr.even td:last-child { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; +} + +table.directory tr.even td:first-child { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); +} + +table.directory tr.even:last-child td:last-child { + border-radius: 0 var(--border-radius-small) 0 0; +} + +table.directory tr.even:last-child td:first-child { + border-radius: var(--border-radius-small) 0 0 0; +} + +table.directory td.desc { + min-width: 250px; +} + +table.directory tr.even { + background-color: var(--odd-color); +} + +table.directory tr.odd { + background-color: transparent; +} + +.icona { + width: auto; + height: auto; + margin: 0 var(--spacing-small); +} + +.icon { + background: var(--primary-color); + border-radius: var(--border-radius-small); + font-size: var(--page-font-size); + padding: calc(var(--page-font-size) / 5); + line-height: var(--page-font-size); + transform: scale(0.8); + height: auto; + width: var(--page-font-size); + user-select: none; +} + +.iconfopen, .icondoc, .iconfclosed { + background-position: center; + margin-bottom: 0; + height: var(--table-line-height); +} + +.icondoc { + filter: saturate(0.2); +} + +@media screen and (max-width: 767px) { + div.directory { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) .iconfopen, html:not(.light-mode) .iconfclosed { + filter: hue-rotate(180deg) invert(); + } +} + +html.dark-mode .iconfopen, html.dark-mode .iconfclosed { + filter: hue-rotate(180deg) invert(); +} + +/* + Class list + */ + +.classindex dl.odd { + background: var(--odd-color); + border-radius: var(--border-radius-small); +} + +.classindex dl.even { + background-color: transparent; +} + +/* + Class Index Doxygen 1.8 +*/ + +table.classindex { + margin-left: 0; + margin-right: 0; + width: 100%; +} + +table.classindex table div.ah { + background-image: none; + background-color: initial; + border-color: var(--separator-color); + color: var(--page-foreground-color); + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-large); + padding: var(--spacing-small); +} + +div.qindex { + background-color: var(--odd-color); + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + padding: var(--spacing-small) 0; +} + +/* + Footer and nav-path + */ + +#nav-path { + width: 100%; +} + +#nav-path ul { + background-image: none; + background: var(--page-background-color); + border: none; + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + border-bottom: 0; + box-shadow: 0 0.75px 0 var(--separator-color); + font-size: var(--navigation-font-size); +} + +img.footer { + width: 60px; +} + +.navpath li.footer { + color: var(--page-secondary-foreground-color); +} + +address.footer { + color: var(--page-secondary-foreground-color); + margin-bottom: var(--spacing-large); +} + +#nav-path li.navelem { + background-image: none; + display: flex; + align-items: center; +} + +.navpath li.navelem a { + text-shadow: none; + display: inline-block; + color: var(--primary-color) !important; +} + +.navpath li.navelem b { + color: var(--primary-dark-color); + font-weight: 500; +} + +li.navelem { + padding: 0; + margin-left: -8px; +} + +li.navelem:first-child { + margin-left: var(--spacing-large); +} + +li.navelem:first-child:before { + display: none; +} + +#nav-path li.navelem:after { + content: ''; + border: 5px solid var(--page-background-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(4.2); + z-index: 10; + margin-left: 6px; +} + +#nav-path li.navelem:before { + content: ''; + border: 5px solid var(--separator-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(3.2); + margin-right: var(--spacing-small); +} + +.navpath li.navelem a:hover { + color: var(--primary-color); +} + +/* + Scrollbars for Webkit +*/ + +#nav-tree::-webkit-scrollbar, +div.fragment::-webkit-scrollbar, +pre.fragment::-webkit-scrollbar, +div.memproto::-webkit-scrollbar, +.contents center::-webkit-scrollbar, +.contents .center::-webkit-scrollbar, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar, +div.contents .toc::-webkit-scrollbar, +.contents .dotgraph::-webkit-scrollbar, +.contents .tabs-overview-container::-webkit-scrollbar { + background: transparent; + width: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + height: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); +} + +#nav-tree::-webkit-scrollbar-thumb, +div.fragment::-webkit-scrollbar-thumb, +pre.fragment::-webkit-scrollbar-thumb, +div.memproto::-webkit-scrollbar-thumb, +.contents center::-webkit-scrollbar-thumb, +.contents .center::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-thumb, +div.contents .toc::-webkit-scrollbar-thumb, +.contents .dotgraph::-webkit-scrollbar-thumb, +.contents .tabs-overview-container::-webkit-scrollbar-thumb { + background-color: transparent; + border: var(--webkit-scrollbar-padding) solid transparent; + border-radius: calc(var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + background-clip: padding-box; +} + +#nav-tree:hover::-webkit-scrollbar-thumb, +div.fragment:hover::-webkit-scrollbar-thumb, +pre.fragment:hover::-webkit-scrollbar-thumb, +div.memproto:hover::-webkit-scrollbar-thumb, +.contents center:hover::-webkit-scrollbar-thumb, +.contents .center:hover::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody:hover::-webkit-scrollbar-thumb, +div.contents .toc:hover::-webkit-scrollbar-thumb, +.contents .dotgraph:hover::-webkit-scrollbar-thumb, +.contents .tabs-overview-container:hover::-webkit-scrollbar-thumb { + background-color: var(--webkit-scrollbar-color); +} + +#nav-tree::-webkit-scrollbar-track, +div.fragment::-webkit-scrollbar-track, +pre.fragment::-webkit-scrollbar-track, +div.memproto::-webkit-scrollbar-track, +.contents center::-webkit-scrollbar-track, +.contents .center::-webkit-scrollbar-track, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-track, +div.contents .toc::-webkit-scrollbar-track, +.contents .dotgraph::-webkit-scrollbar-track, +.contents .tabs-overview-container::-webkit-scrollbar-track { + background: transparent; +} + +#nav-tree::-webkit-scrollbar-corner { + background-color: var(--side-nav-background); +} + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, +div.contents .toc { + overflow-x: auto; + overflow-x: overlay; +} + +#nav-tree { + overflow-x: auto; + overflow-y: auto; + overflow-y: overlay; +} + +/* + Scrollbars for Firefox +*/ + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, +div.contents .toc, +.contents .dotgraph, +.contents .tabs-overview-container { + scrollbar-width: thin; +} + +/* + Optional Dark mode toggle button +*/ + +doxygen-awesome-dark-mode-toggle { + display: inline-block; + margin: 0 0 0 var(--spacing-small); + padding: 0; + width: var(--searchbar-height); + height: var(--searchbar-height); + background: none; + border: none; + border-radius: var(--searchbar-height); + vertical-align: middle; + text-align: center; + line-height: var(--searchbar-height); + font-size: 22px; + display: flex; + align-items: center; + justify-content: center; + user-select: none; + cursor: pointer; +} + +doxygen-awesome-dark-mode-toggle > svg { + transition: transform var(--animation-duration) ease-in-out; +} + +doxygen-awesome-dark-mode-toggle:active > svg { + transform: scale(.5); +} + +doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.03); +} + +html.dark-mode doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.18); +} + +/* + Optional fragment copy button +*/ +.doxygen-awesome-fragment-wrapper { + position: relative; +} + +doxygen-awesome-fragment-copy-button { + opacity: 0; + background: var(--fragment-background); + width: 28px; + height: 28px; + position: absolute; + right: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + top: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + border: 1px solid var(--fragment-foreground); + cursor: pointer; + border-radius: var(--border-radius-small); + display: flex; + justify-content: center; + align-items: center; +} + +.doxygen-awesome-fragment-wrapper:hover doxygen-awesome-fragment-copy-button, doxygen-awesome-fragment-copy-button.success { + opacity: .28; +} + +doxygen-awesome-fragment-copy-button:hover, doxygen-awesome-fragment-copy-button.success { + opacity: 1 !important; +} + +doxygen-awesome-fragment-copy-button:active:not([class~=success]) svg { + transform: scale(.91); +} + +doxygen-awesome-fragment-copy-button svg { + fill: var(--fragment-foreground); + width: 18px; + height: 18px; +} + +doxygen-awesome-fragment-copy-button.success svg { + fill: rgb(14, 168, 14); +} + +doxygen-awesome-fragment-copy-button.success { + border-color: rgb(14, 168, 14); +} + +@media screen and (max-width: 767px) { + .textblock > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .textblock li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + dl dd > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button { + right: 0; + } +} + +/* + Optional paragraph link button +*/ + +a.anchorlink { + font-size: 90%; + margin-left: var(--spacing-small); + color: var(--page-foreground-color) !important; + text-decoration: none; + opacity: .15; + display: none; + transition: opacity var(--animation-duration) ease-in-out, color var(--animation-duration) ease-in-out; +} + +a.anchorlink svg { + fill: var(--page-foreground-color); +} + +h3 a.anchorlink svg, h4 a.anchorlink svg { + margin-bottom: -3px; + margin-top: -4px; +} + +a.anchorlink:hover { + opacity: .45; +} + +h2:hover a.anchorlink, h1:hover a.anchorlink, h3:hover a.anchorlink, h4:hover a.anchorlink { + display: inline-block; +} + +/* + Optional tab feature +*/ + +.tabbed > ul { + padding-inline-start: 0px; + margin: 0; + padding: var(--spacing-small) 0; +} + +.tabbed > ul > li { + display: none; +} + +.tabbed > ul > li.selected { + display: block; +} + +.tabs-overview-container { + overflow-x: auto; + display: block; + overflow-y: visible; +} + +.tabs-overview { + border-bottom: 1px solid var(--separator-color); + display: flex; + flex-direction: row; +} + +@media screen and (max-width: 767px) { + .tabs-overview-container { + margin: 0 calc(0px - var(--spacing-large)); + } + .tabs-overview { + padding: 0 var(--spacing-large) + } +} + +.tabs-overview button.tab-button { + color: var(--page-foreground-color); + margin: 0; + border: none; + background: transparent; + padding: calc(var(--spacing-large) / 2) 0; + display: inline-block; + font-size: var(--page-font-size); + cursor: pointer; + box-shadow: 0 1px 0 0 var(--separator-color); + position: relative; + + -webkit-tap-highlight-color: transparent; +} + +.tabs-overview button.tab-button .tab-title::before { + display: block; + content: attr(title); + font-weight: 600; + height: 0; + overflow: hidden; + visibility: hidden; +} + +.tabs-overview button.tab-button .tab-title { + float: left; + white-space: nowrap; + font-weight: normal; + padding: calc(var(--spacing-large) / 2) var(--spacing-large); + border-radius: var(--border-radius-medium); + transition: background-color var(--animation-duration) ease-in-out, font-weight var(--animation-duration) ease-in-out; +} + +.tabs-overview button.tab-button:not(:last-child) .tab-title { + box-shadow: 8px 0 0 -7px var(--separator-color); +} + +.tabs-overview button.tab-button:hover .tab-title { + background: var(--separator-color); + box-shadow: none; +} + +.tabs-overview button.tab-button.active .tab-title { + font-weight: 600; +} + +.tabs-overview button.tab-button::after { + content: ''; + display: block; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 0; + width: 0%; + margin: 0 auto; + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + background-color: var(--primary-color); + transition: width var(--animation-duration) ease-in-out, height var(--animation-duration) ease-in-out; +} + +.tabs-overview button.tab-button.active::after { + width: 100%; + box-sizing: border-box; + height: 3px; +} + + +/* + Navigation Buttons +*/ + +.section_buttons:not(:empty) { + margin-top: calc(var(--spacing-large) * 3); +} + +.section_buttons table.markdownTable { + display: block; + width: 100%; +} + +.section_buttons table.markdownTable tbody { + display: table !important; + width: 100%; + box-shadow: none; + border-spacing: 10px; +} + +.section_buttons table.markdownTable td { + padding: 0; +} + +.section_buttons table.markdownTable th { + display: none; +} + +.section_buttons table.markdownTable tr.markdownTableHead { + border: none; +} + +.section_buttons tr th, .section_buttons tr td { + background: none; + border: none; + padding: var(--spacing-large) 0 var(--spacing-small); +} + +.section_buttons a { + display: inline-block; + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + color: var(--page-secondary-foreground-color) !important; + text-decoration: none; + transition: color var(--animation-duration) ease-in-out, background-color var(--animation-duration) ease-in-out; +} + +.section_buttons a:hover { + color: var(--page-foreground-color) !important; + background-color: var(--odd-color); +} + +.section_buttons tr td.markdownTableBodyLeft a { + padding: var(--spacing-medium) var(--spacing-large) var(--spacing-medium) calc(var(--spacing-large) / 2); +} + +.section_buttons tr td.markdownTableBodyRight a { + padding: var(--spacing-medium) calc(var(--spacing-large) / 2) var(--spacing-medium) var(--spacing-large); +} + +.section_buttons tr td.markdownTableBodyLeft a::before, +.section_buttons tr td.markdownTableBodyRight a::after { + color: var(--page-secondary-foreground-color) !important; + display: inline-block; + transition: color .08s ease-in-out, transform .09s ease-in-out; +} + +.section_buttons tr td.markdownTableBodyLeft a::before { + content: '〈'; + padding-right: var(--spacing-large); +} + + +.section_buttons tr td.markdownTableBodyRight a::after { + content: '〉'; + padding-left: var(--spacing-large); +} + + +.section_buttons tr td.markdownTableBodyLeft a:hover::before { + color: var(--page-foreground-color) !important; + transform: translateX(-3px); +} + +.section_buttons tr td.markdownTableBodyRight a:hover::after { + color: var(--page-foreground-color) !important; + transform: translateX(3px); +} + +@media screen and (max-width: 450px) { + .section_buttons a { + width: 100%; + box-sizing: border-box; + } + + .section_buttons tr td:nth-of-type(1).markdownTableBodyLeft a { + border-radius: var(--border-radius-medium) 0 0 var(--border-radius-medium); + border-right: none; + } + + .section_buttons tr td:nth-of-type(2).markdownTableBodyRight a { + border-radius: 0 var(--border-radius-medium) var(--border-radius-medium) 0; + } +} diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/doxygen.css b/lib/yyjson-0.12.0/doc/doxygen/html/doxygen.css new file mode 100644 index 00000000000..90fba19bf1b --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/doxygen.css @@ -0,0 +1,1849 @@ +/* The standard CSS for doxygen 1.13.2*/ + +body { + background-color: white; + color: black; +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: Roboto,sans-serif; + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-family: Roboto,sans-serif; + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: white; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: white; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: none; + background: linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%); +} + +a:hover > span.arrow { + text-decoration: none; + background : #F9FAFC; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul.check { + list-style:none; + text-indent: -16px; + padding-left: 38px; +} +li.unchecked:before { + content: "\2610\A0"; +} +li.checked:before { + content: "\2611\A0"; +} + +ol { + text-indent: 0px; +} + +ul { + text-indent: 0px; + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; + overflow-y: hidden; + position: relative; + min-height: 12px; + margin: 10px 0px; + padding: 10px 10px; + border: 1px solid #C4CFE5; + border-radius: 4px; + background-color: #FBFCFD; + color: black; +} + +pre.fragment { + word-wrap: break-word; + font-size: 10pt; + line-height: 125%; + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +} + +.clipboard { + width: 24px; + height: 24px; + right: 5px; + top: 5px; + opacity: 0; + position: absolute; + display: inline; + overflow: hidden; + justify-content: center; + align-items: center; + cursor: pointer; +} + +.clipboard.success { + border: 1px solid black; + border-radius: 4px; +} + +.fragment:hover .clipboard, .clipboard.success { + opacity: .4; +} + +.clipboard:hover, .clipboard.success { + opacity: 1 !important; +} + +.clipboard:active:not([class~=success]) svg { + transform: scale(.91); +} + +.clipboard.success svg { + fill: #2EC82E; +} + +.clipboard.success { + border-color: #2EC82E; +} + +div.line { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid #00FF00; + color: black; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: #4665A2; + background-color: #D8D8D8; +} + +span.lineno a:hover { + color: #4665A2; + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: 104px; +} + +.compoundTemplParams { + color: #4665A2; + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000; +} + +span.keywordtype { + color: #604020; +} + +span.keywordflow { + color: #E08000; +} + +span.comment { + color: #800000; +} + +span.preprocessor { + color: #806020; +} + +span.stringliteral { + color: #002080; +} + +span.charliteral { + color: #008080; +} + +span.xmlcdata { + color: black; +} + +span.vhdldigit { + color: #FF00FF; +} + +span.vhdlchar { + color: #000000; +} + +span.vhdlkeyword { + color: #700070; +} + +span.vhdllogic { + color: #FF0000; +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #2D4068; +} + +th.dirtab { + background-color: #374F7F; + color: #FFFFFF; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: white; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; +} + +.paramname { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; + margin-left: 2px; +} + +.paramname em { + color: #602020; + font-style: normal; + margin-right: 1px; +} + +.paramname .paramdefval { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: #F8F9FC; +} + +.directory tr.even { + padding-left: 6px; + background-color: white; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial,Helvetica; + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.svg'); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.svg'); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.svg'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fieldinit { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fieldinit { + padding-top: 3px; + text-align: right; +} + + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#283A5D; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: white; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: #2A3D61; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* + +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention, dl.important { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +*/ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.important, dl.note, dl.deprecated, dl.bug, +dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; + border-radius: 4px; +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention, dl.important { + background: #f8d1cc; + border-left: 8px solid #b61825; + color: #75070f; +} + +dl.warning dt, dl.attention dt, dl.important dt { + color: #b61825; +} + +dl.note, dl.remark { + background: #faf3d8; + border-left: 8px solid #f3a600; + color: #5f4204; +} + +dl.note dt, dl.remark dt { + color: #f3a600; +} + +dl.todo { + background: #e4f3ff; + border-left: 8px solid #1879C4; + color: #274a5c; +} + +dl.todo dt { + color: #1879C4; +} + +dl.test { + background: #e8e8ff; + border-left: 8px solid #3939C4; + color: #1a1a5c; +} + +dl.test dt { + color: #3939C4; +} + +dl.bug dt a { + color: #5b2bdd !important; +} + +dl.bug { + background: #e4dafd; + border-left: 8px solid #5b2bdd; + color: #2a0d72; +} + +dl.bug dt a { + color: #5b2bdd !important; +} + +dl.deprecated { + background: #ecf0f3; + border-left: 8px solid #5b6269; + color: #43454a; +} + +dl.deprecated dt a { + color: #5b6269 !important; +} + +dl.note dd, dl.warning dd, dl.pre dd, dl.post dd, +dl.remark dd, dl.attention dd, dl.important dd, dl.invariant dd, +dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: #d8f1e3; + border-left: 8px solid #44b86f; + color: #265532; +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: #44b86f; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: Tahoma,Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#side-nav #projectname +{ + font-size: 130%; +} + +#projectbrief +{ + font-size: 90%; + font-family: Tahoma,Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% Tahoma,Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; + background-color: white; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("data:image/svg+xml;utf8,&%238595;") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,'DejaVu Sans',Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Verdana,'DejaVu Sans',Geneva,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li[class^='level'] { + margin-left: 15px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.empty { + background-image: none; + margin-top: 0px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: black; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: #4665A2; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: Roboto,sans-serif; + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: white; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: gray; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: white; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: gray; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: gray; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: gray; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: gray; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: gray; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd +{ + display: inline-block; +} +tt, code, kbd +{ + vertical-align: top; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/doxygen.svg b/lib/yyjson-0.12.0/doc/doxygen/html/doxygen.svg new file mode 100644 index 00000000000..79a76354078 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/doxygen_crawl.html b/lib/yyjson-0.12.0/doc/doxygen/html/doxygen_crawl.html new file mode 100644 index 00000000000..2ef5e06d058 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/doxygen_crawl.html @@ -0,0 +1,736 @@ + + + +Validator / crawler helper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/dynsections.js b/lib/yyjson-0.12.0/doc/doxygen/html/dynsections.js new file mode 100644 index 00000000000..3cc426a65ad --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/dynsections.js @@ -0,0 +1,198 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function toggleVisibility(linkObj) { + return dynsection.toggleVisibility(linkObj); +} + +let dynsection = { + + // helper function + updateStripes : function() { + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); + }, + + toggleVisibility : function(linkObj) { + const base = $(linkObj).attr('id'); + const summary = $('#'+base+'-summary'); + const content = $('#'+base+'-content'); + const trigger = $('#'+base+'-trigger'); + const src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; + }, + + toggleLevel : function(level) { + $('table.directory tr').each(function() { + const l = this.id.split('_').length-1; + const i = $('#img'+this.id.substring(3)); + const a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + const id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + const start = $(this).attr('data-start'); + const end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + const line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); + }, +}; +/* @license-end */ diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/files.html b/lib/yyjson-0.12.0/doc/doxygen/html/files.html new file mode 100644 index 00000000000..45aeaad029c --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/files.html @@ -0,0 +1,129 @@ + + + + + + + + +yyjson: File List + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
yyjson 0.12.0 +
+
A high performance C JSON library.
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 12]
+ + +
  src
 yyjson.h
+
+
+
+ + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/files_dup.js b/lib/yyjson-0.12.0/doc/doxygen/html/files_dup.js new file mode 100644 index 00000000000..c3b39c499fc --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/files_dup.js @@ -0,0 +1,4 @@ +var files_dup = +[ + [ "src", "dir_68267d1309a1af8e8297ef4c3efbcdba.html", "dir_68267d1309a1af8e8297ef4c3efbcdba" ] +]; \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/folderclosed.svg b/lib/yyjson-0.12.0/doc/doxygen/html/folderclosed.svg new file mode 100644 index 00000000000..b04bed2e723 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/folderclosedd.svg b/lib/yyjson-0.12.0/doc/doxygen/html/folderclosedd.svg new file mode 100644 index 00000000000..52f0166a23e --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/folderopen.svg b/lib/yyjson-0.12.0/doc/doxygen/html/folderopen.svg new file mode 100644 index 00000000000..f6896dd254b --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/folderopend.svg b/lib/yyjson-0.12.0/doc/doxygen/html/folderopend.svg new file mode 100644 index 00000000000..2d1f06e7bc6 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/functions.html b/lib/yyjson-0.12.0/doc/doxygen/html/functions.html new file mode 100644 index 00000000000..83153ba3a14 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/functions.html @@ -0,0 +1,201 @@ + + + + + + + + +yyjson: Data Fields + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
yyjson 0.12.0 +
+
A high performance C JSON library.
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- a -

+ + +

- c -

+ + +

- d -

+ + +

- f -

+ + +

- i -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- v -

+
+
+ + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/functions_vars.html b/lib/yyjson-0.12.0/doc/doxygen/html/functions_vars.html new file mode 100644 index 00000000000..b674b0f07d6 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/functions_vars.html @@ -0,0 +1,201 @@ + + + + + + + + +yyjson: Data Fields - Variables + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
yyjson 0.12.0 +
+
A high performance C JSON library.
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented variables with links to the struct/union documentation for each field:
+ +

- a -

+ + +

- c -

+ + +

- d -

+ + +

- f -

+ + +

- i -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- v -

+
+
+ + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/globals.html b/lib/yyjson-0.12.0/doc/doxygen/html/globals.html new file mode 100644 index 00000000000..48fb5fd425c --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/globals.html @@ -0,0 +1,125 @@ + + + + + + + + +yyjson: Globals + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
yyjson 0.12.0 +
+
A high performance C JSON library.
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- _ -

    +
  • __bool_true_false_are_defined : yyjson.h
  • +
+
+
+ + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/globals_defs.html b/lib/yyjson-0.12.0/doc/doxygen/html/globals_defs.html new file mode 100644 index 00000000000..0968e32db95 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/globals_defs.html @@ -0,0 +1,185 @@ + + + + + + + + +yyjson: Globals + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
yyjson 0.12.0 +
+
A high performance C JSON library.
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented macros with links to the documentation:
+ +

- _ -

    +
  • __bool_true_false_are_defined : yyjson.h
  • +
+ + +

- y -

+
+
+ + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/globals_dup.js b/lib/yyjson-0.12.0/doc/doxygen/html/globals_dup.js new file mode 100644 index 00000000000..b212d2abb9a --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/globals_dup.js @@ -0,0 +1,5 @@ +var globals_dup = +[ + [ "_", "globals.html", null ], + [ "y", "globals_y.html", null ] +]; \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/globals_func.html b/lib/yyjson-0.12.0/doc/doxygen/html/globals_func.html new file mode 100644 index 00000000000..9960f171086 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/globals_func.html @@ -0,0 +1,448 @@ + + + + + + + + +yyjson: Globals + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
yyjson 0.12.0 +
+
A high performance C JSON library.
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the documentation:
+ +

- y -

+
+
+ + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/globals_func.js b/lib/yyjson-0.12.0/doc/doxygen/html/globals_func.js new file mode 100644 index 00000000000..f5414363fe4 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/globals_func.js @@ -0,0 +1,4 @@ +var globals_func = +[ + [ "y", "globals_func.html", null ] +]; \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/globals_type.html b/lib/yyjson-0.12.0/doc/doxygen/html/globals_type.html new file mode 100644 index 00000000000..69d00e1c042 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/globals_type.html @@ -0,0 +1,131 @@ + + + + + + + + +yyjson: Globals + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
yyjson 0.12.0 +
+
A high performance C JSON library.
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented typedefs with links to the documentation:
+
+
+ + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/globals_vars.html b/lib/yyjson-0.12.0/doc/doxygen/html/globals_vars.html new file mode 100644 index 00000000000..a67ef53dc92 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/globals_vars.html @@ -0,0 +1,187 @@ + + + + + + + + +yyjson: Globals + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
yyjson 0.12.0 +
+
A high performance C JSON library.
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented variables with links to the documentation:
+ +

- y -

    +
  • YYJSON_PATCH_ERROR_EQUAL : yyjson.h
  • +
  • YYJSON_PATCH_ERROR_INVALID_MEMBER : yyjson.h
  • +
  • YYJSON_PATCH_ERROR_INVALID_OPERATION : yyjson.h
  • +
  • YYJSON_PATCH_ERROR_INVALID_PARAMETER : yyjson.h
  • +
  • YYJSON_PATCH_ERROR_MEMORY_ALLOCATION : yyjson.h
  • +
  • YYJSON_PATCH_ERROR_MISSING_KEY : yyjson.h
  • +
  • YYJSON_PATCH_ERROR_POINTER : yyjson.h
  • +
  • YYJSON_PATCH_SUCCESS : yyjson.h
  • +
  • YYJSON_PTR_ERR_MEMORY_ALLOCATION : yyjson.h
  • +
  • YYJSON_PTR_ERR_NONE : yyjson.h
  • +
  • YYJSON_PTR_ERR_NULL_ROOT : yyjson.h
  • +
  • YYJSON_PTR_ERR_PARAMETER : yyjson.h
  • +
  • YYJSON_PTR_ERR_RESOLVE : yyjson.h
  • +
  • YYJSON_PTR_ERR_SET_ROOT : yyjson.h
  • +
  • YYJSON_PTR_ERR_SYNTAX : yyjson.h
  • +
  • YYJSON_READ_ALLOW_BOM : yyjson.h
  • +
  • YYJSON_READ_ALLOW_COMMENTS : yyjson.h
  • +
  • YYJSON_READ_ALLOW_EXT_ESCAPE : yyjson.h
  • +
  • YYJSON_READ_ALLOW_EXT_NUMBER : yyjson.h
  • +
  • YYJSON_READ_ALLOW_EXT_WHITESPACE : yyjson.h
  • +
  • YYJSON_READ_ALLOW_INF_AND_NAN : yyjson.h
  • +
  • YYJSON_READ_ALLOW_INVALID_UNICODE : yyjson.h
  • +
  • YYJSON_READ_ALLOW_SINGLE_QUOTED_STR : yyjson.h
  • +
  • YYJSON_READ_ALLOW_TRAILING_COMMAS : yyjson.h
  • +
  • YYJSON_READ_ALLOW_UNQUOTED_KEY : yyjson.h
  • +
  • YYJSON_READ_BIGNUM_AS_RAW : yyjson.h
  • +
  • YYJSON_READ_ERROR_EMPTY_CONTENT : yyjson.h
  • +
  • YYJSON_READ_ERROR_FILE_OPEN : yyjson.h
  • +
  • YYJSON_READ_ERROR_FILE_READ : yyjson.h
  • +
  • YYJSON_READ_ERROR_INVALID_COMMENT : yyjson.h
  • +
  • YYJSON_READ_ERROR_INVALID_NUMBER : yyjson.h
  • +
  • YYJSON_READ_ERROR_INVALID_PARAMETER : yyjson.h
  • +
  • YYJSON_READ_ERROR_INVALID_STRING : yyjson.h
  • +
  • YYJSON_READ_ERROR_JSON_STRUCTURE : yyjson.h
  • +
  • YYJSON_READ_ERROR_LITERAL : yyjson.h
  • +
  • YYJSON_READ_ERROR_MEMORY_ALLOCATION : yyjson.h
  • +
  • YYJSON_READ_ERROR_MORE : yyjson.h
  • +
  • YYJSON_READ_ERROR_UNEXPECTED_CHARACTER : yyjson.h
  • +
  • YYJSON_READ_ERROR_UNEXPECTED_CONTENT : yyjson.h
  • +
  • YYJSON_READ_ERROR_UNEXPECTED_END : yyjson.h
  • +
  • YYJSON_READ_INSITU : yyjson.h
  • +
  • YYJSON_READ_JSON5 : yyjson.h
  • +
  • YYJSON_READ_NOFLAG : yyjson.h
  • +
  • YYJSON_READ_NUMBER_AS_RAW : yyjson.h
  • +
  • YYJSON_READ_STOP_WHEN_DONE : yyjson.h
  • +
  • YYJSON_READ_SUCCESS : yyjson.h
  • +
  • YYJSON_WRITE_ALLOW_INF_AND_NAN : yyjson.h
  • +
  • YYJSON_WRITE_ALLOW_INVALID_UNICODE : yyjson.h
  • +
  • YYJSON_WRITE_ERROR_FILE_OPEN : yyjson.h
  • +
  • YYJSON_WRITE_ERROR_FILE_WRITE : yyjson.h
  • +
  • YYJSON_WRITE_ERROR_INVALID_PARAMETER : yyjson.h
  • +
  • YYJSON_WRITE_ERROR_INVALID_STRING : yyjson.h
  • +
  • YYJSON_WRITE_ERROR_INVALID_VALUE_TYPE : yyjson.h
  • +
  • YYJSON_WRITE_ERROR_MEMORY_ALLOCATION : yyjson.h
  • +
  • YYJSON_WRITE_ERROR_NAN_OR_INF : yyjson.h
  • +
  • YYJSON_WRITE_ESCAPE_SLASHES : yyjson.h
  • +
  • YYJSON_WRITE_ESCAPE_UNICODE : yyjson.h
  • +
  • YYJSON_WRITE_INF_AND_NAN_AS_NULL : yyjson.h
  • +
  • YYJSON_WRITE_NEWLINE_AT_END : yyjson.h
  • +
  • YYJSON_WRITE_NOFLAG : yyjson.h
  • +
  • YYJSON_WRITE_PRETTY : yyjson.h
  • +
  • YYJSON_WRITE_PRETTY_TWO_SPACES : yyjson.h
  • +
  • YYJSON_WRITE_SUCCESS : yyjson.h
  • +
+
+
+ + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/globals_y.html b/lib/yyjson-0.12.0/doc/doxygen/html/globals_y.html new file mode 100644 index 00000000000..0ee06d7c297 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/globals_y.html @@ -0,0 +1,575 @@ + + + + + + + + +yyjson: Globals + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
yyjson 0.12.0 +
+
A high performance C JSON library.
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- y -

+
+
+ + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/index.html b/lib/yyjson-0.12.0/doc/doxygen/html/index.html new file mode 100644 index 00000000000..2af098fb217 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/index.html @@ -0,0 +1,444 @@ + + + + + + + + +yyjson: Introduction + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
yyjson 0.12.0 +
+
A high performance C JSON library.
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Introduction
+
+
+

+

Build Codecov License Version Packaging status

+

A high performance JSON library written in ANSI C.

+

+Features

+
    +
  • Fast: can read or write gigabytes of JSON data per second on modern CPUs.
  • +
  • Portable: complies with ANSI C (C89) for cross-platform compatibility.
  • +
  • Strict: complies with RFC 8259 JSON standard, ensuring strict number formats and UTF-8 validation.
  • +
  • Extendable: offers options to enable individual JSON5 features and custom allocator.
  • +
  • Accuracy: can accurately read and write int64, uint64, and double numbers.
  • +
  • Flexible: supports unlimited JSON nesting levels, \u0000 characters, and non-null-terminated strings.
  • +
  • Manipulation: supports querying and modifying with JSON Pointer, JSON Patch, and JSON Merge Patch.
  • +
  • Developer-Friendly: easy integration with just one .h and one .c file.
  • +
+

+Limitations

+
    +
  • An array or object is stored as a data structure such as linked list, which makes accessing elements by index or key slower than using an iterator.
  • +
  • Duplicate keys are allowed in an object, and the order of the keys is preserved.
  • +
  • JSON parsing result is immutable, requiring a mutable copy for modification.
  • +
+

+Performance

+

Benchmark project and dataset: yyjson_benchmark

+

The simdjson's new On Demand API is faster if most JSON fields are known at compile-time. This benchmark project only checks the DOM API, a new benchmark will be added later.

+

+AWS EC2 (AMD EPYC 7R32, gcc 9.3)

+

+ + + + + + + + + + + + + + + + + + + +
twitter.json parse (GB/s) stringify (GB/s)
yyjson(insitu) 1.80 1.51
yyjson 1.72 1.42
simdjson 1.52 0.61
sajson 1.16
rapidjson(insitu) 0.77
rapidjson(utf8) 0.26 0.39
cjson 0.32 0.17
jansson 0.05 0.11
+

+iPhone (Apple A14, clang 12)

+

+ + + + + + + + + + + + + + + + + + + +
twitter.json parse (GB/s) stringify (GB/s)
yyjson(insitu) 3.51 2.41
yyjson 2.39 2.01
simdjson 2.19 0.80
sajson 1.74
rapidjson(insitu) 0.75
rapidjson(utf8) 0.30 0.58
cjson 0.48 0.33
jansson 0.09 0.24
+

More benchmark reports with interactive charts (update 2020-12-12)

+ + + + + + + + + + + + + + + +
Platform CPU Compiler OS Report
Intel NUC 8i5 Core i5-8259U msvc 2019 Windows 10 2004 Charts
Intel NUC 8i5 Core i5-8259U clang 10.0 Ubuntu 20.04 Charts
Intel NUC 8i5 Core i5-8259U gcc 9.3 Ubuntu 20.04 Charts
AWS EC2 c5a.large AMD EPYC 7R32 gcc 9.3 Ubuntu 20.04 Charts
AWS EC2 t4g.medium Graviton2 (ARM64) gcc 9.3 Ubuntu 20.04 Charts
Apple iPhone 12 Pro A14 (ARM64) clang 12.0 iOS 14 Charts
+

+For better performance, yyjson prefers:

+
    +
  • A modern processor with:
      +
    • high instruction level parallelism
    • +
    • excellent branch predictor
    • +
    • low penalty for misaligned memory access
    • +
    +
  • +
  • A modern compiler with good optimizer (e.g. clang)
  • +
+

+Sample Code

+

+Read JSON string

+
const char *json = "{\"name\":\"Mash\",\"star\":4,\"hits\":[2,2,1,3]}";
+
+
// Read JSON and get root
+
yyjson_doc *doc = yyjson_read(json, strlen(json), 0);
+ +
+
// Get root["name"]
+
yyjson_val *name = yyjson_obj_get(root, "name");
+
printf("name: %s\n", yyjson_get_str(name));
+
printf("name length:%d\n", (int)yyjson_get_len(name));
+
+
// Get root["star"]
+
yyjson_val *star = yyjson_obj_get(root, "star");
+
printf("star: %d\n", (int)yyjson_get_int(star));
+
+
// Get root["hits"], iterate over the array
+
yyjson_val *hits = yyjson_obj_get(root, "hits");
+
size_t idx, max;
+ +
yyjson_arr_foreach(hits, idx, max, hit) {
+
printf("hit%d: %d\n", (int)idx, (int)yyjson_get_int(hit));
+
}
+
+
// Free the doc
+ +
+
// All functions accept NULL input, and return NULL on error.
+
yyjson_api_inline yyjson_val * yyjson_obj_get(yyjson_val *obj, const char *key)
Definition yyjson.h:5483
+
yyjson_api_inline int yyjson_get_int(yyjson_val *val)
Definition yyjson.h:5252
+
#define yyjson_arr_foreach(arr, idx, max, val)
Definition yyjson.h:2046
+
yyjson_api_inline const char * yyjson_get_str(yyjson_val *val)
Definition yyjson.h:5264
+
yyjson_api_inline yyjson_val * yyjson_doc_get_root(yyjson_doc *doc)
Definition yyjson.h:5118
+
yyjson_api_inline void yyjson_doc_free(yyjson_doc *doc)
Definition yyjson.h:5130
+
yyjson_api_inline size_t yyjson_get_len(yyjson_val *val)
Definition yyjson.h:5268
+
yyjson_api_inline yyjson_doc * yyjson_read(const char *dat, size_t len, yyjson_read_flag flg)
Definition yyjson.h:983
+
Definition yyjson.h:4770
+
Definition yyjson.h:4765
+

+Write JSON string

+
// Create a mutable doc
+ + + +
+
// Set root["name"] and root["star"]
+
yyjson_mut_obj_add_str(doc, root, "name", "Mash");
+
yyjson_mut_obj_add_int(doc, root, "star", 4);
+
+
// Set root["hits"] with an array
+
int hits_arr[] = {2, 2, 1, 3};
+
yyjson_mut_val *hits = yyjson_mut_arr_with_sint32(doc, hits_arr, 4);
+
yyjson_mut_obj_add_val(doc, root, "hits", hits);
+
+
// To string, minified
+
const char *json = yyjson_mut_write(doc, 0, NULL);
+
if (json) {
+
printf("json: %s\n", json); // {"name":"Mash","star":4,"hits":[2,2,1,3]}
+
free((void *)json);
+
}
+
+
// Free the doc
+ +
yyjson_api_inline bool yyjson_mut_obj_add_val(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, yyjson_mut_val *val)
Definition yyjson.h:7297
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_sint32(yyjson_mut_doc *doc, const int32_t *vals, size_t count)
Definition yyjson.h:6264
+
yyjson_api_inline bool yyjson_mut_obj_add_int(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, int64_t val)
Definition yyjson.h:7201
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_obj(yyjson_mut_doc *doc)
Definition yyjson.h:6870
+
yyjson_api void yyjson_mut_doc_free(yyjson_mut_doc *doc)
+
yyjson_api_inline char * yyjson_mut_write(const yyjson_mut_doc *doc, yyjson_write_flag flg, size_t *len)
Definition yyjson.h:1461
+
yyjson_api_inline void yyjson_mut_doc_set_root(yyjson_mut_doc *doc, yyjson_mut_val *root)
Definition yyjson.h:5705
+
yyjson_api_inline bool yyjson_mut_obj_add_str(yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, const char *val)
Definition yyjson.h:7229
+
yyjson_api yyjson_mut_doc * yyjson_mut_doc_new(const yyjson_alc *alc)
+
Definition yyjson.h:5638
+
Definition yyjson.h:5590
+

+Read JSON file with options

+
// Read JSON file, allowing comments and trailing commas
+ + +
yyjson_doc *doc = yyjson_read_file("/tmp/config.json", flg, NULL, &err);
+
+
// Iterate over the root object
+
if (doc) {
+ + +
yyjson_obj_iter_init(obj, &iter);
+
yyjson_val *key, *val;
+
while ((key = yyjson_obj_iter_next(&iter))) {
+ +
printf("%s: %s\n", yyjson_get_str(key), yyjson_get_type_desc(val));
+
}
+
} else {
+
printf("read error (%u): %s at position: %ld\n", err.code, err.msg, err.pos);
+
}
+
+
// Free the doc
+ +
static const yyjson_read_flag YYJSON_READ_ALLOW_TRAILING_COMMAS
Definition yyjson.h:750
+
yyjson_api_inline bool yyjson_obj_iter_init(yyjson_val *obj, yyjson_obj_iter *iter)
Definition yyjson.h:5508
+
yyjson_api_inline yyjson_val * yyjson_obj_iter_get_val(yyjson_val *key)
Definition yyjson.h:5541
+
uint32_t yyjson_read_flag
Definition yyjson.h:723
+
yyjson_api_inline const char * yyjson_get_type_desc(yyjson_val *val)
Definition yyjson.h:5219
+
yyjson_read_code code
Definition yyjson.h:881
+
yyjson_api_inline yyjson_val * yyjson_obj_iter_next(yyjson_obj_iter *iter)
Definition yyjson.h:5531
+
yyjson_api yyjson_doc * yyjson_read_file(const char *path, yyjson_read_flag flg, const yyjson_alc *alc, yyjson_read_err *err)
+
size_t pos
Definition yyjson.h:885
+
const char * msg
Definition yyjson.h:883
+
static const yyjson_read_flag YYJSON_READ_ALLOW_COMMENTS
Definition yyjson.h:753
+
Definition yyjson.h:2114
+
Definition yyjson.h:879
+

+Write JSON file with options

+
// Read the JSON file as a mutable doc
+
yyjson_doc *idoc = yyjson_read_file("/tmp/config.json", 0, NULL, NULL);
+ + +
+
// Remove null values in root object
+ + +
yyjson_mut_val *key, *val;
+
while ((key = yyjson_mut_obj_iter_next(&iter))) {
+ +
if (yyjson_mut_is_null(val)) {
+ +
}
+
}
+
+
// Write the json pretty, escape unicode
+ + +
yyjson_mut_write_file("/tmp/config.json", doc, flg, NULL, &err);
+
if (err.code) {
+
printf("write error (%u): %s\n", err.code, err.msg);
+
}
+
+
// Free the doc
+ + +
yyjson_api yyjson_mut_doc * yyjson_doc_mut_copy(yyjson_doc *doc, const yyjson_alc *alc)
+
yyjson_api_inline bool yyjson_mut_is_null(yyjson_mut_val *val)
Definition yyjson.h:5720
+
const char * msg
Definition yyjson.h:1251
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_iter_next(yyjson_mut_obj_iter *iter)
Definition yyjson.h:6804
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_iter_remove(yyjson_mut_obj_iter *iter)
Definition yyjson.h:6821
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_doc_get_root(yyjson_mut_doc *doc)
Definition yyjson.h:5701
+
yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_iter_get_val(yyjson_mut_val *key)
Definition yyjson.h:6816
+
static const yyjson_write_flag YYJSON_WRITE_ESCAPE_UNICODE
Definition yyjson.h:1168
+
yyjson_api bool yyjson_mut_write_file(const char *path, const yyjson_mut_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err)
+
yyjson_api_inline bool yyjson_mut_obj_iter_init(yyjson_mut_val *obj, yyjson_mut_obj_iter *iter)
Definition yyjson.h:6779
+
yyjson_write_code code
Definition yyjson.h:1249
+
static const yyjson_write_flag YYJSON_WRITE_PRETTY
Definition yyjson.h:1165
+
uint32_t yyjson_write_flag
Definition yyjson.h:1155
+
Definition yyjson.h:3537
+
Definition yyjson.h:1247
+

+Documentation

+

The latest (unreleased) documentation can be accessed in the doc directory. The pre-generated Doxygen HTML for the release version can be viewed here:

+

+Packaging status

+

Packaging status

+

+Built With yyjson

+

A non-exhaustive list of projects that expose yyjson to other languages or use yyjson internally for a major feature. If you have a project that uses yyjson, feel free to open a PR to add it to this list.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Project Language Description
py_yyjson Python Python bindings for yyjson
orjson Python JSON library for Python with an optional yyjson backend
cpp-yyjson C++ C++ JSON library with a yyjson backend
reflect-cpp C++ C++ library for serialization through automated field name retrieval from structs
yyjsonr R R binding for yyjson
Ananda Swift JSON model decoding based on yyjson
duckdb C++ DuckDB is an in-process SQL OLAP Database Management System
fastfetch C A neofetch-like tool for fetching system information and displaying them in a pretty way
Zrythm C Digital Audio Workstation that uses yyjson to serialize JSON project files
bemorehuman C Recommendation engine with a focus on uniqueness of the person receiving the rec
mruby-yyjson mruby Efficient JSON parsing and serialization library for mruby using yyjson
YYJSON.jl Julia Julia bindings for yyjson
+

+TODO for v1.0

+
    +
  • [x] Add documentation page.
  • +
  • [x] Add GitHub workflow for CI and codecov.
  • +
  • [x] Add more tests: valgrind, sanitizer, fuzzing.
  • +
  • [x] Support JSON Pointer to query and modify JSON.
  • +
  • [x] Add RAW type for JSON reader and writer.
  • +
  • [x] Add option to limit real number output precision.
  • +
  • [x] Add option to support JSON5.
  • +
  • [ ] Add functions to diff two JSON documents.
  • +
  • [ ] Add documentation on performance optimizations.
  • +
  • [ ] Ensure ABI stability.
  • +
+

+License

+

This project is released under the MIT license.

+
+ +
+
+ + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/index.js b/lib/yyjson-0.12.0/doc/doxygen/html/index.js new file mode 100644 index 00000000000..5765820b6c0 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/index.js @@ -0,0 +1,12 @@ +var index = +[ + [ "Features", "index.html#features", null ], + [ "Limitations", "index.html#limitations", null ], + [ "Performance", "index.html#performance", null ], + [ "Sample Code", "index.html#sample-code", null ], + [ "Documentation", "index.html#documentation", null ], + [ "Packaging status", "index.html#packaging-status", null ], + [ "Built With yyjson", "index.html#built-with-yyjson", null ], + [ "TODO for v1.0", "index.html#todo-for-v10", null ], + [ "License", "index.html#license", null ] +]; \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/jquery.js b/lib/yyjson-0.12.0/doc/doxygen/html/jquery.js new file mode 100644 index 00000000000..875ada738f0 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/jquery.js @@ -0,0 +1,204 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e} +var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp( +"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType +}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c +)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){ +return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll( +":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id") +)&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push( +"\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test( +a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null, +null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne +).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for( +var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n; +return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0, +r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r] +,C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each( +function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r, +"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})} +),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each( +"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t +){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t +]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i}, +getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within, +s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})), +this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t +).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split( +","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add( +this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{ +width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(), +!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){ +this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height +,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e, +i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left +)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e +){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0), +i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth( +)-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e, +function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0 +]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){ +targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se", +"n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if( +session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)} +closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if( +session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE, +function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset); +tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList, +finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight())); +return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")} +function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(), +elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight, +viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b, +"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery); +/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)), +mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend( +$.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy( +this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData( +"smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id" +).indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?( +this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for( +var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){ +return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if(( +!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&( +this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0 +]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass( +"highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){ +t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]" +)||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){ +t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"), +a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i, +downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2) +)&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t +)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0), +canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}}, +rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})} +return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1, +bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/md__c_h_a_n_g_e_l_o_g.html b/lib/yyjson-0.12.0/doc/doxygen/html/md__c_h_a_n_g_e_l_o_g.html new file mode 100644 index 00000000000..61d411769c8 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/md__c_h_a_n_g_e_l_o_g.html @@ -0,0 +1,399 @@ + + + + + + + + +yyjson: Changelog + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
yyjson 0.12.0 +
+
A high performance C JSON library.
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Changelog
+
+
+

+

All notable changes to this project will be documented in this file.

+

+0.12.0 (2025-08-18)

+

+Added

+
    +
  • Add yyjson_write_number() and yyjson_mut_write_number() to write a number value to a string buffer.
  • +
  • Add YYJSON_READ_ALLOW_EXT_NUMBER to support extended number formats, such as 0x7B, +.123.
  • +
  • Add YYJSON_READ_ALLOW_EXT_ESCAPE to support extended escape, such as \a, \0, \x7B.
  • +
  • Add YYJSON_READ_ALLOW_EXT_WHITESPACE to support extended whitespace, such as \v, \u2028.
  • +
  • Add YYJSON_READ_ALLOW_SINGLE_QUOTED_STR to support single-quoted strings, such as ‘'ab’.
  • +
  • AddYYJSON_READ_ALLOW_UNQUOTED_KEYto allow unquoted keys, such as{a:1,b:2}.
  • +
  • AddYYJSON_READ_JSON5` to enable full JSON5 support.
  • +
+

+Changed

+ +

+0.11.1 (2025-05-14)

+

+Fixed

+
    +
  • Fix errors when unaligned access is disallowed (no impact if your build was already successful).
  • +
+

+0.11.0 (2025-05-05)

+

+Added

+
    +
  • Add YYJSON_READ_ALLOW_BOM flag to allow UTF-8 BOM.
  • +
  • Add YYJSON_WRITE_FP_TO_FLOAT flag to write real numbers using single-precison.
  • +
  • Add YYJSON_WRITE_FP_TO_FIXED(prec) flag to write real numbers using fix-point notation.
  • +
  • Add set_fp_to_float() and set_fp_to_fixed() functions to control the output format of a specific number.
  • +
  • Add set_str_noesc() function to skip escaping for a specific string during writing.
  • +
  • Add yyjson_incr_read(), yyjson_incr_new(), yyjson_incr_free() functions for incremental DOM reading.
  • +
+

+Changed

+
    +
  • Rewrite the floating-point number to string functions with a new fast path.
  • +
  • When comments are allowed, return UNEXPECTED_END instead of INVALID_COMMENT for unclosed comments.
  • +
  • Truncated escape sequences now report the error position at the sequence start rather than the end.
  • +
+

+Fixed

+
    +
  • Fix some warnings when directly including yyjson.c: #177
  • +
  • Fix missing indent for YYJSON_TYPE_RAW in prettify function: #178
  • +
  • Fix bug in yyjson_mut_arr_iter_remove(): #194
  • +
  • Fix clang 19 documentation warnings.
  • +
  • Fix cmake 4 and cmake 3.5 warnings.
  • +
+

+0.10.0 (2024-07-09)

+

+Added

+
    +
  • Add yyjson_locate_pos() function to locate the line and column number for error position: #166
  • +
+

+Changed

+
    +
  • Improve error messages for JSON reader: #168
  • +
+

+Fixed

+
    +
  • Fix YYJSON_READ_NUMBER_AS_RAW not overriding YYJSON_READ_BIGNUM_AS_RAW as per documentation: #170
  • +
+

+0.9.0 (2024-04-08)

+

+Added

+
    +
  • Add YYJSON_WRITE_NEWLINE_AT_END flag for JSON writer: #147
  • +
+

+Changed

+
    +
  • Add auto-type conversion (uint<->sint) to yyjson_ptr_get_uint/sint(): #152
  • +
+

+Fixed

+
    +
  • Fix incorrect output in environments lacking native bool type support: #161
  • +
+

+0.8.0 (2023-09-13)

+

+Added

+
    +
  • Add YYJSON_SUBTYPE_NOESC subtype to mark strings that do not need to be escaped.
  • +
  • Add YYJSON_DISABLE_UTF8_VALIDATION flag to allow disable UTF-8 validation at compile-time.
  • +
  • Add dynamic allocator API: yyjson_alc_dyn_new(), yyjson_alc_dyn_free().
  • +
  • Add the missing yyjson_mut_obj_add_arr/obj() API: #140
  • +
+

+Changed

+
    +
  • Improve the write performance of strings with YYJSON_SUBTYPE_NOESC.
  • +
+

+Fixed

+
    +
  • Fix clang-16 valgrind fail: #134
  • +
  • Fix compile break when both FAST_FP and READER are disabled
  • +
+

+0.7.0 (2023-05-25)

+

+Added

+
    +
  • Add YYJSON_WRITE_PRETTY_TWO_SPACES option to allow 2 spaces instead of 4 spaces when writing pretty JSON: #99
  • +
  • Add YYJSON_READ_BIGNUM_AS_RAW option to read big numbers as raw strings: #124
  • +
  • Add yyjson_get_num() function to convert and return any number value as double: #108
  • +
  • Add support for Loongarch: #112
  • +
  • Add functions to get type-specific values specified by JSON Pointer: #116
  • +
  • Add functions to read/write JSON with file pointer FILE *: #122
  • +
  • Add functions to support modifying memory pool size of yyjson_mut_doc.
  • +
  • Add convenience functions iter_with() for creating iterator.
  • +
  • Add functions to modify JSON using JSON Pointer, such as ptr_set() and ptr_remove().
  • +
  • Add support for JSON Patch (RFC 6902).
  • +
+

+Changed

+
    +
  • BREAKING CHANGE: Change the allocator's realloc function signature, add old_size parameter for custom allocator: #100
  • +
  • BREAKING CHANGE: Change yyjson_read_number() function, add alc parameter.
  • +
  • DEPRECATED: Deprecate get_pointer() functions, rename to ptr_get().
  • +
  • Improve performance of yyjson_mut_write() function.
  • +
+

+Fixed

+
    +
  • Fix inaccurate error code for truncated JSON: #103
  • +
+

+0.6.0 (2022-12-12)

+

+Added

+ +

+Fixed

+
    +
  • Fix quite NaN on MIPS and HPPA arch.
  • +
  • Fixed compile error before GCC 4.5, which doesn't support empty optional extended asm label.
  • +
  • When the built-in floating point conversion is disabled, the sprintf() output for floating point numbers is missing a decimal point, for example 123 should be 123.0.
  • +
+

+0.5.1 (2022-06-17)

+

+Fixed

+
    +
  • Fix run-time error when compiling as cpp and 32-bit (g++-5 -m32 -fPIC) #85
  • +
  • Fix incurrect output number format, remove unnecessary digits (e.g. 2.0e34 -> 2e34).
  • +
+

+0.5.0 (2022-05-25)

+

+Added

+ +

+Changed

+
    +
  • Change yyjson_mut_obj_remove() return type from bool to yyjson_mut_val *.
  • +
  • Rewrite string serialization function, validate unicode encoding by default.
  • +
  • Rewrite the JSON Pointer implementation, remove internal malloc() calls.
  • +
+

+Fixed

+
    +
  • Make the code work correctly with setlocale() function and -ffast-math flag: #54
  • +
  • Fix negative infinity literals read error: #64
  • +
  • Fix non null-terminated string write error.
  • +
  • Fix incorrect behavior of YYJSON_DISABLE_NON_STANDARD flag: #80
  • +
+

+0.4.0 (2021-12-12)

+

+Added

+ +

+Changed

+
    +
  • Replace YYJSON_DISABLE_COMMENT_READER and YYJSON_DISABLE_INF_AND_NAN_READER with YYJSON_DISABLE_NON_STANDARD compile-time flag.
  • +
  • Replace YYJSON_DISABLE_FP_READER and YYJSON_DISABLE_FP_WRITER with YYJSON_DISABLE_FAST_FP_CONV compile-time flag.
  • +
+

+Fixed

+
    +
  • Fix compiler warning with -Wconversion
  • +
  • Fix compiler error for GCC 4.4 (#53) and MSVC 6.0 (#55)
  • +
+

+0.3.0 (2021-05-25)

+

+Added

+
    +
  • Add JSON Pointer support.
  • +
  • Add CMake install target.
  • +
+

+Changed

+
    +
  • Improve performance for some architectures that don't support unaligned memory access.
  • +
+

+Fixed

+
    +
  • Fix some compiler warnings for GCC and Clang.
  • +
  • Fix MSVC build error on UWP (uninitialized local variable).
  • +
  • Fix stream file reading error on some platforms.
  • +
+

+0.2.0 (2020-12-12)

+

+Added

+
    +
  • Add swift package manager support.
  • +
+

+Changed

+
    +
  • Improve JSON reader performance for gcc.
  • +
  • Improve double number reader performance with a fast path.
  • +
  • Rewrite double number writer with Schubfach algorithm: #4.
  • +
  • Strict UTF-8 validation for JSON reader.
  • +
+

+Removed

+
    +
  • Remove YYJSON_READ_FASTFP compile-time flag.
  • +
+

+Fixed

+
    +
  • Fix a compile error for old version gcc on linux: #7.
  • +
+

+0.1.0 (2020-10-26)

+

+Added

+
    +
  • Initial release.
  • +
  • Add the basic JSON reader and writer (RFC 8259).
  • +
  • Add CMake support.
  • +
  • Add GitHub CI workflow.
  • +
  • Add test code and test data.
  • +
  • Add sanitizer and valgrind memory checker.
  • +
  • Add API and DataStructure documentation.
  • +
+
+
+
+ + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/menu.js b/lib/yyjson-0.12.0/doc/doxygen/html/menu.js new file mode 100644 index 00000000000..0fd1e990132 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/menu.js @@ -0,0 +1,134 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search,treeview) { + function makeTree(data,relPath) { + let result=''; + if ('children' in data) { + result+='
    '; + for (let i in data.children) { + let url; + const link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + let searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
'+ + '
'+ + '
 '+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBoxHtml='
'+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + const $mainMenuState = $('#main-menu-state'); + let prevWidth = 0; + if ($mainMenuState.length) { + const initResizableIfExists = function() { + if (typeof initResizable==='function') initResizable(treeview); + } + // animate mobile menu + $mainMenuState.change(function() { + const $menu = $('#main-menu'); + let options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = () => $menu.css('display', 'block'); + $menu.hide().slideDown(options); + } else { + options['complete'] = () => $menu.css('display', 'none'); + $menu.show().slideUp(options); + } + }); + // set default menu visibility + const resetState = function() { + const $menu = $('#main-menu'); + const newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/menudata.js b/lib/yyjson-0.12.0/doc/doxygen/html/menudata.js new file mode 100644 index 00000000000..0897eb9736e --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/menudata.js @@ -0,0 +1,75 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"_",url:"globals.html#index__5F"}, +{text:"y",url:"globals_y.html#index_y"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"y",url:"globals_func.html#index_y"}]}, +{text:"Variables",url:"globals_vars.html",children:[ +{text:"y",url:"globals_vars.html#index_y"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Macros",url:"globals_defs.html",children:[ +{text:"_",url:"globals_defs.html#index__5F"}, +{text:"y",url:"globals_defs.html#index_y"}]}]}, +{text:"Data Structures",url:"annotated.html",children:[ +{text:"Data Structures",url:"annotated.html"}, +{text:"Data Structure Index",url:"classes.html"}, +{text:"Data Fields",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"c",url:"functions.html#index_c"}, +{text:"d",url:"functions.html#index_d"}, +{text:"f",url:"functions.html#index_f"}, +{text:"i",url:"functions.html#index_i"}, +{text:"m",url:"functions.html#index_m"}, +{text:"n",url:"functions.html#index_n"}, +{text:"o",url:"functions.html#index_o"}, +{text:"p",url:"functions.html#index_p"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"t",url:"functions.html#index_t"}, +{text:"u",url:"functions.html#index_u"}, +{text:"v",url:"functions.html#index_v"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"a",url:"functions_vars.html#index_a"}, +{text:"c",url:"functions_vars.html#index_c"}, +{text:"d",url:"functions_vars.html#index_d"}, +{text:"f",url:"functions_vars.html#index_f"}, +{text:"i",url:"functions_vars.html#index_i"}, +{text:"m",url:"functions_vars.html#index_m"}, +{text:"n",url:"functions_vars.html#index_n"}, +{text:"o",url:"functions_vars.html#index_o"}, +{text:"p",url:"functions_vars.html#index_p"}, +{text:"r",url:"functions_vars.html#index_r"}, +{text:"s",url:"functions_vars.html#index_s"}, +{text:"t",url:"functions_vars.html#index_t"}, +{text:"u",url:"functions_vars.html#index_u"}, +{text:"v",url:"functions_vars.html#index_v"}]}]}]}]}]} diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/minus.svg b/lib/yyjson-0.12.0/doc/doxygen/html/minus.svg new file mode 100644 index 00000000000..f70d0c1a183 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/minusd.svg b/lib/yyjson-0.12.0/doc/doxygen/html/minusd.svg new file mode 100644 index 00000000000..5f8e879628d --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/nav_f.png b/lib/yyjson-0.12.0/doc/doxygen/html/nav_f.png new file mode 100644 index 00000000000..72a58a529ed Binary files /dev/null and b/lib/yyjson-0.12.0/doc/doxygen/html/nav_f.png differ diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/nav_fd.png b/lib/yyjson-0.12.0/doc/doxygen/html/nav_fd.png new file mode 100644 index 00000000000..032fbdd4c54 Binary files /dev/null and b/lib/yyjson-0.12.0/doc/doxygen/html/nav_fd.png differ diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/nav_g.png b/lib/yyjson-0.12.0/doc/doxygen/html/nav_g.png new file mode 100644 index 00000000000..2093a237a94 Binary files /dev/null and b/lib/yyjson-0.12.0/doc/doxygen/html/nav_g.png differ diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/nav_h.png b/lib/yyjson-0.12.0/doc/doxygen/html/nav_h.png new file mode 100644 index 00000000000..33389b101d9 Binary files /dev/null and b/lib/yyjson-0.12.0/doc/doxygen/html/nav_h.png differ diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/nav_hd.png b/lib/yyjson-0.12.0/doc/doxygen/html/nav_hd.png new file mode 100644 index 00000000000..de80f18ad64 Binary files /dev/null and b/lib/yyjson-0.12.0/doc/doxygen/html/nav_hd.png differ diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/navtree.css b/lib/yyjson-0.12.0/doc/doxygen/html/navtree.css new file mode 100644 index 00000000000..6b1e5e46b6d --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/navtree.css @@ -0,0 +1,149 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: white; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree .selected .arrow { + color: #9CAFD4; + text-shadow: none; +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:white; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: $width; + overflow : hidden; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:url('splitbar.png'); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-repeat:repeat-x; + background-color: #F9FAFC; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/navtree.js b/lib/yyjson-0.12.0/doc/doxygen/html/navtree.js new file mode 100644 index 00000000000..2d4fa84a55d --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/navtree.js @@ -0,0 +1,483 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function initNavTree(toroot,relpath) { + let navTreeSubIndices = []; + const ARROW_DOWN = '▼'; + const ARROW_RIGHT = '►'; + const NAVPATH_COOKIE_NAME = ''+'navpath'; + + const getData = function(varName) { + const i = varName.lastIndexOf('/'); + const n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/-/g,'_')); + } + + const stripPath = function(uri) { + return uri.substring(uri.lastIndexOf('/')+1); + } + + const stripPath2 = function(uri) { + const i = uri.lastIndexOf('/'); + const s = uri.substring(i+1); + const m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; + } + + const hashValue = function() { + return $(location).attr('hash').substring(1).replace(/[^\w-]/g,''); + } + + const hashUrl = function() { + return '#'+hashValue(); + } + + const pathName = function() { + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;()]/g, ''); + } + + const storeLink = function(link) { + if (!$("#nav-sync").hasClass('sync')) { + Cookie.writeSetting(NAVPATH_COOKIE_NAME,link,0); + } + } + + const deleteLink = function() { + Cookie.eraseSetting(NAVPATH_COOKIE_NAME); + } + + const cachedLink = function() { + return Cookie.readSetting(NAVPATH_COOKIE_NAME,''); + } + + const getScript = function(scriptName,func) { + const head = document.getElementsByTagName("head")[0]; + const script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); + } + + const createIndent = function(o,domNode,node) { + let level=-1; + let n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + const imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=ARROW_RIGHT; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=ARROW_RIGHT; + node.expanded = false; + } else { + expandNode(o, node, false, true); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + let span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } + } + + let animationInProgress = false; + + const gotoAnchor = function(anchor,aname) { + let pos, docContent = $('#doc-content'); + let ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || ancParent.hasClass('fieldtype') || + ancParent.is(':header')) { + pos = ancParent.offset().top; + } else if (anchor.position()) { + pos = anchor.offset().top; + } + if (pos) { + const dcOffset = docContent.offset().top; + const dcHeight = docContent.height(); + const dcScrHeight = docContent[0].scrollHeight + const dcScrTop = docContent.scrollTop(); + let dist = Math.abs(Math.min(pos-dcOffset,dcScrHeight-dcHeight-dcScrTop)); + animationInProgress = true; + docContent.animate({ + scrollTop: pos + dcScrTop - dcOffset + },Math.max(50,Math.min(500,dist)),function() { + animationInProgress=false; + if (anchor.parent().attr('class')=='memItemLeft') { + let rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname') { + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype') { + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + }); + } + } + + const newNode = function(o, po, text, link, childrenData, lastNode) { + const node = { + children : [], + childrenData : childrenData, + depth : po.depth + 1, + relpath : po.relpath, + isLast : lastNode, + li : document.createElement("li"), + parentNode : po, + itemDiv : document.createElement("div"), + labelSpan : document.createElement("span"), + label : document.createTextNode(text), + expanded : false, + childrenUL : null, + getChildrenUL : function() { + if (!this.childrenUL) { + this.childrenUL = document.createElement("ul"); + this.childrenUL.className = "children_ul"; + this.childrenUL.style.display = "none"; + this.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }, + }; + + node.itemDiv.className = "item"; + node.labelSpan.className = "label"; + createIndent(o,node.itemDiv,node); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + const a = document.createElement("a"); + node.labelSpan.appendChild(a); + po.getChildrenUL().appendChild(node.li); + a.appendChild(node.label); + if (link) { + let url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + const aname = '#'+link.split('#')[1]; + const srcPage = stripPath(pathName()); + const targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : aname; + a.onclick = function() { + storeLink(link); + aPPar = $(a).parent().parent(); + if (!aPPar.hasClass('selected')) { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + aPPar.addClass('selected'); + aPPar.attr('id','selected'); + } + const anchor = $(aname); + gotoAnchor(anchor,aname); + }; + } else { + a.href = url; + a.onclick = () => storeLink(link); + } + } else if (childrenData != null) { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + return node; + } + + const showRoot = function() { + const headerHeight = $("#top").height(); + const footerHeight = $("#nav-path").height(); + const windowHeight = $(window).height() - headerHeight - footerHeight; + (function() { // retry until we can scroll to the selected item + try { + const navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); + } + + const expandNode = function(o, node, imm, setFocus) { + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + const varName = node.childrenData; + getScript(node.relpath+varName,function() { + node.childrenData = getData(varName); + expandNode(o, node, imm, setFocus); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = ARROW_DOWN; + node.expanded = true; + if (setFocus) { + $(node.expandToggle).focus(); + } + } + } + } + + const glowEffect = function(n,duration) { + n.addClass('glow').delay(duration).queue(function(next) { + $(this).removeClass('glow');next(); + }); + } + + const highlightAnchor = function() { + const aname = hashUrl(); + const anchor = $(aname); + gotoAnchor(anchor,aname); + } + + const selectAndHighlight = function(hash,n) { + let a; + if (hash) { + const link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + let topOffset=5; + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); + } + + const showNode = function(o, node, index, hash) { + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + const varName = node.childrenData; + getScript(node.relpath+varName,function() { + node.childrenData = getData(varName); + showNode(o,node,index,hash); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = ARROW_DOWN; + node.expanded = true; + const n = node.children[o.breadcrumbs[index]]; + if (index+11 ? '#'+parts[1].replace(/[^\w-]/g,'') : ''; + } + if (hash.match(/^#l\d+$/)) { + const anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + const url=root+hash; + let i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function() { + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + }); + } + } + + const showSyncOff = function(n,relpath) { + n.html(''); + } + + const showSyncOn = function(n,relpath) { + n.html(''); + } + + const o = { + toroot : toroot, + node : { + childrenData : NAVTREE, + children : [], + childrenUL : document.createElement("ul"), + getChildrenUL : function() { return this.childrenUL }, + li : document.getElementById("nav-tree-contents"), + depth : 0, + relpath : relpath, + expanded : false, + isLast : true, + plus_img : document.createElement("span"), + }, + }; + o.node.li.appendChild(o.node.childrenUL); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = ARROW_RIGHT; + + const navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + + navSync.click(() => { + const navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } + }); + + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + + $(window).bind('hashchange', () => { + if (!animationInProgress) { + if (window.location.hash && window.location.hash.length>1) { + let a; + if ($(location).attr('hash')) { + const clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/ + + + + + + + +yyjson: Related Pages + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    yyjson 0.12.0 +
    +
    A high performance C JSON library.
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    +
    +
    + + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/perf_reader_a14.svg b/lib/yyjson-0.12.0/doc/doxygen/html/perf_reader_a14.svg new file mode 100644 index 00000000000..c01f33c47ff --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/perf_reader_a14.svg @@ -0,0 +1 @@ +Created with Highcharts 8.2.0GB/sJSON readergigabytes per second (larger is better)yyjson_fastyyjsonsimdjsonrapidjsoncanadacitm_catalogfgogithub_eventsgsoc-2018lottieotfccpoettwittertwitterescaped0246 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/perf_reader_ec2.svg b/lib/yyjson-0.12.0/doc/doxygen/html/perf_reader_ec2.svg new file mode 100644 index 00000000000..81d14bfecf9 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/perf_reader_ec2.svg @@ -0,0 +1 @@ +Created with Highcharts 8.2.0GB/sJSON readergigabytes per second (larger is better)yyjson_fastyyjsonsimdjsonrapidjsoncanadacitm_catalogfgogithub_eventsgsoc-2018lottieotfccpoettwittertwitterescaped0123 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/plus.svg b/lib/yyjson-0.12.0/doc/doxygen/html/plus.svg new file mode 100644 index 00000000000..07520165535 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/plusd.svg b/lib/yyjson-0.12.0/doc/doxygen/html/plusd.svg new file mode 100644 index 00000000000..0c65bfe946d --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/resize.js b/lib/yyjson-0.12.0/doc/doxygen/html/resize.js new file mode 100644 index 00000000000..178d03bcb80 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/resize.js @@ -0,0 +1,147 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function initResizable(treeview) { + let sidenav,navtree,content,header,footer,barWidth=6; + const RESIZE_COOKIE_NAME = ''+'width'; + + function resizeWidth() { + const sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(sidenavWidth)+"px"}); + } + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + function restoreWidth(navWidth) { + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + } + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight(treeview) { + const headerHeight = header.outerHeight(); + const windowHeight = $(window).height(); + let contentHeight; + if (treeview) + { + const footerHeight = footer.outerHeight(); + let navtreeHeight,sideNavHeight; + if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ + contentHeight = windowHeight - headerHeight - footerHeight; + navtreeHeight = contentHeight; + sideNavHeight = contentHeight; + } else if (page_layout==1) { /* DISABLE_INDEX=YES */ + contentHeight = windowHeight - footerHeight; + navtreeHeight = windowHeight - headerHeight; + sideNavHeight = windowHeight; + } + navtree.css({height:navtreeHeight + "px"}); + sidenav.css({height:sideNavHeight + "px"}); + } + else + { + contentHeight = windowHeight - headerHeight; + } + content.css({height:contentHeight + "px"}); + if (location.hash.slice(1)) { + (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); + } + } + + function collapseExpand() { + let newWidth; + if (sidenav.width()>0) { + newWidth=0; + } else { + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + newWidth = (width>250 && width<$(window).width()) ? width : 250; + } + restoreWidth(newWidth); + const sidenavWidth = $(sidenav).outerWidth(); + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + header = $("#top"); + content = $("#doc-content"); + footer = $("#nav-path"); + sidenav = $("#side-nav"); + if (!treeview) { +// title = $("#titlearea"); +// titleH = $(title).height(); +// let animating = false; +// content.on("scroll", function() { +// slideOpts = { duration: 200, +// step: function() { +// contentHeight = $(window).height() - header.outerHeight(); +// content.css({ height : contentHeight + "px" }); +// }, +// done: function() { animating=false; } +// }; +// if (content.scrollTop()>titleH && title.css('display')!='none' && !animating) { +// title.slideUp(slideOpts); +// animating=true; +// } else if (content.scrollTop()<=titleH && title.css('display')=='none' && !animating) { +// title.slideDown(slideOpts); +// animating=true; +// } +// }); + } else { + navtree = $("#nav-tree"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + } + $(window).resize(function() { resizeHeight(treeview); }); + if (treeview) + { + const device = navigator.userAgent.toLowerCase(); + const touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + if (width) { restoreWidth(width); } else { resizeWidth(); } + } + resizeHeight(treeview); + const url = location.href; + const i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + const _preventDefault = function(evt) { evt.preventDefault(); }; + if (treeview) + { + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + // workaround for firefox + $("body").css({overflow: "hidden"}); + } + $(window).on('load',function() { resizeHeight(treeview); }); +} +/* @license-end */ diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_0.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_0.js new file mode 100644 index 00000000000..d2fe8952401 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_0.js @@ -0,0 +1,41 @@ +var searchData= +[ + ['0_0',['TODO for v1.0',['../index.html#todo-for-v10',1,'']]], + ['0_201_200_202020_2010_2026_1',['0.1.0 (2020-10-26)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md010-2020-10-26',1,'']]], + ['0_2010_200_202024_2007_2009_2',['0.10.0 (2024-07-09)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0100-2024-07-09',1,'']]], + ['0_2011_200_202025_2005_2005_3',['0.11.0 (2025-05-05)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0110-2025-05-05',1,'']]], + ['0_2011_201_202025_2005_2014_4',['0.11.1 (2025-05-14)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0111-2025-05-14',1,'']]], + ['0_2012_209_202025_2008_2018_5',['0.12.0 (2025-08-18)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0129-2025-08-18',1,'']]], + ['0_202_200_202020_2012_2012_6',['0.2.0 (2020-12-12)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md020-2020-12-12',1,'']]], + ['0_202020_2010_2026_7',['0.1.0 (2020-10-26)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md010-2020-10-26',1,'']]], + ['0_202020_2012_2012_8',['0.2.0 (2020-12-12)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md020-2020-12-12',1,'']]], + ['0_202021_2005_2025_9',['0.3.0 (2021-05-25)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md030-2021-05-25',1,'']]], + ['0_202021_2012_2012_10',['0.4.0 (2021-12-12)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md040-2021-12-12',1,'']]], + ['0_202022_2005_2025_11',['0.5.0 (2022-05-25)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md050-2022-05-25',1,'']]], + ['0_202022_2012_2012_12',['0.6.0 (2022-12-12)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md060-2022-12-12',1,'']]], + ['0_202023_2005_2025_13',['0.7.0 (2023-05-25)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md070-2023-05-25',1,'']]], + ['0_202023_2009_2013_14',['0.8.0 (2023-09-13)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md080-2023-09-13',1,'']]], + ['0_202024_2004_2008_15',['0.9.0 (2024-04-08)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md090-2024-04-08',1,'']]], + ['0_202024_2007_2009_16',['0.10.0 (2024-07-09)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0100-2024-07-09',1,'']]], + ['0_202025_2005_2005_17',['0.11.0 (2025-05-05)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0110-2025-05-05',1,'']]], + ['0_203_200_202021_2005_2025_18',['0.3.0 (2021-05-25)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md030-2021-05-25',1,'']]], + ['0_204_200_202021_2012_2012_19',['0.4.0 (2021-12-12)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md040-2021-12-12',1,'']]], + ['0_205_200_202022_2005_2025_20',['0.5.0 (2022-05-25)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md050-2022-05-25',1,'']]], + ['0_205_201_202022_2006_2017_21',['0.5.1 (2022-06-17)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md051-2022-06-17',1,'']]], + ['0_206_200_202022_2012_2012_22',['0.6.0 (2022-12-12)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md060-2022-12-12',1,'']]], + ['0_207_200_202023_2005_2025_23',['0.7.0 (2023-05-25)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md070-2023-05-25',1,'']]], + ['0_208_200_202023_2009_2013_24',['0.8.0 (2023-09-13)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md080-2023-09-13',1,'']]], + ['0_209_200_202024_2004_2008_25',['0.9.0 (2024-04-08)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md090-2024-04-08',1,'']]], + ['0_20strong_26',['0 strong',['../api.html#yyjson_read_noflag--0',1,'<strong>YYJSON_READ_NOFLAG = 0</strong>'],['../api.html#yyjson_write_noflag--0',1,'<strong>YYJSON_WRITE_NOFLAG = 0</strong>']]], + ['04_2008_27',['0.9.0 (2024-04-08)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md090-2024-04-08',1,'']]], + ['05_28',['0.11.0 (2025-05-05)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0110-2025-05-05',1,'']]], + ['05_2005_29',['0.11.0 (2025-05-05)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0110-2025-05-05',1,'']]], + ['05_2014_30',['0.11.1 (2025-05-14)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0111-2025-05-14',1,'']]], + ['05_2025_31',['05 25',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md030-2021-05-25',1,'0.3.0 (2021-05-25)'],['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md050-2022-05-25',1,'0.5.0 (2022-05-25)'],['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md070-2023-05-25',1,'0.7.0 (2023-05-25)']]], + ['06_2017_32',['0.5.1 (2022-06-17)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md051-2022-06-17',1,'']]], + ['07_2009_33',['0.10.0 (2024-07-09)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0100-2024-07-09',1,'']]], + ['08_34',['0.9.0 (2024-04-08)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md090-2024-04-08',1,'']]], + ['08_2018_35',['0.12.0 (2025-08-18)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0129-2025-08-18',1,'']]], + ['09_36',['0.10.0 (2024-07-09)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0100-2024-07-09',1,'']]], + ['09_2013_37',['0.8.0 (2023-09-13)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md080-2023-09-13',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_1.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_1.js new file mode 100644 index 00000000000..22dcf335be0 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_1.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['1_200_202020_2010_2026_0',['0.1.0 (2020-10-26)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md010-2020-10-26',1,'']]], + ['1_202022_2006_2017_1',['0.5.1 (2022-06-17)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md051-2022-06-17',1,'']]], + ['1_202025_2005_2014_2',['0.11.1 (2025-05-14)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0111-2025-05-14',1,'']]], + ['10_200_202024_2007_2009_3',['0.10.0 (2024-07-09)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0100-2024-07-09',1,'']]], + ['10_2026_4',['0.1.0 (2020-10-26)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md010-2020-10-26',1,'']]], + ['11_200_202025_2005_2005_5',['0.11.0 (2025-05-05)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0110-2025-05-05',1,'']]], + ['11_201_202025_2005_2014_6',['0.11.1 (2025-05-14)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0111-2025-05-14',1,'']]], + ['12_7',['12',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md020-2020-12-12',1,'0.2.0 (2020-12-12)'],['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md040-2021-12-12',1,'0.4.0 (2021-12-12)'],['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md060-2022-12-12',1,'0.6.0 (2022-12-12)'],['../index.html#iphone-apple-a14-clang-12',1,'iPhone (Apple A14, clang 12)']]], + ['12_2012_8',['12 12',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md020-2020-12-12',1,'0.2.0 (2020-12-12)'],['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md040-2021-12-12',1,'0.4.0 (2021-12-12)'],['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md060-2022-12-12',1,'0.6.0 (2022-12-12)']]], + ['12_209_202025_2008_2018_9',['0.12.0 (2025-08-18)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0129-2025-08-18',1,'']]], + ['13_10',['0.8.0 (2023-09-13)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md080-2023-09-13',1,'']]], + ['14_11',['0.11.1 (2025-05-14)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0111-2025-05-14',1,'']]], + ['17_12',['0.5.1 (2022-06-17)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md051-2022-06-17',1,'']]], + ['18_13',['0.12.0 (2025-08-18)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0129-2025-08-18',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_10.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_10.js new file mode 100644 index 00000000000..7daf0751a5e --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_10.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['features_0',['Features',['../index.html#features',1,'']]], + ['file_1',['file',['../api.html#read-json-from-file',1,'Read JSON from file'],['../api.html#write-json-to-file',1,'Write JSON to file']]], + ['file_20pointer_2',['file pointer',['../api.html#read-json-from-file-pointer',1,'Read JSON from file pointer'],['../api.html#write-json-to-file-pointer',1,'Write JSON to file pointer']]], + ['file_20with_20options_3',['file with options',['../index.html#read-json-file-with-options',1,'Read JSON file with options'],['../index.html#write-json-file-with-options',1,'Write JSON file with options']]], + ['fixed_4',['Fixed',['../md__c_h_a_n_g_e_l_o_g.html#fixed',1,'Fixed'],['../md__c_h_a_n_g_e_l_o_g.html#fixed-1',1,'Fixed'],['../md__c_h_a_n_g_e_l_o_g.html#fixed-2',1,'Fixed'],['../md__c_h_a_n_g_e_l_o_g.html#fixed-3',1,'Fixed'],['../md__c_h_a_n_g_e_l_o_g.html#fixed-4',1,'Fixed'],['../md__c_h_a_n_g_e_l_o_g.html#fixed-5',1,'Fixed'],['../md__c_h_a_n_g_e_l_o_g.html#fixed-6',1,'Fixed'],['../md__c_h_a_n_g_e_l_o_g.html#fixed-7',1,'Fixed'],['../md__c_h_a_n_g_e_l_o_g.html#fixed-8',1,'Fixed'],['../md__c_h_a_n_g_e_l_o_g.html#fixed-9',1,'Fixed'],['../md__c_h_a_n_g_e_l_o_g.html#fixed-10',1,'Fixed'],['../md__c_h_a_n_g_e_l_o_g.html#fixed-11',1,'Fixed']]], + ['flag_5',['flag',['../api.html#reader-flag',1,'Reader flag'],['../api.html#writer-flag',1,'Writer flag']]], + ['for_20better_20performance_20yyjson_20prefers_3a_6',['For better performance, yyjson prefers:',['../index.html#for-better-performance-yyjson-prefers',1,'']]], + ['for_20immutable_20mutable_20data_7',['API for immutable/mutable data',['../api.html#api-for-immutablemutable-data',1,'']]], + ['for_20incremental_20reading_8',['for incremental reading',['../api.html#create-the-state-for-incremental-reading',1,'Create the state for incremental reading'],['../api.html#free-the-state-used-for-incremental-reading',1,'Free the state used for incremental reading']]], + ['for_20multiple_20json_9',['Single allocator for multiple JSON',['../api.html#single-allocator-for-multiple-json',1,'']]], + ['for_20string_10',['API for string',['../api.html#api-for-string',1,'']]], + ['for_20v1_200_11',['TODO for v1.0',['../index.html#todo-for-v10',1,'']]], + ['free_12',['free',['../yyjson_8h.html#a2c770ff93f0f331bd60076eecd93661e',1,'yyjson_alc']]], + ['free_20the_20state_20used_20for_20incremental_20reading_13',['Free the state used for incremental reading',['../api.html#free-the-state-used-for-incremental-reading',1,'']]], + ['from_20file_14',['Read JSON from file',['../api.html#read-json-from-file',1,'']]], + ['from_20file_20pointer_15',['Read JSON from file pointer',['../api.html#read-json-from-file-pointer',1,'']]], + ['from_20string_16',['Read JSON from string',['../api.html#read-json-from-string',1,'']]], + ['function_17',['Number conversion function',['../api.html#number-conversion-function',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_11.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_11.js new file mode 100644 index 00000000000..0caef15c996 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_11.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['gcc_209_203_0',['AWS EC2 (AMD EPYC 7R32, gcc 9.3)',['../index.html#aws-ec2-amd-epyc-7r32-gcc-93',1,'']]], + ['generate_20documentation_1',['Use CMake to generate documentation',['../building-and-testing.html#use-cmake-to-generate-documentation',1,'']]], + ['generate_20project_2',['Use CMake to generate project',['../building-and-testing.html#use-cmake-to-generate-project',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_12.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_12.js new file mode 100644 index 00000000000..83b87aa2066 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_12.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['handling_0',['Reader error handling',['../api.html#reader-error-handling',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_13.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_13.js new file mode 100644 index 00000000000..e11479fb38f --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_13.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['idx_0',['idx',['../yyjson_8h.html#a1dbfcf575677cf45d7b1e1bef3de9c91',1,'yyjson_arr_iter::idx'],['../yyjson_8h.html#a6c2526c5ad89f0addaae26f356ecf609',1,'yyjson_obj_iter::idx'],['../yyjson_8h.html#a2ed1833f97594ca751e4d079d1620e7a',1,'yyjson_mut_arr_iter::idx'],['../yyjson_8h.html#ad58bddcf6dd41d193d37d2a16df159d1',1,'yyjson_mut_obj_iter::idx'],['../yyjson_8h.html#ac1584d63763ce24855df7aee5c9c5782',1,'yyjson_patch_err::idx']]], + ['immutable_20document_1',['Immutable Document',['../data-structures.html#immutable-document',1,'']]], + ['immutable_20mutable_20data_2',['API for immutable/mutable data',['../api.html#api-for-immutablemutable-data',1,'']]], + ['immutable_20value_3',['Immutable Value',['../data-structures.html#immutable-value',1,'']]], + ['incremental_20read_4',['Perform incremental read',['../api.html#perform-incremental-read',1,'']]], + ['incremental_20reading_5',['incremental reading',['../api.html#create-the-state-for-incremental-reading',1,'Create the state for incremental reading'],['../api.html#free-the-state-used-for-incremental-reading',1,'Free the state used for incremental reading']]], + ['incrementally_6',['Read JSON incrementally',['../api.html#read-json-incrementally',1,'']]], + ['independence_7',['Locale Independence',['../api.html#locale-independence',1,'']]], + ['introduction_8',['Introduction',['../index.html',1,'']]], + ['iphone_20apple_20a14_20clang_2012_9',['iPhone (Apple A14, clang 12)',['../index.html#iphone-apple-a14-clang-12',1,'']]], + ['iterator_10',['Iterator',['../api.html#json-array-iterator',1,'JSON Array Iterator'],['../api.html#json-object-iterator',1,'JSON Object Iterator']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_14.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_14.js new file mode 100644 index 00000000000..793e8828cb4 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_14.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['json_0',['JSON',['../api.html#reading-json',1,'Reading JSON'],['../api.html#single-allocator-for-multiple-json',1,'Single allocator for multiple JSON'],['../api.html#writing-json',1,'Writing JSON']]], + ['json_20array_1',['JSON Array',['../api.html#json-array',1,'']]], + ['json_20array_20creation_2',['JSON Array Creation',['../api.html#json-array-creation',1,'']]], + ['json_20array_20iterator_3',['JSON Array Iterator',['../api.html#json-array-iterator',1,'']]], + ['json_20array_20modification_4',['JSON Array Modification',['../api.html#json-array-modification',1,'']]], + ['json_20document_5',['JSON Document',['../api.html#accessing-json-document',1,'Accessing JSON Document'],['../api.html#creating-json-document',1,'Creating JSON Document'],['../api.html#json-document',1,'JSON Document']]], + ['json_20file_20with_20options_6',['JSON file with options',['../index.html#read-json-file-with-options',1,'Read JSON file with options'],['../index.html#write-json-file-with-options',1,'Write JSON file with options']]], + ['json_20from_20file_7',['Read JSON from file',['../api.html#read-json-from-file',1,'']]], + ['json_20from_20file_20pointer_8',['Read JSON from file pointer',['../api.html#read-json-from-file-pointer',1,'']]], + ['json_20from_20string_9',['Read JSON from string',['../api.html#read-json-from-string',1,'']]], + ['json_20incrementally_10',['Read JSON incrementally',['../api.html#read-json-incrementally',1,'']]], + ['json_20merge_20patch_11',['JSON Merge Patch',['../api.html#json-merge-patch',1,'']]], + ['json_20object_12',['JSON Object',['../api.html#json-object',1,'']]], + ['json_20object_20creation_13',['JSON Object Creation',['../api.html#json-object-creation',1,'']]], + ['json_20object_20iterator_14',['JSON Object Iterator',['../api.html#json-object-iterator',1,'']]], + ['json_20object_20modification_15',['JSON Object Modification',['../api.html#json-object-modification',1,'']]], + ['json_20patch_16',['JSON Patch',['../api.html#json-patch',1,'']]], + ['json_20pointer_17',['JSON Pointer',['../api.html#json-pointer',1,'']]], + ['json_20pointer_20and_20patch_18',['JSON Pointer and Patch',['../api.html#json-pointer-and-patch',1,'']]], + ['json_20string_19',['JSON string',['../index.html#read-json-string',1,'Read JSON string'],['../index.html#write-json-string',1,'Write JSON string']]], + ['json_20to_20file_20',['Write JSON to file',['../api.html#write-json-to-file',1,'']]], + ['json_20to_20file_20pointer_21',['Write JSON to file pointer',['../api.html#write-json-to-file-pointer',1,'']]], + ['json_20to_20string_22',['Write JSON to string',['../api.html#write-json-to-string',1,'']]], + ['json_20value_23',['JSON Value',['../api.html#json-value',1,'']]], + ['json_20value_20creation_24',['JSON Value Creation',['../api.html#json-value-creation',1,'']]], + ['json_20with_20options_25',['JSON with options',['../api.html#read-json-with-options',1,'Read JSON with options'],['../api.html#write-json-with-options',1,'Write JSON with options']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_15.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_15.js new file mode 100644 index 00000000000..6f69fbf4445 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_15.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['library_0',['library',['../api.html#use-a-third-party-allocator-library',1,'Use a third-party allocator library'],['../building-and-testing.html#use-cmake-to-build-the-library',1,'Use CMake to build the library']]], + ['license_1',['License',['../index.html#license',1,'']]], + ['limitations_2',['Limitations',['../index.html#limitations',1,'']]], + ['list_3',['Deprecated List',['../deprecated.html',1,'']]], + ['locale_20independence_4',['Locale Independence',['../api.html#locale-independence',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_16.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_16.js new file mode 100644 index 00000000000..069c0b3c1c1 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_16.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['malloc_0',['malloc',['../yyjson_8h.html#a83133b6b92e0fec52ec3c62538f44311',1,'yyjson_alc']]], + ['management_1',['Memory Management',['../data-structures.html#memory-management',1,'']]], + ['manager_2',['Package manager',['../building-and-testing.html#package-manager',1,'']]], + ['max_3',['max',['../yyjson_8h.html#a4c9dc89d29725de644b1d9b801aa28ff',1,'yyjson_arr_iter::max'],['../yyjson_8h.html#a05ac3955547a4be055542f922564ded6',1,'yyjson_obj_iter::max'],['../yyjson_8h.html#a1d8217217a7138d40e01752d3181ab85',1,'yyjson_mut_arr_iter::max'],['../yyjson_8h.html#aaf5c505b42eeb64e7a0ac17e3d7d3847',1,'yyjson_mut_obj_iter::max']]], + ['memory_20allocator_4',['Memory Allocator',['../api.html#memory-allocator',1,'']]], + ['memory_20allocator_5',['Stack memory allocator',['../api.html#stack-memory-allocator',1,'']]], + ['memory_20management_6',['Memory Management',['../data-structures.html#memory-management',1,'']]], + ['memory_20usage_7',['Stack Memory Usage',['../api.html#stack-memory-usage',1,'']]], + ['merge_20patch_8',['JSON Merge Patch',['../api.html#json-merge-patch',1,'']]], + ['modification_9',['Modification',['../api.html#json-array-modification',1,'JSON Array Modification'],['../api.html#json-object-modification',1,'JSON Object Modification']]], + ['msg_10',['msg',['../yyjson_8h.html#a9044823fa7fb431019662e589d45707c',1,'yyjson_read_err::msg'],['../yyjson_8h.html#a3db87979e01ea1d86ce073b9e7218fe9',1,'yyjson_write_err::msg'],['../yyjson_8h.html#a4d811ed5e9271667460dc1dc491d3295',1,'yyjson_ptr_err::msg'],['../yyjson_8h.html#ae5741da19f51abd241bdce87a921ba4a',1,'yyjson_patch_err::msg']]], + ['multiple_20json_11',['Single allocator for multiple JSON',['../api.html#single-allocator-for-multiple-json',1,'']]], + ['mutable_20data_12',['API for immutable/mutable data',['../api.html#api-for-immutablemutable-data',1,'']]], + ['mutable_20document_13',['Mutable Document',['../api.html#mutable-document',1,'Mutable Document'],['../data-structures.html#mutable-document-1',1,'Mutable Document']]], + ['mutable_20value_14',['Mutable Value',['../data-structures.html#mutable-value',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_17.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_17.js new file mode 100644 index 00000000000..f8de919015c --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_17.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['next_0',['next',['../yyjson_8h.html#a172090776a18e45190c933fb3294c07c',1,'yyjson_mut_val']]], + ['nul_20character_1',['NUL Character',['../api.html#nul-character',1,'']]], + ['null_20check_2',['Null Check',['../api.html#null-check',1,'']]], + ['number_20conversion_20function_3',['Number conversion function',['../api.html#number-conversion-function',1,'']]], + ['number_20processing_4',['Number Processing',['../api.html#number-processing',1,'']]], + ['number_20reader_5',['Number reader',['../api.html#number-reader',1,'']]], + ['number_20writer_6',['Number writer',['../api.html#number-writer',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_18.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_18.js new file mode 100644 index 00000000000..93ea377a67a --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_18.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['obj_0',['obj',['../yyjson_8h.html#addf8b34eb1d89a54df0482acbd29872c',1,'yyjson_obj_iter::obj'],['../yyjson_8h.html#ab5169c5637fdfc27fe10b919b78b6468',1,'yyjson_mut_obj_iter::obj']]], + ['object_1',['JSON Object',['../api.html#json-object',1,'']]], + ['object_20creation_2',['JSON Object Creation',['../api.html#json-object-creation',1,'']]], + ['object_20iterator_3',['JSON Object Iterator',['../api.html#json-object-iterator',1,'']]], + ['object_20modification_4',['JSON Object Modification',['../api.html#json-object-modification',1,'']]], + ['old_5',['old',['../yyjson_8h.html#a4bd05d7a5f157f5178f97415c7ba08f7',1,'yyjson_ptr_ctx']]], + ['options_6',['Compile-time Options',['../building-and-testing.html#compile-time-options',1,'']]], + ['options_7',['options',['../index.html#read-json-file-with-options',1,'Read JSON file with options'],['../api.html#read-json-with-options',1,'Read JSON with options'],['../index.html#write-json-file-with-options',1,'Write JSON file with options'],['../api.html#write-json-with-options',1,'Write JSON with options']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_19.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_19.js new file mode 100644 index 00000000000..8064281c5bc --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_19.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['package_20manager_0',['Package manager',['../building-and-testing.html#package-manager',1,'']]], + ['packaging_20status_1',['Packaging status',['../index.html#packaging-status',1,'']]], + ['party_20allocator_20library_2',['Use a third-party allocator library',['../api.html#use-a-third-party-allocator-library',1,'']]], + ['patch_3',['Patch',['../api.html#json-merge-patch',1,'JSON Merge Patch'],['../api.html#json-patch',1,'JSON Patch'],['../api.html#json-pointer-and-patch',1,'JSON Pointer and Patch']]], + ['perform_20incremental_20read_4',['Perform incremental read',['../api.html#perform-incremental-read',1,'']]], + ['performance_5',['Performance',['../index.html#performance',1,'']]], + ['performance_20yyjson_20prefers_3a_6',['For better performance, yyjson prefers:',['../index.html#for-better-performance-yyjson-prefers',1,'']]], + ['pointer_7',['JSON Pointer',['../api.html#json-pointer',1,'']]], + ['pointer_8',['pointer',['../api.html#read-json-from-file-pointer',1,'Read JSON from file pointer'],['../api.html#write-json-to-file-pointer',1,'Write JSON to file pointer']]], + ['pointer_20and_20patch_9',['JSON Pointer and Patch',['../api.html#json-pointer-and-patch',1,'']]], + ['pos_10',['pos',['../yyjson_8h.html#a87eb200779eff088b93ea0a67ab3e300',1,'yyjson_read_err::pos'],['../yyjson_8h.html#a4b851ac068173fde6d305039762e33fd',1,'yyjson_ptr_err::pos']]], + ['pre_11',['pre',['../yyjson_8h.html#aa2481ee429a84f67e5f2200a4bbc6155',1,'yyjson_mut_arr_iter::pre'],['../yyjson_8h.html#a934aea39ecf26ad163ad5dcf45cb8e6f',1,'yyjson_mut_obj_iter::pre'],['../yyjson_8h.html#ac68fb5d2b48052c8ab3368d3ef6a6b81',1,'yyjson_ptr_ctx::pre']]], + ['prec_20strong_12',['<strong>YYJSON_WRITE_FP_TO_FIXED(prec)</strong>',['../api.html#yyjson_write_fp_to_fixedprec',1,'']]], + ['prefers_3a_13',['For better performance, yyjson prefers:',['../index.html#for-better-performance-yyjson-prefers',1,'']]], + ['prefix_14',['API prefix',['../api.html#api-prefix',1,'']]], + ['processing_15',['Processing',['../api.html#number-processing',1,'Number Processing'],['../api.html#text-processing',1,'Text Processing']]], + ['project_16',['Use CMake to generate project',['../building-and-testing.html#use-cmake-to-generate-project',1,'']]], + ['ptr_17',['ptr',['../yyjson_8h.html#a766102bcfc009fe568ea5655f133f753',1,'yyjson_patch_err']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_1a.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_1a.js new file mode 100644 index 00000000000..583b854708d --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_1a.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['read_0',['Perform incremental read',['../api.html#perform-incremental-read',1,'']]], + ['read_20json_20file_20with_20options_1',['Read JSON file with options',['../index.html#read-json-file-with-options',1,'']]], + ['read_20json_20from_20file_2',['Read JSON from file',['../api.html#read-json-from-file',1,'']]], + ['read_20json_20from_20file_20pointer_3',['Read JSON from file pointer',['../api.html#read-json-from-file-pointer',1,'']]], + ['read_20json_20from_20string_4',['Read JSON from string',['../api.html#read-json-from-string',1,'']]], + ['read_20json_20incrementally_5',['Read JSON incrementally',['../api.html#read-json-incrementally',1,'']]], + ['read_20json_20string_6',['Read JSON string',['../index.html#read-json-string',1,'']]], + ['read_20json_20with_20options_7',['Read JSON with options',['../api.html#read-json-with-options',1,'']]], + ['reader_8',['Number reader',['../api.html#number-reader',1,'']]], + ['reader_20error_20handling_9',['Reader error handling',['../api.html#reader-error-handling',1,'']]], + ['reader_20flag_10',['Reader flag',['../api.html#reader-flag',1,'']]], + ['reading_11',['reading',['../api.html#create-the-state-for-incremental-reading',1,'Create the state for incremental reading'],['../api.html#free-the-state-used-for-incremental-reading',1,'Free the state used for incremental reading']]], + ['reading_20json_12',['Reading JSON',['../api.html#reading-json',1,'']]], + ['realloc_13',['realloc',['../yyjson_8h.html#affacb85df656149df6c07880f0ecbe95',1,'yyjson_alc']]], + ['removed_14',['Removed',['../md__c_h_a_n_g_e_l_o_g.html#removed',1,'']]], + ['root_15',['root',['../yyjson_8h.html#ad22baac3e9ae0ff932b38f4257c3b800',1,'yyjson_doc::root'],['../yyjson_8h.html#a17d4291b05a54acc6310d16653de48b3',1,'yyjson_mut_doc::root']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_1b.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_1b.js new file mode 100644 index 00000000000..989c63ae3ef --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_1b.js @@ -0,0 +1,44 @@ +var searchData= +[ + ['safety_0',['Thread Safety',['../api.html#thread-safety',1,'']]], + ['sample_20code_1',['Sample Code',['../index.html#sample-code',1,'']]], + ['sample_20code_2',['Sample code',['../api.html#sample-code-1',1,'']]], + ['single_20allocator_20for_20multiple_20json_3',['Single allocator for multiple JSON',['../api.html#single-allocator-for-multiple-json',1,'']]], + ['source_20code_4',['Source code',['../building-and-testing.html#source-code',1,'']]], + ['stack_20memory_20allocator_5',['Stack memory allocator',['../api.html#stack-memory-allocator',1,'']]], + ['stack_20memory_20usage_6',['Stack Memory Usage',['../api.html#stack-memory-usage',1,'']]], + ['state_20for_20incremental_20reading_7',['Create the state for incremental reading',['../api.html#create-the-state-for-incremental-reading',1,'']]], + ['state_20used_20for_20incremental_20reading_8',['Free the state used for incremental reading',['../api.html#free-the-state-used-for-incremental-reading',1,'']]], + ['status_9',['Packaging status',['../index.html#packaging-status',1,'']]], + ['str_5fpool_10',['str_pool',['../yyjson_8h.html#a83e0a27da01978e46f074b6bb068d9eb',1,'yyjson_doc::str_pool'],['../yyjson_8h.html#a11aa8b6fd06edf8fe371bae828052b39',1,'yyjson_mut_doc::str_pool']]], + ['string_11',['string',['../api.html#api-for-string',1,'API for string'],['../api.html#read-json-from-string',1,'Read JSON from string'],['../index.html#read-json-string',1,'Read JSON string'],['../index.html#write-json-string',1,'Write JSON string'],['../api.html#write-json-to-string',1,'Write JSON to string']]], + ['strong_12',['strong',['../api.html#yyjson_read_allow_bom',1,'<strong>YYJSON_READ_ALLOW_BOM</strong>'],['../api.html#yyjson_read_allow_comments',1,'<strong>YYJSON_READ_ALLOW_COMMENTS</strong>'],['../api.html#yyjson_read_allow_ext_escape',1,'<strong>YYJSON_READ_ALLOW_EXT_ESCAPE</strong>'],['../api.html#yyjson_read_allow_ext_number',1,'<strong>YYJSON_READ_ALLOW_EXT_NUMBER</strong>'],['../api.html#yyjson_read_allow_ext_whitespace',1,'<strong>YYJSON_READ_ALLOW_EXT_WHITESPACE</strong>'],['../api.html#yyjson_read_allow_inf_and_nan',1,'<strong>YYJSON_READ_ALLOW_INF_AND_NAN</strong>'],['../api.html#yyjson_read_allow_invalid_unicode',1,'<strong>YYJSON_READ_ALLOW_INVALID_UNICODE</strong>'],['../api.html#yyjson_read_allow_single_quoted_str',1,'<strong>YYJSON_READ_ALLOW_SINGLE_QUOTED_STR</strong>'],['../api.html#yyjson_read_allow_trailing_commas',1,'<strong>YYJSON_READ_ALLOW_TRAILING_COMMAS</strong>'],['../api.html#yyjson_read_allow_unquoted_key',1,'<strong>YYJSON_READ_ALLOW_UNQUOTED_KEY</strong>'],['../api.html#yyjson_read_bignum_as_raw',1,'<strong>YYJSON_READ_BIGNUM_AS_RAW</strong>'],['../api.html#yyjson_read_insitu',1,'<strong>YYJSON_READ_INSITU</strong>'],['../api.html#yyjson_read_json5',1,'<strong>YYJSON_READ_JSON5</strong>'],['../api.html#yyjson_read_noflag--0',1,'<strong>YYJSON_READ_NOFLAG = 0</strong>'],['../api.html#yyjson_read_number_as_raw',1,'<strong>YYJSON_READ_NUMBER_AS_RAW</strong>'],['../api.html#yyjson_read_stop_when_done',1,'<strong>YYJSON_READ_STOP_WHEN_DONE</strong>'],['../api.html#yyjson_write_allow_inf_and_nan',1,'<strong>YYJSON_WRITE_ALLOW_INF_AND_NAN</strong>'],['../api.html#yyjson_write_allow_invalid_unicode',1,'<strong>YYJSON_WRITE_ALLOW_INVALID_UNICODE</strong>'],['../api.html#yyjson_write_escape_slashes',1,'<strong>YYJSON_WRITE_ESCAPE_SLASHES</strong>'],['../api.html#yyjson_write_escape_unicode',1,'<strong>YYJSON_WRITE_ESCAPE_UNICODE</strong>'],['../api.html#yyjson_write_fp_to_fixedprec',1,'<strong>YYJSON_WRITE_FP_TO_FIXED(prec)</strong>'],['../api.html#yyjson_write_fp_to_float',1,'<strong>YYJSON_WRITE_FP_TO_FLOAT</strong>'],['../api.html#yyjson_write_inf_and_nan_as_null',1,'<strong>YYJSON_WRITE_INF_AND_NAN_AS_NULL</strong>'],['../api.html#yyjson_write_newline_at_end',1,'<strong>YYJSON_WRITE_NEWLINE_AT_END</strong>'],['../api.html#yyjson_write_noflag--0',1,'<strong>YYJSON_WRITE_NOFLAG = 0</strong>'],['../api.html#yyjson_write_pretty',1,'<strong>YYJSON_WRITE_PRETTY</strong>'],['../api.html#yyjson_write_pretty_two_spaces',1,'<strong>YYJSON_WRITE_PRETTY_TWO_SPACES</strong>']]], + ['strong_20yyjson_5fread_5fallow_5fbom_20strong_13',['<strong>YYJSON_READ_ALLOW_BOM</strong>',['../api.html#yyjson_read_allow_bom',1,'']]], + ['strong_20yyjson_5fread_5fallow_5fcomments_20strong_14',['<strong>YYJSON_READ_ALLOW_COMMENTS</strong>',['../api.html#yyjson_read_allow_comments',1,'']]], + ['strong_20yyjson_5fread_5fallow_5fext_5fescape_20strong_15',['<strong>YYJSON_READ_ALLOW_EXT_ESCAPE</strong>',['../api.html#yyjson_read_allow_ext_escape',1,'']]], + ['strong_20yyjson_5fread_5fallow_5fext_5fnumber_20strong_16',['<strong>YYJSON_READ_ALLOW_EXT_NUMBER</strong>',['../api.html#yyjson_read_allow_ext_number',1,'']]], + ['strong_20yyjson_5fread_5fallow_5fext_5fwhitespace_20strong_17',['<strong>YYJSON_READ_ALLOW_EXT_WHITESPACE</strong>',['../api.html#yyjson_read_allow_ext_whitespace',1,'']]], + ['strong_20yyjson_5fread_5fallow_5finf_5fand_5fnan_20strong_18',['<strong>YYJSON_READ_ALLOW_INF_AND_NAN</strong>',['../api.html#yyjson_read_allow_inf_and_nan',1,'']]], + ['strong_20yyjson_5fread_5fallow_5finvalid_5funicode_20strong_19',['<strong>YYJSON_READ_ALLOW_INVALID_UNICODE</strong>',['../api.html#yyjson_read_allow_invalid_unicode',1,'']]], + ['strong_20yyjson_5fread_5fallow_5fsingle_5fquoted_5fstr_20strong_20',['<strong>YYJSON_READ_ALLOW_SINGLE_QUOTED_STR</strong>',['../api.html#yyjson_read_allow_single_quoted_str',1,'']]], + ['strong_20yyjson_5fread_5fallow_5ftrailing_5fcommas_20strong_21',['<strong>YYJSON_READ_ALLOW_TRAILING_COMMAS</strong>',['../api.html#yyjson_read_allow_trailing_commas',1,'']]], + ['strong_20yyjson_5fread_5fallow_5funquoted_5fkey_20strong_22',['<strong>YYJSON_READ_ALLOW_UNQUOTED_KEY</strong>',['../api.html#yyjson_read_allow_unquoted_key',1,'']]], + ['strong_20yyjson_5fread_5fbignum_5fas_5fraw_20strong_23',['<strong>YYJSON_READ_BIGNUM_AS_RAW</strong>',['../api.html#yyjson_read_bignum_as_raw',1,'']]], + ['strong_20yyjson_5fread_5finsitu_20strong_24',['<strong>YYJSON_READ_INSITU</strong>',['../api.html#yyjson_read_insitu',1,'']]], + ['strong_20yyjson_5fread_5fjson5_20strong_25',['<strong>YYJSON_READ_JSON5</strong>',['../api.html#yyjson_read_json5',1,'']]], + ['strong_20yyjson_5fread_5fnoflag_200_20strong_26',['<strong>YYJSON_READ_NOFLAG = 0</strong>',['../api.html#yyjson_read_noflag--0',1,'']]], + ['strong_20yyjson_5fread_5fnumber_5fas_5fraw_20strong_27',['<strong>YYJSON_READ_NUMBER_AS_RAW</strong>',['../api.html#yyjson_read_number_as_raw',1,'']]], + ['strong_20yyjson_5fread_5fstop_5fwhen_5fdone_20strong_28',['<strong>YYJSON_READ_STOP_WHEN_DONE</strong>',['../api.html#yyjson_read_stop_when_done',1,'']]], + ['strong_20yyjson_5fwrite_5fallow_5finf_5fand_5fnan_20strong_29',['<strong>YYJSON_WRITE_ALLOW_INF_AND_NAN</strong>',['../api.html#yyjson_write_allow_inf_and_nan',1,'']]], + ['strong_20yyjson_5fwrite_5fallow_5finvalid_5funicode_20strong_30',['<strong>YYJSON_WRITE_ALLOW_INVALID_UNICODE</strong>',['../api.html#yyjson_write_allow_invalid_unicode',1,'']]], + ['strong_20yyjson_5fwrite_5fescape_5fslashes_20strong_31',['<strong>YYJSON_WRITE_ESCAPE_SLASHES</strong>',['../api.html#yyjson_write_escape_slashes',1,'']]], + ['strong_20yyjson_5fwrite_5fescape_5funicode_20strong_32',['<strong>YYJSON_WRITE_ESCAPE_UNICODE</strong>',['../api.html#yyjson_write_escape_unicode',1,'']]], + ['strong_20yyjson_5fwrite_5ffp_5fto_5ffixed_20prec_20strong_33',['<strong>YYJSON_WRITE_FP_TO_FIXED(prec)</strong>',['../api.html#yyjson_write_fp_to_fixedprec',1,'']]], + ['strong_20yyjson_5fwrite_5ffp_5fto_5ffloat_20strong_34',['<strong>YYJSON_WRITE_FP_TO_FLOAT</strong>',['../api.html#yyjson_write_fp_to_float',1,'']]], + ['strong_20yyjson_5fwrite_5finf_5fand_5fnan_5fas_5fnull_20strong_35',['<strong>YYJSON_WRITE_INF_AND_NAN_AS_NULL</strong>',['../api.html#yyjson_write_inf_and_nan_as_null',1,'']]], + ['strong_20yyjson_5fwrite_5fnewline_5fat_5fend_20strong_36',['<strong>YYJSON_WRITE_NEWLINE_AT_END</strong>',['../api.html#yyjson_write_newline_at_end',1,'']]], + ['strong_20yyjson_5fwrite_5fnoflag_200_20strong_37',['<strong>YYJSON_WRITE_NOFLAG = 0</strong>',['../api.html#yyjson_write_noflag--0',1,'']]], + ['strong_20yyjson_5fwrite_5fpretty_20strong_38',['<strong>YYJSON_WRITE_PRETTY</strong>',['../api.html#yyjson_write_pretty',1,'']]], + ['strong_20yyjson_5fwrite_5fpretty_5ftwo_5fspaces_20strong_39',['<strong>YYJSON_WRITE_PRETTY_TWO_SPACES</strong>',['../api.html#yyjson_write_pretty_two_spaces',1,'']]], + ['structures_40',['Data Structures',['../data-structures.html',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_1c.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_1c.js new file mode 100644 index 00000000000..6858995e4c5 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_1c.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['tag_0',['tag',['../yyjson_8h.html#ab589c80e05e4e65fa28e23acc1ee8255',1,'yyjson_val::tag'],['../yyjson_8h.html#a5fd1ae5bada624c9687acce330eef7aa',1,'yyjson_mut_val::tag']]], + ['testing_1',['Building and testing',['../building-and-testing.html',1,'']]], + ['testing_20with_20cmake_20and_20ctest_2',['Testing With CMake and CTest',['../building-and-testing.html#testing-with-cmake-and-ctest',1,'']]], + ['text_20processing_3',['Text Processing',['../api.html#text-processing',1,'']]], + ['the_20library_4',['Use CMake to build the library',['../building-and-testing.html#use-cmake-to-build-the-library',1,'']]], + ['the_20state_20for_20incremental_20reading_5',['Create the state for incremental reading',['../api.html#create-the-state-for-incremental-reading',1,'']]], + ['the_20state_20used_20for_20incremental_20reading_6',['Free the state used for incremental reading',['../api.html#free-the-state-used-for-incremental-reading',1,'']]], + ['third_20party_20allocator_20library_7',['Use a third-party allocator library',['../api.html#use-a-third-party-allocator-library',1,'']]], + ['thread_20safety_8',['Thread Safety',['../api.html#thread-safety',1,'']]], + ['time_20options_9',['Compile-time Options',['../building-and-testing.html#compile-time-options',1,'']]], + ['to_20build_20the_20library_10',['Use CMake to build the library',['../building-and-testing.html#use-cmake-to-build-the-library',1,'']]], + ['to_20file_11',['Write JSON to file',['../api.html#write-json-to-file',1,'']]], + ['to_20file_20pointer_12',['Write JSON to file pointer',['../api.html#write-json-to-file-pointer',1,'']]], + ['to_20generate_20documentation_13',['Use CMake to generate documentation',['../building-and-testing.html#use-cmake-to-generate-documentation',1,'']]], + ['to_20generate_20project_14',['Use CMake to generate project',['../building-and-testing.html#use-cmake-to-generate-project',1,'']]], + ['to_20string_15',['Write JSON to string',['../api.html#write-json-to-string',1,'']]], + ['todo_20for_20v1_200_16',['TODO for v1.0',['../index.html#todo-for-v10',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_1d.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_1d.js new file mode 100644 index 00000000000..88aa7ac8409 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_1d.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['uni_0',['uni',['../yyjson_8h.html#a3a07ac3ac97c66ae9b23efeab600d013',1,'yyjson_val::uni'],['../yyjson_8h.html#a2f30e3958bf136b4e8453a0e78b43d0f',1,'yyjson_mut_val::uni']]], + ['usage_1',['Stack Memory Usage',['../api.html#stack-memory-usage',1,'']]], + ['use_20a_20third_20party_20allocator_20library_2',['Use a third-party allocator library',['../api.html#use-a-third-party-allocator-library',1,'']]], + ['use_20cmake_20as_20a_20dependency_3',['Use CMake as a dependency',['../building-and-testing.html#use-cmake-as-a-dependency',1,'']]], + ['use_20cmake_20to_20build_20the_20library_4',['Use CMake to build the library',['../building-and-testing.html#use-cmake-to-build-the-library',1,'']]], + ['use_20cmake_20to_20generate_20documentation_5',['Use CMake to generate documentation',['../building-and-testing.html#use-cmake-to-generate-documentation',1,'']]], + ['use_20cmake_20to_20generate_20project_6',['Use CMake to generate project',['../building-and-testing.html#use-cmake-to-generate-project',1,'']]], + ['use_20vcpkg_7',['Use vcpkg',['../building-and-testing.html#use-vcpkg',1,'']]], + ['used_20for_20incremental_20reading_8',['Free the state used for incremental reading',['../api.html#free-the-state-used-for-incremental-reading',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_1e.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_1e.js new file mode 100644 index 00000000000..5761d11cd64 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_1e.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['v1_200_0',['TODO for v1.0',['../index.html#todo-for-v10',1,'']]], + ['val_5fpool_1',['val_pool',['../yyjson_8h.html#a5607c9ba393206ad94ecd90fbeb59017',1,'yyjson_mut_doc']]], + ['val_5fread_2',['val_read',['../yyjson_8h.html#ac12f7aed42260b8d2ede0fded3f72167',1,'yyjson_doc']]], + ['value_3',['Value',['../data-structures.html#immutable-value',1,'Immutable Value'],['../api.html#json-value',1,'JSON Value'],['../data-structures.html#mutable-value',1,'Mutable Value']]], + ['value_20creation_4',['JSON Value Creation',['../api.html#json-value-creation',1,'']]], + ['vcpkg_5',['Use vcpkg',['../building-and-testing.html#use-vcpkg',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_1f.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_1f.js new file mode 100644 index 00000000000..f7d1426c060 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_1f.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['with_20cmake_20and_20ctest_0',['Testing With CMake and CTest',['../building-and-testing.html#testing-with-cmake-and-ctest',1,'']]], + ['with_20options_1',['with options',['../index.html#read-json-file-with-options',1,'Read JSON file with options'],['../api.html#read-json-with-options',1,'Read JSON with options'],['../index.html#write-json-file-with-options',1,'Write JSON file with options'],['../api.html#write-json-with-options',1,'Write JSON with options']]], + ['with_20yyjson_2',['Built With yyjson',['../index.html#built-with-yyjson',1,'']]], + ['write_20json_20file_20with_20options_3',['Write JSON file with options',['../index.html#write-json-file-with-options',1,'']]], + ['write_20json_20string_4',['Write JSON string',['../index.html#write-json-string',1,'']]], + ['write_20json_20to_20file_5',['Write JSON to file',['../api.html#write-json-to-file',1,'']]], + ['write_20json_20to_20file_20pointer_6',['Write JSON to file pointer',['../api.html#write-json-to-file-pointer',1,'']]], + ['write_20json_20to_20string_7',['Write JSON to string',['../api.html#write-json-to-string',1,'']]], + ['write_20json_20with_20options_8',['Write JSON with options',['../api.html#write-json-with-options',1,'']]], + ['writer_9',['Number writer',['../api.html#number-writer',1,'']]], + ['writer_20flag_10',['Writer flag',['../api.html#writer-flag',1,'']]], + ['writing_20json_11',['Writing JSON',['../api.html#writing-json',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_2.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_2.js new file mode 100644 index 00000000000..e187a748fe1 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_2.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['2_200_202020_2012_2012_0',['0.2.0 (2020-12-12)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md020-2020-12-12',1,'']]], + ['2020_2010_2026_1',['0.1.0 (2020-10-26)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md010-2020-10-26',1,'']]], + ['2020_2012_2012_2',['0.2.0 (2020-12-12)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md020-2020-12-12',1,'']]], + ['2021_2005_2025_3',['0.3.0 (2021-05-25)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md030-2021-05-25',1,'']]], + ['2021_2012_2012_4',['0.4.0 (2021-12-12)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md040-2021-12-12',1,'']]], + ['2022_2005_2025_5',['0.5.0 (2022-05-25)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md050-2022-05-25',1,'']]], + ['2022_2006_2017_6',['0.5.1 (2022-06-17)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md051-2022-06-17',1,'']]], + ['2022_2012_2012_7',['0.6.0 (2022-12-12)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md060-2022-12-12',1,'']]], + ['2023_2005_2025_8',['0.7.0 (2023-05-25)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md070-2023-05-25',1,'']]], + ['2023_2009_2013_9',['0.8.0 (2023-09-13)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md080-2023-09-13',1,'']]], + ['2024_2004_2008_10',['0.9.0 (2024-04-08)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md090-2024-04-08',1,'']]], + ['2024_2007_2009_11',['0.10.0 (2024-07-09)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0100-2024-07-09',1,'']]], + ['2025_2005_2005_12',['0.11.0 (2025-05-05)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0110-2025-05-05',1,'']]], + ['2025_2005_2014_13',['0.11.1 (2025-05-14)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0111-2025-05-14',1,'']]], + ['2025_2008_2018_14',['0.12.0 (2025-08-18)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0129-2025-08-18',1,'']]], + ['25_15',['25',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md030-2021-05-25',1,'0.3.0 (2021-05-25)'],['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md050-2022-05-25',1,'0.5.0 (2022-05-25)'],['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md070-2023-05-25',1,'0.7.0 (2023-05-25)']]], + ['26_16',['0.1.0 (2020-10-26)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md010-2020-10-26',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_20.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_20.js new file mode 100644 index 00000000000..6800a1ded27 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_20.js @@ -0,0 +1,512 @@ +var searchData= +[ + ['yyjson_0',['Built With yyjson',['../index.html#built-with-yyjson',1,'']]], + ['yyjson_20prefers_3a_1',['For better performance, yyjson prefers:',['../index.html#for-better-performance-yyjson-prefers',1,'']]], + ['yyjson_2eh_2',['yyjson.h',['../yyjson_8h.html',1,'']]], + ['yyjson_5falc_3',['yyjson_alc',['../yyjson_8h.html#structyyjson__alc',1,'']]], + ['yyjson_5falc_5fdyn_5ffree_4',['yyjson_alc_dyn_free',['../yyjson_8h.html#aaa9b7978e7b40e6d5d8d1cb3da0568d6',1,'yyjson.h']]], + ['yyjson_5falc_5fdyn_5fnew_5',['yyjson_alc_dyn_new',['../yyjson_8h.html#a6a90ae91b82c2e8d6665a28a691eee18',1,'yyjson.h']]], + ['yyjson_5falc_5fpool_5finit_6',['yyjson_alc_pool_init',['../yyjson_8h.html#a6068c4293a2b35493b18421b9afbd3d5',1,'yyjson.h']]], + ['yyjson_5falign_7',['yyjson_align',['../yyjson_8h.html#a37185af21190fa0852a9b1ef9e041151',1,'yyjson.h']]], + ['yyjson_5fapi_8',['yyjson_api',['../yyjson_8h.html#a691136e772913e98860a791e65b70f04',1,'yyjson.h']]], + ['yyjson_5fapi_5finline_9',['yyjson_api_inline',['../yyjson_8h.html#a682886dc8be2307076b125b496b15570',1,'yyjson.h']]], + ['yyjson_5farr_5fforeach_10',['yyjson_arr_foreach',['../yyjson_8h.html#a60fd8094ee3eff6e7b629471f50aa139',1,'yyjson.h']]], + ['yyjson_5farr_5fget_11',['yyjson_arr_get',['../yyjson_8h.html#ac709738fbf9da708c28992c40746fcbf',1,'yyjson.h']]], + ['yyjson_5farr_5fget_5ffirst_12',['yyjson_arr_get_first',['../yyjson_8h.html#ad54c34d490dd8e479e21e4cb29bc814b',1,'yyjson.h']]], + ['yyjson_5farr_5fget_5flast_13',['yyjson_arr_get_last',['../yyjson_8h.html#a15bbce96107aa455670ebe9aab98964d',1,'yyjson.h']]], + ['yyjson_5farr_5fiter_14',['yyjson_arr_iter',['../yyjson_8h.html#structyyjson__arr__iter',1,'']]], + ['yyjson_5farr_5fiter_5fhas_5fnext_15',['yyjson_arr_iter_has_next',['../yyjson_8h.html#a216b976b352fe001d580fe837a844e79',1,'yyjson.h']]], + ['yyjson_5farr_5fiter_5finit_16',['yyjson_arr_iter_init',['../yyjson_8h.html#a95aebc83fff9793f7701a6e37df5e03f',1,'yyjson.h']]], + ['yyjson_5farr_5fiter_5fnext_17',['yyjson_arr_iter_next',['../yyjson_8h.html#ab608a351427921421a2e23877399acd5',1,'yyjson.h']]], + ['yyjson_5farr_5fiter_5fwith_18',['yyjson_arr_iter_with',['../yyjson_8h.html#a38b10c3293b817b25d9dd985da121cb5',1,'yyjson.h']]], + ['yyjson_5farr_5fsize_19',['yyjson_arr_size',['../yyjson_8h.html#a0ea8514c92f39fd93ddcbe93a7f466e5',1,'yyjson.h']]], + ['yyjson_5fcpp_5fver_20',['YYJSON_CPP_VER',['../yyjson_8h.html#a2b6ed8ca435b89b44a9c66cad30fd9d5',1,'yyjson.h']]], + ['yyjson_5fdeprecated_21',['yyjson_deprecated',['../yyjson_8h.html#af0cb2540fb4d4fc9809933a3020efaf8',1,'yyjson_deprecated: yyjson.h'],['../yyjson_8h.html#a16058fb6568716afd9754100862d460d',1,'yyjson_deprecated("renamed to yyjson_doc_ptr_get") yyjson_api_inline yyjson_val *yyjson_doc_get_pointer(yyjson_doc *doc: yyjson.h'],['../yyjson_8h.html#a5761a41e92b6f6ea1f5de114e36efb12',1,'yyjson_deprecated("renamed to yyjson_doc_ptr_getn") yyjson_api_inline yyjson_val *yyjson_doc_get_pointern(yyjson_doc *doc: yyjson.h'],['../yyjson_8h.html#a128b475e13bb4301babef4e03b9fda52',1,'yyjson_deprecated("renamed to yyjson_mut_doc_ptr_get") yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_get_pointer(yyjson_mut_doc *doc: yyjson.h'],['../yyjson_8h.html#a9c6dd96d063bacfa6413f7de90f90d91',1,'yyjson_deprecated("renamed to yyjson_mut_doc_ptr_getn") yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_get_pointern(yyjson_mut_doc *doc: yyjson.h'],['../yyjson_8h.html#a2d26305e46b3a7f72619232805fa10c6',1,'yyjson_deprecated("renamed to yyjson_ptr_get") yyjson_api_inline yyjson_val *yyjson_get_pointer(yyjson_val *val: yyjson.h'],['../yyjson_8h.html#a2acc549f8ce6bcac63ea89271b73d27a',1,'yyjson_deprecated("renamed to yyjson_ptr_getn") yyjson_api_inline yyjson_val *yyjson_get_pointern(yyjson_val *val: yyjson.h'],['../yyjson_8h.html#a84eb8968317b261a2e29528c1d8cf031',1,'yyjson_deprecated("renamed to yyjson_mut_ptr_get") yyjson_api_inline yyjson_mut_val *yyjson_mut_get_pointer(yyjson_mut_val *val: yyjson.h'],['../yyjson_8h.html#a23d9715d999b1156d91adadeac913c32',1,'yyjson_deprecated("renamed to yyjson_mut_ptr_getn") yyjson_api_inline yyjson_mut_val *yyjson_mut_get_pointern(yyjson_mut_val *val: yyjson.h'],['../yyjson_8h.html#a1cea8f887599cb77d9394ecd07ae875e',1,'yyjson_deprecated("renamed to unsafe_yyjson_ptr_getn") yyjson_api_inline yyjson_val *unsafe_yyjson_get_pointer(yyjson_val *val: yyjson.h'],['../yyjson_8h.html#a779bd9e777e3a58d7e3ea5c6977d1965',1,'yyjson_deprecated("renamed to unsafe_yyjson_mut_ptr_getx") yyjson_api_inline yyjson_mut_val *unsafe_yyjson_mut_get_pointer(yyjson_mut_val *val: yyjson.h']]], + ['yyjson_5fdisable_5ffast_5ffp_5fconv_22',['YYJSON_DISABLE_FAST_FP_CONV',['../building-and-testing.html#yyjson_disable_fast_fp_conv',1,'']]], + ['yyjson_5fdisable_5fincr_5freader_23',['YYJSON_DISABLE_INCR_READER',['../building-and-testing.html#yyjson_disable_incr_reader',1,'']]], + ['yyjson_5fdisable_5fnon_5fstandard_24',['YYJSON_DISABLE_NON_STANDARD',['../building-and-testing.html#yyjson_disable_non_standard',1,'']]], + ['yyjson_5fdisable_5freader_25',['YYJSON_DISABLE_READER',['../building-and-testing.html#yyjson_disable_reader',1,'']]], + ['yyjson_5fdisable_5futf8_5fvalidation_26',['YYJSON_DISABLE_UTF8_VALIDATION',['../building-and-testing.html#yyjson_disable_utf8_validation',1,'']]], + ['yyjson_5fdisable_5futils_27',['YYJSON_DISABLE_UTILS',['../building-and-testing.html#yyjson_disable_utils',1,'']]], + ['yyjson_5fdisable_5fwriter_28',['YYJSON_DISABLE_WRITER',['../building-and-testing.html#yyjson_disable_writer',1,'']]], + ['yyjson_5fdoc_29',['yyjson_doc',['../yyjson_8h.html#structyyjson__doc',1,'']]], + ['yyjson_5fdoc_5ffree_30',['yyjson_doc_free',['../yyjson_8h.html#adad98bd766cf52d99f2c54dcb120786d',1,'yyjson.h']]], + ['yyjson_5fdoc_5fget_5fread_5fsize_31',['yyjson_doc_get_read_size',['../yyjson_8h.html#a33580e2537c25685fd1209951dcbc967',1,'yyjson.h']]], + ['yyjson_5fdoc_5fget_5froot_32',['yyjson_doc_get_root',['../yyjson_8h.html#aa33a13a85b840b3dbc1f8534db2bd8fc',1,'yyjson.h']]], + ['yyjson_5fdoc_5fget_5fval_5fcount_33',['yyjson_doc_get_val_count',['../yyjson_8h.html#a89cb55aebc946e462968a2bcace5ba5a',1,'yyjson.h']]], + ['yyjson_5fdoc_5fmut_5fcopy_34',['yyjson_doc_mut_copy',['../yyjson_8h.html#a083356ecb65e45453033285f3d836de9',1,'yyjson.h']]], + ['yyjson_5fdoc_5fptr_5fget_35',['yyjson_doc_ptr_get',['../yyjson_8h.html#a9a9b30d275e211df9b84b91f4b95907a',1,'yyjson.h']]], + ['yyjson_5fdoc_5fptr_5fgetn_36',['yyjson_doc_ptr_getn',['../yyjson_8h.html#a5b12a7b59d79123f9de71510efa2df3d',1,'yyjson.h']]], + ['yyjson_5fdoc_5fptr_5fgetx_37',['yyjson_doc_ptr_getx',['../yyjson_8h.html#a53930a7b337295aefe993760fcc05645',1,'yyjson.h']]], + ['yyjson_5fequals_38',['yyjson_equals',['../yyjson_8h.html#adabd9eb44fac843109d6bc79f12ff6ff',1,'yyjson.h']]], + ['yyjson_5fequals_5fstr_39',['yyjson_equals_str',['../yyjson_8h.html#a147b5b874e6b939731f1b6c15abcbbca',1,'yyjson.h']]], + ['yyjson_5fequals_5fstrn_40',['yyjson_equals_strn',['../yyjson_8h.html#a1a7a91be15978b45345976c8432769aa',1,'yyjson.h']]], + ['yyjson_5fexports_41',['YYJSON_EXPORTS',['../building-and-testing.html#yyjson_exports',1,'']]], + ['yyjson_5fgcc_5fver_42',['YYJSON_GCC_VER',['../yyjson_8h.html#a0de4b27af40f104d2b1aac72edd6832e',1,'yyjson.h']]], + ['yyjson_5fget_5fbool_43',['yyjson_get_bool',['../yyjson_8h.html#aaed218041aa262337e179d487f4c770c',1,'yyjson.h']]], + ['yyjson_5fget_5fint_44',['yyjson_get_int',['../yyjson_8h.html#a383b0a924785a30a49f6c59de235cd28',1,'yyjson.h']]], + ['yyjson_5fget_5flen_45',['yyjson_get_len',['../yyjson_8h.html#ae4b5e4edc9713d9f48e2a6750ad5ebff',1,'yyjson.h']]], + ['yyjson_5fget_5fnum_46',['yyjson_get_num',['../yyjson_8h.html#ac24ffc0726b50f38283c9f01f4e58d9b',1,'yyjson.h']]], + ['yyjson_5fget_5fraw_47',['yyjson_get_raw',['../yyjson_8h.html#a5e90e838f969425f75372d4b4246d145',1,'yyjson.h']]], + ['yyjson_5fget_5freal_48',['yyjson_get_real',['../yyjson_8h.html#a5bfc74dbba137fc4d662702666f5073a',1,'yyjson.h']]], + ['yyjson_5fget_5fsint_49',['yyjson_get_sint',['../yyjson_8h.html#ac4aab52f91a8b365344a74812be4e712',1,'yyjson.h']]], + ['yyjson_5fget_5fstr_50',['yyjson_get_str',['../yyjson_8h.html#a986e994db00b2749e000af0a4331454c',1,'yyjson.h']]], + ['yyjson_5fget_5fsubtype_51',['yyjson_get_subtype',['../yyjson_8h.html#a7435fee591b112fbdcc455fc60b1416b',1,'yyjson.h']]], + ['yyjson_5fget_5ftag_52',['yyjson_get_tag',['../yyjson_8h.html#a022754b3eabf9ec15a4f8e9d52db015f',1,'yyjson.h']]], + ['yyjson_5fget_5ftype_53',['yyjson_get_type',['../yyjson_8h.html#a7d8d98b60284e646b8b22a8341d99a7f',1,'yyjson.h']]], + ['yyjson_5fget_5ftype_5fdesc_54',['yyjson_get_type_desc',['../yyjson_8h.html#a489b91cc6038a17ebc90193bc00e9e8b',1,'yyjson.h']]], + ['yyjson_5fget_5fuint_55',['yyjson_get_uint',['../yyjson_8h.html#ab439bc90f6631a67dd3ed4626eb3b4ad',1,'yyjson.h']]], + ['yyjson_5fhas_5fattribute_56',['yyjson_has_attribute',['../yyjson_8h.html#ad7a6d7801cb0c35ee08fc6ba9d343106',1,'yyjson.h']]], + ['yyjson_5fhas_5fbuiltin_57',['yyjson_has_builtin',['../yyjson_8h.html#a35f777885b981bd9caf1c24737b40921',1,'yyjson.h']]], + ['yyjson_5fhas_5fconstant_5fp_58',['YYJSON_HAS_CONSTANT_P',['../yyjson_8h.html#acf1b73925eff2306f4e23837cd874c8d',1,'yyjson.h']]], + ['yyjson_5fhas_5ffeature_59',['yyjson_has_feature',['../yyjson_8h.html#ae8f6fbea7b0eee0545bcf8d272ce7f33',1,'yyjson.h']]], + ['yyjson_5fhas_5finclude_60',['yyjson_has_include',['../yyjson_8h.html#afe50edcbf467f426784326f2282c51fd',1,'yyjson.h']]], + ['yyjson_5fimports_61',['YYJSON_IMPORTS',['../building-and-testing.html#yyjson_imports',1,'']]], + ['yyjson_5fincr_5ffree_62',['yyjson_incr_free',['../yyjson_8h.html#a333bd893cdd22a379e2476e90b5532f2',1,'yyjson.h']]], + ['yyjson_5fincr_5fnew_63',['yyjson_incr_new',['../yyjson_8h.html#a49c78bbfa5c961c1807d332f52d201f4',1,'yyjson.h']]], + ['yyjson_5fincr_5fread_64',['yyjson_incr_read',['../yyjson_8h.html#adf5847c72fffb345de33667fd935097a',1,'yyjson.h']]], + ['yyjson_5fincr_5fstate_65',['yyjson_incr_state',['../yyjson_8h.html#a1961d8efe52ccb4f0de1c84f68f22e94',1,'yyjson.h']]], + ['yyjson_5finline_66',['yyjson_inline',['../yyjson_8h.html#a45a5da162ba8a920163c74b71f48ead8',1,'yyjson.h']]], + ['yyjson_5fis_5farr_67',['yyjson_is_arr',['../yyjson_8h.html#add7037998fb39b3e2d1b3caf59f9d66a',1,'yyjson.h']]], + ['yyjson_5fis_5fbool_68',['yyjson_is_bool',['../yyjson_8h.html#a2e3dedcd83d286602101018024f21c52',1,'yyjson.h']]], + ['yyjson_5fis_5fctn_69',['yyjson_is_ctn',['../yyjson_8h.html#a01aace85ea46ac42974d86fb217a5086',1,'yyjson.h']]], + ['yyjson_5fis_5ffalse_70',['yyjson_is_false',['../yyjson_8h.html#a6105e202bdb2e3b0bd1b561722b80afa',1,'yyjson.h']]], + ['yyjson_5fis_5fint_71',['yyjson_is_int',['../yyjson_8h.html#a5079543ec26e3634d0d97491195f0daf',1,'yyjson.h']]], + ['yyjson_5fis_5fnull_72',['yyjson_is_null',['../yyjson_8h.html#a81cc3185457d7fd86f3818319d7efe18',1,'yyjson.h']]], + ['yyjson_5fis_5fnum_73',['yyjson_is_num',['../yyjson_8h.html#aedbd4efc6436d66382936b8c450a5877',1,'yyjson.h']]], + ['yyjson_5fis_5fobj_74',['yyjson_is_obj',['../yyjson_8h.html#affa9d4c51b9073804d91ef50e3f5ebd6',1,'yyjson.h']]], + ['yyjson_5fis_5fraw_75',['yyjson_is_raw',['../yyjson_8h.html#a286c610e7e27b8b4667a93eba2e2fa28',1,'yyjson.h']]], + ['yyjson_5fis_5freal_76',['yyjson_is_real',['../yyjson_8h.html#a3cf0581ecad48a658da626cf86903f42',1,'yyjson.h']]], + ['yyjson_5fis_5freal_5fgcc_77',['YYJSON_IS_REAL_GCC',['../yyjson_8h.html#a4781760a87346473a82f26fdd897fa52',1,'yyjson.h']]], + ['yyjson_5fis_5fsint_78',['yyjson_is_sint',['../yyjson_8h.html#ac3de217ef6c479380e38f35a2a166477',1,'yyjson.h']]], + ['yyjson_5fis_5fstr_79',['yyjson_is_str',['../yyjson_8h.html#a52f3358d27af0b1f1aeb3fe4dc7da1c0',1,'yyjson.h']]], + ['yyjson_5fis_5ftrue_80',['yyjson_is_true',['../yyjson_8h.html#a527bfefae4532c4061e56d581ec4fc01',1,'yyjson.h']]], + ['yyjson_5fis_5fuint_81',['yyjson_is_uint',['../yyjson_8h.html#ac4b6eb9e397730bbb264f64d46cafacf',1,'yyjson.h']]], + ['yyjson_5flikely_82',['yyjson_likely',['../yyjson_8h.html#a2fcd8be107f850c0d81ba7bff62edeb7',1,'yyjson.h']]], + ['yyjson_5flocate_5fpos_83',['yyjson_locate_pos',['../yyjson_8h.html#ac742b11ff26fb9af6362ffd2f3f21061',1,'yyjson.h']]], + ['yyjson_5fmerge_5fpatch_84',['yyjson_merge_patch',['../yyjson_8h.html#a9026faa4e022392c28e8f9afa553362f',1,'yyjson.h']]], + ['yyjson_5fmsc_5fver_85',['YYJSON_MSC_VER',['../yyjson_8h.html#a77011c6b1268f9068abe1975b92e38e0',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_86',['yyjson_mut_arr',['../yyjson_8h.html#aec0e874c4847338f3b61bf46257cb557',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5farr_87',['yyjson_mut_arr_add_arr',['../yyjson_8h.html#a8e0dfe2ac2a53faadf137d159162d193',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fbool_88',['yyjson_mut_arr_add_bool',['../yyjson_8h.html#a5c7fae9804b126005f99c67f3c703ad5',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fdouble_89',['yyjson_mut_arr_add_double',['../yyjson_8h.html#a39283533d6fee8d33eb0e3b818ce8fee',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5ffalse_90',['yyjson_mut_arr_add_false',['../yyjson_8h.html#a930a47cf837316e3758e38057178edac',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5ffloat_91',['yyjson_mut_arr_add_float',['../yyjson_8h.html#ab07c81d726e44806b918481becf7f6d3',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fint_92',['yyjson_mut_arr_add_int',['../yyjson_8h.html#ad20aad460c6d7c62f7c371ca5be54667',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fnull_93',['yyjson_mut_arr_add_null',['../yyjson_8h.html#afb1e130c69db1f54e924e82c3d6377c9',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fobj_94',['yyjson_mut_arr_add_obj',['../yyjson_8h.html#acd2884309c99b42f916fffd50c018c59',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5freal_95',['yyjson_mut_arr_add_real',['../yyjson_8h.html#aa47704ca9b08cdd7b8b151ec67c4afd6',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fsint_96',['yyjson_mut_arr_add_sint',['../yyjson_8h.html#ab459a079674a115123c353441dacda22',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fstr_97',['yyjson_mut_arr_add_str',['../yyjson_8h.html#a09acbadaf1d791167a277ed35540577b',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fstrcpy_98',['yyjson_mut_arr_add_strcpy',['../yyjson_8h.html#a2877858de77e7765ef44d8659eb7fcd3',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fstrn_99',['yyjson_mut_arr_add_strn',['../yyjson_8h.html#a97b82f92bd96415090ce9803b9757bf9',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fstrncpy_100',['yyjson_mut_arr_add_strncpy',['../yyjson_8h.html#a158fecc9fb751aeb56472844321bdfab',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5ftrue_101',['yyjson_mut_arr_add_true',['../yyjson_8h.html#a125859d255ca67ed339fbf3d05539c94',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fuint_102',['yyjson_mut_arr_add_uint',['../yyjson_8h.html#a6efba736a610baa629bf2a0b0a41d4a9',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fval_103',['yyjson_mut_arr_add_val',['../yyjson_8h.html#ab361240999d684579904a9aa3af5004f',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fappend_104',['yyjson_mut_arr_append',['../yyjson_8h.html#af089d7f9bfb1b4fadf46073a534379b0',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fclear_105',['yyjson_mut_arr_clear',['../yyjson_8h.html#a274fc7be14bed93794e3e720927f7bc5',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fforeach_106',['yyjson_mut_arr_foreach',['../yyjson_8h.html#a23a525f4192a237730aedfad55798fdb',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fget_107',['yyjson_mut_arr_get',['../yyjson_8h.html#a08b69c78024de357ed49abcc19d5b2f3',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fget_5ffirst_108',['yyjson_mut_arr_get_first',['../yyjson_8h.html#a9ff667f95ec6e6e264509e1681c74357',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fget_5flast_109',['yyjson_mut_arr_get_last',['../yyjson_8h.html#a8f6ad942e4ba4d3fb7cb52459af708a6',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5finsert_110',['yyjson_mut_arr_insert',['../yyjson_8h.html#ae0898f45c9fca1d7d6bdd35b3488a10f',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fiter_111',['yyjson_mut_arr_iter',['../yyjson_8h.html#structyyjson__mut__arr__iter',1,'']]], + ['yyjson_5fmut_5farr_5fiter_5fhas_5fnext_112',['yyjson_mut_arr_iter_has_next',['../yyjson_8h.html#a214c115652630e5acaa9fa062844e0c9',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fiter_5finit_113',['yyjson_mut_arr_iter_init',['../yyjson_8h.html#ad88b6743f333d9e4eff04b0138619e74',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fiter_5fnext_114',['yyjson_mut_arr_iter_next',['../yyjson_8h.html#a793250c5394193a73b5e9506c8381994',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fiter_5fremove_115',['yyjson_mut_arr_iter_remove',['../yyjson_8h.html#a20fa69856e99295473e1b3e111adc3b1',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fiter_5fwith_116',['yyjson_mut_arr_iter_with',['../yyjson_8h.html#a9d8bf48b287cc0099eb6619d8b4b712e',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fprepend_117',['yyjson_mut_arr_prepend',['../yyjson_8h.html#a1557f6dca4e03380449cb9b5f043f699',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fremove_118',['yyjson_mut_arr_remove',['../yyjson_8h.html#a26d9cd39957b06085492ec7050850a19',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fremove_5ffirst_119',['yyjson_mut_arr_remove_first',['../yyjson_8h.html#af7484aeed9b789103efb985f2f42ab46',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fremove_5flast_120',['yyjson_mut_arr_remove_last',['../yyjson_8h.html#a923bc9e3c4af69b5bdb5361a9f0a4ba5',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fremove_5frange_121',['yyjson_mut_arr_remove_range',['../yyjson_8h.html#ab96f33fef20cadcb9bb045c60749b516',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5freplace_122',['yyjson_mut_arr_replace',['../yyjson_8h.html#a33704c7475fcdbc8ce7504e9b9756b16',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5frotate_123',['yyjson_mut_arr_rotate',['../yyjson_8h.html#a6df6d46adbd674a53cbfc049d49ec5c5',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fsize_124',['yyjson_mut_arr_size',['../yyjson_8h.html#a847bb374b9c7fa6fff34088d23d87dad',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fbool_125',['yyjson_mut_arr_with_bool',['../yyjson_8h.html#afd2b114767b989006259409c6955bb37',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fdouble_126',['yyjson_mut_arr_with_double',['../yyjson_8h.html#ac81702a782ecfeb9874ce43706ecf02e',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5ffloat_127',['yyjson_mut_arr_with_float',['../yyjson_8h.html#a50039175677ae5fdd51f1c6942fa3d3d',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5freal_128',['yyjson_mut_arr_with_real',['../yyjson_8h.html#a7173b66e47ee6fad38b11651d20e7ddf',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fsint_129',['yyjson_mut_arr_with_sint',['../yyjson_8h.html#a05771fb3cd9c9d2f854dc9528feac58a',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fsint16_130',['yyjson_mut_arr_with_sint16',['../yyjson_8h.html#a72bd3b0467273c40dbe376bc7c0a8f06',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fsint32_131',['yyjson_mut_arr_with_sint32',['../yyjson_8h.html#a54bfa0c027fb21e9e5c33a9f4ecbe0f5',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fsint64_132',['yyjson_mut_arr_with_sint64',['../yyjson_8h.html#a37d0c7987b2958550076586ca36082fd',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fsint8_133',['yyjson_mut_arr_with_sint8',['../yyjson_8h.html#ab9c7f452ed21a9800501c25e715f35f7',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fstr_134',['yyjson_mut_arr_with_str',['../yyjson_8h.html#af7da1562cde867338bc69395c2aeb0ad',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fstrcpy_135',['yyjson_mut_arr_with_strcpy',['../yyjson_8h.html#a90c3e1c55dcf04a7879abed9a57cb278',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fstrn_136',['yyjson_mut_arr_with_strn',['../yyjson_8h.html#a419008c4a6f2dc4221211b0d7770109a',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fstrncpy_137',['yyjson_mut_arr_with_strncpy',['../yyjson_8h.html#ad8c68a8cec010d2d5f8942eb1136afde',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fuint_138',['yyjson_mut_arr_with_uint',['../yyjson_8h.html#ab2237deb1190a0333a88d571a8adcb0c',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fuint16_139',['yyjson_mut_arr_with_uint16',['../yyjson_8h.html#a85f4bcdc777cde51a40359ac9e38c98b',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fuint32_140',['yyjson_mut_arr_with_uint32',['../yyjson_8h.html#ac24336d6f29b5b6c09f513373b6fc83e',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fuint64_141',['yyjson_mut_arr_with_uint64',['../yyjson_8h.html#aae70fe76dfae0e8aa93d0226ec8510d9',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fuint8_142',['yyjson_mut_arr_with_uint8',['../yyjson_8h.html#a2ae7e73e8a1431554d621059b06222e6',1,'yyjson.h']]], + ['yyjson_5fmut_5fbool_143',['yyjson_mut_bool',['../yyjson_8h.html#a57afc80d0c89c0ae20d5ff183f3a8205',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_144',['yyjson_mut_doc',['../yyjson_8h.html#structyyjson__mut__doc',1,'']]], + ['yyjson_5fmut_5fdoc_5ffree_145',['yyjson_mut_doc_free',['../yyjson_8h.html#a7a5f504993031f912d06777b8a7b5aff',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fget_5froot_146',['yyjson_mut_doc_get_root',['../yyjson_8h.html#aa33ac310f363ace5f4dda3697b2c0123',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fimut_5fcopy_147',['yyjson_mut_doc_imut_copy',['../yyjson_8h.html#a797642b2f815a4f05db03ef87f08cc4f',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fmut_5fcopy_148',['yyjson_mut_doc_mut_copy',['../yyjson_8h.html#a6ee1dc133fa773528286cd0b25300cb2',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fnew_149',['yyjson_mut_doc_new',['../yyjson_8h.html#ae27cb375110302ec19f4376d7cab3c5b',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5fadd_150',['yyjson_mut_doc_ptr_add',['../yyjson_8h.html#ae1a372cfbbc8a536decaf1db5223804d',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5faddn_151',['yyjson_mut_doc_ptr_addn',['../yyjson_8h.html#a5ee67bcb7012b25bd3bd7f88e5bb1699',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5faddx_152',['yyjson_mut_doc_ptr_addx',['../yyjson_8h.html#ad284e6ee4236ffa0be5d45625d57cac4',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5fget_153',['yyjson_mut_doc_ptr_get',['../yyjson_8h.html#a5ad2700fe7073292adb71d508a049604',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5fgetn_154',['yyjson_mut_doc_ptr_getn',['../yyjson_8h.html#a085db50b4cf005e489b7401281ea8636',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5fgetx_155',['yyjson_mut_doc_ptr_getx',['../yyjson_8h.html#a6031b6b35b06127f3fa2278be67c29ea',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5fremove_156',['yyjson_mut_doc_ptr_remove',['../yyjson_8h.html#a0358ed2cf421e64f5052068f41ca8f26',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5fremoven_157',['yyjson_mut_doc_ptr_removen',['../yyjson_8h.html#a4ede66b0b130faa9af1c47878cf52be2',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5fremovex_158',['yyjson_mut_doc_ptr_removex',['../yyjson_8h.html#a286f0920116870a3d27b466c515234a3',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5freplace_159',['yyjson_mut_doc_ptr_replace',['../yyjson_8h.html#a1a52947332757bebf28985bad6fb3d5d',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5freplacen_160',['yyjson_mut_doc_ptr_replacen',['../yyjson_8h.html#a71d44a9f504b50eab96e59d348b2553f',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5freplacex_161',['yyjson_mut_doc_ptr_replacex',['../yyjson_8h.html#aed5fc7ff1c73fd7a1829e863ce92ad65',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5fset_162',['yyjson_mut_doc_ptr_set',['../yyjson_8h.html#a6c844108b8cdd6583802570b1500630c',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5fsetn_163',['yyjson_mut_doc_ptr_setn',['../yyjson_8h.html#a222fa618ed3b7f6cbd355bb04708498f',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5fsetx_164',['yyjson_mut_doc_ptr_setx',['../yyjson_8h.html#a48213b9742ba7fe6fb54b79be2da1f97',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fset_5froot_165',['yyjson_mut_doc_set_root',['../yyjson_8h.html#a8a9f7ea865526acb97ee4eff8d0bb79f',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fset_5fstr_5fpool_5fsize_166',['yyjson_mut_doc_set_str_pool_size',['../yyjson_8h.html#aec93f33123755af4dfa25c1335a44184',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fset_5fval_5fpool_5fsize_167',['yyjson_mut_doc_set_val_pool_size',['../yyjson_8h.html#a9dd1f854542f298e963f0912a5a0e002',1,'yyjson.h']]], + ['yyjson_5fmut_5fdouble_168',['yyjson_mut_double',['../yyjson_8h.html#a97fb1056954960e76be19e33dc5b6df0',1,'yyjson.h']]], + ['yyjson_5fmut_5fequals_169',['yyjson_mut_equals',['../yyjson_8h.html#ab0a5c5a568b7f2c0a6301149f0f6aa84',1,'yyjson.h']]], + ['yyjson_5fmut_5fequals_5fstr_170',['yyjson_mut_equals_str',['../yyjson_8h.html#ab2c44c43c9e8ff194799fd59ae688ee2',1,'yyjson.h']]], + ['yyjson_5fmut_5fequals_5fstrn_171',['yyjson_mut_equals_strn',['../yyjson_8h.html#a1887a4e64900348851f22d528950bf7e',1,'yyjson.h']]], + ['yyjson_5fmut_5ffalse_172',['yyjson_mut_false',['../yyjson_8h.html#a184a7d8fa5b929ce01c7181712c34747',1,'yyjson.h']]], + ['yyjson_5fmut_5ffloat_173',['yyjson_mut_float',['../yyjson_8h.html#a3497c331c3a3746dab89e20a38c5daa0',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5fbool_174',['yyjson_mut_get_bool',['../yyjson_8h.html#a5ae266ef7d5c52eaa2d5afeafab41721',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5fint_175',['yyjson_mut_get_int',['../yyjson_8h.html#aad6de220fa487e31bd1bd2c2cccd9bff',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5flen_176',['yyjson_mut_get_len',['../yyjson_8h.html#aec3a6e6812f3ca8fd58c858275443fe0',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5fnum_177',['yyjson_mut_get_num',['../yyjson_8h.html#ae46242b9ad367c677a5026f6ea30c635',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5fraw_178',['yyjson_mut_get_raw',['../yyjson_8h.html#a3de6970785ebf0dd000d28c916793388',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5freal_179',['yyjson_mut_get_real',['../yyjson_8h.html#addde26cc012f50aee79a623e6be4614e',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5fsint_180',['yyjson_mut_get_sint',['../yyjson_8h.html#af9824de7303491b4e43dd423878ae0a0',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5fstr_181',['yyjson_mut_get_str',['../yyjson_8h.html#a896424a210ec4983f0634467ebe85a68',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5fsubtype_182',['yyjson_mut_get_subtype',['../yyjson_8h.html#a1a032ed912524326d22331f7dd1366f2',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5ftag_183',['yyjson_mut_get_tag',['../yyjson_8h.html#a64603b1c33c9ebc626665dea61e25abd',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5ftype_184',['yyjson_mut_get_type',['../yyjson_8h.html#a69acff4e2298d6b1a315d5f75a5eaa9d',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5ftype_5fdesc_185',['yyjson_mut_get_type_desc',['../yyjson_8h.html#a0718192e8eb1b46a83116b15ce6e67c7',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5fuint_186',['yyjson_mut_get_uint',['../yyjson_8h.html#a708869e986c30d3a03026be8ce4c2b37',1,'yyjson.h']]], + ['yyjson_5fmut_5fint_187',['yyjson_mut_int',['../yyjson_8h.html#a92e202b3738250ffee612089bdec91eb',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5farr_188',['yyjson_mut_is_arr',['../yyjson_8h.html#a538974615c719cb8ea2e8ea7705569cf',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5fbool_189',['yyjson_mut_is_bool',['../yyjson_8h.html#ad18730f04c429faa79be473de57efd5e',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5fctn_190',['yyjson_mut_is_ctn',['../yyjson_8h.html#a25f0e04af88792dd01e0ed8461ffb51b',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5ffalse_191',['yyjson_mut_is_false',['../yyjson_8h.html#aadb5f3196fe14e75914ed34d6e700076',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5fint_192',['yyjson_mut_is_int',['../yyjson_8h.html#a7bb8c32c190a8e4ce4f5e9e95623f304',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5fnull_193',['yyjson_mut_is_null',['../yyjson_8h.html#a17fda97923bb434d4214c56534586606',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5fnum_194',['yyjson_mut_is_num',['../yyjson_8h.html#a4c37c92b9977d86475cda1884c9ae52e',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5fobj_195',['yyjson_mut_is_obj',['../yyjson_8h.html#aaafe8a57b5e53c9f7f9984c80ab3be1f',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5fraw_196',['yyjson_mut_is_raw',['../yyjson_8h.html#a2bbea1da400b473e92b8429027d0f307',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5freal_197',['yyjson_mut_is_real',['../yyjson_8h.html#acfc8545d9b1af8dd8f1488e34fbac351',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5fsint_198',['yyjson_mut_is_sint',['../yyjson_8h.html#a907fa46c6ab95e9d7652392507f17e3b',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5fstr_199',['yyjson_mut_is_str',['../yyjson_8h.html#ad9f16424bfef46cd479066905f653591',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5ftrue_200',['yyjson_mut_is_true',['../yyjson_8h.html#a5c94af000c170272356f060c76f91559',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5fuint_201',['yyjson_mut_is_uint',['../yyjson_8h.html#a740d49152b7b9974c65efeab698dfb67',1,'yyjson.h']]], + ['yyjson_5fmut_5fmerge_5fpatch_202',['yyjson_mut_merge_patch',['../yyjson_8h.html#aad64266ebfbdd2a9627050cf1f3f48d7',1,'yyjson.h']]], + ['yyjson_5fmut_5fnull_203',['yyjson_mut_null',['../yyjson_8h.html#a73e0044fd0c511263cbf5cd869976475',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_204',['yyjson_mut_obj',['../yyjson_8h.html#a721dacf0e32ee6c7f18817aca806e9b2',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_205',['yyjson_mut_obj_add',['../yyjson_8h.html#ac0e1bcd9f449e4b1e62d25fb96830a62',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5farr_206',['yyjson_mut_obj_add_arr',['../yyjson_8h.html#a1d27c9ad366209b83f236d74ec7e1991',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fbool_207',['yyjson_mut_obj_add_bool',['../yyjson_8h.html#abe2f1b0c0b8cb9ceab3cdc35d4574c86',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fdouble_208',['yyjson_mut_obj_add_double',['../yyjson_8h.html#a29d6ef8f7bf8135d9b7d93cb4c7d2c0c',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5ffalse_209',['yyjson_mut_obj_add_false',['../yyjson_8h.html#a52c88fea8622d7bf4e81ecea93dc5df6',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5ffloat_210',['yyjson_mut_obj_add_float',['../yyjson_8h.html#aead391adc0e8fba55c0b230ac4d36612',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fint_211',['yyjson_mut_obj_add_int',['../yyjson_8h.html#a56726ff7e284700736e26e56afa6cf7b',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fnull_212',['yyjson_mut_obj_add_null',['../yyjson_8h.html#a6efc657d7f9aefdcba51e753fcea02c1',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fobj_213',['yyjson_mut_obj_add_obj',['../yyjson_8h.html#a7241260b7fefbbdfdf7566d207b486c5',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5freal_214',['yyjson_mut_obj_add_real',['../yyjson_8h.html#aa4b243e9de837405d83bcc3251156cea',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fsint_215',['yyjson_mut_obj_add_sint',['../yyjson_8h.html#a4070a94fca9592eefa2798dd45237d85',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fstr_216',['yyjson_mut_obj_add_str',['../yyjson_8h.html#a996f8aa51f4c1475448974cf98f28df3',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fstrcpy_217',['yyjson_mut_obj_add_strcpy',['../yyjson_8h.html#abeeca08e3b6994dddd55951a83cd648f',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fstrn_218',['yyjson_mut_obj_add_strn',['../yyjson_8h.html#a4530f9fc02f8604cef3de273feb4ab6a',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fstrncpy_219',['yyjson_mut_obj_add_strncpy',['../yyjson_8h.html#a1d544048860a8c53510d560b4d60411a',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5ftrue_220',['yyjson_mut_obj_add_true',['../yyjson_8h.html#a80380f14a448ea046eb718e068c2df6b',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fuint_221',['yyjson_mut_obj_add_uint',['../yyjson_8h.html#a5f48e712fe4988f779a35309779dd765',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fval_222',['yyjson_mut_obj_add_val',['../yyjson_8h.html#a210aa96478b0b005b1611fe2f0ecbaa2',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fclear_223',['yyjson_mut_obj_clear',['../yyjson_8h.html#aee5bc7d2ad2169a04f54e63139eddb86',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fforeach_224',['yyjson_mut_obj_foreach',['../yyjson_8h.html#ae3f12da3b11d3227dd517a1079065a3f',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fget_225',['yyjson_mut_obj_get',['../yyjson_8h.html#a90a824479a3d07f47e9bcce9bbbfcdc0',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fgetn_226',['yyjson_mut_obj_getn',['../yyjson_8h.html#a9f40302607516131c026ca5f13a29946',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5finsert_227',['yyjson_mut_obj_insert',['../yyjson_8h.html#a98e9f97614fce2a6187473eeb35274e8',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fiter_228',['yyjson_mut_obj_iter',['../yyjson_8h.html#structyyjson__mut__obj__iter',1,'']]], + ['yyjson_5fmut_5fobj_5fiter_5fget_229',['yyjson_mut_obj_iter_get',['../yyjson_8h.html#a9e79f1480256c6e2e8dfbf61da9cd853',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fiter_5fget_5fval_230',['yyjson_mut_obj_iter_get_val',['../yyjson_8h.html#aaa4bef14b71ff145fe8cdc2fa98c7f45',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fiter_5fgetn_231',['yyjson_mut_obj_iter_getn',['../yyjson_8h.html#a3d3ab359890ab167041732a871ab943d',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fiter_5fhas_5fnext_232',['yyjson_mut_obj_iter_has_next',['../yyjson_8h.html#aca1345f5057068e556cc6fadda10d04c',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fiter_5finit_233',['yyjson_mut_obj_iter_init',['../yyjson_8h.html#ad32e0e0427bda63164f12fe689a6f854',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fiter_5fnext_234',['yyjson_mut_obj_iter_next',['../yyjson_8h.html#a55f4228c2d65d497ad3cee8abe95c0be',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fiter_5fremove_235',['yyjson_mut_obj_iter_remove',['../yyjson_8h.html#a6e891b4020dd6325d6eacb5e108da3c4',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fiter_5fwith_236',['yyjson_mut_obj_iter_with',['../yyjson_8h.html#aedac207e6c2d5e031997e2b0df73db6a',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fput_237',['yyjson_mut_obj_put',['../yyjson_8h.html#acbfde7c1173b4258f83029c6dacf47c3',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fremove_238',['yyjson_mut_obj_remove',['../yyjson_8h.html#a660d533ce8b661e85c5b14e4e99e5085',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fremove_5fkey_239',['yyjson_mut_obj_remove_key',['../yyjson_8h.html#a13d5da22b245b8242d9c5c6bd6b3582b',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fremove_5fkeyn_240',['yyjson_mut_obj_remove_keyn',['../yyjson_8h.html#a36b5cade5e5cfecd47e9ae584078e2b4',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fremove_5fstr_241',['yyjson_mut_obj_remove_str',['../yyjson_8h.html#a630b55e2937f7ffe8c0dcef20497ce93',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fremove_5fstrn_242',['yyjson_mut_obj_remove_strn',['../yyjson_8h.html#ae6dfd237f7997125e606d678b3b59b5c',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5frename_5fkey_243',['yyjson_mut_obj_rename_key',['../yyjson_8h.html#aea65c64007cfa236faa17e1ac87c4e5e',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5frename_5fkeyn_244',['yyjson_mut_obj_rename_keyn',['../yyjson_8h.html#a335b9fdffa2885eb5eddd1ee2b43016b',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5freplace_245',['yyjson_mut_obj_replace',['../yyjson_8h.html#a964840d68d5d27ad2e16c63b4b2475b6',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5frotate_246',['yyjson_mut_obj_rotate',['../yyjson_8h.html#a0f1a9fea8fbc13caf61861dfdb498d46',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fsize_247',['yyjson_mut_obj_size',['../yyjson_8h.html#a601ac20666dd26bfbec016ee4cbb1b92',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fwith_5fkv_248',['yyjson_mut_obj_with_kv',['../yyjson_8h.html#afc2749d9ed694b6d0a4f5c14da19c7d4',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fwith_5fstr_249',['yyjson_mut_obj_with_str',['../yyjson_8h.html#a49cfc79051b729689f4f08592b284cc9',1,'yyjson.h']]], + ['yyjson_5fmut_5fpatch_250',['yyjson_mut_patch',['../yyjson_8h.html#ad4cca957150bd6f19fa12a4f907dffee',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5fadd_251',['yyjson_mut_ptr_add',['../yyjson_8h.html#ab49d3e532c97846b198b360602a9b5ca',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5faddn_252',['yyjson_mut_ptr_addn',['../yyjson_8h.html#aa65216783e9cd2ff949092399a2608d8',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5faddx_253',['yyjson_mut_ptr_addx',['../yyjson_8h.html#a256b4f50ed8e6830d57fbf7df7053141',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5fget_254',['yyjson_mut_ptr_get',['../yyjson_8h.html#a8add57045c09758844b9433dbe3d4451',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5fgetn_255',['yyjson_mut_ptr_getn',['../yyjson_8h.html#a7d72991b7e14b54845b639ef37c1c54c',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5fgetx_256',['yyjson_mut_ptr_getx',['../yyjson_8h.html#abb1b3f84ca4f32c72dad8eea83f3d116',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5fremove_257',['yyjson_mut_ptr_remove',['../yyjson_8h.html#a853738b59790700627f7212b6e00922d',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5fremoven_258',['yyjson_mut_ptr_removen',['../yyjson_8h.html#a3447370d5ab7657cd98c54ef17fb047b',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5fremovex_259',['yyjson_mut_ptr_removex',['../yyjson_8h.html#a68a954cfda2a17cc612bb31460b902e1',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5freplace_260',['yyjson_mut_ptr_replace',['../yyjson_8h.html#ad617af11eb6bf81926531878f0117bba',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5freplacen_261',['yyjson_mut_ptr_replacen',['../yyjson_8h.html#af324a76bd5e45899cccba7850d9ce43a',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5freplacex_262',['yyjson_mut_ptr_replacex',['../yyjson_8h.html#a41f9c6e4641f813a7a94f12ea79b34ce',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5fset_263',['yyjson_mut_ptr_set',['../yyjson_8h.html#a4de077663ebedc11a24ddbde66a72945',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5fsetn_264',['yyjson_mut_ptr_setn',['../yyjson_8h.html#ac8ba98e62d5d4c5ab9ddd44173164756',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5fsetx_265',['yyjson_mut_ptr_setx',['../yyjson_8h.html#a181de44520dcd7eb3211c617d10f4525',1,'yyjson.h']]], + ['yyjson_5fmut_5fraw_266',['yyjson_mut_raw',['../yyjson_8h.html#a7541eb4eadf59e84f1ef06889789d460',1,'yyjson.h']]], + ['yyjson_5fmut_5frawcpy_267',['yyjson_mut_rawcpy',['../yyjson_8h.html#a35cfc3e94310aaddb9eaf6609c4640d9',1,'yyjson.h']]], + ['yyjson_5fmut_5frawn_268',['yyjson_mut_rawn',['../yyjson_8h.html#a3f69c2e1cdc99ae4f9914435b7a542d7',1,'yyjson.h']]], + ['yyjson_5fmut_5frawncpy_269',['yyjson_mut_rawncpy',['../yyjson_8h.html#a8a9cc40b5f3f93b66ba191449f81fbda',1,'yyjson.h']]], + ['yyjson_5fmut_5fread_5fnumber_270',['yyjson_mut_read_number',['../yyjson_8h.html#aed1fdeb679986591d5f2f257c5cf3b60',1,'yyjson.h']]], + ['yyjson_5fmut_5freal_271',['yyjson_mut_real',['../yyjson_8h.html#a177181eee333314c7b40e2dc573fcdec',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5farr_272',['yyjson_mut_set_arr',['../yyjson_8h.html#af6dac7e5e95ccc12d79c31b96d33940a',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5fbool_273',['yyjson_mut_set_bool',['../yyjson_8h.html#a108d97873650fd95453f3c82a0b6a2aa',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5fdouble_274',['yyjson_mut_set_double',['../yyjson_8h.html#a185b931c987bc80325339ab7369753c6',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5ffloat_275',['yyjson_mut_set_float',['../yyjson_8h.html#a22cb5a0c2cfd20893de76ef77a785627',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5ffp_5fto_5ffixed_276',['yyjson_mut_set_fp_to_fixed',['../yyjson_8h.html#a0c58c31c80202d83c1c2d3bd69e3bf72',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5ffp_5fto_5ffloat_277',['yyjson_mut_set_fp_to_float',['../yyjson_8h.html#a1568c53a68914a5660a50490232737ac',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5fint_278',['yyjson_mut_set_int',['../yyjson_8h.html#a64168360e4ac45070f98c6db92b89cd7',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5fnull_279',['yyjson_mut_set_null',['../yyjson_8h.html#a6e0c3b9ff069db64e4aa14da1078b538',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5fobj_280',['yyjson_mut_set_obj',['../yyjson_8h.html#a533791670fe27f71bab321d586e11ea2',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5fraw_281',['yyjson_mut_set_raw',['../yyjson_8h.html#a510bd8af8c64911827c890bd67245282',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5freal_282',['yyjson_mut_set_real',['../yyjson_8h.html#a0cbd041b4d5a31d6dcc0bd759eae6cf7',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5fsint_283',['yyjson_mut_set_sint',['../yyjson_8h.html#ad3c513a8fd61c173c4afa404572e02f6',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5fstr_284',['yyjson_mut_set_str',['../yyjson_8h.html#a84e98fae940ff675b2a22076cbd5efc1',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5fstr_5fnoesc_285',['yyjson_mut_set_str_noesc',['../yyjson_8h.html#acaf2da602f21785dbacc66661f89a570',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5fstrn_286',['yyjson_mut_set_strn',['../yyjson_8h.html#a298c4558e0b349e4f801f210f19ac8b1',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5fuint_287',['yyjson_mut_set_uint',['../yyjson_8h.html#a84604772b235ec0f651532013f2480a8',1,'yyjson.h']]], + ['yyjson_5fmut_5fsint_288',['yyjson_mut_sint',['../yyjson_8h.html#acd434c1a97d275f97f743e47e228831a',1,'yyjson.h']]], + ['yyjson_5fmut_5fstr_289',['yyjson_mut_str',['../yyjson_8h.html#ae8d7e4c75adb1b9adb2246165491a4a3',1,'yyjson.h']]], + ['yyjson_5fmut_5fstrcpy_290',['yyjson_mut_strcpy',['../yyjson_8h.html#a95300bcf1cdb52d296e39aa1a4650741',1,'yyjson.h']]], + ['yyjson_5fmut_5fstrn_291',['yyjson_mut_strn',['../yyjson_8h.html#a13c39f37c6936907c266ba9c076dd741',1,'yyjson.h']]], + ['yyjson_5fmut_5fstrncpy_292',['yyjson_mut_strncpy',['../yyjson_8h.html#a1588bdc6f4125e5c6d1daf6b240f6ff8',1,'yyjson.h']]], + ['yyjson_5fmut_5ftrue_293',['yyjson_mut_true',['../yyjson_8h.html#a032637dbdee5a6525420384daa097dff',1,'yyjson.h']]], + ['yyjson_5fmut_5fuint_294',['yyjson_mut_uint',['../yyjson_8h.html#a893a09172b402af1bf520cf7347dfeab',1,'yyjson.h']]], + ['yyjson_5fmut_5fval_295',['yyjson_mut_val',['../yyjson_8h.html#structyyjson__mut__val',1,'']]], + ['yyjson_5fmut_5fval_5fimut_5fcopy_296',['yyjson_mut_val_imut_copy',['../yyjson_8h.html#a7a142af553e7831989593aee44f74e26',1,'yyjson.h']]], + ['yyjson_5fmut_5fval_5fmut_5fcopy_297',['yyjson_mut_val_mut_copy',['../yyjson_8h.html#a66761be40cfb010086ec798ddb44018f',1,'yyjson.h']]], + ['yyjson_5fmut_5fval_5fwrite_298',['yyjson_mut_val_write',['../yyjson_8h.html#a700da5ce5bf8bb9d3739cc73a0f51cdf',1,'yyjson.h']]], + ['yyjson_5fmut_5fval_5fwrite_5ffile_299',['yyjson_mut_val_write_file',['../yyjson_8h.html#adf8b2d3c8b57e85d58108d58c68b0db5',1,'yyjson.h']]], + ['yyjson_5fmut_5fval_5fwrite_5ffp_300',['yyjson_mut_val_write_fp',['../yyjson_8h.html#acb80caf1bf1aecd6b68f38b84628c492',1,'yyjson.h']]], + ['yyjson_5fmut_5fval_5fwrite_5fopts_301',['yyjson_mut_val_write_opts',['../yyjson_8h.html#abdaf14b79fe803289070c0e5d5a705b8',1,'yyjson.h']]], + ['yyjson_5fmut_5fwrite_302',['yyjson_mut_write',['../yyjson_8h.html#a881e2ee3f487385810829df8bc675f1f',1,'yyjson.h']]], + ['yyjson_5fmut_5fwrite_5ffile_303',['yyjson_mut_write_file',['../yyjson_8h.html#ad2a7aa77fa66a593536e3d7c3edb1d7a',1,'yyjson.h']]], + ['yyjson_5fmut_5fwrite_5ffp_304',['yyjson_mut_write_fp',['../yyjson_8h.html#ac8c17e7086a6d0a8db559ce0076c71e0',1,'yyjson.h']]], + ['yyjson_5fmut_5fwrite_5fnumber_305',['yyjson_mut_write_number',['../yyjson_8h.html#a9dec76e0a9d0c9e6039f2d15ec8b26fb',1,'yyjson.h']]], + ['yyjson_5fmut_5fwrite_5fopts_306',['yyjson_mut_write_opts',['../yyjson_8h.html#a7af42d62aa1583986c687c5cd10b010e',1,'yyjson.h']]], + ['yyjson_5fnoinline_307',['yyjson_noinline',['../yyjson_8h.html#a07affd3b28fe93360627a1c4e03b5b88',1,'yyjson.h']]], + ['yyjson_5fobj_5fforeach_308',['yyjson_obj_foreach',['../yyjson_8h.html#a32884e21b899ea5869b12aec02083002',1,'yyjson.h']]], + ['yyjson_5fobj_5fget_309',['yyjson_obj_get',['../yyjson_8h.html#a1e8a4dea2e9e9248acde14c664ab702b',1,'yyjson.h']]], + ['yyjson_5fobj_5fgetn_310',['yyjson_obj_getn',['../yyjson_8h.html#a2936ca2492ae8cdcdf0435f5259ff854',1,'yyjson.h']]], + ['yyjson_5fobj_5fiter_311',['yyjson_obj_iter',['../yyjson_8h.html#structyyjson__obj__iter',1,'']]], + ['yyjson_5fobj_5fiter_5fget_312',['yyjson_obj_iter_get',['../yyjson_8h.html#a1f3b09c4f279287f8af93b3754a41e85',1,'yyjson.h']]], + ['yyjson_5fobj_5fiter_5fget_5fval_313',['yyjson_obj_iter_get_val',['../yyjson_8h.html#a3403b9c25c8b8f2b3027f4e6d97d0ca8',1,'yyjson.h']]], + ['yyjson_5fobj_5fiter_5fgetn_314',['yyjson_obj_iter_getn',['../yyjson_8h.html#a7a45a4b5a1340bb3c2907b7faf3981be',1,'yyjson.h']]], + ['yyjson_5fobj_5fiter_5fhas_5fnext_315',['yyjson_obj_iter_has_next',['../yyjson_8h.html#ab83087bafd1f48910b62bf63200679e1',1,'yyjson.h']]], + ['yyjson_5fobj_5fiter_5finit_316',['yyjson_obj_iter_init',['../yyjson_8h.html#a2b6a426ece4ffeb9dede1f7a9970140d',1,'yyjson.h']]], + ['yyjson_5fobj_5fiter_5fnext_317',['yyjson_obj_iter_next',['../yyjson_8h.html#a6033befb82b9331d2c19c09799ec5bcf',1,'yyjson.h']]], + ['yyjson_5fobj_5fiter_5fwith_318',['yyjson_obj_iter_with',['../yyjson_8h.html#a543806a566821ccc6c7069edabc59a85',1,'yyjson.h']]], + ['yyjson_5fobj_5fsize_319',['yyjson_obj_size',['../yyjson_8h.html#aa9789f197f972dc433ea2eb622defd50',1,'yyjson.h']]], + ['yyjson_5fpadding_5fsize_320',['YYJSON_PADDING_SIZE',['../yyjson_8h.html#abbe8e69f634b1a5a78c1dae08b88e0ef',1,'yyjson.h']]], + ['yyjson_5fpatch_321',['yyjson_patch',['../yyjson_8h.html#a2d0864410efdd15e4591fecc0b4c082c',1,'yyjson.h']]], + ['yyjson_5fpatch_5fcode_322',['yyjson_patch_code',['../yyjson_8h.html#ad55a4435333880ce99fedf2aa82b7e46',1,'yyjson.h']]], + ['yyjson_5fpatch_5ferr_323',['yyjson_patch_err',['../yyjson_8h.html#structyyjson__patch__err',1,'']]], + ['yyjson_5fpatch_5ferror_5fequal_324',['YYJSON_PATCH_ERROR_EQUAL',['../yyjson_8h.html#adb43ed842536ac6e5ac17f5f693992be',1,'yyjson.h']]], + ['yyjson_5fpatch_5ferror_5finvalid_5fmember_325',['YYJSON_PATCH_ERROR_INVALID_MEMBER',['../yyjson_8h.html#a1529e42ade3c00f0b513f6cb6d722f22',1,'yyjson.h']]], + ['yyjson_5fpatch_5ferror_5finvalid_5foperation_326',['YYJSON_PATCH_ERROR_INVALID_OPERATION',['../yyjson_8h.html#a39f7a03e87df8d89482c15e5c6575ef3',1,'yyjson.h']]], + ['yyjson_5fpatch_5ferror_5finvalid_5fparameter_327',['YYJSON_PATCH_ERROR_INVALID_PARAMETER',['../yyjson_8h.html#a10037da4811bc7822093e9417a738c27',1,'yyjson.h']]], + ['yyjson_5fpatch_5ferror_5fmemory_5fallocation_328',['YYJSON_PATCH_ERROR_MEMORY_ALLOCATION',['../yyjson_8h.html#ad764ba2c4bd7d5da4107c46482871bcc',1,'yyjson.h']]], + ['yyjson_5fpatch_5ferror_5fmissing_5fkey_329',['YYJSON_PATCH_ERROR_MISSING_KEY',['../yyjson_8h.html#a5e724ca36dfc1f6cce285be9e0c1953a',1,'yyjson.h']]], + ['yyjson_5fpatch_5ferror_5fpointer_330',['YYJSON_PATCH_ERROR_POINTER',['../yyjson_8h.html#a6e43e19e2920e8d3725372efb98c3aad',1,'yyjson.h']]], + ['yyjson_5fpatch_5fsuccess_331',['YYJSON_PATCH_SUCCESS',['../yyjson_8h.html#a2f1611858d54b9a1a52b66337bc5e0c9',1,'yyjson.h']]], + ['yyjson_5fptr_5fcode_332',['yyjson_ptr_code',['../yyjson_8h.html#ac2f82adc891664bd3f7ef75591330e2f',1,'yyjson.h']]], + ['yyjson_5fptr_5fctx_333',['yyjson_ptr_ctx',['../yyjson_8h.html#structyyjson__ptr__ctx',1,'']]], + ['yyjson_5fptr_5fctx_5fappend_334',['yyjson_ptr_ctx_append',['../yyjson_8h.html#aa0dcc48007c1754a4a181d81f22cb488',1,'yyjson.h']]], + ['yyjson_5fptr_5fctx_5fremove_335',['yyjson_ptr_ctx_remove',['../yyjson_8h.html#a92d8ec53e4cf8426288d86868dc89e09',1,'yyjson.h']]], + ['yyjson_5fptr_5fctx_5freplace_336',['yyjson_ptr_ctx_replace',['../yyjson_8h.html#ac61826dc8fd7fa6cafa58fa9a45d058e',1,'yyjson.h']]], + ['yyjson_5fptr_5ferr_337',['yyjson_ptr_err',['../yyjson_8h.html#structyyjson__ptr__err',1,'']]], + ['yyjson_5fptr_5ferr_5fmemory_5fallocation_338',['YYJSON_PTR_ERR_MEMORY_ALLOCATION',['../yyjson_8h.html#ac33bbc34a7aa3d634e3ba5794521f67d',1,'yyjson.h']]], + ['yyjson_5fptr_5ferr_5fnone_339',['YYJSON_PTR_ERR_NONE',['../yyjson_8h.html#a41a31c0ddcce2b75cacb5fd2375d1ca7',1,'yyjson.h']]], + ['yyjson_5fptr_5ferr_5fnull_5froot_340',['YYJSON_PTR_ERR_NULL_ROOT',['../yyjson_8h.html#a5c8d7b159d5eede673be0c9b93897abb',1,'yyjson.h']]], + ['yyjson_5fptr_5ferr_5fparameter_341',['YYJSON_PTR_ERR_PARAMETER',['../yyjson_8h.html#a2aafb20a8b3f52a085880c262edf9264',1,'yyjson.h']]], + ['yyjson_5fptr_5ferr_5fresolve_342',['YYJSON_PTR_ERR_RESOLVE',['../yyjson_8h.html#affa45e3752beb609cb0b2fa159d1d319',1,'yyjson.h']]], + ['yyjson_5fptr_5ferr_5fset_5froot_343',['YYJSON_PTR_ERR_SET_ROOT',['../yyjson_8h.html#af8eda6e0f4e8aaedd0f410481c7c13d6',1,'yyjson.h']]], + ['yyjson_5fptr_5ferr_5fsyntax_344',['YYJSON_PTR_ERR_SYNTAX',['../yyjson_8h.html#a4eb15db0deb14f592e8d6966fd0af261',1,'yyjson.h']]], + ['yyjson_5fptr_5fget_345',['yyjson_ptr_get',['../yyjson_8h.html#a897cf07015f4f79fb4ebb0b3f58ac292',1,'yyjson.h']]], + ['yyjson_5fptr_5fget_5fbool_346',['yyjson_ptr_get_bool',['../yyjson_8h.html#ac5d042e8760c46d5db48254a7740a48e',1,'yyjson.h']]], + ['yyjson_5fptr_5fget_5fnum_347',['yyjson_ptr_get_num',['../yyjson_8h.html#a013cce9ecb58c53f0c3c9e1b081aa9c9',1,'yyjson.h']]], + ['yyjson_5fptr_5fget_5freal_348',['yyjson_ptr_get_real',['../yyjson_8h.html#a858ac36d7ad6a86e539cd84118498edb',1,'yyjson.h']]], + ['yyjson_5fptr_5fget_5fsint_349',['yyjson_ptr_get_sint',['../yyjson_8h.html#a0b3d05df2a4e4748c75f35fa8ce8c650',1,'yyjson.h']]], + ['yyjson_5fptr_5fget_5fstr_350',['yyjson_ptr_get_str',['../yyjson_8h.html#a177e25caf069be7e36b1ba17cad7dc7d',1,'yyjson.h']]], + ['yyjson_5fptr_5fget_5fuint_351',['yyjson_ptr_get_uint',['../yyjson_8h.html#a695d5d491618baa20d1f3258cf0fed8e',1,'yyjson.h']]], + ['yyjson_5fptr_5fgetn_352',['yyjson_ptr_getn',['../yyjson_8h.html#aa3612af25f159df0c0587ddf8c7c58db',1,'yyjson.h']]], + ['yyjson_5fptr_5fgetx_353',['yyjson_ptr_getx',['../yyjson_8h.html#a4b69d3a0061294fecd4a94927ad10e96',1,'yyjson.h']]], + ['yyjson_5fread_354',['yyjson_read',['../yyjson_8h.html#aeab3c2a1d86225e5b181fb1bba7587d4',1,'yyjson.h']]], + ['yyjson_5fread_5fallow_5fbom_355',['YYJSON_READ_ALLOW_BOM',['../yyjson_8h.html#af1d965029a44a6a65b9ef3f9a4ccbc09',1,'yyjson.h']]], + ['yyjson_5fread_5fallow_5fbom_20strong_356',['<strong>YYJSON_READ_ALLOW_BOM</strong>',['../api.html#yyjson_read_allow_bom',1,'']]], + ['yyjson_5fread_5fallow_5fcomments_357',['YYJSON_READ_ALLOW_COMMENTS',['../yyjson_8h.html#aff1d62b68993630e74355e4611b77520',1,'yyjson.h']]], + ['yyjson_5fread_5fallow_5fcomments_20strong_358',['<strong>YYJSON_READ_ALLOW_COMMENTS</strong>',['../api.html#yyjson_read_allow_comments',1,'']]], + ['yyjson_5fread_5fallow_5fext_5fescape_359',['YYJSON_READ_ALLOW_EXT_ESCAPE',['../yyjson_8h.html#aa0ef136f329e2b6016ceddf508e2d996',1,'yyjson.h']]], + ['yyjson_5fread_5fallow_5fext_5fescape_20strong_360',['<strong>YYJSON_READ_ALLOW_EXT_ESCAPE</strong>',['../api.html#yyjson_read_allow_ext_escape',1,'']]], + ['yyjson_5fread_5fallow_5fext_5fnumber_361',['YYJSON_READ_ALLOW_EXT_NUMBER',['../yyjson_8h.html#a17429af07c44e8d9b3f6083df78e2ab1',1,'yyjson.h']]], + ['yyjson_5fread_5fallow_5fext_5fnumber_20strong_362',['<strong>YYJSON_READ_ALLOW_EXT_NUMBER</strong>',['../api.html#yyjson_read_allow_ext_number',1,'']]], + ['yyjson_5fread_5fallow_5fext_5fwhitespace_363',['YYJSON_READ_ALLOW_EXT_WHITESPACE',['../yyjson_8h.html#a63f7c53c14f9de30d222acaa287eb490',1,'yyjson.h']]], + ['yyjson_5fread_5fallow_5fext_5fwhitespace_20strong_364',['<strong>YYJSON_READ_ALLOW_EXT_WHITESPACE</strong>',['../api.html#yyjson_read_allow_ext_whitespace',1,'']]], + ['yyjson_5fread_5fallow_5finf_5fand_5fnan_365',['YYJSON_READ_ALLOW_INF_AND_NAN',['../yyjson_8h.html#a4b5c0a7092625f0324bccec938f8862f',1,'yyjson.h']]], + ['yyjson_5fread_5fallow_5finf_5fand_5fnan_20strong_366',['<strong>YYJSON_READ_ALLOW_INF_AND_NAN</strong>',['../api.html#yyjson_read_allow_inf_and_nan',1,'']]], + ['yyjson_5fread_5fallow_5finvalid_5funicode_367',['YYJSON_READ_ALLOW_INVALID_UNICODE',['../yyjson_8h.html#abdbf139ee03d263c8a833fbef8cbf63c',1,'yyjson.h']]], + ['yyjson_5fread_5fallow_5finvalid_5funicode_20strong_368',['<strong>YYJSON_READ_ALLOW_INVALID_UNICODE</strong>',['../api.html#yyjson_read_allow_invalid_unicode',1,'']]], + ['yyjson_5fread_5fallow_5fsingle_5fquoted_5fstr_369',['YYJSON_READ_ALLOW_SINGLE_QUOTED_STR',['../yyjson_8h.html#ade31e55bb9edddbaf2cd5c0c0ba03c64',1,'yyjson.h']]], + ['yyjson_5fread_5fallow_5fsingle_5fquoted_5fstr_20strong_370',['<strong>YYJSON_READ_ALLOW_SINGLE_QUOTED_STR</strong>',['../api.html#yyjson_read_allow_single_quoted_str',1,'']]], + ['yyjson_5fread_5fallow_5ftrailing_5fcommas_371',['YYJSON_READ_ALLOW_TRAILING_COMMAS',['../yyjson_8h.html#a046c7832484dab943bed61ffac274e9c',1,'yyjson.h']]], + ['yyjson_5fread_5fallow_5ftrailing_5fcommas_20strong_372',['<strong>YYJSON_READ_ALLOW_TRAILING_COMMAS</strong>',['../api.html#yyjson_read_allow_trailing_commas',1,'']]], + ['yyjson_5fread_5fallow_5funquoted_5fkey_373',['YYJSON_READ_ALLOW_UNQUOTED_KEY',['../yyjson_8h.html#a38be7a9df2511df7d72b678379d7ca01',1,'yyjson.h']]], + ['yyjson_5fread_5fallow_5funquoted_5fkey_20strong_374',['<strong>YYJSON_READ_ALLOW_UNQUOTED_KEY</strong>',['../api.html#yyjson_read_allow_unquoted_key',1,'']]], + ['yyjson_5fread_5fbignum_5fas_5fraw_375',['YYJSON_READ_BIGNUM_AS_RAW',['../yyjson_8h.html#a305e109d45b8e2b419b7266b839dffa0',1,'yyjson.h']]], + ['yyjson_5fread_5fbignum_5fas_5fraw_20strong_376',['<strong>YYJSON_READ_BIGNUM_AS_RAW</strong>',['../api.html#yyjson_read_bignum_as_raw',1,'']]], + ['yyjson_5fread_5fcode_377',['yyjson_read_code',['../yyjson_8h.html#a0590c5ffcdd4f997a0ab5845ef624531',1,'yyjson.h']]], + ['yyjson_5fread_5ferr_378',['yyjson_read_err',['../yyjson_8h.html#structyyjson__read__err',1,'']]], + ['yyjson_5fread_5ferror_5fempty_5fcontent_379',['YYJSON_READ_ERROR_EMPTY_CONTENT',['../yyjson_8h.html#ad8eeaba5611ace5817c7019067cf85fd',1,'yyjson.h']]], + ['yyjson_5fread_5ferror_5ffile_5fopen_380',['YYJSON_READ_ERROR_FILE_OPEN',['../yyjson_8h.html#a76cb39cc0755460feedaf3fcf32cea01',1,'yyjson.h']]], + ['yyjson_5fread_5ferror_5ffile_5fread_381',['YYJSON_READ_ERROR_FILE_READ',['../yyjson_8h.html#a2cea1aba7baff98fee5affd7737fc969',1,'yyjson.h']]], + ['yyjson_5fread_5ferror_5finvalid_5fcomment_382',['YYJSON_READ_ERROR_INVALID_COMMENT',['../yyjson_8h.html#a70209d60e93b24573e8830911c7940a6',1,'yyjson.h']]], + ['yyjson_5fread_5ferror_5finvalid_5fnumber_383',['YYJSON_READ_ERROR_INVALID_NUMBER',['../yyjson_8h.html#a8f8b24bb3b8dafc3f135a926b06da2fa',1,'yyjson.h']]], + ['yyjson_5fread_5ferror_5finvalid_5fparameter_384',['YYJSON_READ_ERROR_INVALID_PARAMETER',['../yyjson_8h.html#a841a5fd5b187b1ff40232e9d36a5a156',1,'yyjson.h']]], + ['yyjson_5fread_5ferror_5finvalid_5fstring_385',['YYJSON_READ_ERROR_INVALID_STRING',['../yyjson_8h.html#ab4f2d4e7fa716c89d3a31f74504898a9',1,'yyjson.h']]], + ['yyjson_5fread_5ferror_5fjson_5fstructure_386',['YYJSON_READ_ERROR_JSON_STRUCTURE',['../yyjson_8h.html#ad5bf7b51ed21d3c99500a8f488b2b4b0',1,'yyjson.h']]], + ['yyjson_5fread_5ferror_5fliteral_387',['YYJSON_READ_ERROR_LITERAL',['../yyjson_8h.html#a18810c64371c556ea42c0addb9e25bdc',1,'yyjson.h']]], + ['yyjson_5fread_5ferror_5fmemory_5fallocation_388',['YYJSON_READ_ERROR_MEMORY_ALLOCATION',['../yyjson_8h.html#a0b729e2b5afc21914a723897dda10c3f',1,'yyjson.h']]], + ['yyjson_5fread_5ferror_5fmore_389',['YYJSON_READ_ERROR_MORE',['../yyjson_8h.html#a48706a3eb7761926a6c0ec3239dda76c',1,'yyjson.h']]], + ['yyjson_5fread_5ferror_5funexpected_5fcharacter_390',['YYJSON_READ_ERROR_UNEXPECTED_CHARACTER',['../yyjson_8h.html#aec30d870399447d1b611c400dff5a55c',1,'yyjson.h']]], + ['yyjson_5fread_5ferror_5funexpected_5fcontent_391',['YYJSON_READ_ERROR_UNEXPECTED_CONTENT',['../yyjson_8h.html#a0d42ebb09b02ed4e579938b96a833070',1,'yyjson.h']]], + ['yyjson_5fread_5ferror_5funexpected_5fend_392',['YYJSON_READ_ERROR_UNEXPECTED_END',['../yyjson_8h.html#ae82405796b54b235125a5dd14c06650b',1,'yyjson.h']]], + ['yyjson_5fread_5ffile_393',['yyjson_read_file',['../yyjson_8h.html#a605ac08b083fb65331d7fa5eb5d32225',1,'yyjson.h']]], + ['yyjson_5fread_5fflag_394',['yyjson_read_flag',['../yyjson_8h.html#a36af676813028c1360e8b343768f0e81',1,'yyjson.h']]], + ['yyjson_5fread_5ffp_395',['yyjson_read_fp',['../yyjson_8h.html#a7f8c3918f8ab161bf7e2e203ff0f291e',1,'yyjson.h']]], + ['yyjson_5fread_5finsitu_396',['YYJSON_READ_INSITU',['../yyjson_8h.html#aa476cdc60442393b93dd0474ed4f08bc',1,'yyjson.h']]], + ['yyjson_5fread_5finsitu_20strong_397',['<strong>YYJSON_READ_INSITU</strong>',['../api.html#yyjson_read_insitu',1,'']]], + ['yyjson_5fread_5fjson5_398',['YYJSON_READ_JSON5',['../yyjson_8h.html#a8618ef9d06392f4267d853d8c0986319',1,'yyjson.h']]], + ['yyjson_5fread_5fjson5_20strong_399',['<strong>YYJSON_READ_JSON5</strong>',['../api.html#yyjson_read_json5',1,'']]], + ['yyjson_5fread_5fmax_5fmemory_5fusage_400',['yyjson_read_max_memory_usage',['../yyjson_8h.html#ae511cac592355c2f60f170402b9d8dbf',1,'yyjson.h']]], + ['yyjson_5fread_5fnoflag_401',['YYJSON_READ_NOFLAG',['../yyjson_8h.html#a8940a4ae4ba3467bb7bc6c5ee3deb2ea',1,'yyjson.h']]], + ['yyjson_5fread_5fnoflag_200_20strong_402',['<strong>YYJSON_READ_NOFLAG = 0</strong>',['../api.html#yyjson_read_noflag--0',1,'']]], + ['yyjson_5fread_5fnumber_403',['yyjson_read_number',['../yyjson_8h.html#a2b7dfa8495fb1d839e6294f2e7c4b58a',1,'yyjson.h']]], + ['yyjson_5fread_5fnumber_5fas_5fraw_404',['YYJSON_READ_NUMBER_AS_RAW',['../yyjson_8h.html#a1cafb3655e6e9e60f019d2b7a9bf79c2',1,'yyjson.h']]], + ['yyjson_5fread_5fnumber_5fas_5fraw_20strong_405',['<strong>YYJSON_READ_NUMBER_AS_RAW</strong>',['../api.html#yyjson_read_number_as_raw',1,'']]], + ['yyjson_5fread_5fopts_406',['yyjson_read_opts',['../yyjson_8h.html#acf234d21f0cb4b7fc89381ef25e9f0a8',1,'yyjson.h']]], + ['yyjson_5fread_5fstop_5fwhen_5fdone_407',['YYJSON_READ_STOP_WHEN_DONE',['../yyjson_8h.html#ad2fb99734b237a7af74924443fe5260e',1,'yyjson.h']]], + ['yyjson_5fread_5fstop_5fwhen_5fdone_20strong_408',['<strong>YYJSON_READ_STOP_WHEN_DONE</strong>',['../api.html#yyjson_read_stop_when_done',1,'']]], + ['yyjson_5fread_5fsuccess_409',['YYJSON_READ_SUCCESS',['../yyjson_8h.html#a5b8948d47748a81d6a4abf94949e0e88',1,'yyjson.h']]], + ['yyjson_5freserved_5fbit_410',['YYJSON_RESERVED_BIT',['../yyjson_8h.html#a3aad1e39dcb4aec3e7e477500c220a53',1,'yyjson.h']]], + ['yyjson_5freserved_5fmask_411',['YYJSON_RESERVED_MASK',['../yyjson_8h.html#af44f401747d1fa6dd1b600c54de919ad',1,'yyjson.h']]], + ['yyjson_5fset_5fbool_412',['yyjson_set_bool',['../yyjson_8h.html#ad99ceda574b466f8102699e52564c8da',1,'yyjson.h']]], + ['yyjson_5fset_5fdouble_413',['yyjson_set_double',['../yyjson_8h.html#acfc9cec2bb59669d777fe219730793b8',1,'yyjson.h']]], + ['yyjson_5fset_5ffloat_414',['yyjson_set_float',['../yyjson_8h.html#aae763338f1c11ad9da6be1cf522daf6e',1,'yyjson.h']]], + ['yyjson_5fset_5ffp_5fto_5ffixed_415',['yyjson_set_fp_to_fixed',['../yyjson_8h.html#a1f72379c8ef022cbe6ad815101c8acec',1,'yyjson.h']]], + ['yyjson_5fset_5ffp_5fto_5ffloat_416',['yyjson_set_fp_to_float',['../yyjson_8h.html#a0705e92b9d45c609be958ec7f2351900',1,'yyjson.h']]], + ['yyjson_5fset_5fint_417',['yyjson_set_int',['../yyjson_8h.html#af1f4dd90c0bd891cb139e72cfd588789',1,'yyjson.h']]], + ['yyjson_5fset_5fnull_418',['yyjson_set_null',['../yyjson_8h.html#a079fdf2d481492c8533104437dbf2283',1,'yyjson.h']]], + ['yyjson_5fset_5fraw_419',['yyjson_set_raw',['../yyjson_8h.html#a75ee22602fb750b67fda804fb653ef1e',1,'yyjson.h']]], + ['yyjson_5fset_5freal_420',['yyjson_set_real',['../yyjson_8h.html#ac782a838c6378f022434d7ab3a3b333d',1,'yyjson.h']]], + ['yyjson_5fset_5fsint_421',['yyjson_set_sint',['../yyjson_8h.html#ad0f58bd6ac0289fd55d09b02fa3d4743',1,'yyjson.h']]], + ['yyjson_5fset_5fstr_422',['yyjson_set_str',['../yyjson_8h.html#a9a0f4082d2244b7264a819bbc32ebbdf',1,'yyjson.h']]], + ['yyjson_5fset_5fstr_5fnoesc_423',['yyjson_set_str_noesc',['../yyjson_8h.html#a44386e6e1084aaea376238723bd11d74',1,'yyjson.h']]], + ['yyjson_5fset_5fstrn_424',['yyjson_set_strn',['../yyjson_8h.html#a9e49dc52b6209708df0ccf4ddf49b8c4',1,'yyjson.h']]], + ['yyjson_5fset_5fuint_425',['yyjson_set_uint',['../yyjson_8h.html#a90614444c9d6bbd7d8586176986adbc5',1,'yyjson.h']]], + ['yyjson_5fstdc_5fver_426',['YYJSON_STDC_VER',['../yyjson_8h.html#a0a914f47b39417dd25fe728eef7d8f00',1,'yyjson.h']]], + ['yyjson_5fstr_5fchunk_427',['yyjson_str_chunk',['../yyjson_8h.html#structyyjson__str__chunk',1,'']]], + ['yyjson_5fstr_5fpool_428',['yyjson_str_pool',['../yyjson_8h.html#structyyjson__str__pool',1,'']]], + ['yyjson_5fsubtype_429',['yyjson_subtype',['../yyjson_8h.html#a012fa5561c6c87879cceee4e0879a6b6',1,'yyjson.h']]], + ['yyjson_5fsubtype_5fbit_430',['YYJSON_SUBTYPE_BIT',['../yyjson_8h.html#aa451fb3ba37fd42f69253e7d727836b7',1,'yyjson.h']]], + ['yyjson_5fsubtype_5ffalse_431',['YYJSON_SUBTYPE_FALSE',['../yyjson_8h.html#a17877edf97bce2f3d7cf993cc9662a30',1,'yyjson.h']]], + ['yyjson_5fsubtype_5fmask_432',['YYJSON_SUBTYPE_MASK',['../yyjson_8h.html#a7d15bc48e9734dab6620e35ec30cc348',1,'yyjson.h']]], + ['yyjson_5fsubtype_5fnoesc_433',['YYJSON_SUBTYPE_NOESC',['../yyjson_8h.html#af470523a4d0e9d89dfed5bcfae287bdb',1,'yyjson.h']]], + ['yyjson_5fsubtype_5fnone_434',['YYJSON_SUBTYPE_NONE',['../yyjson_8h.html#a2a9e116a307c8dbcebc82305eca91fd3',1,'yyjson.h']]], + ['yyjson_5fsubtype_5freal_435',['YYJSON_SUBTYPE_REAL',['../yyjson_8h.html#a1efeaba2c4446788c9b30d20e1b82f73',1,'yyjson.h']]], + ['yyjson_5fsubtype_5fsint_436',['YYJSON_SUBTYPE_SINT',['../yyjson_8h.html#ab5b72a76b60c408b8a7f2dfc31fbcbce',1,'yyjson.h']]], + ['yyjson_5fsubtype_5ftrue_437',['YYJSON_SUBTYPE_TRUE',['../yyjson_8h.html#ae6a759cdc8865c891a89a67abd18a60e',1,'yyjson.h']]], + ['yyjson_5fsubtype_5fuint_438',['YYJSON_SUBTYPE_UINT',['../yyjson_8h.html#aa6a600891d4a3551b83a30afe576fd57',1,'yyjson.h']]], + ['yyjson_5ftag_5fbit_439',['YYJSON_TAG_BIT',['../yyjson_8h.html#aa7acf05a1b4d7c04db1b09fffbedf35b',1,'yyjson.h']]], + ['yyjson_5ftag_5fmask_440',['YYJSON_TAG_MASK',['../yyjson_8h.html#ac91eb401b770474ab76706ec58ac803d',1,'yyjson.h']]], + ['yyjson_5ftype_441',['yyjson_type',['../yyjson_8h.html#a4d30446a286f54e2f95847f3c6669493',1,'yyjson.h']]], + ['yyjson_5ftype_5farr_442',['YYJSON_TYPE_ARR',['../yyjson_8h.html#a69ef1dad0f3735313d762050178ed320',1,'yyjson.h']]], + ['yyjson_5ftype_5fbit_443',['YYJSON_TYPE_BIT',['../yyjson_8h.html#a9bc0cb130d1498238e942b93b8d8effd',1,'yyjson.h']]], + ['yyjson_5ftype_5fbool_444',['YYJSON_TYPE_BOOL',['../yyjson_8h.html#a085018fbc0363aad32708fdf8b247e36',1,'yyjson.h']]], + ['yyjson_5ftype_5fmask_445',['YYJSON_TYPE_MASK',['../yyjson_8h.html#a53b930a8e372ddd7c8d4d389caad391e',1,'yyjson.h']]], + ['yyjson_5ftype_5fnone_446',['YYJSON_TYPE_NONE',['../yyjson_8h.html#a1db6e43b1df0a46cee92d837ad553cc2',1,'yyjson.h']]], + ['yyjson_5ftype_5fnull_447',['YYJSON_TYPE_NULL',['../yyjson_8h.html#a3c003e6f71f42835957e6b9cf845a2e2',1,'yyjson.h']]], + ['yyjson_5ftype_5fnum_448',['YYJSON_TYPE_NUM',['../yyjson_8h.html#a720689b031a276a194e43c276fea9154',1,'yyjson.h']]], + ['yyjson_5ftype_5fobj_449',['YYJSON_TYPE_OBJ',['../yyjson_8h.html#a79764d1a17bdd0a5b4f2b553a9d114b9',1,'yyjson.h']]], + ['yyjson_5ftype_5fraw_450',['YYJSON_TYPE_RAW',['../yyjson_8h.html#ae548138e539cfcebdfad39a58da44470',1,'yyjson.h']]], + ['yyjson_5ftype_5fstr_451',['YYJSON_TYPE_STR',['../yyjson_8h.html#a3a75e44d4e709fbfafa3137a15edbb68',1,'yyjson.h']]], + ['yyjson_5fu64_5fto_5ff64_5fno_5fimpl_452',['YYJSON_U64_TO_F64_NO_IMPL',['../yyjson_8h.html#a39520db5ba6361257b7b51783357b877',1,'yyjson.h']]], + ['yyjson_5funlikely_453',['yyjson_unlikely',['../yyjson_8h.html#a13065ff687cfd3b49eb38739676594f3',1,'yyjson.h']]], + ['yyjson_5fval_454',['yyjson_val',['../yyjson_8h.html#structyyjson__val',1,'']]], + ['yyjson_5fval_5fchunk_455',['yyjson_val_chunk',['../yyjson_8h.html#structyyjson__val__chunk',1,'']]], + ['yyjson_5fval_5fmut_5fcopy_456',['yyjson_val_mut_copy',['../yyjson_8h.html#a04ff184b833fe2d6932309821e2b2e5a',1,'yyjson.h']]], + ['yyjson_5fval_5fpool_457',['yyjson_val_pool',['../yyjson_8h.html#structyyjson__val__pool',1,'']]], + ['yyjson_5fval_5funi_458',['yyjson_val_uni',['../yyjson_8h.html#unionyyjson__val__uni',1,'']]], + ['yyjson_5fval_5fwrite_459',['yyjson_val_write',['../yyjson_8h.html#a00409eb59aee687f7778d00510b59d38',1,'yyjson.h']]], + ['yyjson_5fval_5fwrite_5ffile_460',['yyjson_val_write_file',['../yyjson_8h.html#a725cc27bd7bd37c1d18c41589abd34db',1,'yyjson.h']]], + ['yyjson_5fval_5fwrite_5ffp_461',['yyjson_val_write_fp',['../yyjson_8h.html#a3e5ad66dd43cc51500fff0926bae21a0',1,'yyjson.h']]], + ['yyjson_5fval_5fwrite_5fopts_462',['yyjson_val_write_opts',['../yyjson_8h.html#a79720744960c9b4fdabbfb28379bbeb4',1,'yyjson.h']]], + ['yyjson_5fversion_463',['yyjson_version',['../yyjson_8h.html#a874f912f9c023bc353d1a770798017a1',1,'yyjson.h']]], + ['yyjson_5fversion_5fhex_464',['YYJSON_VERSION_HEX',['../yyjson_8h.html#ac02a007abcdf7a80894f839acafa5963',1,'yyjson.h']]], + ['yyjson_5fversion_5fmajor_465',['YYJSON_VERSION_MAJOR',['../yyjson_8h.html#a78cf6dd1700f2cd7d7f256b4c2339d8b',1,'yyjson.h']]], + ['yyjson_5fversion_5fminor_466',['YYJSON_VERSION_MINOR',['../yyjson_8h.html#a4c03e94b391df0f2b019c8df6c6e70f1',1,'yyjson.h']]], + ['yyjson_5fversion_5fpatch_467',['YYJSON_VERSION_PATCH',['../yyjson_8h.html#aa6d66fc870aac34589593a0bf6561647',1,'yyjson.h']]], + ['yyjson_5fversion_5fstring_468',['YYJSON_VERSION_STRING',['../yyjson_8h.html#a7b766ff66469615aab5bed9f760aab07',1,'yyjson.h']]], + ['yyjson_5fwrite_469',['yyjson_write',['../yyjson_8h.html#ad231975496ac3788fe5d69804e295443',1,'yyjson.h']]], + ['yyjson_5fwrite_5fallow_5finf_5fand_5fnan_470',['YYJSON_WRITE_ALLOW_INF_AND_NAN',['../yyjson_8h.html#a38fa90e4cf75b0a78148de2058c1b3bd',1,'yyjson.h']]], + ['yyjson_5fwrite_5fallow_5finf_5fand_5fnan_20strong_471',['<strong>YYJSON_WRITE_ALLOW_INF_AND_NAN</strong>',['../api.html#yyjson_write_allow_inf_and_nan',1,'']]], + ['yyjson_5fwrite_5fallow_5finvalid_5funicode_472',['YYJSON_WRITE_ALLOW_INVALID_UNICODE',['../yyjson_8h.html#ae2709fd5ec704ef7a569d62195e4652d',1,'yyjson.h']]], + ['yyjson_5fwrite_5fallow_5finvalid_5funicode_20strong_473',['<strong>YYJSON_WRITE_ALLOW_INVALID_UNICODE</strong>',['../api.html#yyjson_write_allow_invalid_unicode',1,'']]], + ['yyjson_5fwrite_5fcode_474',['yyjson_write_code',['../yyjson_8h.html#ae19102b96509817f1188f732be19642b',1,'yyjson.h']]], + ['yyjson_5fwrite_5ferr_475',['yyjson_write_err',['../yyjson_8h.html#structyyjson__write__err',1,'']]], + ['yyjson_5fwrite_5ferror_5ffile_5fopen_476',['YYJSON_WRITE_ERROR_FILE_OPEN',['../yyjson_8h.html#a41cb8e304e08d7455f43c753bfa19b82',1,'yyjson.h']]], + ['yyjson_5fwrite_5ferror_5ffile_5fwrite_477',['YYJSON_WRITE_ERROR_FILE_WRITE',['../yyjson_8h.html#a7910a72a728d4f245d43417a42e2e91a',1,'yyjson.h']]], + ['yyjson_5fwrite_5ferror_5finvalid_5fparameter_478',['YYJSON_WRITE_ERROR_INVALID_PARAMETER',['../yyjson_8h.html#a7f123c4c3d850fd6c4e46a2b3aad4508',1,'yyjson.h']]], + ['yyjson_5fwrite_5ferror_5finvalid_5fstring_479',['YYJSON_WRITE_ERROR_INVALID_STRING',['../yyjson_8h.html#ab8f221edd44b0c61d9ff78637bfca05e',1,'yyjson.h']]], + ['yyjson_5fwrite_5ferror_5finvalid_5fvalue_5ftype_480',['YYJSON_WRITE_ERROR_INVALID_VALUE_TYPE',['../yyjson_8h.html#a40c9783509f730cb3ef67080be9444d8',1,'yyjson.h']]], + ['yyjson_5fwrite_5ferror_5fmemory_5fallocation_481',['YYJSON_WRITE_ERROR_MEMORY_ALLOCATION',['../yyjson_8h.html#a4d515d2d192d13281ffe69c1d95cdd49',1,'yyjson.h']]], + ['yyjson_5fwrite_5ferror_5fnan_5for_5finf_482',['YYJSON_WRITE_ERROR_NAN_OR_INF',['../yyjson_8h.html#a179477749cf2aa26c0841089debe4756',1,'yyjson.h']]], + ['yyjson_5fwrite_5fescape_5fslashes_483',['YYJSON_WRITE_ESCAPE_SLASHES',['../yyjson_8h.html#a0eeb35b40e688fce9dd61ed400984042',1,'yyjson.h']]], + ['yyjson_5fwrite_5fescape_5fslashes_20strong_484',['<strong>YYJSON_WRITE_ESCAPE_SLASHES</strong>',['../api.html#yyjson_write_escape_slashes',1,'']]], + ['yyjson_5fwrite_5fescape_5funicode_485',['YYJSON_WRITE_ESCAPE_UNICODE',['../yyjson_8h.html#ac234e82f7a1203e656bcbb0af2ce8c01',1,'yyjson.h']]], + ['yyjson_5fwrite_5fescape_5funicode_20strong_486',['<strong>YYJSON_WRITE_ESCAPE_UNICODE</strong>',['../api.html#yyjson_write_escape_unicode',1,'']]], + ['yyjson_5fwrite_5ffile_487',['yyjson_write_file',['../yyjson_8h.html#a2d82bd0dc78358326b03e28b9acc19e4',1,'yyjson.h']]], + ['yyjson_5fwrite_5fflag_488',['yyjson_write_flag',['../yyjson_8h.html#afb7989387fc481f678e13325c18e6338',1,'yyjson.h']]], + ['yyjson_5fwrite_5ffp_489',['yyjson_write_fp',['../yyjson_8h.html#a29eea00c04954094701bd90235a7073e',1,'yyjson.h']]], + ['yyjson_5fwrite_5ffp_5fflag_5fbits_490',['YYJSON_WRITE_FP_FLAG_BITS',['../yyjson_8h.html#a88948a21da1cda94c1e96e9f2c694d90',1,'yyjson.h']]], + ['yyjson_5fwrite_5ffp_5fprec_5fbits_491',['YYJSON_WRITE_FP_PREC_BITS',['../yyjson_8h.html#ae661cccbf7206ef595909458768f11fd',1,'yyjson.h']]], + ['yyjson_5fwrite_5ffp_5fto_5ffixed_492',['YYJSON_WRITE_FP_TO_FIXED',['../yyjson_8h.html#aa6456ada04bdbe304c1f3fb14e309ac6',1,'yyjson.h']]], + ['yyjson_5fwrite_5ffp_5fto_5ffixed_20prec_20strong_493',['<strong>YYJSON_WRITE_FP_TO_FIXED(prec)</strong>',['../api.html#yyjson_write_fp_to_fixedprec',1,'']]], + ['yyjson_5fwrite_5ffp_5fto_5ffloat_494',['YYJSON_WRITE_FP_TO_FLOAT',['../yyjson_8h.html#ab1d81ddd4cc7bd198d537a7b6cd17ad3',1,'yyjson.h']]], + ['yyjson_5fwrite_5ffp_5fto_5ffloat_20strong_495',['<strong>YYJSON_WRITE_FP_TO_FLOAT</strong>',['../api.html#yyjson_write_fp_to_float',1,'']]], + ['yyjson_5fwrite_5finf_5fand_5fnan_5fas_5fnull_496',['YYJSON_WRITE_INF_AND_NAN_AS_NULL',['../yyjson_8h.html#a4408e0c5928db936b89d49ccf255100b',1,'yyjson.h']]], + ['yyjson_5fwrite_5finf_5fand_5fnan_5fas_5fnull_20strong_497',['<strong>YYJSON_WRITE_INF_AND_NAN_AS_NULL</strong>',['../api.html#yyjson_write_inf_and_nan_as_null',1,'']]], + ['yyjson_5fwrite_5fnewline_5fat_5fend_498',['YYJSON_WRITE_NEWLINE_AT_END',['../yyjson_8h.html#ab0cfae40d7ae6489d73c6cf5db9c09e1',1,'yyjson.h']]], + ['yyjson_5fwrite_5fnewline_5fat_5fend_20strong_499',['<strong>YYJSON_WRITE_NEWLINE_AT_END</strong>',['../api.html#yyjson_write_newline_at_end',1,'']]], + ['yyjson_5fwrite_5fnoflag_500',['YYJSON_WRITE_NOFLAG',['../yyjson_8h.html#ae152a6e8e8c6e4efd798fa6eca9d311f',1,'yyjson.h']]], + ['yyjson_5fwrite_5fnoflag_200_20strong_501',['<strong>YYJSON_WRITE_NOFLAG = 0</strong>',['../api.html#yyjson_write_noflag--0',1,'']]], + ['yyjson_5fwrite_5fnumber_502',['yyjson_write_number',['../yyjson_8h.html#a26250087651ed3282ef31a27a0673333',1,'yyjson.h']]], + ['yyjson_5fwrite_5fopts_503',['yyjson_write_opts',['../yyjson_8h.html#a43ccc01254525cef16699e72079e3e49',1,'yyjson.h']]], + ['yyjson_5fwrite_5fpretty_504',['YYJSON_WRITE_PRETTY',['../yyjson_8h.html#aebdaa55a1673e99d2dcea01a15c633be',1,'yyjson.h']]], + ['yyjson_5fwrite_5fpretty_20strong_505',['<strong>YYJSON_WRITE_PRETTY</strong>',['../api.html#yyjson_write_pretty',1,'']]], + ['yyjson_5fwrite_5fpretty_5ftwo_5fspaces_506',['YYJSON_WRITE_PRETTY_TWO_SPACES',['../yyjson_8h.html#a7b13411e137d8085b68b2e0fc9d6736b',1,'yyjson.h']]], + ['yyjson_5fwrite_5fpretty_5ftwo_5fspaces_20strong_507',['<strong>YYJSON_WRITE_PRETTY_TWO_SPACES</strong>',['../api.html#yyjson_write_pretty_two_spaces',1,'']]], + ['yyjson_5fwrite_5fsuccess_508',['YYJSON_WRITE_SUCCESS',['../yyjson_8h.html#a20d8f66fbe535a20596001dc2022f0b4',1,'yyjson.h']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_3.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_3.js new file mode 100644 index 00000000000..b1cef95a77b --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['3_0',['AWS EC2 (AMD EPYC 7R32, gcc 9.3)',['../index.html#aws-ec2-amd-epyc-7r32-gcc-93',1,'']]], + ['3_200_202021_2005_2025_1',['0.3.0 (2021-05-25)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md030-2021-05-25',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_4.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_4.js new file mode 100644 index 00000000000..92fd63e4c47 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['4_200_202021_2012_2012_0',['0.4.0 (2021-12-12)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md040-2021-12-12',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_5.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_5.js new file mode 100644 index 00000000000..8c548458cf3 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['5_200_202022_2005_2025_0',['0.5.0 (2022-05-25)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md050-2022-05-25',1,'']]], + ['5_201_202022_2006_2017_1',['0.5.1 (2022-06-17)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md051-2022-06-17',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_6.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_6.js new file mode 100644 index 00000000000..69e1e6a6ff4 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['6_200_202022_2012_2012_0',['0.6.0 (2022-12-12)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md060-2022-12-12',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_7.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_7.js new file mode 100644 index 00000000000..e5f2947e088 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['7_200_202023_2005_2025_0',['0.7.0 (2023-05-25)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md070-2023-05-25',1,'']]], + ['7r32_20gcc_209_203_1',['AWS EC2 (AMD EPYC 7R32, gcc 9.3)',['../index.html#aws-ec2-amd-epyc-7r32-gcc-93',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_8.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_8.js new file mode 100644 index 00000000000..1b3de74f438 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['8_200_202023_2009_2013_0',['0.8.0 (2023-09-13)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md080-2023-09-13',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_9.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_9.js new file mode 100644 index 00000000000..91b0dabf01e --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['9_200_202024_2004_2008_0',['0.9.0 (2024-04-08)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md090-2024-04-08',1,'']]], + ['9_202025_2008_2018_1',['0.12.0 (2025-08-18)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md0129-2025-08-18',1,'']]], + ['9_203_2',['AWS EC2 (AMD EPYC 7R32, gcc 9.3)',['../index.html#aws-ec2-amd-epyc-7r32-gcc-93',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_a.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_a.js new file mode 100644 index 00000000000..8e007517910 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5f_5fbool_5ftrue_5ffalse_5fare_5fdefined_0',['__bool_true_false_are_defined',['../yyjson_8h.html#a665b0cc9ee2ced31785321d55cde349e',1,'yyjson.h']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_b.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_b.js new file mode 100644 index 00000000000..87a876f37d1 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_b.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['a_20dependency_0',['Use CMake as a dependency',['../building-and-testing.html#use-cmake-as-a-dependency',1,'']]], + ['a_20third_20party_20allocator_20library_1',['Use a third-party allocator library',['../api.html#use-a-third-party-allocator-library',1,'']]], + ['a14_20clang_2012_2',['iPhone (Apple A14, clang 12)',['../index.html#iphone-apple-a14-clang-12',1,'']]], + ['accessing_20json_20document_3',['Accessing JSON Document',['../api.html#accessing-json-document',1,'']]], + ['added_4',['Added',['../md__c_h_a_n_g_e_l_o_g.html#added',1,'Added'],['../md__c_h_a_n_g_e_l_o_g.html#added-1',1,'Added'],['../md__c_h_a_n_g_e_l_o_g.html#added-2',1,'Added'],['../md__c_h_a_n_g_e_l_o_g.html#added-3',1,'Added'],['../md__c_h_a_n_g_e_l_o_g.html#added-4',1,'Added'],['../md__c_h_a_n_g_e_l_o_g.html#added-5',1,'Added'],['../md__c_h_a_n_g_e_l_o_g.html#added-6',1,'Added'],['../md__c_h_a_n_g_e_l_o_g.html#added-7',1,'Added'],['../md__c_h_a_n_g_e_l_o_g.html#added-8',1,'Added'],['../md__c_h_a_n_g_e_l_o_g.html#added-9',1,'Added'],['../md__c_h_a_n_g_e_l_o_g.html#added-10',1,'Added'],['../md__c_h_a_n_g_e_l_o_g.html#added-11',1,'Added']]], + ['alc_5',['alc',['../yyjson_8h.html#ab1a7e03f48bb31760030fbdab7d6597b',1,'yyjson_doc::alc'],['../yyjson_8h.html#a1b6f74828e64779d450ffd0cbe61f08f',1,'yyjson_mut_doc::alc']]], + ['allocator_6',['Memory Allocator',['../api.html#memory-allocator',1,'']]], + ['allocator_7',['Stack memory allocator',['../api.html#stack-memory-allocator',1,'']]], + ['allocator_20for_20multiple_20json_8',['Single allocator for multiple JSON',['../api.html#single-allocator-for-multiple-json',1,'']]], + ['allocator_20library_9',['Use a third-party allocator library',['../api.html#use-a-third-party-allocator-library',1,'']]], + ['amd_20epyc_207r32_20gcc_209_203_10',['AWS EC2 (AMD EPYC 7R32, gcc 9.3)',['../index.html#aws-ec2-amd-epyc-7r32-gcc-93',1,'']]], + ['and_20ctest_11',['Testing With CMake and CTest',['../building-and-testing.html#testing-with-cmake-and-ctest',1,'']]], + ['and_20patch_12',['JSON Pointer and Patch',['../api.html#json-pointer-and-patch',1,'']]], + ['and_20testing_13',['Building and testing',['../building-and-testing.html',1,'']]], + ['api_14',['API',['../api.html',1,'']]], + ['api_20design_15',['API Design',['../api.html#api-design',1,'']]], + ['api_20for_20immutable_20mutable_20data_16',['API for immutable/mutable data',['../api.html#api-for-immutablemutable-data',1,'']]], + ['api_20for_20string_17',['API for string',['../api.html#api-for-string',1,'']]], + ['api_20prefix_18',['API prefix',['../api.html#api-prefix',1,'']]], + ['apple_20a14_20clang_2012_19',['iPhone (Apple A14, clang 12)',['../index.html#iphone-apple-a14-clang-12',1,'']]], + ['arr_20',['arr',['../yyjson_8h.html#ad58dcd5f514d5f3c71412ec86af9e2d0',1,'yyjson_mut_arr_iter']]], + ['array_21',['JSON Array',['../api.html#json-array',1,'']]], + ['array_20creation_22',['JSON Array Creation',['../api.html#json-array-creation',1,'']]], + ['array_20iterator_23',['JSON Array Iterator',['../api.html#json-array-iterator',1,'']]], + ['array_20modification_24',['JSON Array Modification',['../api.html#json-array-modification',1,'']]], + ['as_20a_20dependency_25',['Use CMake as a dependency',['../building-and-testing.html#use-cmake-as-a-dependency',1,'']]], + ['aws_20ec2_20amd_20epyc_207r32_20gcc_209_203_26',['AWS EC2 (AMD EPYC 7R32, gcc 9.3)',['../index.html#aws-ec2-amd-epyc-7r32-gcc-93',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_c.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_c.js new file mode 100644 index 00000000000..163ae655927 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_c.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['better_20performance_20yyjson_20prefers_3a_0',['For better performance, yyjson prefers:',['../index.html#for-better-performance-yyjson-prefers',1,'']]], + ['build_20the_20library_1',['Use CMake to build the library',['../building-and-testing.html#use-cmake-to-build-the-library',1,'']]], + ['building_20and_20testing_2',['Building and testing',['../building-and-testing.html',1,'']]], + ['built_20with_20yyjson_3',['Built With yyjson',['../index.html#built-with-yyjson',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_d.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_d.js new file mode 100644 index 00000000000..d0f1deae89f --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_d.js @@ -0,0 +1,26 @@ +var searchData= +[ + ['changed_0',['Changed',['../md__c_h_a_n_g_e_l_o_g.html#changed',1,'Changed'],['../md__c_h_a_n_g_e_l_o_g.html#changed-1',1,'Changed'],['../md__c_h_a_n_g_e_l_o_g.html#changed-2',1,'Changed'],['../md__c_h_a_n_g_e_l_o_g.html#changed-3',1,'Changed'],['../md__c_h_a_n_g_e_l_o_g.html#changed-4',1,'Changed'],['../md__c_h_a_n_g_e_l_o_g.html#changed-5',1,'Changed'],['../md__c_h_a_n_g_e_l_o_g.html#changed-6',1,'Changed'],['../md__c_h_a_n_g_e_l_o_g.html#changed-7',1,'Changed'],['../md__c_h_a_n_g_e_l_o_g.html#changed-8',1,'Changed'],['../md__c_h_a_n_g_e_l_o_g.html#changed-9',1,'Changed']]], + ['changelog_1',['Changelog',['../md__c_h_a_n_g_e_l_o_g.html',1,'']]], + ['character_2',['NUL Character',['../api.html#nul-character',1,'']]], + ['character_20encoding_3',['Character Encoding',['../api.html#character-encoding',1,'']]], + ['check_4',['Null Check',['../api.html#null-check',1,'']]], + ['clang_2012_5',['iPhone (Apple A14, clang 12)',['../index.html#iphone-apple-a14-clang-12',1,'']]], + ['cmake_6',['CMake',['../building-and-testing.html#cmake',1,'']]], + ['cmake_20and_20ctest_7',['Testing With CMake and CTest',['../building-and-testing.html#testing-with-cmake-and-ctest',1,'']]], + ['cmake_20as_20a_20dependency_8',['Use CMake as a dependency',['../building-and-testing.html#use-cmake-as-a-dependency',1,'']]], + ['cmake_20to_20build_20the_20library_9',['Use CMake to build the library',['../building-and-testing.html#use-cmake-to-build-the-library',1,'']]], + ['cmake_20to_20generate_20documentation_10',['Use CMake to generate documentation',['../building-and-testing.html#use-cmake-to-generate-documentation',1,'']]], + ['cmake_20to_20generate_20project_11',['Use CMake to generate project',['../building-and-testing.html#use-cmake-to-generate-project',1,'']]], + ['code_12',['Sample Code',['../index.html#sample-code',1,'']]], + ['code_13',['code',['../yyjson_8h.html#a550600110929a7030f464a460b5b62cb',1,'yyjson_read_err::code'],['../yyjson_8h.html#ae4aa66c2b00d3173291dd48ae398b1c0',1,'yyjson_write_err::code'],['../yyjson_8h.html#ac82ebe0c715ad673a943e784f325b538',1,'yyjson_ptr_err::code'],['../yyjson_8h.html#a96dab43e96fd2d54e26deb4c25792ab7',1,'yyjson_patch_err::code'],['../api.html#sample-code-1',1,'Sample code'],['../building-and-testing.html#source-code',1,'Source code']]], + ['compile_20time_20options_14',['Compile-time Options',['../building-and-testing.html#compile-time-options',1,'']]], + ['conversion_20function_15',['Number conversion function',['../api.html#number-conversion-function',1,'']]], + ['create_20the_20state_20for_20incremental_20reading_16',['Create the state for incremental reading',['../api.html#create-the-state-for-incremental-reading',1,'']]], + ['creating_20json_20document_17',['Creating JSON Document',['../api.html#creating-json-document',1,'']]], + ['creation_18',['Creation',['../api.html#json-array-creation',1,'JSON Array Creation'],['../api.html#json-object-creation',1,'JSON Object Creation'],['../api.html#json-value-creation',1,'JSON Value Creation']]], + ['ctest_19',['Testing With CMake and CTest',['../building-and-testing.html#testing-with-cmake-and-ctest',1,'']]], + ['ctn_20',['ctn',['../yyjson_8h.html#a9fabdf4380dc8f44f9b7479b54c75dd0',1,'yyjson_ptr_ctx']]], + ['ctx_21',['ctx',['../yyjson_8h.html#ae9499246c39efd68c206280de1b31f45',1,'yyjson_alc']]], + ['cur_22',['cur',['../yyjson_8h.html#a7445de186190ceef09c5be6d589e6a65',1,'yyjson_arr_iter::cur'],['../yyjson_8h.html#af15973d5bdb6b7b8ea79571220771027',1,'yyjson_obj_iter::cur'],['../yyjson_8h.html#a2498a5bf91ec2eb7d4a00f89dc465954',1,'yyjson_mut_arr_iter::cur'],['../yyjson_8h.html#a4fc0b10196e010a7e5e9a2cec6769904',1,'yyjson_mut_obj_iter::cur']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_e.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_e.js new file mode 100644 index 00000000000..69ed13299a0 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_e.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['dat_5fread_0',['dat_read',['../yyjson_8h.html#a72bc53a422a133e2eba68ffa736f9e8b',1,'yyjson_doc']]], + ['data_1',['API for immutable/mutable data',['../api.html#api-for-immutablemutable-data',1,'']]], + ['data_20structures_2',['Data Structures',['../data-structures.html',1,'']]], + ['dependency_3',['Use CMake as a dependency',['../building-and-testing.html#use-cmake-as-a-dependency',1,'']]], + ['deprecated_20list_4',['Deprecated List',['../deprecated.html',1,'']]], + ['design_5',['API Design',['../api.html#api-design',1,'']]], + ['document_6',['Document',['../api.html#accessing-json-document',1,'Accessing JSON Document'],['../api.html#creating-json-document',1,'Creating JSON Document'],['../data-structures.html#immutable-document',1,'Immutable Document'],['../api.html#json-document',1,'JSON Document'],['../api.html#mutable-document',1,'Mutable Document'],['../data-structures.html#mutable-document-1',1,'Mutable Document']]], + ['documentation_7',['Documentation',['../index.html#documentation',1,'']]], + ['documentation_8',['Use CMake to generate documentation',['../building-and-testing.html#use-cmake-to-generate-documentation',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/all_f.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_f.js new file mode 100644 index 00000000000..5e93ead643a --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/all_f.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['ec2_20amd_20epyc_207r32_20gcc_209_203_0',['AWS EC2 (AMD EPYC 7R32, gcc 9.3)',['../index.html#aws-ec2-amd-epyc-7r32-gcc-93',1,'']]], + ['encoding_1',['Character Encoding',['../api.html#character-encoding',1,'']]], + ['epyc_207r32_20gcc_209_203_2',['AWS EC2 (AMD EPYC 7R32, gcc 9.3)',['../index.html#aws-ec2-amd-epyc-7r32-gcc-93',1,'']]], + ['error_20handling_3',['Reader error handling',['../api.html#reader-error-handling',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/classes_0.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/classes_0.js new file mode 100644 index 00000000000..11e3ca9b4d7 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/classes_0.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['yyjson_5falc_0',['yyjson_alc',['../yyjson_8h.html#structyyjson__alc',1,'']]], + ['yyjson_5farr_5fiter_1',['yyjson_arr_iter',['../yyjson_8h.html#structyyjson__arr__iter',1,'']]], + ['yyjson_5fdoc_2',['yyjson_doc',['../yyjson_8h.html#structyyjson__doc',1,'']]], + ['yyjson_5fmut_5farr_5fiter_3',['yyjson_mut_arr_iter',['../yyjson_8h.html#structyyjson__mut__arr__iter',1,'']]], + ['yyjson_5fmut_5fdoc_4',['yyjson_mut_doc',['../yyjson_8h.html#structyyjson__mut__doc',1,'']]], + ['yyjson_5fmut_5fobj_5fiter_5',['yyjson_mut_obj_iter',['../yyjson_8h.html#structyyjson__mut__obj__iter',1,'']]], + ['yyjson_5fmut_5fval_6',['yyjson_mut_val',['../yyjson_8h.html#structyyjson__mut__val',1,'']]], + ['yyjson_5fobj_5fiter_7',['yyjson_obj_iter',['../yyjson_8h.html#structyyjson__obj__iter',1,'']]], + ['yyjson_5fpatch_5ferr_8',['yyjson_patch_err',['../yyjson_8h.html#structyyjson__patch__err',1,'']]], + ['yyjson_5fptr_5fctx_9',['yyjson_ptr_ctx',['../yyjson_8h.html#structyyjson__ptr__ctx',1,'']]], + ['yyjson_5fptr_5ferr_10',['yyjson_ptr_err',['../yyjson_8h.html#structyyjson__ptr__err',1,'']]], + ['yyjson_5fread_5ferr_11',['yyjson_read_err',['../yyjson_8h.html#structyyjson__read__err',1,'']]], + ['yyjson_5fstr_5fchunk_12',['yyjson_str_chunk',['../yyjson_8h.html#structyyjson__str__chunk',1,'']]], + ['yyjson_5fstr_5fpool_13',['yyjson_str_pool',['../yyjson_8h.html#structyyjson__str__pool',1,'']]], + ['yyjson_5fval_14',['yyjson_val',['../yyjson_8h.html#structyyjson__val',1,'']]], + ['yyjson_5fval_5fchunk_15',['yyjson_val_chunk',['../yyjson_8h.html#structyyjson__val__chunk',1,'']]], + ['yyjson_5fval_5fpool_16',['yyjson_val_pool',['../yyjson_8h.html#structyyjson__val__pool',1,'']]], + ['yyjson_5fval_5funi_17',['yyjson_val_uni',['../yyjson_8h.html#unionyyjson__val__uni',1,'']]], + ['yyjson_5fwrite_5ferr_18',['yyjson_write_err',['../yyjson_8h.html#structyyjson__write__err',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/close.svg b/lib/yyjson-0.12.0/doc/doxygen/html/search/close.svg new file mode 100644 index 00000000000..337d6cc1329 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/defines_0.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/defines_0.js new file mode 100644 index 00000000000..8e007517910 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/defines_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5f_5fbool_5ftrue_5ffalse_5fare_5fdefined_0',['__bool_true_false_are_defined',['../yyjson_8h.html#a665b0cc9ee2ced31785321d55cde349e',1,'yyjson.h']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/defines_1.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/defines_1.js new file mode 100644 index 00000000000..b43bbf4717a --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/defines_1.js @@ -0,0 +1,59 @@ +var searchData= +[ + ['yyjson_5falign_0',['yyjson_align',['../yyjson_8h.html#a37185af21190fa0852a9b1ef9e041151',1,'yyjson.h']]], + ['yyjson_5fapi_1',['yyjson_api',['../yyjson_8h.html#a691136e772913e98860a791e65b70f04',1,'yyjson.h']]], + ['yyjson_5fapi_5finline_2',['yyjson_api_inline',['../yyjson_8h.html#a682886dc8be2307076b125b496b15570',1,'yyjson.h']]], + ['yyjson_5farr_5fforeach_3',['yyjson_arr_foreach',['../yyjson_8h.html#a60fd8094ee3eff6e7b629471f50aa139',1,'yyjson.h']]], + ['yyjson_5fcpp_5fver_4',['YYJSON_CPP_VER',['../yyjson_8h.html#a2b6ed8ca435b89b44a9c66cad30fd9d5',1,'yyjson.h']]], + ['yyjson_5fdeprecated_5',['yyjson_deprecated',['../yyjson_8h.html#af0cb2540fb4d4fc9809933a3020efaf8',1,'yyjson.h']]], + ['yyjson_5fgcc_5fver_6',['YYJSON_GCC_VER',['../yyjson_8h.html#a0de4b27af40f104d2b1aac72edd6832e',1,'yyjson.h']]], + ['yyjson_5fhas_5fattribute_7',['yyjson_has_attribute',['../yyjson_8h.html#ad7a6d7801cb0c35ee08fc6ba9d343106',1,'yyjson.h']]], + ['yyjson_5fhas_5fbuiltin_8',['yyjson_has_builtin',['../yyjson_8h.html#a35f777885b981bd9caf1c24737b40921',1,'yyjson.h']]], + ['yyjson_5fhas_5fconstant_5fp_9',['YYJSON_HAS_CONSTANT_P',['../yyjson_8h.html#acf1b73925eff2306f4e23837cd874c8d',1,'yyjson.h']]], + ['yyjson_5fhas_5ffeature_10',['yyjson_has_feature',['../yyjson_8h.html#ae8f6fbea7b0eee0545bcf8d272ce7f33',1,'yyjson.h']]], + ['yyjson_5fhas_5finclude_11',['yyjson_has_include',['../yyjson_8h.html#afe50edcbf467f426784326f2282c51fd',1,'yyjson.h']]], + ['yyjson_5finline_12',['yyjson_inline',['../yyjson_8h.html#a45a5da162ba8a920163c74b71f48ead8',1,'yyjson.h']]], + ['yyjson_5fis_5freal_5fgcc_13',['YYJSON_IS_REAL_GCC',['../yyjson_8h.html#a4781760a87346473a82f26fdd897fa52',1,'yyjson.h']]], + ['yyjson_5flikely_14',['yyjson_likely',['../yyjson_8h.html#a2fcd8be107f850c0d81ba7bff62edeb7',1,'yyjson.h']]], + ['yyjson_5fmsc_5fver_15',['YYJSON_MSC_VER',['../yyjson_8h.html#a77011c6b1268f9068abe1975b92e38e0',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fforeach_16',['yyjson_mut_arr_foreach',['../yyjson_8h.html#a23a525f4192a237730aedfad55798fdb',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fforeach_17',['yyjson_mut_obj_foreach',['../yyjson_8h.html#ae3f12da3b11d3227dd517a1079065a3f',1,'yyjson.h']]], + ['yyjson_5fnoinline_18',['yyjson_noinline',['../yyjson_8h.html#a07affd3b28fe93360627a1c4e03b5b88',1,'yyjson.h']]], + ['yyjson_5fobj_5fforeach_19',['yyjson_obj_foreach',['../yyjson_8h.html#a32884e21b899ea5869b12aec02083002',1,'yyjson.h']]], + ['yyjson_5fpadding_5fsize_20',['YYJSON_PADDING_SIZE',['../yyjson_8h.html#abbe8e69f634b1a5a78c1dae08b88e0ef',1,'yyjson.h']]], + ['yyjson_5freserved_5fbit_21',['YYJSON_RESERVED_BIT',['../yyjson_8h.html#a3aad1e39dcb4aec3e7e477500c220a53',1,'yyjson.h']]], + ['yyjson_5freserved_5fmask_22',['YYJSON_RESERVED_MASK',['../yyjson_8h.html#af44f401747d1fa6dd1b600c54de919ad',1,'yyjson.h']]], + ['yyjson_5fstdc_5fver_23',['YYJSON_STDC_VER',['../yyjson_8h.html#a0a914f47b39417dd25fe728eef7d8f00',1,'yyjson.h']]], + ['yyjson_5fsubtype_5fbit_24',['YYJSON_SUBTYPE_BIT',['../yyjson_8h.html#aa451fb3ba37fd42f69253e7d727836b7',1,'yyjson.h']]], + ['yyjson_5fsubtype_5ffalse_25',['YYJSON_SUBTYPE_FALSE',['../yyjson_8h.html#a17877edf97bce2f3d7cf993cc9662a30',1,'yyjson.h']]], + ['yyjson_5fsubtype_5fmask_26',['YYJSON_SUBTYPE_MASK',['../yyjson_8h.html#a7d15bc48e9734dab6620e35ec30cc348',1,'yyjson.h']]], + ['yyjson_5fsubtype_5fnoesc_27',['YYJSON_SUBTYPE_NOESC',['../yyjson_8h.html#af470523a4d0e9d89dfed5bcfae287bdb',1,'yyjson.h']]], + ['yyjson_5fsubtype_5fnone_28',['YYJSON_SUBTYPE_NONE',['../yyjson_8h.html#a2a9e116a307c8dbcebc82305eca91fd3',1,'yyjson.h']]], + ['yyjson_5fsubtype_5freal_29',['YYJSON_SUBTYPE_REAL',['../yyjson_8h.html#a1efeaba2c4446788c9b30d20e1b82f73',1,'yyjson.h']]], + ['yyjson_5fsubtype_5fsint_30',['YYJSON_SUBTYPE_SINT',['../yyjson_8h.html#ab5b72a76b60c408b8a7f2dfc31fbcbce',1,'yyjson.h']]], + ['yyjson_5fsubtype_5ftrue_31',['YYJSON_SUBTYPE_TRUE',['../yyjson_8h.html#ae6a759cdc8865c891a89a67abd18a60e',1,'yyjson.h']]], + ['yyjson_5fsubtype_5fuint_32',['YYJSON_SUBTYPE_UINT',['../yyjson_8h.html#aa6a600891d4a3551b83a30afe576fd57',1,'yyjson.h']]], + ['yyjson_5ftag_5fbit_33',['YYJSON_TAG_BIT',['../yyjson_8h.html#aa7acf05a1b4d7c04db1b09fffbedf35b',1,'yyjson.h']]], + ['yyjson_5ftag_5fmask_34',['YYJSON_TAG_MASK',['../yyjson_8h.html#ac91eb401b770474ab76706ec58ac803d',1,'yyjson.h']]], + ['yyjson_5ftype_5farr_35',['YYJSON_TYPE_ARR',['../yyjson_8h.html#a69ef1dad0f3735313d762050178ed320',1,'yyjson.h']]], + ['yyjson_5ftype_5fbit_36',['YYJSON_TYPE_BIT',['../yyjson_8h.html#a9bc0cb130d1498238e942b93b8d8effd',1,'yyjson.h']]], + ['yyjson_5ftype_5fbool_37',['YYJSON_TYPE_BOOL',['../yyjson_8h.html#a085018fbc0363aad32708fdf8b247e36',1,'yyjson.h']]], + ['yyjson_5ftype_5fmask_38',['YYJSON_TYPE_MASK',['../yyjson_8h.html#a53b930a8e372ddd7c8d4d389caad391e',1,'yyjson.h']]], + ['yyjson_5ftype_5fnone_39',['YYJSON_TYPE_NONE',['../yyjson_8h.html#a1db6e43b1df0a46cee92d837ad553cc2',1,'yyjson.h']]], + ['yyjson_5ftype_5fnull_40',['YYJSON_TYPE_NULL',['../yyjson_8h.html#a3c003e6f71f42835957e6b9cf845a2e2',1,'yyjson.h']]], + ['yyjson_5ftype_5fnum_41',['YYJSON_TYPE_NUM',['../yyjson_8h.html#a720689b031a276a194e43c276fea9154',1,'yyjson.h']]], + ['yyjson_5ftype_5fobj_42',['YYJSON_TYPE_OBJ',['../yyjson_8h.html#a79764d1a17bdd0a5b4f2b553a9d114b9',1,'yyjson.h']]], + ['yyjson_5ftype_5fraw_43',['YYJSON_TYPE_RAW',['../yyjson_8h.html#ae548138e539cfcebdfad39a58da44470',1,'yyjson.h']]], + ['yyjson_5ftype_5fstr_44',['YYJSON_TYPE_STR',['../yyjson_8h.html#a3a75e44d4e709fbfafa3137a15edbb68',1,'yyjson.h']]], + ['yyjson_5fu64_5fto_5ff64_5fno_5fimpl_45',['YYJSON_U64_TO_F64_NO_IMPL',['../yyjson_8h.html#a39520db5ba6361257b7b51783357b877',1,'yyjson.h']]], + ['yyjson_5funlikely_46',['yyjson_unlikely',['../yyjson_8h.html#a13065ff687cfd3b49eb38739676594f3',1,'yyjson.h']]], + ['yyjson_5fversion_5fhex_47',['YYJSON_VERSION_HEX',['../yyjson_8h.html#ac02a007abcdf7a80894f839acafa5963',1,'yyjson.h']]], + ['yyjson_5fversion_5fmajor_48',['YYJSON_VERSION_MAJOR',['../yyjson_8h.html#a78cf6dd1700f2cd7d7f256b4c2339d8b',1,'yyjson.h']]], + ['yyjson_5fversion_5fminor_49',['YYJSON_VERSION_MINOR',['../yyjson_8h.html#a4c03e94b391df0f2b019c8df6c6e70f1',1,'yyjson.h']]], + ['yyjson_5fversion_5fpatch_50',['YYJSON_VERSION_PATCH',['../yyjson_8h.html#aa6d66fc870aac34589593a0bf6561647',1,'yyjson.h']]], + ['yyjson_5fversion_5fstring_51',['YYJSON_VERSION_STRING',['../yyjson_8h.html#a7b766ff66469615aab5bed9f760aab07',1,'yyjson.h']]], + ['yyjson_5fwrite_5ffp_5fflag_5fbits_52',['YYJSON_WRITE_FP_FLAG_BITS',['../yyjson_8h.html#a88948a21da1cda94c1e96e9f2c694d90',1,'yyjson.h']]], + ['yyjson_5fwrite_5ffp_5fprec_5fbits_53',['YYJSON_WRITE_FP_PREC_BITS',['../yyjson_8h.html#ae661cccbf7206ef595909458768f11fd',1,'yyjson.h']]], + ['yyjson_5fwrite_5ffp_5fto_5ffixed_54',['YYJSON_WRITE_FP_TO_FIXED',['../yyjson_8h.html#aa6456ada04bdbe304c1f3fb14e309ac6',1,'yyjson.h']]], + ['yyjson_5fwrite_5ffp_5fto_5ffloat_55',['YYJSON_WRITE_FP_TO_FLOAT',['../yyjson_8h.html#ab1d81ddd4cc7bd198d537a7b6cd17ad3',1,'yyjson.h']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/files_0.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/files_0.js new file mode 100644 index 00000000000..c3198e19a16 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['yyjson_2eh_0',['yyjson.h',['../yyjson_8h.html',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/functions_0.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/functions_0.js new file mode 100644 index 00000000000..5290319b80a --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/functions_0.js @@ -0,0 +1,327 @@ +var searchData= +[ + ['yyjson_5falc_5fdyn_5ffree_0',['yyjson_alc_dyn_free',['../yyjson_8h.html#aaa9b7978e7b40e6d5d8d1cb3da0568d6',1,'yyjson.h']]], + ['yyjson_5falc_5fdyn_5fnew_1',['yyjson_alc_dyn_new',['../yyjson_8h.html#a6a90ae91b82c2e8d6665a28a691eee18',1,'yyjson.h']]], + ['yyjson_5falc_5fpool_5finit_2',['yyjson_alc_pool_init',['../yyjson_8h.html#a6068c4293a2b35493b18421b9afbd3d5',1,'yyjson.h']]], + ['yyjson_5farr_5fget_3',['yyjson_arr_get',['../yyjson_8h.html#ac709738fbf9da708c28992c40746fcbf',1,'yyjson.h']]], + ['yyjson_5farr_5fget_5ffirst_4',['yyjson_arr_get_first',['../yyjson_8h.html#ad54c34d490dd8e479e21e4cb29bc814b',1,'yyjson.h']]], + ['yyjson_5farr_5fget_5flast_5',['yyjson_arr_get_last',['../yyjson_8h.html#a15bbce96107aa455670ebe9aab98964d',1,'yyjson.h']]], + ['yyjson_5farr_5fiter_5fhas_5fnext_6',['yyjson_arr_iter_has_next',['../yyjson_8h.html#a216b976b352fe001d580fe837a844e79',1,'yyjson.h']]], + ['yyjson_5farr_5fiter_5finit_7',['yyjson_arr_iter_init',['../yyjson_8h.html#a95aebc83fff9793f7701a6e37df5e03f',1,'yyjson.h']]], + ['yyjson_5farr_5fiter_5fnext_8',['yyjson_arr_iter_next',['../yyjson_8h.html#ab608a351427921421a2e23877399acd5',1,'yyjson.h']]], + ['yyjson_5farr_5fiter_5fwith_9',['yyjson_arr_iter_with',['../yyjson_8h.html#a38b10c3293b817b25d9dd985da121cb5',1,'yyjson.h']]], + ['yyjson_5farr_5fsize_10',['yyjson_arr_size',['../yyjson_8h.html#a0ea8514c92f39fd93ddcbe93a7f466e5',1,'yyjson.h']]], + ['yyjson_5fdeprecated_11',['yyjson_deprecated',['../yyjson_8h.html#a16058fb6568716afd9754100862d460d',1,'yyjson_deprecated("renamed to yyjson_doc_ptr_get") yyjson_api_inline yyjson_val *yyjson_doc_get_pointer(yyjson_doc *doc: yyjson.h'],['../yyjson_8h.html#a5761a41e92b6f6ea1f5de114e36efb12',1,'yyjson_deprecated("renamed to yyjson_doc_ptr_getn") yyjson_api_inline yyjson_val *yyjson_doc_get_pointern(yyjson_doc *doc: yyjson.h'],['../yyjson_8h.html#a128b475e13bb4301babef4e03b9fda52',1,'yyjson_deprecated("renamed to yyjson_mut_doc_ptr_get") yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_get_pointer(yyjson_mut_doc *doc: yyjson.h'],['../yyjson_8h.html#a9c6dd96d063bacfa6413f7de90f90d91',1,'yyjson_deprecated("renamed to yyjson_mut_doc_ptr_getn") yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_get_pointern(yyjson_mut_doc *doc: yyjson.h'],['../yyjson_8h.html#a2d26305e46b3a7f72619232805fa10c6',1,'yyjson_deprecated("renamed to yyjson_ptr_get") yyjson_api_inline yyjson_val *yyjson_get_pointer(yyjson_val *val: yyjson.h'],['../yyjson_8h.html#a2acc549f8ce6bcac63ea89271b73d27a',1,'yyjson_deprecated("renamed to yyjson_ptr_getn") yyjson_api_inline yyjson_val *yyjson_get_pointern(yyjson_val *val: yyjson.h'],['../yyjson_8h.html#a84eb8968317b261a2e29528c1d8cf031',1,'yyjson_deprecated("renamed to yyjson_mut_ptr_get") yyjson_api_inline yyjson_mut_val *yyjson_mut_get_pointer(yyjson_mut_val *val: yyjson.h'],['../yyjson_8h.html#a23d9715d999b1156d91adadeac913c32',1,'yyjson_deprecated("renamed to yyjson_mut_ptr_getn") yyjson_api_inline yyjson_mut_val *yyjson_mut_get_pointern(yyjson_mut_val *val: yyjson.h'],['../yyjson_8h.html#a1cea8f887599cb77d9394ecd07ae875e',1,'yyjson_deprecated("renamed to unsafe_yyjson_ptr_getn") yyjson_api_inline yyjson_val *unsafe_yyjson_get_pointer(yyjson_val *val: yyjson.h'],['../yyjson_8h.html#a779bd9e777e3a58d7e3ea5c6977d1965',1,'yyjson_deprecated("renamed to unsafe_yyjson_mut_ptr_getx") yyjson_api_inline yyjson_mut_val *unsafe_yyjson_mut_get_pointer(yyjson_mut_val *val: yyjson.h']]], + ['yyjson_5fdoc_5ffree_12',['yyjson_doc_free',['../yyjson_8h.html#adad98bd766cf52d99f2c54dcb120786d',1,'yyjson.h']]], + ['yyjson_5fdoc_5fget_5fread_5fsize_13',['yyjson_doc_get_read_size',['../yyjson_8h.html#a33580e2537c25685fd1209951dcbc967',1,'yyjson.h']]], + ['yyjson_5fdoc_5fget_5froot_14',['yyjson_doc_get_root',['../yyjson_8h.html#aa33a13a85b840b3dbc1f8534db2bd8fc',1,'yyjson.h']]], + ['yyjson_5fdoc_5fget_5fval_5fcount_15',['yyjson_doc_get_val_count',['../yyjson_8h.html#a89cb55aebc946e462968a2bcace5ba5a',1,'yyjson.h']]], + ['yyjson_5fdoc_5fmut_5fcopy_16',['yyjson_doc_mut_copy',['../yyjson_8h.html#a083356ecb65e45453033285f3d836de9',1,'yyjson.h']]], + ['yyjson_5fdoc_5fptr_5fget_17',['yyjson_doc_ptr_get',['../yyjson_8h.html#a9a9b30d275e211df9b84b91f4b95907a',1,'yyjson.h']]], + ['yyjson_5fdoc_5fptr_5fgetn_18',['yyjson_doc_ptr_getn',['../yyjson_8h.html#a5b12a7b59d79123f9de71510efa2df3d',1,'yyjson.h']]], + ['yyjson_5fdoc_5fptr_5fgetx_19',['yyjson_doc_ptr_getx',['../yyjson_8h.html#a53930a7b337295aefe993760fcc05645',1,'yyjson.h']]], + ['yyjson_5fequals_20',['yyjson_equals',['../yyjson_8h.html#adabd9eb44fac843109d6bc79f12ff6ff',1,'yyjson.h']]], + ['yyjson_5fequals_5fstr_21',['yyjson_equals_str',['../yyjson_8h.html#a147b5b874e6b939731f1b6c15abcbbca',1,'yyjson.h']]], + ['yyjson_5fequals_5fstrn_22',['yyjson_equals_strn',['../yyjson_8h.html#a1a7a91be15978b45345976c8432769aa',1,'yyjson.h']]], + ['yyjson_5fget_5fbool_23',['yyjson_get_bool',['../yyjson_8h.html#aaed218041aa262337e179d487f4c770c',1,'yyjson.h']]], + ['yyjson_5fget_5fint_24',['yyjson_get_int',['../yyjson_8h.html#a383b0a924785a30a49f6c59de235cd28',1,'yyjson.h']]], + ['yyjson_5fget_5flen_25',['yyjson_get_len',['../yyjson_8h.html#ae4b5e4edc9713d9f48e2a6750ad5ebff',1,'yyjson.h']]], + ['yyjson_5fget_5fnum_26',['yyjson_get_num',['../yyjson_8h.html#ac24ffc0726b50f38283c9f01f4e58d9b',1,'yyjson.h']]], + ['yyjson_5fget_5fraw_27',['yyjson_get_raw',['../yyjson_8h.html#a5e90e838f969425f75372d4b4246d145',1,'yyjson.h']]], + ['yyjson_5fget_5freal_28',['yyjson_get_real',['../yyjson_8h.html#a5bfc74dbba137fc4d662702666f5073a',1,'yyjson.h']]], + ['yyjson_5fget_5fsint_29',['yyjson_get_sint',['../yyjson_8h.html#ac4aab52f91a8b365344a74812be4e712',1,'yyjson.h']]], + ['yyjson_5fget_5fstr_30',['yyjson_get_str',['../yyjson_8h.html#a986e994db00b2749e000af0a4331454c',1,'yyjson.h']]], + ['yyjson_5fget_5fsubtype_31',['yyjson_get_subtype',['../yyjson_8h.html#a7435fee591b112fbdcc455fc60b1416b',1,'yyjson.h']]], + ['yyjson_5fget_5ftag_32',['yyjson_get_tag',['../yyjson_8h.html#a022754b3eabf9ec15a4f8e9d52db015f',1,'yyjson.h']]], + ['yyjson_5fget_5ftype_33',['yyjson_get_type',['../yyjson_8h.html#a7d8d98b60284e646b8b22a8341d99a7f',1,'yyjson.h']]], + ['yyjson_5fget_5ftype_5fdesc_34',['yyjson_get_type_desc',['../yyjson_8h.html#a489b91cc6038a17ebc90193bc00e9e8b',1,'yyjson.h']]], + ['yyjson_5fget_5fuint_35',['yyjson_get_uint',['../yyjson_8h.html#ab439bc90f6631a67dd3ed4626eb3b4ad',1,'yyjson.h']]], + ['yyjson_5fincr_5ffree_36',['yyjson_incr_free',['../yyjson_8h.html#a333bd893cdd22a379e2476e90b5532f2',1,'yyjson.h']]], + ['yyjson_5fincr_5fnew_37',['yyjson_incr_new',['../yyjson_8h.html#a49c78bbfa5c961c1807d332f52d201f4',1,'yyjson.h']]], + ['yyjson_5fincr_5fread_38',['yyjson_incr_read',['../yyjson_8h.html#adf5847c72fffb345de33667fd935097a',1,'yyjson.h']]], + ['yyjson_5fis_5farr_39',['yyjson_is_arr',['../yyjson_8h.html#add7037998fb39b3e2d1b3caf59f9d66a',1,'yyjson.h']]], + ['yyjson_5fis_5fbool_40',['yyjson_is_bool',['../yyjson_8h.html#a2e3dedcd83d286602101018024f21c52',1,'yyjson.h']]], + ['yyjson_5fis_5fctn_41',['yyjson_is_ctn',['../yyjson_8h.html#a01aace85ea46ac42974d86fb217a5086',1,'yyjson.h']]], + ['yyjson_5fis_5ffalse_42',['yyjson_is_false',['../yyjson_8h.html#a6105e202bdb2e3b0bd1b561722b80afa',1,'yyjson.h']]], + ['yyjson_5fis_5fint_43',['yyjson_is_int',['../yyjson_8h.html#a5079543ec26e3634d0d97491195f0daf',1,'yyjson.h']]], + ['yyjson_5fis_5fnull_44',['yyjson_is_null',['../yyjson_8h.html#a81cc3185457d7fd86f3818319d7efe18',1,'yyjson.h']]], + ['yyjson_5fis_5fnum_45',['yyjson_is_num',['../yyjson_8h.html#aedbd4efc6436d66382936b8c450a5877',1,'yyjson.h']]], + ['yyjson_5fis_5fobj_46',['yyjson_is_obj',['../yyjson_8h.html#affa9d4c51b9073804d91ef50e3f5ebd6',1,'yyjson.h']]], + ['yyjson_5fis_5fraw_47',['yyjson_is_raw',['../yyjson_8h.html#a286c610e7e27b8b4667a93eba2e2fa28',1,'yyjson.h']]], + ['yyjson_5fis_5freal_48',['yyjson_is_real',['../yyjson_8h.html#a3cf0581ecad48a658da626cf86903f42',1,'yyjson.h']]], + ['yyjson_5fis_5fsint_49',['yyjson_is_sint',['../yyjson_8h.html#ac3de217ef6c479380e38f35a2a166477',1,'yyjson.h']]], + ['yyjson_5fis_5fstr_50',['yyjson_is_str',['../yyjson_8h.html#a52f3358d27af0b1f1aeb3fe4dc7da1c0',1,'yyjson.h']]], + ['yyjson_5fis_5ftrue_51',['yyjson_is_true',['../yyjson_8h.html#a527bfefae4532c4061e56d581ec4fc01',1,'yyjson.h']]], + ['yyjson_5fis_5fuint_52',['yyjson_is_uint',['../yyjson_8h.html#ac4b6eb9e397730bbb264f64d46cafacf',1,'yyjson.h']]], + ['yyjson_5flocate_5fpos_53',['yyjson_locate_pos',['../yyjson_8h.html#ac742b11ff26fb9af6362ffd2f3f21061',1,'yyjson.h']]], + ['yyjson_5fmerge_5fpatch_54',['yyjson_merge_patch',['../yyjson_8h.html#a9026faa4e022392c28e8f9afa553362f',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_55',['yyjson_mut_arr',['../yyjson_8h.html#aec0e874c4847338f3b61bf46257cb557',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5farr_56',['yyjson_mut_arr_add_arr',['../yyjson_8h.html#a8e0dfe2ac2a53faadf137d159162d193',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fbool_57',['yyjson_mut_arr_add_bool',['../yyjson_8h.html#a5c7fae9804b126005f99c67f3c703ad5',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fdouble_58',['yyjson_mut_arr_add_double',['../yyjson_8h.html#a39283533d6fee8d33eb0e3b818ce8fee',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5ffalse_59',['yyjson_mut_arr_add_false',['../yyjson_8h.html#a930a47cf837316e3758e38057178edac',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5ffloat_60',['yyjson_mut_arr_add_float',['../yyjson_8h.html#ab07c81d726e44806b918481becf7f6d3',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fint_61',['yyjson_mut_arr_add_int',['../yyjson_8h.html#ad20aad460c6d7c62f7c371ca5be54667',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fnull_62',['yyjson_mut_arr_add_null',['../yyjson_8h.html#afb1e130c69db1f54e924e82c3d6377c9',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fobj_63',['yyjson_mut_arr_add_obj',['../yyjson_8h.html#acd2884309c99b42f916fffd50c018c59',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5freal_64',['yyjson_mut_arr_add_real',['../yyjson_8h.html#aa47704ca9b08cdd7b8b151ec67c4afd6',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fsint_65',['yyjson_mut_arr_add_sint',['../yyjson_8h.html#ab459a079674a115123c353441dacda22',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fstr_66',['yyjson_mut_arr_add_str',['../yyjson_8h.html#a09acbadaf1d791167a277ed35540577b',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fstrcpy_67',['yyjson_mut_arr_add_strcpy',['../yyjson_8h.html#a2877858de77e7765ef44d8659eb7fcd3',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fstrn_68',['yyjson_mut_arr_add_strn',['../yyjson_8h.html#a97b82f92bd96415090ce9803b9757bf9',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fstrncpy_69',['yyjson_mut_arr_add_strncpy',['../yyjson_8h.html#a158fecc9fb751aeb56472844321bdfab',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5ftrue_70',['yyjson_mut_arr_add_true',['../yyjson_8h.html#a125859d255ca67ed339fbf3d05539c94',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fuint_71',['yyjson_mut_arr_add_uint',['../yyjson_8h.html#a6efba736a610baa629bf2a0b0a41d4a9',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fadd_5fval_72',['yyjson_mut_arr_add_val',['../yyjson_8h.html#ab361240999d684579904a9aa3af5004f',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fappend_73',['yyjson_mut_arr_append',['../yyjson_8h.html#af089d7f9bfb1b4fadf46073a534379b0',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fclear_74',['yyjson_mut_arr_clear',['../yyjson_8h.html#a274fc7be14bed93794e3e720927f7bc5',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fget_75',['yyjson_mut_arr_get',['../yyjson_8h.html#a08b69c78024de357ed49abcc19d5b2f3',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fget_5ffirst_76',['yyjson_mut_arr_get_first',['../yyjson_8h.html#a9ff667f95ec6e6e264509e1681c74357',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fget_5flast_77',['yyjson_mut_arr_get_last',['../yyjson_8h.html#a8f6ad942e4ba4d3fb7cb52459af708a6',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5finsert_78',['yyjson_mut_arr_insert',['../yyjson_8h.html#ae0898f45c9fca1d7d6bdd35b3488a10f',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fiter_5fhas_5fnext_79',['yyjson_mut_arr_iter_has_next',['../yyjson_8h.html#a214c115652630e5acaa9fa062844e0c9',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fiter_5finit_80',['yyjson_mut_arr_iter_init',['../yyjson_8h.html#ad88b6743f333d9e4eff04b0138619e74',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fiter_5fnext_81',['yyjson_mut_arr_iter_next',['../yyjson_8h.html#a793250c5394193a73b5e9506c8381994',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fiter_5fremove_82',['yyjson_mut_arr_iter_remove',['../yyjson_8h.html#a20fa69856e99295473e1b3e111adc3b1',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fiter_5fwith_83',['yyjson_mut_arr_iter_with',['../yyjson_8h.html#a9d8bf48b287cc0099eb6619d8b4b712e',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fprepend_84',['yyjson_mut_arr_prepend',['../yyjson_8h.html#a1557f6dca4e03380449cb9b5f043f699',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fremove_85',['yyjson_mut_arr_remove',['../yyjson_8h.html#a26d9cd39957b06085492ec7050850a19',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fremove_5ffirst_86',['yyjson_mut_arr_remove_first',['../yyjson_8h.html#af7484aeed9b789103efb985f2f42ab46',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fremove_5flast_87',['yyjson_mut_arr_remove_last',['../yyjson_8h.html#a923bc9e3c4af69b5bdb5361a9f0a4ba5',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fremove_5frange_88',['yyjson_mut_arr_remove_range',['../yyjson_8h.html#ab96f33fef20cadcb9bb045c60749b516',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5freplace_89',['yyjson_mut_arr_replace',['../yyjson_8h.html#a33704c7475fcdbc8ce7504e9b9756b16',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5frotate_90',['yyjson_mut_arr_rotate',['../yyjson_8h.html#a6df6d46adbd674a53cbfc049d49ec5c5',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fsize_91',['yyjson_mut_arr_size',['../yyjson_8h.html#a847bb374b9c7fa6fff34088d23d87dad',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fbool_92',['yyjson_mut_arr_with_bool',['../yyjson_8h.html#afd2b114767b989006259409c6955bb37',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fdouble_93',['yyjson_mut_arr_with_double',['../yyjson_8h.html#ac81702a782ecfeb9874ce43706ecf02e',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5ffloat_94',['yyjson_mut_arr_with_float',['../yyjson_8h.html#a50039175677ae5fdd51f1c6942fa3d3d',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5freal_95',['yyjson_mut_arr_with_real',['../yyjson_8h.html#a7173b66e47ee6fad38b11651d20e7ddf',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fsint_96',['yyjson_mut_arr_with_sint',['../yyjson_8h.html#a05771fb3cd9c9d2f854dc9528feac58a',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fsint16_97',['yyjson_mut_arr_with_sint16',['../yyjson_8h.html#a72bd3b0467273c40dbe376bc7c0a8f06',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fsint32_98',['yyjson_mut_arr_with_sint32',['../yyjson_8h.html#a54bfa0c027fb21e9e5c33a9f4ecbe0f5',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fsint64_99',['yyjson_mut_arr_with_sint64',['../yyjson_8h.html#a37d0c7987b2958550076586ca36082fd',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fsint8_100',['yyjson_mut_arr_with_sint8',['../yyjson_8h.html#ab9c7f452ed21a9800501c25e715f35f7',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fstr_101',['yyjson_mut_arr_with_str',['../yyjson_8h.html#af7da1562cde867338bc69395c2aeb0ad',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fstrcpy_102',['yyjson_mut_arr_with_strcpy',['../yyjson_8h.html#a90c3e1c55dcf04a7879abed9a57cb278',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fstrn_103',['yyjson_mut_arr_with_strn',['../yyjson_8h.html#a419008c4a6f2dc4221211b0d7770109a',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fstrncpy_104',['yyjson_mut_arr_with_strncpy',['../yyjson_8h.html#ad8c68a8cec010d2d5f8942eb1136afde',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fuint_105',['yyjson_mut_arr_with_uint',['../yyjson_8h.html#ab2237deb1190a0333a88d571a8adcb0c',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fuint16_106',['yyjson_mut_arr_with_uint16',['../yyjson_8h.html#a85f4bcdc777cde51a40359ac9e38c98b',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fuint32_107',['yyjson_mut_arr_with_uint32',['../yyjson_8h.html#ac24336d6f29b5b6c09f513373b6fc83e',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fuint64_108',['yyjson_mut_arr_with_uint64',['../yyjson_8h.html#aae70fe76dfae0e8aa93d0226ec8510d9',1,'yyjson.h']]], + ['yyjson_5fmut_5farr_5fwith_5fuint8_109',['yyjson_mut_arr_with_uint8',['../yyjson_8h.html#a2ae7e73e8a1431554d621059b06222e6',1,'yyjson.h']]], + ['yyjson_5fmut_5fbool_110',['yyjson_mut_bool',['../yyjson_8h.html#a57afc80d0c89c0ae20d5ff183f3a8205',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5ffree_111',['yyjson_mut_doc_free',['../yyjson_8h.html#a7a5f504993031f912d06777b8a7b5aff',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fget_5froot_112',['yyjson_mut_doc_get_root',['../yyjson_8h.html#aa33ac310f363ace5f4dda3697b2c0123',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fimut_5fcopy_113',['yyjson_mut_doc_imut_copy',['../yyjson_8h.html#a797642b2f815a4f05db03ef87f08cc4f',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fmut_5fcopy_114',['yyjson_mut_doc_mut_copy',['../yyjson_8h.html#a6ee1dc133fa773528286cd0b25300cb2',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fnew_115',['yyjson_mut_doc_new',['../yyjson_8h.html#ae27cb375110302ec19f4376d7cab3c5b',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5fadd_116',['yyjson_mut_doc_ptr_add',['../yyjson_8h.html#ae1a372cfbbc8a536decaf1db5223804d',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5faddn_117',['yyjson_mut_doc_ptr_addn',['../yyjson_8h.html#a5ee67bcb7012b25bd3bd7f88e5bb1699',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5faddx_118',['yyjson_mut_doc_ptr_addx',['../yyjson_8h.html#ad284e6ee4236ffa0be5d45625d57cac4',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5fget_119',['yyjson_mut_doc_ptr_get',['../yyjson_8h.html#a5ad2700fe7073292adb71d508a049604',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5fgetn_120',['yyjson_mut_doc_ptr_getn',['../yyjson_8h.html#a085db50b4cf005e489b7401281ea8636',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5fgetx_121',['yyjson_mut_doc_ptr_getx',['../yyjson_8h.html#a6031b6b35b06127f3fa2278be67c29ea',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5fremove_122',['yyjson_mut_doc_ptr_remove',['../yyjson_8h.html#a0358ed2cf421e64f5052068f41ca8f26',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5fremoven_123',['yyjson_mut_doc_ptr_removen',['../yyjson_8h.html#a4ede66b0b130faa9af1c47878cf52be2',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5fremovex_124',['yyjson_mut_doc_ptr_removex',['../yyjson_8h.html#a286f0920116870a3d27b466c515234a3',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5freplace_125',['yyjson_mut_doc_ptr_replace',['../yyjson_8h.html#a1a52947332757bebf28985bad6fb3d5d',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5freplacen_126',['yyjson_mut_doc_ptr_replacen',['../yyjson_8h.html#a71d44a9f504b50eab96e59d348b2553f',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5freplacex_127',['yyjson_mut_doc_ptr_replacex',['../yyjson_8h.html#aed5fc7ff1c73fd7a1829e863ce92ad65',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5fset_128',['yyjson_mut_doc_ptr_set',['../yyjson_8h.html#a6c844108b8cdd6583802570b1500630c',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5fsetn_129',['yyjson_mut_doc_ptr_setn',['../yyjson_8h.html#a222fa618ed3b7f6cbd355bb04708498f',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fptr_5fsetx_130',['yyjson_mut_doc_ptr_setx',['../yyjson_8h.html#a48213b9742ba7fe6fb54b79be2da1f97',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fset_5froot_131',['yyjson_mut_doc_set_root',['../yyjson_8h.html#a8a9f7ea865526acb97ee4eff8d0bb79f',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fset_5fstr_5fpool_5fsize_132',['yyjson_mut_doc_set_str_pool_size',['../yyjson_8h.html#aec93f33123755af4dfa25c1335a44184',1,'yyjson.h']]], + ['yyjson_5fmut_5fdoc_5fset_5fval_5fpool_5fsize_133',['yyjson_mut_doc_set_val_pool_size',['../yyjson_8h.html#a9dd1f854542f298e963f0912a5a0e002',1,'yyjson.h']]], + ['yyjson_5fmut_5fdouble_134',['yyjson_mut_double',['../yyjson_8h.html#a97fb1056954960e76be19e33dc5b6df0',1,'yyjson.h']]], + ['yyjson_5fmut_5fequals_135',['yyjson_mut_equals',['../yyjson_8h.html#ab0a5c5a568b7f2c0a6301149f0f6aa84',1,'yyjson.h']]], + ['yyjson_5fmut_5fequals_5fstr_136',['yyjson_mut_equals_str',['../yyjson_8h.html#ab2c44c43c9e8ff194799fd59ae688ee2',1,'yyjson.h']]], + ['yyjson_5fmut_5fequals_5fstrn_137',['yyjson_mut_equals_strn',['../yyjson_8h.html#a1887a4e64900348851f22d528950bf7e',1,'yyjson.h']]], + ['yyjson_5fmut_5ffalse_138',['yyjson_mut_false',['../yyjson_8h.html#a184a7d8fa5b929ce01c7181712c34747',1,'yyjson.h']]], + ['yyjson_5fmut_5ffloat_139',['yyjson_mut_float',['../yyjson_8h.html#a3497c331c3a3746dab89e20a38c5daa0',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5fbool_140',['yyjson_mut_get_bool',['../yyjson_8h.html#a5ae266ef7d5c52eaa2d5afeafab41721',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5fint_141',['yyjson_mut_get_int',['../yyjson_8h.html#aad6de220fa487e31bd1bd2c2cccd9bff',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5flen_142',['yyjson_mut_get_len',['../yyjson_8h.html#aec3a6e6812f3ca8fd58c858275443fe0',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5fnum_143',['yyjson_mut_get_num',['../yyjson_8h.html#ae46242b9ad367c677a5026f6ea30c635',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5fraw_144',['yyjson_mut_get_raw',['../yyjson_8h.html#a3de6970785ebf0dd000d28c916793388',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5freal_145',['yyjson_mut_get_real',['../yyjson_8h.html#addde26cc012f50aee79a623e6be4614e',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5fsint_146',['yyjson_mut_get_sint',['../yyjson_8h.html#af9824de7303491b4e43dd423878ae0a0',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5fstr_147',['yyjson_mut_get_str',['../yyjson_8h.html#a896424a210ec4983f0634467ebe85a68',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5fsubtype_148',['yyjson_mut_get_subtype',['../yyjson_8h.html#a1a032ed912524326d22331f7dd1366f2',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5ftag_149',['yyjson_mut_get_tag',['../yyjson_8h.html#a64603b1c33c9ebc626665dea61e25abd',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5ftype_150',['yyjson_mut_get_type',['../yyjson_8h.html#a69acff4e2298d6b1a315d5f75a5eaa9d',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5ftype_5fdesc_151',['yyjson_mut_get_type_desc',['../yyjson_8h.html#a0718192e8eb1b46a83116b15ce6e67c7',1,'yyjson.h']]], + ['yyjson_5fmut_5fget_5fuint_152',['yyjson_mut_get_uint',['../yyjson_8h.html#a708869e986c30d3a03026be8ce4c2b37',1,'yyjson.h']]], + ['yyjson_5fmut_5fint_153',['yyjson_mut_int',['../yyjson_8h.html#a92e202b3738250ffee612089bdec91eb',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5farr_154',['yyjson_mut_is_arr',['../yyjson_8h.html#a538974615c719cb8ea2e8ea7705569cf',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5fbool_155',['yyjson_mut_is_bool',['../yyjson_8h.html#ad18730f04c429faa79be473de57efd5e',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5fctn_156',['yyjson_mut_is_ctn',['../yyjson_8h.html#a25f0e04af88792dd01e0ed8461ffb51b',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5ffalse_157',['yyjson_mut_is_false',['../yyjson_8h.html#aadb5f3196fe14e75914ed34d6e700076',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5fint_158',['yyjson_mut_is_int',['../yyjson_8h.html#a7bb8c32c190a8e4ce4f5e9e95623f304',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5fnull_159',['yyjson_mut_is_null',['../yyjson_8h.html#a17fda97923bb434d4214c56534586606',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5fnum_160',['yyjson_mut_is_num',['../yyjson_8h.html#a4c37c92b9977d86475cda1884c9ae52e',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5fobj_161',['yyjson_mut_is_obj',['../yyjson_8h.html#aaafe8a57b5e53c9f7f9984c80ab3be1f',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5fraw_162',['yyjson_mut_is_raw',['../yyjson_8h.html#a2bbea1da400b473e92b8429027d0f307',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5freal_163',['yyjson_mut_is_real',['../yyjson_8h.html#acfc8545d9b1af8dd8f1488e34fbac351',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5fsint_164',['yyjson_mut_is_sint',['../yyjson_8h.html#a907fa46c6ab95e9d7652392507f17e3b',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5fstr_165',['yyjson_mut_is_str',['../yyjson_8h.html#ad9f16424bfef46cd479066905f653591',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5ftrue_166',['yyjson_mut_is_true',['../yyjson_8h.html#a5c94af000c170272356f060c76f91559',1,'yyjson.h']]], + ['yyjson_5fmut_5fis_5fuint_167',['yyjson_mut_is_uint',['../yyjson_8h.html#a740d49152b7b9974c65efeab698dfb67',1,'yyjson.h']]], + ['yyjson_5fmut_5fmerge_5fpatch_168',['yyjson_mut_merge_patch',['../yyjson_8h.html#aad64266ebfbdd2a9627050cf1f3f48d7',1,'yyjson.h']]], + ['yyjson_5fmut_5fnull_169',['yyjson_mut_null',['../yyjson_8h.html#a73e0044fd0c511263cbf5cd869976475',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_170',['yyjson_mut_obj',['../yyjson_8h.html#a721dacf0e32ee6c7f18817aca806e9b2',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_171',['yyjson_mut_obj_add',['../yyjson_8h.html#ac0e1bcd9f449e4b1e62d25fb96830a62',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5farr_172',['yyjson_mut_obj_add_arr',['../yyjson_8h.html#a1d27c9ad366209b83f236d74ec7e1991',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fbool_173',['yyjson_mut_obj_add_bool',['../yyjson_8h.html#abe2f1b0c0b8cb9ceab3cdc35d4574c86',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fdouble_174',['yyjson_mut_obj_add_double',['../yyjson_8h.html#a29d6ef8f7bf8135d9b7d93cb4c7d2c0c',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5ffalse_175',['yyjson_mut_obj_add_false',['../yyjson_8h.html#a52c88fea8622d7bf4e81ecea93dc5df6',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5ffloat_176',['yyjson_mut_obj_add_float',['../yyjson_8h.html#aead391adc0e8fba55c0b230ac4d36612',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fint_177',['yyjson_mut_obj_add_int',['../yyjson_8h.html#a56726ff7e284700736e26e56afa6cf7b',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fnull_178',['yyjson_mut_obj_add_null',['../yyjson_8h.html#a6efc657d7f9aefdcba51e753fcea02c1',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fobj_179',['yyjson_mut_obj_add_obj',['../yyjson_8h.html#a7241260b7fefbbdfdf7566d207b486c5',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5freal_180',['yyjson_mut_obj_add_real',['../yyjson_8h.html#aa4b243e9de837405d83bcc3251156cea',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fsint_181',['yyjson_mut_obj_add_sint',['../yyjson_8h.html#a4070a94fca9592eefa2798dd45237d85',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fstr_182',['yyjson_mut_obj_add_str',['../yyjson_8h.html#a996f8aa51f4c1475448974cf98f28df3',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fstrcpy_183',['yyjson_mut_obj_add_strcpy',['../yyjson_8h.html#abeeca08e3b6994dddd55951a83cd648f',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fstrn_184',['yyjson_mut_obj_add_strn',['../yyjson_8h.html#a4530f9fc02f8604cef3de273feb4ab6a',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fstrncpy_185',['yyjson_mut_obj_add_strncpy',['../yyjson_8h.html#a1d544048860a8c53510d560b4d60411a',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5ftrue_186',['yyjson_mut_obj_add_true',['../yyjson_8h.html#a80380f14a448ea046eb718e068c2df6b',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fuint_187',['yyjson_mut_obj_add_uint',['../yyjson_8h.html#a5f48e712fe4988f779a35309779dd765',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fadd_5fval_188',['yyjson_mut_obj_add_val',['../yyjson_8h.html#a210aa96478b0b005b1611fe2f0ecbaa2',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fclear_189',['yyjson_mut_obj_clear',['../yyjson_8h.html#aee5bc7d2ad2169a04f54e63139eddb86',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fget_190',['yyjson_mut_obj_get',['../yyjson_8h.html#a90a824479a3d07f47e9bcce9bbbfcdc0',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fgetn_191',['yyjson_mut_obj_getn',['../yyjson_8h.html#a9f40302607516131c026ca5f13a29946',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5finsert_192',['yyjson_mut_obj_insert',['../yyjson_8h.html#a98e9f97614fce2a6187473eeb35274e8',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fiter_5fget_193',['yyjson_mut_obj_iter_get',['../yyjson_8h.html#a9e79f1480256c6e2e8dfbf61da9cd853',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fiter_5fget_5fval_194',['yyjson_mut_obj_iter_get_val',['../yyjson_8h.html#aaa4bef14b71ff145fe8cdc2fa98c7f45',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fiter_5fgetn_195',['yyjson_mut_obj_iter_getn',['../yyjson_8h.html#a3d3ab359890ab167041732a871ab943d',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fiter_5fhas_5fnext_196',['yyjson_mut_obj_iter_has_next',['../yyjson_8h.html#aca1345f5057068e556cc6fadda10d04c',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fiter_5finit_197',['yyjson_mut_obj_iter_init',['../yyjson_8h.html#ad32e0e0427bda63164f12fe689a6f854',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fiter_5fnext_198',['yyjson_mut_obj_iter_next',['../yyjson_8h.html#a55f4228c2d65d497ad3cee8abe95c0be',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fiter_5fremove_199',['yyjson_mut_obj_iter_remove',['../yyjson_8h.html#a6e891b4020dd6325d6eacb5e108da3c4',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fiter_5fwith_200',['yyjson_mut_obj_iter_with',['../yyjson_8h.html#aedac207e6c2d5e031997e2b0df73db6a',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fput_201',['yyjson_mut_obj_put',['../yyjson_8h.html#acbfde7c1173b4258f83029c6dacf47c3',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fremove_202',['yyjson_mut_obj_remove',['../yyjson_8h.html#a660d533ce8b661e85c5b14e4e99e5085',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fremove_5fkey_203',['yyjson_mut_obj_remove_key',['../yyjson_8h.html#a13d5da22b245b8242d9c5c6bd6b3582b',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fremove_5fkeyn_204',['yyjson_mut_obj_remove_keyn',['../yyjson_8h.html#a36b5cade5e5cfecd47e9ae584078e2b4',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fremove_5fstr_205',['yyjson_mut_obj_remove_str',['../yyjson_8h.html#a630b55e2937f7ffe8c0dcef20497ce93',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fremove_5fstrn_206',['yyjson_mut_obj_remove_strn',['../yyjson_8h.html#ae6dfd237f7997125e606d678b3b59b5c',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5frename_5fkey_207',['yyjson_mut_obj_rename_key',['../yyjson_8h.html#aea65c64007cfa236faa17e1ac87c4e5e',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5frename_5fkeyn_208',['yyjson_mut_obj_rename_keyn',['../yyjson_8h.html#a335b9fdffa2885eb5eddd1ee2b43016b',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5freplace_209',['yyjson_mut_obj_replace',['../yyjson_8h.html#a964840d68d5d27ad2e16c63b4b2475b6',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5frotate_210',['yyjson_mut_obj_rotate',['../yyjson_8h.html#a0f1a9fea8fbc13caf61861dfdb498d46',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fsize_211',['yyjson_mut_obj_size',['../yyjson_8h.html#a601ac20666dd26bfbec016ee4cbb1b92',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fwith_5fkv_212',['yyjson_mut_obj_with_kv',['../yyjson_8h.html#afc2749d9ed694b6d0a4f5c14da19c7d4',1,'yyjson.h']]], + ['yyjson_5fmut_5fobj_5fwith_5fstr_213',['yyjson_mut_obj_with_str',['../yyjson_8h.html#a49cfc79051b729689f4f08592b284cc9',1,'yyjson.h']]], + ['yyjson_5fmut_5fpatch_214',['yyjson_mut_patch',['../yyjson_8h.html#ad4cca957150bd6f19fa12a4f907dffee',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5fadd_215',['yyjson_mut_ptr_add',['../yyjson_8h.html#ab49d3e532c97846b198b360602a9b5ca',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5faddn_216',['yyjson_mut_ptr_addn',['../yyjson_8h.html#aa65216783e9cd2ff949092399a2608d8',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5faddx_217',['yyjson_mut_ptr_addx',['../yyjson_8h.html#a256b4f50ed8e6830d57fbf7df7053141',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5fget_218',['yyjson_mut_ptr_get',['../yyjson_8h.html#a8add57045c09758844b9433dbe3d4451',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5fgetn_219',['yyjson_mut_ptr_getn',['../yyjson_8h.html#a7d72991b7e14b54845b639ef37c1c54c',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5fgetx_220',['yyjson_mut_ptr_getx',['../yyjson_8h.html#abb1b3f84ca4f32c72dad8eea83f3d116',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5fremove_221',['yyjson_mut_ptr_remove',['../yyjson_8h.html#a853738b59790700627f7212b6e00922d',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5fremoven_222',['yyjson_mut_ptr_removen',['../yyjson_8h.html#a3447370d5ab7657cd98c54ef17fb047b',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5fremovex_223',['yyjson_mut_ptr_removex',['../yyjson_8h.html#a68a954cfda2a17cc612bb31460b902e1',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5freplace_224',['yyjson_mut_ptr_replace',['../yyjson_8h.html#ad617af11eb6bf81926531878f0117bba',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5freplacen_225',['yyjson_mut_ptr_replacen',['../yyjson_8h.html#af324a76bd5e45899cccba7850d9ce43a',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5freplacex_226',['yyjson_mut_ptr_replacex',['../yyjson_8h.html#a41f9c6e4641f813a7a94f12ea79b34ce',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5fset_227',['yyjson_mut_ptr_set',['../yyjson_8h.html#a4de077663ebedc11a24ddbde66a72945',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5fsetn_228',['yyjson_mut_ptr_setn',['../yyjson_8h.html#ac8ba98e62d5d4c5ab9ddd44173164756',1,'yyjson.h']]], + ['yyjson_5fmut_5fptr_5fsetx_229',['yyjson_mut_ptr_setx',['../yyjson_8h.html#a181de44520dcd7eb3211c617d10f4525',1,'yyjson.h']]], + ['yyjson_5fmut_5fraw_230',['yyjson_mut_raw',['../yyjson_8h.html#a7541eb4eadf59e84f1ef06889789d460',1,'yyjson.h']]], + ['yyjson_5fmut_5frawcpy_231',['yyjson_mut_rawcpy',['../yyjson_8h.html#a35cfc3e94310aaddb9eaf6609c4640d9',1,'yyjson.h']]], + ['yyjson_5fmut_5frawn_232',['yyjson_mut_rawn',['../yyjson_8h.html#a3f69c2e1cdc99ae4f9914435b7a542d7',1,'yyjson.h']]], + ['yyjson_5fmut_5frawncpy_233',['yyjson_mut_rawncpy',['../yyjson_8h.html#a8a9cc40b5f3f93b66ba191449f81fbda',1,'yyjson.h']]], + ['yyjson_5fmut_5fread_5fnumber_234',['yyjson_mut_read_number',['../yyjson_8h.html#aed1fdeb679986591d5f2f257c5cf3b60',1,'yyjson.h']]], + ['yyjson_5fmut_5freal_235',['yyjson_mut_real',['../yyjson_8h.html#a177181eee333314c7b40e2dc573fcdec',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5farr_236',['yyjson_mut_set_arr',['../yyjson_8h.html#af6dac7e5e95ccc12d79c31b96d33940a',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5fbool_237',['yyjson_mut_set_bool',['../yyjson_8h.html#a108d97873650fd95453f3c82a0b6a2aa',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5fdouble_238',['yyjson_mut_set_double',['../yyjson_8h.html#a185b931c987bc80325339ab7369753c6',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5ffloat_239',['yyjson_mut_set_float',['../yyjson_8h.html#a22cb5a0c2cfd20893de76ef77a785627',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5ffp_5fto_5ffixed_240',['yyjson_mut_set_fp_to_fixed',['../yyjson_8h.html#a0c58c31c80202d83c1c2d3bd69e3bf72',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5ffp_5fto_5ffloat_241',['yyjson_mut_set_fp_to_float',['../yyjson_8h.html#a1568c53a68914a5660a50490232737ac',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5fint_242',['yyjson_mut_set_int',['../yyjson_8h.html#a64168360e4ac45070f98c6db92b89cd7',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5fnull_243',['yyjson_mut_set_null',['../yyjson_8h.html#a6e0c3b9ff069db64e4aa14da1078b538',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5fobj_244',['yyjson_mut_set_obj',['../yyjson_8h.html#a533791670fe27f71bab321d586e11ea2',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5fraw_245',['yyjson_mut_set_raw',['../yyjson_8h.html#a510bd8af8c64911827c890bd67245282',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5freal_246',['yyjson_mut_set_real',['../yyjson_8h.html#a0cbd041b4d5a31d6dcc0bd759eae6cf7',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5fsint_247',['yyjson_mut_set_sint',['../yyjson_8h.html#ad3c513a8fd61c173c4afa404572e02f6',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5fstr_248',['yyjson_mut_set_str',['../yyjson_8h.html#a84e98fae940ff675b2a22076cbd5efc1',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5fstr_5fnoesc_249',['yyjson_mut_set_str_noesc',['../yyjson_8h.html#acaf2da602f21785dbacc66661f89a570',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5fstrn_250',['yyjson_mut_set_strn',['../yyjson_8h.html#a298c4558e0b349e4f801f210f19ac8b1',1,'yyjson.h']]], + ['yyjson_5fmut_5fset_5fuint_251',['yyjson_mut_set_uint',['../yyjson_8h.html#a84604772b235ec0f651532013f2480a8',1,'yyjson.h']]], + ['yyjson_5fmut_5fsint_252',['yyjson_mut_sint',['../yyjson_8h.html#acd434c1a97d275f97f743e47e228831a',1,'yyjson.h']]], + ['yyjson_5fmut_5fstr_253',['yyjson_mut_str',['../yyjson_8h.html#ae8d7e4c75adb1b9adb2246165491a4a3',1,'yyjson.h']]], + ['yyjson_5fmut_5fstrcpy_254',['yyjson_mut_strcpy',['../yyjson_8h.html#a95300bcf1cdb52d296e39aa1a4650741',1,'yyjson.h']]], + ['yyjson_5fmut_5fstrn_255',['yyjson_mut_strn',['../yyjson_8h.html#a13c39f37c6936907c266ba9c076dd741',1,'yyjson.h']]], + ['yyjson_5fmut_5fstrncpy_256',['yyjson_mut_strncpy',['../yyjson_8h.html#a1588bdc6f4125e5c6d1daf6b240f6ff8',1,'yyjson.h']]], + ['yyjson_5fmut_5ftrue_257',['yyjson_mut_true',['../yyjson_8h.html#a032637dbdee5a6525420384daa097dff',1,'yyjson.h']]], + ['yyjson_5fmut_5fuint_258',['yyjson_mut_uint',['../yyjson_8h.html#a893a09172b402af1bf520cf7347dfeab',1,'yyjson.h']]], + ['yyjson_5fmut_5fval_5fimut_5fcopy_259',['yyjson_mut_val_imut_copy',['../yyjson_8h.html#a7a142af553e7831989593aee44f74e26',1,'yyjson.h']]], + ['yyjson_5fmut_5fval_5fmut_5fcopy_260',['yyjson_mut_val_mut_copy',['../yyjson_8h.html#a66761be40cfb010086ec798ddb44018f',1,'yyjson.h']]], + ['yyjson_5fmut_5fval_5fwrite_261',['yyjson_mut_val_write',['../yyjson_8h.html#a700da5ce5bf8bb9d3739cc73a0f51cdf',1,'yyjson.h']]], + ['yyjson_5fmut_5fval_5fwrite_5ffile_262',['yyjson_mut_val_write_file',['../yyjson_8h.html#adf8b2d3c8b57e85d58108d58c68b0db5',1,'yyjson.h']]], + ['yyjson_5fmut_5fval_5fwrite_5ffp_263',['yyjson_mut_val_write_fp',['../yyjson_8h.html#acb80caf1bf1aecd6b68f38b84628c492',1,'yyjson.h']]], + ['yyjson_5fmut_5fval_5fwrite_5fopts_264',['yyjson_mut_val_write_opts',['../yyjson_8h.html#abdaf14b79fe803289070c0e5d5a705b8',1,'yyjson.h']]], + ['yyjson_5fmut_5fwrite_265',['yyjson_mut_write',['../yyjson_8h.html#a881e2ee3f487385810829df8bc675f1f',1,'yyjson.h']]], + ['yyjson_5fmut_5fwrite_5ffile_266',['yyjson_mut_write_file',['../yyjson_8h.html#ad2a7aa77fa66a593536e3d7c3edb1d7a',1,'yyjson.h']]], + ['yyjson_5fmut_5fwrite_5ffp_267',['yyjson_mut_write_fp',['../yyjson_8h.html#ac8c17e7086a6d0a8db559ce0076c71e0',1,'yyjson.h']]], + ['yyjson_5fmut_5fwrite_5fnumber_268',['yyjson_mut_write_number',['../yyjson_8h.html#a9dec76e0a9d0c9e6039f2d15ec8b26fb',1,'yyjson.h']]], + ['yyjson_5fmut_5fwrite_5fopts_269',['yyjson_mut_write_opts',['../yyjson_8h.html#a7af42d62aa1583986c687c5cd10b010e',1,'yyjson.h']]], + ['yyjson_5fobj_5fget_270',['yyjson_obj_get',['../yyjson_8h.html#a1e8a4dea2e9e9248acde14c664ab702b',1,'yyjson.h']]], + ['yyjson_5fobj_5fgetn_271',['yyjson_obj_getn',['../yyjson_8h.html#a2936ca2492ae8cdcdf0435f5259ff854',1,'yyjson.h']]], + ['yyjson_5fobj_5fiter_5fget_272',['yyjson_obj_iter_get',['../yyjson_8h.html#a1f3b09c4f279287f8af93b3754a41e85',1,'yyjson.h']]], + ['yyjson_5fobj_5fiter_5fget_5fval_273',['yyjson_obj_iter_get_val',['../yyjson_8h.html#a3403b9c25c8b8f2b3027f4e6d97d0ca8',1,'yyjson.h']]], + ['yyjson_5fobj_5fiter_5fgetn_274',['yyjson_obj_iter_getn',['../yyjson_8h.html#a7a45a4b5a1340bb3c2907b7faf3981be',1,'yyjson.h']]], + ['yyjson_5fobj_5fiter_5fhas_5fnext_275',['yyjson_obj_iter_has_next',['../yyjson_8h.html#ab83087bafd1f48910b62bf63200679e1',1,'yyjson.h']]], + ['yyjson_5fobj_5fiter_5finit_276',['yyjson_obj_iter_init',['../yyjson_8h.html#a2b6a426ece4ffeb9dede1f7a9970140d',1,'yyjson.h']]], + ['yyjson_5fobj_5fiter_5fnext_277',['yyjson_obj_iter_next',['../yyjson_8h.html#a6033befb82b9331d2c19c09799ec5bcf',1,'yyjson.h']]], + ['yyjson_5fobj_5fiter_5fwith_278',['yyjson_obj_iter_with',['../yyjson_8h.html#a543806a566821ccc6c7069edabc59a85',1,'yyjson.h']]], + ['yyjson_5fobj_5fsize_279',['yyjson_obj_size',['../yyjson_8h.html#aa9789f197f972dc433ea2eb622defd50',1,'yyjson.h']]], + ['yyjson_5fpatch_280',['yyjson_patch',['../yyjson_8h.html#a2d0864410efdd15e4591fecc0b4c082c',1,'yyjson.h']]], + ['yyjson_5fptr_5fctx_5fappend_281',['yyjson_ptr_ctx_append',['../yyjson_8h.html#aa0dcc48007c1754a4a181d81f22cb488',1,'yyjson.h']]], + ['yyjson_5fptr_5fctx_5fremove_282',['yyjson_ptr_ctx_remove',['../yyjson_8h.html#a92d8ec53e4cf8426288d86868dc89e09',1,'yyjson.h']]], + ['yyjson_5fptr_5fctx_5freplace_283',['yyjson_ptr_ctx_replace',['../yyjson_8h.html#ac61826dc8fd7fa6cafa58fa9a45d058e',1,'yyjson.h']]], + ['yyjson_5fptr_5fget_284',['yyjson_ptr_get',['../yyjson_8h.html#a897cf07015f4f79fb4ebb0b3f58ac292',1,'yyjson.h']]], + ['yyjson_5fptr_5fget_5fbool_285',['yyjson_ptr_get_bool',['../yyjson_8h.html#ac5d042e8760c46d5db48254a7740a48e',1,'yyjson.h']]], + ['yyjson_5fptr_5fget_5fnum_286',['yyjson_ptr_get_num',['../yyjson_8h.html#a013cce9ecb58c53f0c3c9e1b081aa9c9',1,'yyjson.h']]], + ['yyjson_5fptr_5fget_5freal_287',['yyjson_ptr_get_real',['../yyjson_8h.html#a858ac36d7ad6a86e539cd84118498edb',1,'yyjson.h']]], + ['yyjson_5fptr_5fget_5fsint_288',['yyjson_ptr_get_sint',['../yyjson_8h.html#a0b3d05df2a4e4748c75f35fa8ce8c650',1,'yyjson.h']]], + ['yyjson_5fptr_5fget_5fstr_289',['yyjson_ptr_get_str',['../yyjson_8h.html#a177e25caf069be7e36b1ba17cad7dc7d',1,'yyjson.h']]], + ['yyjson_5fptr_5fget_5fuint_290',['yyjson_ptr_get_uint',['../yyjson_8h.html#a695d5d491618baa20d1f3258cf0fed8e',1,'yyjson.h']]], + ['yyjson_5fptr_5fgetn_291',['yyjson_ptr_getn',['../yyjson_8h.html#aa3612af25f159df0c0587ddf8c7c58db',1,'yyjson.h']]], + ['yyjson_5fptr_5fgetx_292',['yyjson_ptr_getx',['../yyjson_8h.html#a4b69d3a0061294fecd4a94927ad10e96',1,'yyjson.h']]], + ['yyjson_5fread_293',['yyjson_read',['../yyjson_8h.html#aeab3c2a1d86225e5b181fb1bba7587d4',1,'yyjson.h']]], + ['yyjson_5fread_5ffile_294',['yyjson_read_file',['../yyjson_8h.html#a605ac08b083fb65331d7fa5eb5d32225',1,'yyjson.h']]], + ['yyjson_5fread_5ffp_295',['yyjson_read_fp',['../yyjson_8h.html#a7f8c3918f8ab161bf7e2e203ff0f291e',1,'yyjson.h']]], + ['yyjson_5fread_5fmax_5fmemory_5fusage_296',['yyjson_read_max_memory_usage',['../yyjson_8h.html#ae511cac592355c2f60f170402b9d8dbf',1,'yyjson.h']]], + ['yyjson_5fread_5fnumber_297',['yyjson_read_number',['../yyjson_8h.html#a2b7dfa8495fb1d839e6294f2e7c4b58a',1,'yyjson.h']]], + ['yyjson_5fread_5fopts_298',['yyjson_read_opts',['../yyjson_8h.html#acf234d21f0cb4b7fc89381ef25e9f0a8',1,'yyjson.h']]], + ['yyjson_5fset_5fbool_299',['yyjson_set_bool',['../yyjson_8h.html#ad99ceda574b466f8102699e52564c8da',1,'yyjson.h']]], + ['yyjson_5fset_5fdouble_300',['yyjson_set_double',['../yyjson_8h.html#acfc9cec2bb59669d777fe219730793b8',1,'yyjson.h']]], + ['yyjson_5fset_5ffloat_301',['yyjson_set_float',['../yyjson_8h.html#aae763338f1c11ad9da6be1cf522daf6e',1,'yyjson.h']]], + ['yyjson_5fset_5ffp_5fto_5ffixed_302',['yyjson_set_fp_to_fixed',['../yyjson_8h.html#a1f72379c8ef022cbe6ad815101c8acec',1,'yyjson.h']]], + ['yyjson_5fset_5ffp_5fto_5ffloat_303',['yyjson_set_fp_to_float',['../yyjson_8h.html#a0705e92b9d45c609be958ec7f2351900',1,'yyjson.h']]], + ['yyjson_5fset_5fint_304',['yyjson_set_int',['../yyjson_8h.html#af1f4dd90c0bd891cb139e72cfd588789',1,'yyjson.h']]], + ['yyjson_5fset_5fnull_305',['yyjson_set_null',['../yyjson_8h.html#a079fdf2d481492c8533104437dbf2283',1,'yyjson.h']]], + ['yyjson_5fset_5fraw_306',['yyjson_set_raw',['../yyjson_8h.html#a75ee22602fb750b67fda804fb653ef1e',1,'yyjson.h']]], + ['yyjson_5fset_5freal_307',['yyjson_set_real',['../yyjson_8h.html#ac782a838c6378f022434d7ab3a3b333d',1,'yyjson.h']]], + ['yyjson_5fset_5fsint_308',['yyjson_set_sint',['../yyjson_8h.html#ad0f58bd6ac0289fd55d09b02fa3d4743',1,'yyjson.h']]], + ['yyjson_5fset_5fstr_309',['yyjson_set_str',['../yyjson_8h.html#a9a0f4082d2244b7264a819bbc32ebbdf',1,'yyjson.h']]], + ['yyjson_5fset_5fstr_5fnoesc_310',['yyjson_set_str_noesc',['../yyjson_8h.html#a44386e6e1084aaea376238723bd11d74',1,'yyjson.h']]], + ['yyjson_5fset_5fstrn_311',['yyjson_set_strn',['../yyjson_8h.html#a9e49dc52b6209708df0ccf4ddf49b8c4',1,'yyjson.h']]], + ['yyjson_5fset_5fuint_312',['yyjson_set_uint',['../yyjson_8h.html#a90614444c9d6bbd7d8586176986adbc5',1,'yyjson.h']]], + ['yyjson_5fval_5fmut_5fcopy_313',['yyjson_val_mut_copy',['../yyjson_8h.html#a04ff184b833fe2d6932309821e2b2e5a',1,'yyjson.h']]], + ['yyjson_5fval_5fwrite_314',['yyjson_val_write',['../yyjson_8h.html#a00409eb59aee687f7778d00510b59d38',1,'yyjson.h']]], + ['yyjson_5fval_5fwrite_5ffile_315',['yyjson_val_write_file',['../yyjson_8h.html#a725cc27bd7bd37c1d18c41589abd34db',1,'yyjson.h']]], + ['yyjson_5fval_5fwrite_5ffp_316',['yyjson_val_write_fp',['../yyjson_8h.html#a3e5ad66dd43cc51500fff0926bae21a0',1,'yyjson.h']]], + ['yyjson_5fval_5fwrite_5fopts_317',['yyjson_val_write_opts',['../yyjson_8h.html#a79720744960c9b4fdabbfb28379bbeb4',1,'yyjson.h']]], + ['yyjson_5fversion_318',['yyjson_version',['../yyjson_8h.html#a874f912f9c023bc353d1a770798017a1',1,'yyjson.h']]], + ['yyjson_5fwrite_319',['yyjson_write',['../yyjson_8h.html#ad231975496ac3788fe5d69804e295443',1,'yyjson.h']]], + ['yyjson_5fwrite_5ffile_320',['yyjson_write_file',['../yyjson_8h.html#a2d82bd0dc78358326b03e28b9acc19e4',1,'yyjson.h']]], + ['yyjson_5fwrite_5ffp_321',['yyjson_write_fp',['../yyjson_8h.html#a29eea00c04954094701bd90235a7073e',1,'yyjson.h']]], + ['yyjson_5fwrite_5fnumber_322',['yyjson_write_number',['../yyjson_8h.html#a26250087651ed3282ef31a27a0673333',1,'yyjson.h']]], + ['yyjson_5fwrite_5fopts_323',['yyjson_write_opts',['../yyjson_8h.html#a43ccc01254525cef16699e72079e3e49',1,'yyjson.h']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/mag.svg b/lib/yyjson-0.12.0/doc/doxygen/html/search/mag.svg new file mode 100644 index 00000000000..ffb6cf0d025 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/mag_d.svg b/lib/yyjson-0.12.0/doc/doxygen/html/search/mag_d.svg new file mode 100644 index 00000000000..4122773f92c --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/mag_sel.svg b/lib/yyjson-0.12.0/doc/doxygen/html/search/mag_sel.svg new file mode 100644 index 00000000000..553dba87732 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/mag_seld.svg b/lib/yyjson-0.12.0/doc/doxygen/html/search/mag_seld.svg new file mode 100644 index 00000000000..c906f84c83a --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_0.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_0.js new file mode 100644 index 00000000000..30bbc34ef38 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['and_20testing_0',['Building and testing',['../building-and-testing.html',1,'']]], + ['api_1',['API',['../api.html',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_1.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_1.js new file mode 100644 index 00000000000..ac3b6326b9b --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['building_20and_20testing_0',['Building and testing',['../building-and-testing.html',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_2.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_2.js new file mode 100644 index 00000000000..42f9bcba797 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['changelog_0',['Changelog',['../md__c_h_a_n_g_e_l_o_g.html',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_3.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_3.js new file mode 100644 index 00000000000..bf663ff09f9 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['data_20structures_0',['Data Structures',['../data-structures.html',1,'']]], + ['deprecated_20list_1',['Deprecated List',['../deprecated.html',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_4.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_4.js new file mode 100644 index 00000000000..91e273ae977 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['introduction_0',['Introduction',['../index.html',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_5.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_5.js new file mode 100644 index 00000000000..1ad91e39e1a --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['list_0',['Deprecated List',['../deprecated.html',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_6.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_6.js new file mode 100644 index 00000000000..1059b8895dd --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['structures_0',['Data Structures',['../data-structures.html',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_7.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_7.js new file mode 100644 index 00000000000..45fd5988f96 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/pages_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['testing_0',['Building and testing',['../building-and-testing.html',1,'']]] +]; diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/search.css b/lib/yyjson-0.12.0/doc/doxygen/html/search/search.css new file mode 100644 index 00000000000..d7b0f90b707 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: url('mag_sel.svg'); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: url('mag.svg'); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial,Verdana,sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: black; +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial,Verdana,sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: black; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: black; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: white; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid black; + background-color: #EEF1F7; + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: #EEF1F7; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial,Verdana,sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial,Verdana,sans-serif; + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial,Verdana,sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial,Verdana,sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/search/search.js b/lib/yyjson-0.12.0/doc/doxygen/html/search/search.js new file mode 100644 index 00000000000..666af01e5ea --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/search/search.js @@ -0,0 +1,694 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +const SEARCH_COOKIE_NAME = ''+'search_grp'; + +const searchResults = new SearchResults(); + +/* A class handling everything associated with the search panel. + + Parameters: + name - The name of the global variable that will be + storing this instance. Is needed to be able to set timeouts. + resultPath - path to use for external files +*/ +function SearchBox(name, resultsPath, extension) { + if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } + if (!extension || extension == "") { extension = ".html"; } + + function getXPos(item) { + let x = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + x += item.offsetLeft; + item = item.offsetParent; + } + } + return x; + } + + function getYPos(item) { + let y = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + y += item.offsetTop; + item = item.offsetParent; + } + } + return y; + } + + // ---------- Instance variables + this.name = name; + this.resultsPath = resultsPath; + this.keyTimeout = 0; + this.keyTimeoutLength = 500; + this.closeSelectionTimeout = 300; + this.lastSearchValue = ""; + this.lastResultsPage = ""; + this.hideTimeout = 0; + this.searchIndex = 0; + this.searchActive = false; + this.extension = extension; + + // ----------- DOM Elements + + this.DOMSearchField = () => document.getElementById("MSearchField"); + this.DOMSearchSelect = () => document.getElementById("MSearchSelect"); + this.DOMSearchSelectWindow = () => document.getElementById("MSearchSelectWindow"); + this.DOMPopupSearchResults = () => document.getElementById("MSearchResults"); + this.DOMPopupSearchResultsWindow = () => document.getElementById("MSearchResultsWindow"); + this.DOMSearchClose = () => document.getElementById("MSearchClose"); + this.DOMSearchBox = () => document.getElementById("MSearchBox"); + + // ------------ Event Handlers + + // Called when focus is added or removed from the search field. + this.OnSearchFieldFocus = function(isActive) { + this.Activate(isActive); + } + + this.OnSearchSelectShow = function() { + const searchSelectWindow = this.DOMSearchSelectWindow(); + const searchField = this.DOMSearchSelect(); + + const left = getXPos(searchField); + const top = getYPos(searchField) + searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + + // stop selection hide timer + if (this.hideTimeout) { + clearTimeout(this.hideTimeout); + this.hideTimeout=0; + } + return false; // to avoid "image drag" default event + } + + this.OnSearchSelectHide = function() { + this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this), + this.closeSelectionTimeout); + } + + // Called when the content of the search field is changed. + this.OnSearchFieldChange = function(evt) { + if (this.keyTimeout) { // kill running timer + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + } + + const e = evt ? evt : window.event; // for IE + if (e.keyCode==40 || e.keyCode==13) { + if (e.shiftKey==1) { + this.OnSearchSelectShow(); + const win=this.DOMSearchSelectWindow(); + for (let i=0;i do a search + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) { // Up + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } else if (e.keyCode==13 || e.keyCode==27) { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() { + this.keyTimeout = 0; + + // strip leading whitespace + const searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + const code = searchValue.toLowerCase().charCodeAt(0); + let idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) { // surrogate pair + idxChar = searchValue.substr(0, 2); + } + + let jsFile; + let idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) { + const hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + const loadJS = function(url, impl, loc) { + const scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + const domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + const domSearchBox = this.DOMSearchBox(); + const domPopupSearchResults = this.DOMPopupSearchResults(); + const domSearchClose = this.DOMSearchClose(); + const resultsPath = this.resultsPath; + + const handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') { + domSearchClose.style.display = 'inline-block'; + let left = getXPos(domSearchBox) + 150; + let top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + const maxWidth = document.body.clientWidth; + const maxHeight = document.body.clientHeight; + let width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + let height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } else if (!isActive) { // directly remove the panel + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults() { + + function convertToId(search) { + let result = ''; + for (let i=0;i. + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) { + const parentElement = document.getElementById(id); + let element = parentElement.firstChild; + + while (element && element!=parentElement) { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) { + element = element.firstChild; + } else if (element.nextSibling) { + element = element.nextSibling; + } else { + do { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) { + const element = this.FindChildElement(id); + if (element) { + if (element.style.display == 'block') { + element.style.display = 'none'; + } else { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) { + if (!search) { // get search word from URL + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + const resultRows = document.getElementsByTagName("div"); + let matches = 0; + + let i = 0; + while (i < resultRows.length) { + const row = resultRows.item(i); + if (row.className == "SRResult") { + let rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) { + row.style.display = 'block'; + matches++; + } else { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) { // no results + document.getElementById("NoMatches").style.display='block'; + } else { // at least one result + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) { + if (e.type == "keydown") { + this.repeatOn = false; + this.lastKey = e.keyCode; + } else if (e.type == "keypress") { + if (!this.repeatOn) { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } else if (e.type == "keyup") { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + const newIndex = itemIndex-1; + let focusItem = this.NavPrev(newIndex); + if (focusItem) { + let child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') { // children visible + let n=0; + let tmpElem; + for (;;) { // search for last child + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) { + focusItem = tmpElem; + } else { // found it! + break; + } + n++; + } + } + } + if (focusItem) { + focusItem.focus(); + } else { // return focus to search field + document.getElementById("MSearchField").focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = itemIndex+1; + let focusItem; + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') { // children visible + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } else if (this.lastKey==39) { // Right + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } else if (this.lastKey==37) { // Left + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + if (childIndex>0) { + const newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } else { // already at first child, jump to parent + document.getElementById('Item'+itemIndex).focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = childIndex+1; + let elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) { // last child, jump to parent next parent + elem = this.NavNext(itemIndex+1); + } + if (elem) { + elem.focus(); + } + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } +} + +function createResults(resultsPath) { + + function setKeyActions(elem,action) { + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); + } + + function setClassAttr(elem,attr) { + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); + } + + const results = document.getElementById("SRResults"); + results.innerHTML = ''; + searchData.forEach((elem,index) => { + const id = elem[0]; + const srResult = document.createElement('div'); + srResult.setAttribute('id','SR_'+id); + setClassAttr(srResult,'SRResult'); + const srEntry = document.createElement('div'); + setClassAttr(srEntry,'SREntry'); + const srLink = document.createElement('a'); + srLink.setAttribute('id','Item'+index); + setKeyActions(srLink,'return searchResults.Nav(event,'+index+')'); + setClassAttr(srLink,'SRSymbol'); + srLink.innerHTML = elem[1][0]; + srEntry.appendChild(srLink); + if (elem[1].length==2) { // single result + srLink.setAttribute('href',resultsPath+elem[1][1][0]); + srLink.setAttribute('onclick','searchBox.CloseResultsWindow()'); + if (elem[1][1][1]) { + srLink.setAttribute('target','_parent'); + } else { + srLink.setAttribute('target','_blank'); + } + const srScope = document.createElement('span'); + setClassAttr(srScope,'SRScope'); + srScope.innerHTML = elem[1][1][2]; + srEntry.appendChild(srScope); + } else { // multiple results + srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); + const srChildren = document.createElement('div'); + setClassAttr(srChildren,'SRChildren'); + for (let c=0; c + + yyjson + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ["a ,"résumé sum\u00E9","page ] + + + + ["a","r\u00E9sum\u00E9","page"] + + + + + + + + + + + 3 + + + 64 + + + + + + + + + + + + 1 + + + ptr + + + + + + + + + + + + 6 + + + ptr + + + + + + + + + + + + 4 + + + ptr + + + + + + + array + + + string + + + original data + + + copied data + + + string + + + string + + + \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/struct_idoc2.svg b/lib/yyjson-0.12.0/doc/doxygen/html/struct_idoc2.svg new file mode 100644 index 00000000000..48e1e953421 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/struct_idoc2.svg @@ -0,0 +1,202 @@ + + + struct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {"foo":[666,999],"bar":[]} + + + + + + + + + + + 2 + + + 112 + + + + + + + + + + + + 3 + + + ptr + + + + + + + + + + + + 2 + + + 48 + + + + + + + + + + + + + 666 + + + + + + + + + + + + + 999 + + + + + + + + + + + + 3 + + + ptr + + + + + + + + + + + + 0 + + + 16 + + + + object + + + string + + + object(112 byte) + + + array(48byte) + + + array(16byte) + + + array + + + uint + + + uint + + + string + + + array + + + + + + \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/struct_ival.svg b/lib/yyjson-0.12.0/doc/doxygen/html/struct_ival.svg new file mode 100644 index 00000000000..f989d3ab635 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/struct_ival.svg @@ -0,0 +1,55 @@ + + + struct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8bit + + + 56bit + + + 64bit + + + + + type + + + length + + + payload + + + + + \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/struct_mdoc.svg b/lib/yyjson-0.12.0/doc/doxygen/html/struct_mdoc.svg new file mode 100644 index 00000000000..5a4d0da5c94 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/struct_mdoc.svg @@ -0,0 +1,280 @@ + + + struct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + âž”"a" + + + next + + + + + + + + + + + + + 2 + + + child + + + + + + + + + + + + + + 1 + + + âž”"b" + + + next + + + + + + + + + + + + + + 55 + + + next + + + + + + + + + + + + + 4 + + + child + + + next + + + + + + + + + + + + + + 44 + + + next + + + + + + + + + + + + + + 11 + + + next + + + + + + + + + + + + + + 22 + + + next + + + + + + + + + + + + + + 33 + + + next + + + + + {"a":55,"b":[11,22,33,44]} + + + + + + + + + + + uint + + + uint + + + uint + + + uint + + + key + + + key + + + object + + + val(array) + + + val(uint) + + + + + \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/struct_mval.svg b/lib/yyjson-0.12.0/doc/doxygen/html/struct_mval.svg new file mode 100644 index 00000000000..91ca3efcb9f --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/struct_mval.svg @@ -0,0 +1,72 @@ + + + struct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8bit + + + 56bit + + + 64bit + + + 64bit + + + + + type + + + length + + + payload + + + next pointer + + + + + \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/sync_off.png b/lib/yyjson-0.12.0/doc/doxygen/html/sync_off.png new file mode 100644 index 00000000000..3b443fc6289 Binary files /dev/null and b/lib/yyjson-0.12.0/doc/doxygen/html/sync_off.png differ diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/sync_on.png b/lib/yyjson-0.12.0/doc/doxygen/html/sync_on.png new file mode 100644 index 00000000000..e08320fb64e Binary files /dev/null and b/lib/yyjson-0.12.0/doc/doxygen/html/sync_on.png differ diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/tab_a.png b/lib/yyjson-0.12.0/doc/doxygen/html/tab_a.png new file mode 100644 index 00000000000..3b725c41c5a Binary files /dev/null and b/lib/yyjson-0.12.0/doc/doxygen/html/tab_a.png differ diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/tab_ad.png b/lib/yyjson-0.12.0/doc/doxygen/html/tab_ad.png new file mode 100644 index 00000000000..e34850acfc2 Binary files /dev/null and b/lib/yyjson-0.12.0/doc/doxygen/html/tab_ad.png differ diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/tab_b.png b/lib/yyjson-0.12.0/doc/doxygen/html/tab_b.png new file mode 100644 index 00000000000..e2b4a8638cb Binary files /dev/null and b/lib/yyjson-0.12.0/doc/doxygen/html/tab_b.png differ diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/tab_bd.png b/lib/yyjson-0.12.0/doc/doxygen/html/tab_bd.png new file mode 100644 index 00000000000..91c25249869 Binary files /dev/null and b/lib/yyjson-0.12.0/doc/doxygen/html/tab_bd.png differ diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/tab_h.png b/lib/yyjson-0.12.0/doc/doxygen/html/tab_h.png new file mode 100644 index 00000000000..fd5cb705488 Binary files /dev/null and b/lib/yyjson-0.12.0/doc/doxygen/html/tab_h.png differ diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/tab_hd.png b/lib/yyjson-0.12.0/doc/doxygen/html/tab_hd.png new file mode 100644 index 00000000000..2489273d4ce Binary files /dev/null and b/lib/yyjson-0.12.0/doc/doxygen/html/tab_hd.png differ diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/tab_s.png b/lib/yyjson-0.12.0/doc/doxygen/html/tab_s.png new file mode 100644 index 00000000000..ab478c95b67 Binary files /dev/null and b/lib/yyjson-0.12.0/doc/doxygen/html/tab_s.png differ diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/tab_sd.png b/lib/yyjson-0.12.0/doc/doxygen/html/tab_sd.png new file mode 100644 index 00000000000..757a565ced4 Binary files /dev/null and b/lib/yyjson-0.12.0/doc/doxygen/html/tab_sd.png differ diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/tabs.css b/lib/yyjson-0.12.0/doc/doxygen/html/tabs.css new file mode 100644 index 00000000000..edbb4241464 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#364D7C;-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:url('tab_b.png')}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255, 255, 255, 0.9);color:#283A5D;outline:0}.sm-dox a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255, 255, 255, 0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:white}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url('tab_b.png');line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url('tab_s.png');background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent white transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:white;-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555555;background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:white;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url('tab_b.png')}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:white}} diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/yyjson-style.css b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson-style.css new file mode 100644 index 00000000000..149b8bdbbf9 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson-style.css @@ -0,0 +1,37 @@ +html { + --side-nav-arrow-opacity: 0.9; + --content-maxwidth: 800px; +} +div.header { + max-width: 826px; +} +div.header .summary { + padding: 0; + margin-left: 26px; + margin-right: 0; + text-align: left; +} +div.contents, div.header .title { + margin-left: 10px; + margin-right: 10px; +} +@media screen and (max-width: 767px) { + #projectalign { + padding-left: 0; + } + .sm-dox { + margin-top: 4px; + margin-left: 6px; + margin-right: 6px; + } + div.header .summary { + margin-left: 16px; + } + div.contents, div.header .title { + margin-left: 0; + margin-right: 0; + } +} +#MSearchResultsWindow { + max-width: 310px; +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h.html b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h.html new file mode 100644 index 00000000000..32df0ca4023 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h.html @@ -0,0 +1,14085 @@ + + + + + + + + +yyjson: yyjson.h File Reference + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    yyjson 0.12.0 +
    +
    A high performance C JSON library.
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    yyjson.h File Reference
    +
    +
    +
    #include <stdio.h>
    +#include <stdlib.h>
    +#include <stddef.h>
    +#include <limits.h>
    +#include <string.h>
    +#include <float.h>
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Structures

    struct  yyjson_alc
     
    struct  yyjson_read_err
     
    struct  yyjson_write_err
     
    struct  yyjson_arr_iter
     
    struct  yyjson_obj_iter
     
    struct  yyjson_mut_arr_iter
     
    struct  yyjson_mut_obj_iter
     
    struct  yyjson_ptr_err
     
    struct  yyjson_ptr_ctx
     
    struct  yyjson_patch_err
     
    union  yyjson_val_uni
     
    struct  yyjson_val
     
    struct  yyjson_doc
     
    struct  yyjson_mut_val
     
    struct  yyjson_str_chunk
     
    struct  yyjson_str_pool
     
    struct  yyjson_val_chunk
     
    struct  yyjson_val_pool
     
    struct  yyjson_mut_doc
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Macros

    #define YYJSON_MSC_VER   0
     
    #define YYJSON_GCC_VER   0
     
    #define YYJSON_IS_REAL_GCC   0
     
    #define YYJSON_STDC_VER   0
     
    #define YYJSON_CPP_VER   0
     
    #define yyjson_has_builtin(x)
     
    #define yyjson_has_attribute(x)
     
    #define yyjson_has_feature(x)
     
    #define yyjson_has_include(x)
     
    #define yyjson_inline
     
    #define yyjson_noinline
     
    #define yyjson_align(x)
     
    #define yyjson_likely(expr)
     
    #define yyjson_unlikely(expr)
     
    #define YYJSON_HAS_CONSTANT_P   0
     
    #define yyjson_deprecated(msg)
     
    #define yyjson_api
     
    #define yyjson_api_inline   static yyjson_inline
     
    #define __bool_true_false_are_defined   1
     
    #define YYJSON_U64_TO_F64_NO_IMPL   0
     
    #define YYJSON_VERSION_MAJOR   0
     
    #define YYJSON_VERSION_MINOR   12
     
    #define YYJSON_VERSION_PATCH   0
     
    #define YYJSON_VERSION_HEX   0x000C00
     
    #define YYJSON_VERSION_STRING   "0.12.0"
     
    #define YYJSON_TYPE_NONE   ((uint8_t)0) /* _____000 */
     
    #define YYJSON_TYPE_RAW   ((uint8_t)1) /* _____001 */
     
    #define YYJSON_TYPE_NULL   ((uint8_t)2) /* _____010 */
     
    #define YYJSON_TYPE_BOOL   ((uint8_t)3) /* _____011 */
     
    #define YYJSON_TYPE_NUM   ((uint8_t)4) /* _____100 */
     
    #define YYJSON_TYPE_STR   ((uint8_t)5) /* _____101 */
     
    #define YYJSON_TYPE_ARR   ((uint8_t)6) /* _____110 */
     
    #define YYJSON_TYPE_OBJ   ((uint8_t)7) /* _____111 */
     
    #define YYJSON_SUBTYPE_NONE   ((uint8_t)(0 << 3)) /* ___00___ */
     
    #define YYJSON_SUBTYPE_FALSE   ((uint8_t)(0 << 3)) /* ___00___ */
     
    #define YYJSON_SUBTYPE_TRUE   ((uint8_t)(1 << 3)) /* ___01___ */
     
    #define YYJSON_SUBTYPE_UINT   ((uint8_t)(0 << 3)) /* ___00___ */
     
    #define YYJSON_SUBTYPE_SINT   ((uint8_t)(1 << 3)) /* ___01___ */
     
    #define YYJSON_SUBTYPE_REAL   ((uint8_t)(2 << 3)) /* ___10___ */
     
    #define YYJSON_SUBTYPE_NOESC   ((uint8_t)(1 << 3)) /* ___01___ */
     
    #define YYJSON_TYPE_MASK   ((uint8_t)0x07) /* _____111 */
     
    #define YYJSON_TYPE_BIT   ((uint8_t)3)
     
    #define YYJSON_SUBTYPE_MASK   ((uint8_t)0x18) /* ___11___ */
     
    #define YYJSON_SUBTYPE_BIT   ((uint8_t)2)
     
    #define YYJSON_RESERVED_MASK   ((uint8_t)0xE0) /* 111_____ */
     
    #define YYJSON_RESERVED_BIT   ((uint8_t)3)
     
    #define YYJSON_TAG_MASK   ((uint8_t)0xFF) /* 11111111 */
     
    #define YYJSON_TAG_BIT   ((uint8_t)8)
     
    #define YYJSON_PADDING_SIZE   4
     
    #define YYJSON_WRITE_FP_FLAG_BITS   8
     
    #define YYJSON_WRITE_FP_PREC_BITS   4
     
    #define YYJSON_WRITE_FP_TO_FIXED(prec)
     
    #define YYJSON_WRITE_FP_TO_FLOAT   ((yyjson_write_flag)(1 << (32 - 5)))
     
    #define yyjson_arr_foreach(arr, idx, max, val)
     
    #define yyjson_obj_foreach(obj, idx, max, key, val)
     
    #define yyjson_mut_arr_foreach(arr, idx, max, val)
     
    #define yyjson_mut_obj_foreach(obj, idx, max, key, val)
     
    + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    typedef uint8_t yyjson_type
     
    typedef uint8_t yyjson_subtype
     
    typedef uint32_t yyjson_read_flag
     
    typedef uint32_t yyjson_read_code
     
    typedef struct yyjson_incr_state yyjson_incr_state
     
    typedef uint32_t yyjson_write_flag
     
    typedef uint32_t yyjson_write_code
     
    typedef uint32_t yyjson_ptr_code
     
    typedef uint32_t yyjson_patch_code
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    yyjson_api uint32_t yyjson_version (void)
     
    yyjson_api bool yyjson_alc_pool_init (yyjson_alc *alc, void *buf, size_t size)
     
    yyjson_api yyjson_alcyyjson_alc_dyn_new (void)
     
    yyjson_api void yyjson_alc_dyn_free (yyjson_alc *alc)
     
    yyjson_api bool yyjson_locate_pos (const char *str, size_t len, size_t pos, size_t *line, size_t *col, size_t *chr)
     
    yyjson_api yyjson_docyyjson_read_opts (char *dat, size_t len, yyjson_read_flag flg, const yyjson_alc *alc, yyjson_read_err *err)
     
    yyjson_api yyjson_docyyjson_read_file (const char *path, yyjson_read_flag flg, const yyjson_alc *alc, yyjson_read_err *err)
     
    yyjson_api yyjson_docyyjson_read_fp (FILE *fp, yyjson_read_flag flg, const yyjson_alc *alc, yyjson_read_err *err)
     
    yyjson_api_inline yyjson_docyyjson_read (const char *dat, size_t len, yyjson_read_flag flg)
     
    yyjson_api yyjson_incr_stateyyjson_incr_new (char *buf, size_t buf_len, yyjson_read_flag flg, const yyjson_alc *alc)
     
    yyjson_api yyjson_docyyjson_incr_read (yyjson_incr_state *state, size_t len, yyjson_read_err *err)
     
    yyjson_api void yyjson_incr_free (yyjson_incr_state *state)
     
    yyjson_api_inline size_t yyjson_read_max_memory_usage (size_t len, yyjson_read_flag flg)
     
    yyjson_api const char * yyjson_read_number (const char *dat, yyjson_val *val, yyjson_read_flag flg, const yyjson_alc *alc, yyjson_read_err *err)
     
    yyjson_api_inline const char * yyjson_mut_read_number (const char *dat, yyjson_mut_val *val, yyjson_read_flag flg, const yyjson_alc *alc, yyjson_read_err *err)
     
    yyjson_api char * yyjson_write_opts (const yyjson_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, size_t *len, yyjson_write_err *err)
     
    yyjson_api bool yyjson_write_file (const char *path, const yyjson_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err)
     
    yyjson_api bool yyjson_write_fp (FILE *fp, const yyjson_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err)
     
    yyjson_api_inline char * yyjson_write (const yyjson_doc *doc, yyjson_write_flag flg, size_t *len)
     
    yyjson_api char * yyjson_mut_write_opts (const yyjson_mut_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, size_t *len, yyjson_write_err *err)
     
    yyjson_api bool yyjson_mut_write_file (const char *path, const yyjson_mut_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err)
     
    yyjson_api bool yyjson_mut_write_fp (FILE *fp, const yyjson_mut_doc *doc, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err)
     
    yyjson_api_inline char * yyjson_mut_write (const yyjson_mut_doc *doc, yyjson_write_flag flg, size_t *len)
     
    yyjson_api char * yyjson_val_write_opts (const yyjson_val *val, yyjson_write_flag flg, const yyjson_alc *alc, size_t *len, yyjson_write_err *err)
     
    yyjson_api bool yyjson_val_write_file (const char *path, const yyjson_val *val, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err)
     
    yyjson_api bool yyjson_val_write_fp (FILE *fp, const yyjson_val *val, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err)
     
    yyjson_api_inline char * yyjson_val_write (const yyjson_val *val, yyjson_write_flag flg, size_t *len)
     
    yyjson_api char * yyjson_mut_val_write_opts (const yyjson_mut_val *val, yyjson_write_flag flg, const yyjson_alc *alc, size_t *len, yyjson_write_err *err)
     
    yyjson_api bool yyjson_mut_val_write_file (const char *path, const yyjson_mut_val *val, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err)
     
    yyjson_api bool yyjson_mut_val_write_fp (FILE *fp, const yyjson_mut_val *val, yyjson_write_flag flg, const yyjson_alc *alc, yyjson_write_err *err)
     
    yyjson_api_inline char * yyjson_mut_val_write (const yyjson_mut_val *val, yyjson_write_flag flg, size_t *len)
     
    yyjson_api char * yyjson_write_number (const yyjson_val *val, char *buf)
     
    yyjson_api_inline char * yyjson_mut_write_number (const yyjson_mut_val *val, char *buf)
     
    yyjson_api_inline yyjson_valyyjson_doc_get_root (yyjson_doc *doc)
     
    yyjson_api_inline size_t yyjson_doc_get_read_size (yyjson_doc *doc)
     
    yyjson_api_inline size_t yyjson_doc_get_val_count (yyjson_doc *doc)
     
    yyjson_api_inline void yyjson_doc_free (yyjson_doc *doc)
     
    yyjson_api_inline bool yyjson_is_raw (yyjson_val *val)
     
    yyjson_api_inline bool yyjson_is_null (yyjson_val *val)
     
    yyjson_api_inline bool yyjson_is_true (yyjson_val *val)
     
    yyjson_api_inline bool yyjson_is_false (yyjson_val *val)
     
    yyjson_api_inline bool yyjson_is_bool (yyjson_val *val)
     
    yyjson_api_inline bool yyjson_is_uint (yyjson_val *val)
     
    yyjson_api_inline bool yyjson_is_sint (yyjson_val *val)
     
    yyjson_api_inline bool yyjson_is_int (yyjson_val *val)
     
    yyjson_api_inline bool yyjson_is_real (yyjson_val *val)
     
    yyjson_api_inline bool yyjson_is_num (yyjson_val *val)
     
    yyjson_api_inline bool yyjson_is_str (yyjson_val *val)
     
    yyjson_api_inline bool yyjson_is_arr (yyjson_val *val)
     
    yyjson_api_inline bool yyjson_is_obj (yyjson_val *val)
     
    yyjson_api_inline bool yyjson_is_ctn (yyjson_val *val)
     
    yyjson_api_inline yyjson_type yyjson_get_type (yyjson_val *val)
     
    yyjson_api_inline yyjson_subtype yyjson_get_subtype (yyjson_val *val)
     
    yyjson_api_inline uint8_t yyjson_get_tag (yyjson_val *val)
     
    yyjson_api_inline const char * yyjson_get_type_desc (yyjson_val *val)
     
    yyjson_api_inline const char * yyjson_get_raw (yyjson_val *val)
     
    yyjson_api_inline bool yyjson_get_bool (yyjson_val *val)
     
    yyjson_api_inline uint64_t yyjson_get_uint (yyjson_val *val)
     
    yyjson_api_inline int64_t yyjson_get_sint (yyjson_val *val)
     
    yyjson_api_inline int yyjson_get_int (yyjson_val *val)
     
    yyjson_api_inline double yyjson_get_real (yyjson_val *val)
     
    yyjson_api_inline double yyjson_get_num (yyjson_val *val)
     
    yyjson_api_inline const char * yyjson_get_str (yyjson_val *val)
     
    yyjson_api_inline size_t yyjson_get_len (yyjson_val *val)
     
    yyjson_api_inline bool yyjson_equals_str (yyjson_val *val, const char *str)
     
    yyjson_api_inline bool yyjson_equals_strn (yyjson_val *val, const char *str, size_t len)
     
    yyjson_api_inline bool yyjson_equals (yyjson_val *lhs, yyjson_val *rhs)
     
    yyjson_api_inline bool yyjson_set_raw (yyjson_val *val, const char *raw, size_t len)
     
    yyjson_api_inline bool yyjson_set_null (yyjson_val *val)
     
    yyjson_api_inline bool yyjson_set_bool (yyjson_val *val, bool num)
     
    yyjson_api_inline bool yyjson_set_uint (yyjson_val *val, uint64_t num)
     
    yyjson_api_inline bool yyjson_set_sint (yyjson_val *val, int64_t num)
     
    yyjson_api_inline bool yyjson_set_int (yyjson_val *val, int num)
     
    yyjson_api_inline bool yyjson_set_float (yyjson_val *val, float num)
     
    yyjson_api_inline bool yyjson_set_double (yyjson_val *val, double num)
     
    yyjson_api_inline bool yyjson_set_real (yyjson_val *val, double num)
     
    yyjson_api_inline bool yyjson_set_fp_to_fixed (yyjson_val *val, int prec)
     
    yyjson_api_inline bool yyjson_set_fp_to_float (yyjson_val *val, bool flt)
     
    yyjson_api_inline bool yyjson_set_str (yyjson_val *val, const char *str)
     
    yyjson_api_inline bool yyjson_set_strn (yyjson_val *val, const char *str, size_t len)
     
    yyjson_api_inline bool yyjson_set_str_noesc (yyjson_val *val, bool noesc)
     
    yyjson_api_inline size_t yyjson_arr_size (yyjson_val *arr)
     
    yyjson_api_inline yyjson_valyyjson_arr_get (yyjson_val *arr, size_t idx)
     
    yyjson_api_inline yyjson_valyyjson_arr_get_first (yyjson_val *arr)
     
    yyjson_api_inline yyjson_valyyjson_arr_get_last (yyjson_val *arr)
     
    yyjson_api_inline bool yyjson_arr_iter_init (yyjson_val *arr, yyjson_arr_iter *iter)
     
    yyjson_api_inline yyjson_arr_iter yyjson_arr_iter_with (yyjson_val *arr)
     
    yyjson_api_inline bool yyjson_arr_iter_has_next (yyjson_arr_iter *iter)
     
    yyjson_api_inline yyjson_valyyjson_arr_iter_next (yyjson_arr_iter *iter)
     
    yyjson_api_inline size_t yyjson_obj_size (yyjson_val *obj)
     
    yyjson_api_inline yyjson_valyyjson_obj_get (yyjson_val *obj, const char *key)
     
    yyjson_api_inline yyjson_valyyjson_obj_getn (yyjson_val *obj, const char *key, size_t key_len)
     
    yyjson_api_inline bool yyjson_obj_iter_init (yyjson_val *obj, yyjson_obj_iter *iter)
     
    yyjson_api_inline yyjson_obj_iter yyjson_obj_iter_with (yyjson_val *obj)
     
    yyjson_api_inline bool yyjson_obj_iter_has_next (yyjson_obj_iter *iter)
     
    yyjson_api_inline yyjson_valyyjson_obj_iter_next (yyjson_obj_iter *iter)
     
    yyjson_api_inline yyjson_valyyjson_obj_iter_get_val (yyjson_val *key)
     
    yyjson_api_inline yyjson_valyyjson_obj_iter_get (yyjson_obj_iter *iter, const char *key)
     
    yyjson_api_inline yyjson_valyyjson_obj_iter_getn (yyjson_obj_iter *iter, const char *key, size_t key_len)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_doc_get_root (yyjson_mut_doc *doc)
     
    yyjson_api_inline void yyjson_mut_doc_set_root (yyjson_mut_doc *doc, yyjson_mut_val *root)
     
    yyjson_api bool yyjson_mut_doc_set_str_pool_size (yyjson_mut_doc *doc, size_t len)
     
    yyjson_api bool yyjson_mut_doc_set_val_pool_size (yyjson_mut_doc *doc, size_t count)
     
    yyjson_api void yyjson_mut_doc_free (yyjson_mut_doc *doc)
     
    yyjson_api yyjson_mut_docyyjson_mut_doc_new (const yyjson_alc *alc)
     
    yyjson_api yyjson_mut_docyyjson_doc_mut_copy (yyjson_doc *doc, const yyjson_alc *alc)
     
    yyjson_api yyjson_mut_docyyjson_mut_doc_mut_copy (yyjson_mut_doc *doc, const yyjson_alc *alc)
     
    yyjson_api yyjson_mut_valyyjson_val_mut_copy (yyjson_mut_doc *doc, yyjson_val *val)
     
    yyjson_api yyjson_mut_valyyjson_mut_val_mut_copy (yyjson_mut_doc *doc, yyjson_mut_val *val)
     
    yyjson_api yyjson_docyyjson_mut_doc_imut_copy (yyjson_mut_doc *doc, const yyjson_alc *alc)
     
    yyjson_api yyjson_docyyjson_mut_val_imut_copy (yyjson_mut_val *val, const yyjson_alc *alc)
     
    yyjson_api_inline bool yyjson_mut_is_raw (yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_mut_is_null (yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_mut_is_true (yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_mut_is_false (yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_mut_is_bool (yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_mut_is_uint (yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_mut_is_sint (yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_mut_is_int (yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_mut_is_real (yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_mut_is_num (yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_mut_is_str (yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_mut_is_arr (yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_mut_is_obj (yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_mut_is_ctn (yyjson_mut_val *val)
     
    yyjson_api_inline yyjson_type yyjson_mut_get_type (yyjson_mut_val *val)
     
    yyjson_api_inline yyjson_subtype yyjson_mut_get_subtype (yyjson_mut_val *val)
     
    yyjson_api_inline uint8_t yyjson_mut_get_tag (yyjson_mut_val *val)
     
    yyjson_api_inline const char * yyjson_mut_get_type_desc (yyjson_mut_val *val)
     
    yyjson_api_inline const char * yyjson_mut_get_raw (yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_mut_get_bool (yyjson_mut_val *val)
     
    yyjson_api_inline uint64_t yyjson_mut_get_uint (yyjson_mut_val *val)
     
    yyjson_api_inline int64_t yyjson_mut_get_sint (yyjson_mut_val *val)
     
    yyjson_api_inline int yyjson_mut_get_int (yyjson_mut_val *val)
     
    yyjson_api_inline double yyjson_mut_get_real (yyjson_mut_val *val)
     
    yyjson_api_inline double yyjson_mut_get_num (yyjson_mut_val *val)
     
    yyjson_api_inline const char * yyjson_mut_get_str (yyjson_mut_val *val)
     
    yyjson_api_inline size_t yyjson_mut_get_len (yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_mut_equals_str (yyjson_mut_val *val, const char *str)
     
    yyjson_api_inline bool yyjson_mut_equals_strn (yyjson_mut_val *val, const char *str, size_t len)
     
    yyjson_api_inline bool yyjson_mut_equals (yyjson_mut_val *lhs, yyjson_mut_val *rhs)
     
    yyjson_api_inline bool yyjson_mut_set_raw (yyjson_mut_val *val, const char *raw, size_t len)
     
    yyjson_api_inline bool yyjson_mut_set_null (yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_mut_set_bool (yyjson_mut_val *val, bool num)
     
    yyjson_api_inline bool yyjson_mut_set_uint (yyjson_mut_val *val, uint64_t num)
     
    yyjson_api_inline bool yyjson_mut_set_sint (yyjson_mut_val *val, int64_t num)
     
    yyjson_api_inline bool yyjson_mut_set_int (yyjson_mut_val *val, int num)
     
    yyjson_api_inline bool yyjson_mut_set_float (yyjson_mut_val *val, float num)
     
    yyjson_api_inline bool yyjson_mut_set_double (yyjson_mut_val *val, double num)
     
    yyjson_api_inline bool yyjson_mut_set_real (yyjson_mut_val *val, double num)
     
    yyjson_api_inline bool yyjson_mut_set_fp_to_fixed (yyjson_mut_val *val, int prec)
     
    yyjson_api_inline bool yyjson_mut_set_fp_to_float (yyjson_mut_val *val, bool flt)
     
    yyjson_api_inline bool yyjson_mut_set_str (yyjson_mut_val *val, const char *str)
     
    yyjson_api_inline bool yyjson_mut_set_strn (yyjson_mut_val *val, const char *str, size_t len)
     
    yyjson_api_inline bool yyjson_mut_set_str_noesc (yyjson_mut_val *val, bool noesc)
     
    yyjson_api_inline bool yyjson_mut_set_arr (yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_mut_set_obj (yyjson_mut_val *val)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_raw (yyjson_mut_doc *doc, const char *str)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_rawn (yyjson_mut_doc *doc, const char *str, size_t len)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_rawcpy (yyjson_mut_doc *doc, const char *str)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_rawncpy (yyjson_mut_doc *doc, const char *str, size_t len)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_null (yyjson_mut_doc *doc)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_true (yyjson_mut_doc *doc)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_false (yyjson_mut_doc *doc)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_bool (yyjson_mut_doc *doc, bool val)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_uint (yyjson_mut_doc *doc, uint64_t num)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_sint (yyjson_mut_doc *doc, int64_t num)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_int (yyjson_mut_doc *doc, int64_t num)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_float (yyjson_mut_doc *doc, float num)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_double (yyjson_mut_doc *doc, double num)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_real (yyjson_mut_doc *doc, double num)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_str (yyjson_mut_doc *doc, const char *str)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_strn (yyjson_mut_doc *doc, const char *str, size_t len)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_strcpy (yyjson_mut_doc *doc, const char *str)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_strncpy (yyjson_mut_doc *doc, const char *str, size_t len)
     
    yyjson_api_inline size_t yyjson_mut_arr_size (yyjson_mut_val *arr)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_get (yyjson_mut_val *arr, size_t idx)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_get_first (yyjson_mut_val *arr)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_get_last (yyjson_mut_val *arr)
     
    yyjson_api_inline bool yyjson_mut_arr_iter_init (yyjson_mut_val *arr, yyjson_mut_arr_iter *iter)
     
    yyjson_api_inline yyjson_mut_arr_iter yyjson_mut_arr_iter_with (yyjson_mut_val *arr)
     
    yyjson_api_inline bool yyjson_mut_arr_iter_has_next (yyjson_mut_arr_iter *iter)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_iter_next (yyjson_mut_arr_iter *iter)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_iter_remove (yyjson_mut_arr_iter *iter)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr (yyjson_mut_doc *doc)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_with_bool (yyjson_mut_doc *doc, const bool *vals, size_t count)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_with_sint (yyjson_mut_doc *doc, const int64_t *vals, size_t count)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_with_uint (yyjson_mut_doc *doc, const uint64_t *vals, size_t count)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_with_real (yyjson_mut_doc *doc, const double *vals, size_t count)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_with_sint8 (yyjson_mut_doc *doc, const int8_t *vals, size_t count)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_with_sint16 (yyjson_mut_doc *doc, const int16_t *vals, size_t count)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_with_sint32 (yyjson_mut_doc *doc, const int32_t *vals, size_t count)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_with_sint64 (yyjson_mut_doc *doc, const int64_t *vals, size_t count)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_with_uint8 (yyjson_mut_doc *doc, const uint8_t *vals, size_t count)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_with_uint16 (yyjson_mut_doc *doc, const uint16_t *vals, size_t count)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_with_uint32 (yyjson_mut_doc *doc, const uint32_t *vals, size_t count)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_with_uint64 (yyjson_mut_doc *doc, const uint64_t *vals, size_t count)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_with_float (yyjson_mut_doc *doc, const float *vals, size_t count)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_with_double (yyjson_mut_doc *doc, const double *vals, size_t count)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_with_str (yyjson_mut_doc *doc, const char **vals, size_t count)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_with_strn (yyjson_mut_doc *doc, const char **vals, const size_t *lens, size_t count)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_with_strcpy (yyjson_mut_doc *doc, const char **vals, size_t count)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_with_strncpy (yyjson_mut_doc *doc, const char **vals, const size_t *lens, size_t count)
     
    yyjson_api_inline bool yyjson_mut_arr_insert (yyjson_mut_val *arr, yyjson_mut_val *val, size_t idx)
     
    yyjson_api_inline bool yyjson_mut_arr_append (yyjson_mut_val *arr, yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_mut_arr_prepend (yyjson_mut_val *arr, yyjson_mut_val *val)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_replace (yyjson_mut_val *arr, size_t idx, yyjson_mut_val *val)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_remove (yyjson_mut_val *arr, size_t idx)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_remove_first (yyjson_mut_val *arr)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_remove_last (yyjson_mut_val *arr)
     
    yyjson_api_inline bool yyjson_mut_arr_remove_range (yyjson_mut_val *arr, size_t idx, size_t len)
     
    yyjson_api_inline bool yyjson_mut_arr_clear (yyjson_mut_val *arr)
     
    yyjson_api_inline bool yyjson_mut_arr_rotate (yyjson_mut_val *arr, size_t idx)
     
    yyjson_api_inline bool yyjson_mut_arr_add_val (yyjson_mut_val *arr, yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_mut_arr_add_null (yyjson_mut_doc *doc, yyjson_mut_val *arr)
     
    yyjson_api_inline bool yyjson_mut_arr_add_true (yyjson_mut_doc *doc, yyjson_mut_val *arr)
     
    yyjson_api_inline bool yyjson_mut_arr_add_false (yyjson_mut_doc *doc, yyjson_mut_val *arr)
     
    yyjson_api_inline bool yyjson_mut_arr_add_bool (yyjson_mut_doc *doc, yyjson_mut_val *arr, bool val)
     
    yyjson_api_inline bool yyjson_mut_arr_add_uint (yyjson_mut_doc *doc, yyjson_mut_val *arr, uint64_t num)
     
    yyjson_api_inline bool yyjson_mut_arr_add_sint (yyjson_mut_doc *doc, yyjson_mut_val *arr, int64_t num)
     
    yyjson_api_inline bool yyjson_mut_arr_add_int (yyjson_mut_doc *doc, yyjson_mut_val *arr, int64_t num)
     
    yyjson_api_inline bool yyjson_mut_arr_add_float (yyjson_mut_doc *doc, yyjson_mut_val *arr, float num)
     
    yyjson_api_inline bool yyjson_mut_arr_add_double (yyjson_mut_doc *doc, yyjson_mut_val *arr, double num)
     
    yyjson_api_inline bool yyjson_mut_arr_add_real (yyjson_mut_doc *doc, yyjson_mut_val *arr, double num)
     
    yyjson_api_inline bool yyjson_mut_arr_add_str (yyjson_mut_doc *doc, yyjson_mut_val *arr, const char *str)
     
    yyjson_api_inline bool yyjson_mut_arr_add_strn (yyjson_mut_doc *doc, yyjson_mut_val *arr, const char *str, size_t len)
     
    yyjson_api_inline bool yyjson_mut_arr_add_strcpy (yyjson_mut_doc *doc, yyjson_mut_val *arr, const char *str)
     
    yyjson_api_inline bool yyjson_mut_arr_add_strncpy (yyjson_mut_doc *doc, yyjson_mut_val *arr, const char *str, size_t len)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_add_arr (yyjson_mut_doc *doc, yyjson_mut_val *arr)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_arr_add_obj (yyjson_mut_doc *doc, yyjson_mut_val *arr)
     
    yyjson_api_inline size_t yyjson_mut_obj_size (yyjson_mut_val *obj)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_obj_get (yyjson_mut_val *obj, const char *key)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_obj_getn (yyjson_mut_val *obj, const char *key, size_t key_len)
     
    yyjson_api_inline bool yyjson_mut_obj_iter_init (yyjson_mut_val *obj, yyjson_mut_obj_iter *iter)
     
    yyjson_api_inline yyjson_mut_obj_iter yyjson_mut_obj_iter_with (yyjson_mut_val *obj)
     
    yyjson_api_inline bool yyjson_mut_obj_iter_has_next (yyjson_mut_obj_iter *iter)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_obj_iter_next (yyjson_mut_obj_iter *iter)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_obj_iter_get_val (yyjson_mut_val *key)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_obj_iter_remove (yyjson_mut_obj_iter *iter)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_obj_iter_get (yyjson_mut_obj_iter *iter, const char *key)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_obj_iter_getn (yyjson_mut_obj_iter *iter, const char *key, size_t key_len)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_obj (yyjson_mut_doc *doc)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_obj_with_str (yyjson_mut_doc *doc, const char **keys, const char **vals, size_t count)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_obj_with_kv (yyjson_mut_doc *doc, const char **kv_pairs, size_t pair_count)
     
    yyjson_api_inline bool yyjson_mut_obj_add (yyjson_mut_val *obj, yyjson_mut_val *key, yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_mut_obj_put (yyjson_mut_val *obj, yyjson_mut_val *key, yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_mut_obj_insert (yyjson_mut_val *obj, yyjson_mut_val *key, yyjson_mut_val *val, size_t idx)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_obj_remove (yyjson_mut_val *obj, yyjson_mut_val *key)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_obj_remove_key (yyjson_mut_val *obj, const char *key)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_obj_remove_keyn (yyjson_mut_val *obj, const char *key, size_t key_len)
     
    yyjson_api_inline bool yyjson_mut_obj_clear (yyjson_mut_val *obj)
     
    yyjson_api_inline bool yyjson_mut_obj_replace (yyjson_mut_val *obj, yyjson_mut_val *key, yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_mut_obj_rotate (yyjson_mut_val *obj, size_t idx)
     
    yyjson_api_inline bool yyjson_mut_obj_add_null (yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key)
     
    yyjson_api_inline bool yyjson_mut_obj_add_true (yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key)
     
    yyjson_api_inline bool yyjson_mut_obj_add_false (yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key)
     
    yyjson_api_inline bool yyjson_mut_obj_add_bool (yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, bool val)
     
    yyjson_api_inline bool yyjson_mut_obj_add_uint (yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, uint64_t val)
     
    yyjson_api_inline bool yyjson_mut_obj_add_sint (yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, int64_t val)
     
    yyjson_api_inline bool yyjson_mut_obj_add_int (yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, int64_t val)
     
    yyjson_api_inline bool yyjson_mut_obj_add_float (yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, float val)
     
    yyjson_api_inline bool yyjson_mut_obj_add_double (yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, double val)
     
    yyjson_api_inline bool yyjson_mut_obj_add_real (yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, double val)
     
    yyjson_api_inline bool yyjson_mut_obj_add_str (yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, const char *val)
     
    yyjson_api_inline bool yyjson_mut_obj_add_strn (yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, const char *val, size_t len)
     
    yyjson_api_inline bool yyjson_mut_obj_add_strcpy (yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, const char *val)
     
    yyjson_api_inline bool yyjson_mut_obj_add_strncpy (yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, const char *val, size_t len)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_obj_add_arr (yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_obj_add_obj (yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key)
     
    yyjson_api_inline bool yyjson_mut_obj_add_val (yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, yyjson_mut_val *val)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_obj_remove_str (yyjson_mut_val *obj, const char *key)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_obj_remove_strn (yyjson_mut_val *obj, const char *key, size_t len)
     
    yyjson_api_inline bool yyjson_mut_obj_rename_key (yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, const char *new_key)
     
    yyjson_api_inline bool yyjson_mut_obj_rename_keyn (yyjson_mut_doc *doc, yyjson_mut_val *obj, const char *key, size_t len, const char *new_key, size_t new_len)
     
    yyjson_api_inline yyjson_valyyjson_doc_ptr_get (yyjson_doc *doc, const char *ptr)
     
    yyjson_api_inline yyjson_valyyjson_doc_ptr_getn (yyjson_doc *doc, const char *ptr, size_t len)
     
    yyjson_api_inline yyjson_valyyjson_doc_ptr_getx (yyjson_doc *doc, const char *ptr, size_t len, yyjson_ptr_err *err)
     
    yyjson_api_inline yyjson_valyyjson_ptr_get (yyjson_val *val, const char *ptr)
     
    yyjson_api_inline yyjson_valyyjson_ptr_getn (yyjson_val *val, const char *ptr, size_t len)
     
    yyjson_api_inline yyjson_valyyjson_ptr_getx (yyjson_val *val, const char *ptr, size_t len, yyjson_ptr_err *err)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_doc_ptr_get (yyjson_mut_doc *doc, const char *ptr)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_doc_ptr_getn (yyjson_mut_doc *doc, const char *ptr, size_t len)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_doc_ptr_getx (yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_ptr_get (yyjson_mut_val *val, const char *ptr)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_ptr_getn (yyjson_mut_val *val, const char *ptr, size_t len)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_ptr_getx (yyjson_mut_val *val, const char *ptr, size_t len, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err)
     
    yyjson_api_inline bool yyjson_mut_doc_ptr_add (yyjson_mut_doc *doc, const char *ptr, yyjson_mut_val *new_val)
     
    yyjson_api_inline bool yyjson_mut_doc_ptr_addn (yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val)
     
    yyjson_api_inline bool yyjson_mut_doc_ptr_addx (yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val, bool create_parent, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err)
     
    yyjson_api_inline bool yyjson_mut_ptr_add (yyjson_mut_val *val, const char *ptr, yyjson_mut_val *new_val, yyjson_mut_doc *doc)
     
    yyjson_api_inline bool yyjson_mut_ptr_addn (yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_mut_doc *doc)
     
    yyjson_api_inline bool yyjson_mut_ptr_addx (yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_mut_doc *doc, bool create_parent, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err)
     
    yyjson_api_inline bool yyjson_mut_doc_ptr_set (yyjson_mut_doc *doc, const char *ptr, yyjson_mut_val *new_val)
     
    yyjson_api_inline bool yyjson_mut_doc_ptr_setn (yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val)
     
    yyjson_api_inline bool yyjson_mut_doc_ptr_setx (yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val, bool create_parent, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err)
     
    yyjson_api_inline bool yyjson_mut_ptr_set (yyjson_mut_val *val, const char *ptr, yyjson_mut_val *new_val, yyjson_mut_doc *doc)
     
    yyjson_api_inline bool yyjson_mut_ptr_setn (yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_mut_doc *doc)
     
    yyjson_api_inline bool yyjson_mut_ptr_setx (yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_mut_doc *doc, bool create_parent, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_doc_ptr_replace (yyjson_mut_doc *doc, const char *ptr, yyjson_mut_val *new_val)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_doc_ptr_replacen (yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_doc_ptr_replacex (yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_ptr_replace (yyjson_mut_val *val, const char *ptr, yyjson_mut_val *new_val)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_ptr_replacen (yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_ptr_replacex (yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_doc_ptr_remove (yyjson_mut_doc *doc, const char *ptr)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_doc_ptr_removen (yyjson_mut_doc *doc, const char *ptr, size_t len)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_doc_ptr_removex (yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_ptr_remove (yyjson_mut_val *val, const char *ptr)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_ptr_removen (yyjson_mut_val *val, const char *ptr, size_t len)
     
    yyjson_api_inline yyjson_mut_valyyjson_mut_ptr_removex (yyjson_mut_val *val, const char *ptr, size_t len, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err)
     
    yyjson_api_inline bool yyjson_ptr_ctx_append (yyjson_ptr_ctx *ctx, yyjson_mut_val *key, yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_ptr_ctx_replace (yyjson_ptr_ctx *ctx, yyjson_mut_val *val)
     
    yyjson_api_inline bool yyjson_ptr_ctx_remove (yyjson_ptr_ctx *ctx)
     
    yyjson_api yyjson_mut_valyyjson_patch (yyjson_mut_doc *doc, yyjson_val *orig, yyjson_val *patch, yyjson_patch_err *err)
     
    yyjson_api yyjson_mut_valyyjson_mut_patch (yyjson_mut_doc *doc, yyjson_mut_val *orig, yyjson_mut_val *patch, yyjson_patch_err *err)
     
    yyjson_api yyjson_mut_valyyjson_merge_patch (yyjson_mut_doc *doc, yyjson_val *orig, yyjson_val *patch)
     
    yyjson_api yyjson_mut_valyyjson_mut_merge_patch (yyjson_mut_doc *doc, yyjson_mut_val *orig, yyjson_mut_val *patch)
     
    yyjson_api_inline bool yyjson_ptr_get_bool (yyjson_val *root, const char *ptr, bool *value)
     
    yyjson_api_inline bool yyjson_ptr_get_uint (yyjson_val *root, const char *ptr, uint64_t *value)
     
    yyjson_api_inline bool yyjson_ptr_get_sint (yyjson_val *root, const char *ptr, int64_t *value)
     
    yyjson_api_inline bool yyjson_ptr_get_real (yyjson_val *root, const char *ptr, double *value)
     
    yyjson_api_inline bool yyjson_ptr_get_num (yyjson_val *root, const char *ptr, double *value)
     
    yyjson_api_inline bool yyjson_ptr_get_str (yyjson_val *root, const char *ptr, const char **value)
     
     yyjson_deprecated ("renamed to yyjson_doc_ptr_get") yyjson_api_inline yyjson_val *yyjson_doc_get_pointer(yyjson_doc *doc
     
     yyjson_deprecated ("renamed to yyjson_doc_ptr_getn") yyjson_api_inline yyjson_val *yyjson_doc_get_pointern(yyjson_doc *doc
     
     yyjson_deprecated ("renamed to yyjson_mut_doc_ptr_get") yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_get_pointer(yyjson_mut_doc *doc
     
     yyjson_deprecated ("renamed to yyjson_mut_doc_ptr_getn") yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_get_pointern(yyjson_mut_doc *doc
     
     yyjson_deprecated ("renamed to yyjson_ptr_get") yyjson_api_inline yyjson_val *yyjson_get_pointer(yyjson_val *val
     
     yyjson_deprecated ("renamed to yyjson_ptr_getn") yyjson_api_inline yyjson_val *yyjson_get_pointern(yyjson_val *val
     
     yyjson_deprecated ("renamed to yyjson_mut_ptr_get") yyjson_api_inline yyjson_mut_val *yyjson_mut_get_pointer(yyjson_mut_val *val
     
     yyjson_deprecated ("renamed to yyjson_mut_ptr_getn") yyjson_api_inline yyjson_mut_val *yyjson_mut_get_pointern(yyjson_mut_val *val
     
     yyjson_deprecated ("renamed to unsafe_yyjson_ptr_getn") yyjson_api_inline yyjson_val *unsafe_yyjson_get_pointer(yyjson_val *val
     
     yyjson_deprecated ("renamed to unsafe_yyjson_mut_ptr_getx") yyjson_api_inline yyjson_mut_val *unsafe_yyjson_mut_get_pointer(yyjson_mut_val *val
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    static const yyjson_read_flag YYJSON_READ_NOFLAG = 0
     
    static const yyjson_read_flag YYJSON_READ_INSITU = 1 << 0
     
    static const yyjson_read_flag YYJSON_READ_STOP_WHEN_DONE = 1 << 1
     
    static const yyjson_read_flag YYJSON_READ_ALLOW_TRAILING_COMMAS = 1 << 2
     
    static const yyjson_read_flag YYJSON_READ_ALLOW_COMMENTS = 1 << 3
     
    static const yyjson_read_flag YYJSON_READ_ALLOW_INF_AND_NAN = 1 << 4
     
    static const yyjson_read_flag YYJSON_READ_NUMBER_AS_RAW = 1 << 5
     
    static const yyjson_read_flag YYJSON_READ_ALLOW_INVALID_UNICODE = 1 << 6
     
    static const yyjson_read_flag YYJSON_READ_BIGNUM_AS_RAW = 1 << 7
     
    static const yyjson_read_flag YYJSON_READ_ALLOW_BOM = 1 << 8
     
    static const yyjson_read_flag YYJSON_READ_ALLOW_EXT_NUMBER = 1 << 9
     
    static const yyjson_read_flag YYJSON_READ_ALLOW_EXT_ESCAPE = 1 << 10
     
    static const yyjson_read_flag YYJSON_READ_ALLOW_EXT_WHITESPACE = 1 << 11
     
    static const yyjson_read_flag YYJSON_READ_ALLOW_SINGLE_QUOTED_STR = 1 << 12
     
    static const yyjson_read_flag YYJSON_READ_ALLOW_UNQUOTED_KEY = 1 << 13
     
    static const yyjson_read_flag YYJSON_READ_JSON5
     
    static const yyjson_read_code YYJSON_READ_SUCCESS = 0
     
    static const yyjson_read_code YYJSON_READ_ERROR_INVALID_PARAMETER = 1
     
    static const yyjson_read_code YYJSON_READ_ERROR_MEMORY_ALLOCATION = 2
     
    static const yyjson_read_code YYJSON_READ_ERROR_EMPTY_CONTENT = 3
     
    static const yyjson_read_code YYJSON_READ_ERROR_UNEXPECTED_CONTENT = 4
     
    static const yyjson_read_code YYJSON_READ_ERROR_UNEXPECTED_END = 5
     
    static const yyjson_read_code YYJSON_READ_ERROR_UNEXPECTED_CHARACTER = 6
     
    static const yyjson_read_code YYJSON_READ_ERROR_JSON_STRUCTURE = 7
     
    static const yyjson_read_code YYJSON_READ_ERROR_INVALID_COMMENT = 8
     
    static const yyjson_read_code YYJSON_READ_ERROR_INVALID_NUMBER = 9
     
    static const yyjson_read_code YYJSON_READ_ERROR_INVALID_STRING = 10
     
    static const yyjson_read_code YYJSON_READ_ERROR_LITERAL = 11
     
    static const yyjson_read_code YYJSON_READ_ERROR_FILE_OPEN = 12
     
    static const yyjson_read_code YYJSON_READ_ERROR_FILE_READ = 13
     
    static const yyjson_read_code YYJSON_READ_ERROR_MORE = 14
     
    static const yyjson_write_flag YYJSON_WRITE_NOFLAG = 0
     
    static const yyjson_write_flag YYJSON_WRITE_PRETTY = 1 << 0
     
    static const yyjson_write_flag YYJSON_WRITE_ESCAPE_UNICODE = 1 << 1
     
    static const yyjson_write_flag YYJSON_WRITE_ESCAPE_SLASHES = 1 << 2
     
    static const yyjson_write_flag YYJSON_WRITE_ALLOW_INF_AND_NAN = 1 << 3
     
    static const yyjson_write_flag YYJSON_WRITE_INF_AND_NAN_AS_NULL = 1 << 4
     
    static const yyjson_write_flag YYJSON_WRITE_ALLOW_INVALID_UNICODE = 1 << 5
     
    static const yyjson_write_flag YYJSON_WRITE_PRETTY_TWO_SPACES = 1 << 6
     
    static const yyjson_write_flag YYJSON_WRITE_NEWLINE_AT_END = 1 << 7
     
    static const yyjson_write_code YYJSON_WRITE_SUCCESS = 0
     
    static const yyjson_write_code YYJSON_WRITE_ERROR_INVALID_PARAMETER = 1
     
    static const yyjson_write_code YYJSON_WRITE_ERROR_MEMORY_ALLOCATION = 2
     
    static const yyjson_write_code YYJSON_WRITE_ERROR_INVALID_VALUE_TYPE = 3
     
    static const yyjson_write_code YYJSON_WRITE_ERROR_NAN_OR_INF = 4
     
    static const yyjson_write_code YYJSON_WRITE_ERROR_FILE_OPEN = 5
     
    static const yyjson_write_code YYJSON_WRITE_ERROR_FILE_WRITE = 6
     
    static const yyjson_write_code YYJSON_WRITE_ERROR_INVALID_STRING = 7
     
    static const yyjson_ptr_code YYJSON_PTR_ERR_NONE = 0
     
    static const yyjson_ptr_code YYJSON_PTR_ERR_PARAMETER = 1
     
    static const yyjson_ptr_code YYJSON_PTR_ERR_SYNTAX = 2
     
    static const yyjson_ptr_code YYJSON_PTR_ERR_RESOLVE = 3
     
    static const yyjson_ptr_code YYJSON_PTR_ERR_NULL_ROOT = 4
     
    static const yyjson_ptr_code YYJSON_PTR_ERR_SET_ROOT = 5
     
    static const yyjson_ptr_code YYJSON_PTR_ERR_MEMORY_ALLOCATION = 6
     
    static const yyjson_patch_code YYJSON_PATCH_SUCCESS = 0
     
    static const yyjson_patch_code YYJSON_PATCH_ERROR_INVALID_PARAMETER = 1
     
    static const yyjson_patch_code YYJSON_PATCH_ERROR_MEMORY_ALLOCATION = 2
     
    static const yyjson_patch_code YYJSON_PATCH_ERROR_INVALID_OPERATION = 3
     
    static const yyjson_patch_code YYJSON_PATCH_ERROR_MISSING_KEY = 4
     
    static const yyjson_patch_code YYJSON_PATCH_ERROR_INVALID_MEMBER = 5
     
    static const yyjson_patch_code YYJSON_PATCH_ERROR_EQUAL = 6
     
    static const yyjson_patch_code YYJSON_PATCH_ERROR_POINTER = 7
     
    +

    Detailed Description

    +
    Date
    2019-03-09
    +
    Author
    YaoYuan
    +

    Data Structure Documentation

    + +

    ◆ yyjson_alc

    + +
    +
    + + + + +
    struct yyjson_alc
    +
    +

    A memory allocator.

    +

    Typically you don't need to use it, unless you want to customize your own memory allocator.

    +
    + + + + + + + + + + + + + +
    Data Fields
    +void *(*)(void *ctx, size_t size) +malloc +

    Same as libc's malloc(size), should not be NULL.

    +
    +void *(*)(void *ctx, void *ptr, size_t old_size, size_t size) +realloc +

    Same as libc's realloc(ptr, size), should not be NULL.

    +
    +void(*)(void *ctx, void *ptr) +free +

    Same as libc's free(ptr), should not be NULL.

    +
    +void * +ctx +

    A context for malloc/realloc/free, can be NULL.

    +
    + +
    +
    + +

    ◆ yyjson_read_err

    + +
    +
    + + + + +
    struct yyjson_read_err
    +
    +

    Error information for JSON reader.

    +
    + + + + + + + + + + +
    Data Fields
    +yyjson_read_code +code +

    Error code, see yyjson_read_code for all possible values.

    +
    +const char * +msg +

    Error message, constant, no need to free (NULL if success).

    +
    +size_t +pos +

    Error byte position for input data (0 if success).

    +
    + +
    +
    + +

    ◆ yyjson_write_err

    + +
    +
    + + + + +
    struct yyjson_write_err
    +
    +

    Error information for JSON writer.

    +
    + + + + + + + +
    Data Fields
    +yyjson_write_code +code +

    Error code, see yyjson_write_code for all possible values.

    +
    +const char * +msg +

    Error message, constant, no need to free (NULL if success).

    +
    + +
    +
    + +

    ◆ yyjson_arr_iter

    + +
    +
    + + + + +
    struct yyjson_arr_iter
    +
    +

    A JSON array iterator.

    +

    Example

    + +
    while ((val = yyjson_arr_iter_next(&iter))) {
    +
    your_func(val);
    +
    }
    +
    yyjson_api_inline yyjson_arr_iter yyjson_arr_iter_with(yyjson_val *arr)
    Definition yyjson.h:5452
    +
    yyjson_api_inline yyjson_val * yyjson_arr_iter_next(yyjson_arr_iter *iter)
    Definition yyjson.h:5462
    +
    Definition yyjson.h:1990
    +
    Definition yyjson.h:4765
    +
    + + + + + + + + + + +
    Data Fields
    +size_t +idx +

    next value's index

    +
    +size_t +max +

    maximum index (arr.size)

    +
    +yyjson_val * +cur +

    next value

    +
    + +
    +
    + +

    ◆ yyjson_obj_iter

    + +
    +
    + + + + +
    struct yyjson_obj_iter
    +
    +

    A JSON object iterator.

    +

    Example

    yyjson_val *key, *val;
    + +
    while ((key = yyjson_obj_iter_next(&iter))) {
    + +
    your_func(key, val);
    +
    }
    +
    yyjson_api_inline yyjson_val * yyjson_obj_iter_get_val(yyjson_val *key)
    Definition yyjson.h:5541
    +
    yyjson_api_inline yyjson_obj_iter yyjson_obj_iter_with(yyjson_val *obj)
    Definition yyjson.h:5521
    +
    yyjson_api_inline yyjson_val * yyjson_obj_iter_next(yyjson_obj_iter *iter)
    Definition yyjson.h:5531
    +
    yyjson_val * obj
    Definition yyjson.h:2118
    +
    Definition yyjson.h:2114
    +

    If the ordering of the keys is known at compile-time, you can use this method to speed up value lookups:

    // {"k1":1, "k2": 3, "k3": 3}
    +
    yyjson_val *key, *val;
    + +
    yyjson_val *v1 = yyjson_obj_iter_get(&iter, "k1");
    +
    yyjson_val *v3 = yyjson_obj_iter_get(&iter, "k3");
    +
    yyjson_api_inline yyjson_val * yyjson_obj_iter_get(yyjson_obj_iter *iter, const char *key)
    Definition yyjson.h:5545
    +
    See also
    yyjson_obj_iter_get() and yyjson_obj_iter_getn()
    +
    + + + + + + + + + + + + + +
    Data Fields
    +size_t +idx +

    next key's index

    +
    +size_t +max +

    maximum key index (obj.size)

    +
    +yyjson_val * +cur +

    next key

    +
    +yyjson_val * +obj +

    the object being iterated

    +
    + +
    +
    + +

    ◆ yyjson_mut_arr_iter

    + +
    +
    + + + + +
    struct yyjson_mut_arr_iter
    +
    +

    A mutable JSON array iterator.

    +
    Warning
    You should not modify the array while iterating over it, but you can use yyjson_mut_arr_iter_remove() to remove current value.
    +

    Example

    + +
    while ((val = yyjson_mut_arr_iter_next(&iter))) {
    +
    your_func(val);
    +
    if (your_val_is_unused(val)) {
    + +
    }
    +
    }
    +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_iter_remove(yyjson_mut_arr_iter *iter)
    Definition yyjson.h:6171
    +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_iter_next(yyjson_mut_arr_iter *iter)
    Definition yyjson.h:6159
    +
    yyjson_api_inline yyjson_mut_arr_iter yyjson_mut_arr_iter_with(yyjson_mut_val *arr)
    Definition yyjson.h:6148
    +
    yyjson_mut_val * arr
    Definition yyjson.h:2716
    +
    Definition yyjson.h:2711
    +
    Definition yyjson.h:5590
    +
    + + + + + + + + + + + + + + + + +
    Data Fields
    +size_t +idx +

    next value's index

    +
    +size_t +max +

    maximum index (arr.size)

    +
    +yyjson_mut_val * +cur +

    current value

    +
    +yyjson_mut_val * +pre +

    previous value

    +
    +yyjson_mut_val * +arr +

    the array being iterated

    +
    + +
    +
    + +

    ◆ yyjson_mut_obj_iter

    + +
    +
    + + + + +
    struct yyjson_mut_obj_iter
    +
    +

    A mutable JSON object iterator.

    +
    Warning
    You should not modify the object while iterating over it, but you can use yyjson_mut_obj_iter_remove() to remove current value.
    +

    Example

    yyjson_mut_val *key, *val;
    + +
    while ((key = yyjson_mut_obj_iter_next(&iter))) {
    + +
    your_func(key, val);
    +
    if (your_val_is_unused(key, val)) {
    + +
    }
    +
    }
    +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_iter_next(yyjson_mut_obj_iter *iter)
    Definition yyjson.h:6804
    +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_iter_remove(yyjson_mut_obj_iter *iter)
    Definition yyjson.h:6821
    +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_iter_get_val(yyjson_mut_val *key)
    Definition yyjson.h:6816
    +
    yyjson_mut_val * obj
    Definition yyjson.h:3542
    +
    yyjson_api_inline yyjson_mut_obj_iter yyjson_mut_obj_iter_with(yyjson_mut_val *obj)
    Definition yyjson.h:6793
    +
    Definition yyjson.h:3537
    +

    If the ordering of the keys is known at compile-time, you can use this method to speed up value lookups:

    // {"k1":1, "k2": 3, "k3": 3}
    +
    yyjson_mut_val *key, *val;
    + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_iter_get(yyjson_mut_obj_iter *iter, const char *key)
    Definition yyjson.h:6838
    +
    See also
    yyjson_mut_obj_iter_get() and yyjson_mut_obj_iter_getn()
    +
    + + + + + + + + + + + + + + + + +
    Data Fields
    +size_t +idx +

    next key's index

    +
    +size_t +max +

    maximum key index (obj.size)

    +
    +yyjson_mut_val * +cur +

    current key

    +
    +yyjson_mut_val * +pre +

    previous key

    +
    +yyjson_mut_val * +obj +

    the object being iterated

    +
    + +
    +
    + +

    ◆ yyjson_ptr_err

    + +
    +
    + + + + +
    struct yyjson_ptr_err
    +
    +

    Error information for JSON pointer.

    +
    + + + + + + + + + + +
    Data Fields
    +yyjson_ptr_code +code +

    Error code, see yyjson_ptr_code for all possible values.

    +
    +const char * +msg +

    Error message, constant, no need to free (NULL if no error).

    +
    +size_t +pos +

    Error byte position for input JSON pointer (0 if no error).

    +
    + +
    +
    + +

    ◆ yyjson_ptr_ctx

    + +
    +
    + + + + +
    struct yyjson_ptr_ctx
    +
    +

    A context for JSON pointer operation.

    +

    This struct stores the context of JSON Pointer operation result. The struct can be used with three helper functions: ctx_append(), ctx_replace(), and ctx_remove(), which perform the corresponding operations on the container without re-parsing the JSON Pointer.

    +

    For example:

    // doc before: {"a":[0,1,null]}
    +
    // ptr: "/a/2"
    +
    val = yyjson_mut_doc_ptr_getx(doc, ptr, strlen(ptr), &ctx, &err);
    +
    if (yyjson_is_null(val)) {
    + +
    }
    +
    // doc after: {"a":[0,1]}
    +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_doc_ptr_getx(yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err)
    Definition yyjson.h:7485
    +
    yyjson_api_inline bool yyjson_is_null(yyjson_val *val)
    Definition yyjson.h:5149
    +
    yyjson_api_inline bool yyjson_ptr_ctx_remove(yyjson_ptr_ctx *ctx)
    Definition yyjson.h:7991
    +
    + + + + + + + + + + +
    Data Fields
    +yyjson_mut_val * +ctn +

    The container (parent) of the target value. It can be either an array or an object. If the target location has no value, but all its parent containers exist, and the target location can be used to insert a new value, then ctn is the parent container of the target location. Otherwise, ctn is NULL.

    +
    +yyjson_mut_val * +pre +

    The previous sibling of the target value. It can be either a value in an array or a key in an object. As the container is a circular linked list of elements, pre is the previous node of the target value. If the operation is add or set, then pre is the previous node of the new value, not the original target value. If the target value does not exist, pre is NULL.

    +
    +yyjson_mut_val * +old +

    The removed value if the operation is set, replace or remove. It can be used to restore the original state of the document if needed.

    +
    + +
    +
    + +

    ◆ yyjson_patch_err

    + +
    +
    + + + + +
    struct yyjson_patch_err
    +
    +

    Error information for JSON patch.

    +
    + + + + + + + + + + + + + +
    Data Fields
    +yyjson_patch_code +code +

    Error code, see yyjson_patch_code for all possible values.

    +
    +size_t +idx +

    Index of the error operation (0 if no error).

    +
    +const char * +msg +

    Error message, constant, no need to free (NULL if no error).

    +
    +yyjson_ptr_err +ptr +

    JSON pointer error if code == YYJSON_PATCH_ERROR_POINTER.

    +
    + +
    +
    + +

    ◆ yyjson_val_uni

    + +
    +
    + + + + +
    union yyjson_val_uni
    +
    +

    Payload of a JSON value (8 bytes).

    +
    +
    +
    + +

    ◆ yyjson_val

    + +
    +
    + + + + +
    struct yyjson_val
    +
    +

    Immutable JSON value, 16 bytes.

    +

    An immutable value for reading JSON. A JSON Value has the same lifetime as its document. The memory is held by its document and and cannot be freed alone.

    +
    + + + + + + + +
    Data Fields
    +uint64_t +tag +

    type, subtype and length

    +
    +yyjson_val_uni +uni +

    payload

    +
    + +
    +
    + +

    ◆ yyjson_doc

    + +
    +
    + + + + +
    struct yyjson_doc
    +
    +

    An immutable document for reading JSON. This document holds memory for all its JSON values and strings. When it is no longer used, the user should call yyjson_doc_free() to free its memory.

    +
    + + + + + + + + + + + + + + + + +
    Data Fields
    +yyjson_val * +root +

    Root value of the document (nonnull).

    +
    +yyjson_alc +alc +

    Allocator used by document (nonnull).

    +
    +size_t +dat_read +

    The total number of bytes read when parsing JSON (nonzero).

    +
    +size_t +val_read +

    The total number of value read when parsing JSON (nonzero).

    +
    +char * +str_pool +

    The string pool used by JSON values (nullable).

    +
    + +
    +
    + +

    ◆ yyjson_mut_val

    + +
    +
    + + + + +
    struct yyjson_mut_val
    +
    +

    Mutable JSON value, 24 bytes. The 'tag' and 'uni' field is same as immutable value. The 'next' field links all elements inside the container to be a cycle.

    +

    A mutable value for building JSON. A JSON Value has the same lifetime as its document. The memory is held by its document and and cannot be freed alone.

    +
    + + + + + + + + + + +
    Data Fields
    +uint64_t +tag +

    type, subtype and length

    +
    +yyjson_val_uni +uni +

    payload

    +
    +yyjson_mut_val * +next +

    the next value in circular linked list

    +
    + +
    +
    + +

    ◆ yyjson_str_chunk

    + +
    +
    + + + + +
    struct yyjson_str_chunk
    +
    +

    A memory chunk in string memory pool.

    +
    +
    +
    + +

    ◆ yyjson_str_pool

    + +
    +
    + + + + +
    struct yyjson_str_pool
    +
    +

    A memory pool to hold all strings in a mutable document.

    +
    +
    +
    + +

    ◆ yyjson_val_chunk

    + +
    +
    + + + + +
    struct yyjson_val_chunk
    +
    +

    A memory chunk in value memory pool. sizeof(yyjson_val_chunk) should not larger than sizeof(yyjson_mut_val).

    +
    +
    +
    + +

    ◆ yyjson_val_pool

    + +
    +
    + + + + +
    struct yyjson_val_pool
    +
    +

    A memory pool to hold all values in a mutable document.

    +
    +
    +
    + +

    ◆ yyjson_mut_doc

    + +
    +
    + + + + +
    struct yyjson_mut_doc
    +
    +

    A mutable document for building JSON. This document holds memory for all its JSON values and strings. When it is no longer used, the user should call yyjson_mut_doc_free() to free its memory.

    +
    + + + + + + + + + + + + + +
    Data Fields
    +yyjson_mut_val * +root +

    root value of the JSON document, nullable

    +
    +yyjson_alc +alc +

    a valid allocator, nonnull

    +
    +yyjson_str_pool +str_pool +

    string memory pool

    +
    +yyjson_val_pool +val_pool +

    value memory pool

    +
    + +
    +
    +

    Macro Definition Documentation

    + +

    ◆ YYJSON_MSC_VER

    + +
    +
    + + + + +
    #define YYJSON_MSC_VER   0
    +
    +

    compiler version (MSVC)

    + +
    +
    + +

    ◆ YYJSON_GCC_VER

    + +
    +
    + + + + +
    #define YYJSON_GCC_VER   0
    +
    +

    compiler version (GCC)

    + +
    +
    + +

    ◆ YYJSON_IS_REAL_GCC

    + +
    +
    + + + + +
    #define YYJSON_IS_REAL_GCC   0
    +
    +

    real gcc check

    + +
    +
    + +

    ◆ YYJSON_STDC_VER

    + +
    +
    + + + + +
    #define YYJSON_STDC_VER   0
    +
    +

    C version (STDC)

    + +
    +
    + +

    ◆ YYJSON_CPP_VER

    + +
    +
    + + + + +
    #define YYJSON_CPP_VER   0
    +
    +

    C++ version

    + +
    +
    + +

    ◆ yyjson_has_builtin

    + +
    +
    + + + + + + + +
    #define yyjson_has_builtin( x)
    +
    +Value:
    0
    +

    compiler builtin check (since gcc 10.0, clang 2.6, icc 2021)

    + +
    +
    + +

    ◆ yyjson_has_attribute

    + +
    +
    + + + + + + + +
    #define yyjson_has_attribute( x)
    +
    +Value:
    0
    +

    compiler attribute check (since gcc 5.0, clang 2.9, icc 17)

    + +
    +
    + +

    ◆ yyjson_has_feature

    + +
    +
    + + + + + + + +
    #define yyjson_has_feature( x)
    +
    +Value:
    0
    +

    compiler feature check (since clang 2.6, icc 17)

    + +
    +
    + +

    ◆ yyjson_has_include

    + +
    +
    + + + + + + + +
    #define yyjson_has_include( x)
    +
    +Value:
    0
    +

    include check (since gcc 5.0, clang 2.7, icc 16, msvc 2017 15.3)

    + +
    +
    + +

    ◆ yyjson_inline

    + +
    +
    + + + + +
    #define yyjson_inline
    +
    +

    inline for compiler

    + +
    +
    + +

    ◆ yyjson_noinline

    + +
    +
    + + + + +
    #define yyjson_noinline
    +
    +

    noinline for compiler

    + +
    +
    + +

    ◆ yyjson_align

    + +
    +
    + + + + + + + +
    #define yyjson_align( x)
    +
    +

    align for compiler

    + +
    +
    + +

    ◆ yyjson_likely

    + +
    +
    + + + + + + + +
    #define yyjson_likely( expr)
    +
    +Value:
    (expr)
    +

    likely for compiler

    + +
    +
    + +

    ◆ yyjson_unlikely

    + +
    +
    + + + + + + + +
    #define yyjson_unlikely( expr)
    +
    +Value:
    (expr)
    +

    unlikely for compiler

    + +
    +
    + +

    ◆ YYJSON_HAS_CONSTANT_P

    + +
    +
    + + + + +
    #define YYJSON_HAS_CONSTANT_P   0
    +
    +

    compile-time constant check for compiler

    + +
    +
    + +

    ◆ yyjson_deprecated

    + +
    +
    + + + + + + + +
    #define yyjson_deprecated( msg)
    +
    +

    deprecate warning

    + +
    +
    + +

    ◆ yyjson_api

    + +
    +
    + + + + +
    #define yyjson_api
    +
    +

    function export

    + +
    +
    + +

    ◆ yyjson_api_inline

    + +
    +
    + + + + +
    #define yyjson_api_inline   static yyjson_inline
    +
    +

    inline function export

    + +
    +
    + +

    ◆ __bool_true_false_are_defined

    + +
    +
    + + + + +
    #define __bool_true_false_are_defined   1
    +
    +

    stdint (C89 compatible) stdbool (C89 compatible)

    + +
    +
    + +

    ◆ YYJSON_U64_TO_F64_NO_IMPL

    + +
    +
    + + + + +
    #define YYJSON_U64_TO_F64_NO_IMPL   0
    +
    +

    char bit check Microsoft Visual C++ 6.0 doesn't support converting number from u64 to f64: error C2520: conversion from unsigned __int64 to double not implemented.

    + +
    +
    + +

    ◆ YYJSON_VERSION_MAJOR

    + +
    +
    + + + + +
    #define YYJSON_VERSION_MAJOR   0
    +
    +

    The major version of yyjson.

    + +
    +
    + +

    ◆ YYJSON_VERSION_MINOR

    + +
    +
    + + + + +
    #define YYJSON_VERSION_MINOR   12
    +
    +

    The minor version of yyjson.

    + +
    +
    + +

    ◆ YYJSON_VERSION_PATCH

    + +
    +
    + + + + +
    #define YYJSON_VERSION_PATCH   0
    +
    +

    The patch version of yyjson.

    + +
    +
    + +

    ◆ YYJSON_VERSION_HEX

    + +
    +
    + + + + +
    #define YYJSON_VERSION_HEX   0x000C00
    +
    +

    The version of yyjson in hex: (major << 16) | (minor << 8) | (patch).

    + +
    +
    + +

    ◆ YYJSON_VERSION_STRING

    + +
    +
    + + + + +
    #define YYJSON_VERSION_STRING   "0.12.0"
    +
    +

    The version string of yyjson.

    + +
    +
    + +

    ◆ YYJSON_TYPE_NONE

    + +
    +
    + + + + +
    #define YYJSON_TYPE_NONE   ((uint8_t)0) /* _____000 */
    +
    +

    No type, invalid.

    + +
    +
    + +

    ◆ YYJSON_TYPE_RAW

    + +
    +
    + + + + +
    #define YYJSON_TYPE_RAW   ((uint8_t)1) /* _____001 */
    +
    +

    Raw string type, no subtype.

    + +
    +
    + +

    ◆ YYJSON_TYPE_NULL

    + +
    +
    + + + + +
    #define YYJSON_TYPE_NULL   ((uint8_t)2) /* _____010 */
    +
    +

    Null type: null literal, no subtype.

    + +
    +
    + +

    ◆ YYJSON_TYPE_BOOL

    + +
    +
    + + + + +
    #define YYJSON_TYPE_BOOL   ((uint8_t)3) /* _____011 */
    +
    +

    Boolean type, subtype: TRUE, FALSE.

    + +
    +
    + +

    ◆ YYJSON_TYPE_NUM

    + +
    +
    + + + + +
    #define YYJSON_TYPE_NUM   ((uint8_t)4) /* _____100 */
    +
    +

    Number type, subtype: UINT, SINT, REAL.

    + +
    +
    + +

    ◆ YYJSON_TYPE_STR

    + +
    +
    + + + + +
    #define YYJSON_TYPE_STR   ((uint8_t)5) /* _____101 */
    +
    +

    String type, subtype: NONE, NOESC.

    + +
    +
    + +

    ◆ YYJSON_TYPE_ARR

    + +
    +
    + + + + +
    #define YYJSON_TYPE_ARR   ((uint8_t)6) /* _____110 */
    +
    +

    Array type, no subtype.

    + +
    +
    + +

    ◆ YYJSON_TYPE_OBJ

    + +
    +
    + + + + +
    #define YYJSON_TYPE_OBJ   ((uint8_t)7) /* _____111 */
    +
    +

    Object type, no subtype.

    + +
    +
    + +

    ◆ YYJSON_SUBTYPE_NONE

    + +
    +
    + + + + +
    #define YYJSON_SUBTYPE_NONE   ((uint8_t)(0 << 3)) /* ___00___ */
    +
    +

    No subtype.

    + +
    +
    + +

    ◆ YYJSON_SUBTYPE_FALSE

    + +
    +
    + + + + +
    #define YYJSON_SUBTYPE_FALSE   ((uint8_t)(0 << 3)) /* ___00___ */
    +
    +

    False subtype: false literal.

    + +
    +
    + +

    ◆ YYJSON_SUBTYPE_TRUE

    + +
    +
    + + + + +
    #define YYJSON_SUBTYPE_TRUE   ((uint8_t)(1 << 3)) /* ___01___ */
    +
    +

    True subtype: true literal.

    + +
    +
    + +

    ◆ YYJSON_SUBTYPE_UINT

    + +
    +
    + + + + +
    #define YYJSON_SUBTYPE_UINT   ((uint8_t)(0 << 3)) /* ___00___ */
    +
    +

    Unsigned integer subtype: uint64_t.

    + +
    +
    + +

    ◆ YYJSON_SUBTYPE_SINT

    + +
    +
    + + + + +
    #define YYJSON_SUBTYPE_SINT   ((uint8_t)(1 << 3)) /* ___01___ */
    +
    +

    Signed integer subtype: int64_t.

    + +
    +
    + +

    ◆ YYJSON_SUBTYPE_REAL

    + +
    +
    + + + + +
    #define YYJSON_SUBTYPE_REAL   ((uint8_t)(2 << 3)) /* ___10___ */
    +
    +

    Real number subtype: double.

    + +
    +
    + +

    ◆ YYJSON_SUBTYPE_NOESC

    + +
    +
    + + + + +
    #define YYJSON_SUBTYPE_NOESC   ((uint8_t)(1 << 3)) /* ___01___ */
    +
    +

    String that do not need to be escaped for writing (internal use).

    + +
    +
    + +

    ◆ YYJSON_TYPE_MASK

    + +
    +
    + + + + +
    #define YYJSON_TYPE_MASK   ((uint8_t)0x07) /* _____111 */
    +
    +

    The mask used to extract the type of a JSON value.

    + +
    +
    + +

    ◆ YYJSON_TYPE_BIT

    + +
    +
    + + + + +
    #define YYJSON_TYPE_BIT   ((uint8_t)3)
    +
    +

    The number of bits used by the type.

    + +
    +
    + +

    ◆ YYJSON_SUBTYPE_MASK

    + +
    +
    + + + + +
    #define YYJSON_SUBTYPE_MASK   ((uint8_t)0x18) /* ___11___ */
    +
    +

    The mask used to extract the subtype of a JSON value.

    + +
    +
    + +

    ◆ YYJSON_SUBTYPE_BIT

    + +
    +
    + + + + +
    #define YYJSON_SUBTYPE_BIT   ((uint8_t)2)
    +
    +

    The number of bits used by the subtype.

    + +
    +
    + +

    ◆ YYJSON_RESERVED_MASK

    + +
    +
    + + + + +
    #define YYJSON_RESERVED_MASK   ((uint8_t)0xE0) /* 111_____ */
    +
    +

    The mask used to extract the reserved bits of a JSON value.

    + +
    +
    + +

    ◆ YYJSON_RESERVED_BIT

    + +
    +
    + + + + +
    #define YYJSON_RESERVED_BIT   ((uint8_t)3)
    +
    +

    The number of reserved bits.

    + +
    +
    + +

    ◆ YYJSON_TAG_MASK

    + +
    +
    + + + + +
    #define YYJSON_TAG_MASK   ((uint8_t)0xFF) /* 11111111 */
    +
    +

    The mask used to extract the tag of a JSON value.

    + +
    +
    + +

    ◆ YYJSON_TAG_BIT

    + +
    +
    + + + + +
    #define YYJSON_TAG_BIT   ((uint8_t)8)
    +
    +

    The number of bits used by the tag.

    + +
    +
    + +

    ◆ YYJSON_PADDING_SIZE

    + +
    +
    + + + + +
    #define YYJSON_PADDING_SIZE   4
    +
    +

    Padding size for JSON reader.

    + +
    +
    + +

    ◆ YYJSON_WRITE_FP_FLAG_BITS

    + +
    +
    + + + + +
    #define YYJSON_WRITE_FP_FLAG_BITS   8
    +
    +

    The highest 8 bits of yyjson_write_flag and real number value's tag are reserved for controlling the output format of floating-point numbers.

    + +
    +
    + +

    ◆ YYJSON_WRITE_FP_PREC_BITS

    + +
    +
    + + + + +
    #define YYJSON_WRITE_FP_PREC_BITS   4
    +
    +

    The highest 4 bits of flag are reserved for precision value.

    + +
    +
    + +

    ◆ YYJSON_WRITE_FP_TO_FIXED

    + +
    +
    + + + + + + + +
    #define YYJSON_WRITE_FP_TO_FIXED( prec)
    +
    +Value:
    +
    (uint32_t)((uint32_t)(prec)) << (32 - 4) ))
    +
    uint32_t yyjson_write_flag
    Definition yyjson.h:1155
    +

    Write floating-point number using fixed-point notation.

      +
    • This is similar to ECMAScript Number.prototype.toFixed(prec), but with trailing zeros removed. The prec ranges from 1 to 15.
    • +
    • This will produce shorter output but may lose some precision.
    • +
    + +
    +
    + +

    ◆ YYJSON_WRITE_FP_TO_FLOAT

    + +
    +
    + + + + +
    #define YYJSON_WRITE_FP_TO_FLOAT   ((yyjson_write_flag)(1 << (32 - 5)))
    +
    +

    Write floating-point numbers using single-precision (float).

      +
    • This casts double to float before serialization.
    • +
    • This will produce shorter output, but may lose some precision.
    • +
    • This flag is ignored if YYJSON_WRITE_FP_TO_FIXED(prec) is also used.
    • +
    + +
    +
    + +

    ◆ yyjson_arr_foreach

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    #define yyjson_arr_foreach( arr,
    idx,
    max,
    val )
    +
    +Value:
    for ((idx) = 0, \
    +
    (max) = yyjson_arr_size(arr), \
    +
    (val) = yyjson_arr_get_first(arr); \
    +
    (idx) < (max); \
    +
    (idx)++, \
    +
    (val) = unsafe_yyjson_get_next(val))
    +
    yyjson_api_inline size_t yyjson_arr_size(yyjson_val *arr)
    Definition yyjson.h:5390
    +
    yyjson_api_inline yyjson_val * yyjson_arr_get_first(yyjson_val *arr)
    Definition yyjson.h:5409
    +

    Macro for iterating over an array. It works like iterator, but with a more intuitive API.

    +

    Example

    size_t idx, max;
    + +
    yyjson_arr_foreach(arr, idx, max, val) {
    +
    your_func(idx, val);
    +
    }
    +
    #define yyjson_arr_foreach(arr, idx, max, val)
    Definition yyjson.h:2046
    +
    +
    +
    + +

    ◆ yyjson_obj_foreach

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #define yyjson_obj_foreach( obj,
    idx,
    max,
    key,
    val )
    +
    +Value:
    for ((idx) = 0, \
    +
    (max) = yyjson_obj_size(obj), \
    +
    (key) = (obj) ? unsafe_yyjson_get_first(obj) : NULL, \
    +
    (val) = (key) + 1; \
    +
    (idx) < (max); \
    +
    (idx)++, \
    +
    (key) = unsafe_yyjson_get_next(val), \
    +
    (val) = (key) + 1)
    +
    yyjson_api_inline size_t yyjson_obj_size(yyjson_val *obj)
    Definition yyjson.h:5479
    +

    Macro for iterating over an object. It works like iterator, but with a more intuitive API.

    +

    Example

    size_t idx, max;
    +
    yyjson_val *key, *val;
    +
    yyjson_obj_foreach(obj, idx, max, key, val) {
    +
    your_func(key, val);
    +
    }
    +
    #define yyjson_obj_foreach(obj, idx, max, key, val)
    Definition yyjson.h:2217
    +
    +
    +
    + +

    ◆ yyjson_mut_arr_foreach

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    #define yyjson_mut_arr_foreach( arr,
    idx,
    max,
    val )
    +
    +Value:
    for ((idx) = 0, \
    +
    (max) = yyjson_mut_arr_size(arr), \
    +
    (val) = yyjson_mut_arr_get_first(arr); \
    +
    (idx) < (max); \
    +
    (idx)++, \
    +
    (val) = (val)->next)
    +
    yyjson_mut_val * next
    Definition yyjson.h:5593
    +
    yyjson_api_inline size_t yyjson_mut_arr_size(yyjson_mut_val *arr)
    Definition yyjson.h:6098
    +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_get_first(yyjson_mut_val *arr)
    Definition yyjson.h:6112
    +

    Macro for iterating over an array. It works like iterator, but with a more intuitive API.

    +
    Warning
    You should not modify the array while iterating over it.
    +

    Example

    size_t idx, max;
    + +
    yyjson_mut_arr_foreach(arr, idx, max, val) {
    +
    your_func(idx, val);
    +
    }
    +
    #define yyjson_mut_arr_foreach(arr, idx, max, val)
    Definition yyjson.h:2781
    +
    +
    +
    + +

    ◆ yyjson_mut_obj_foreach

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #define yyjson_mut_obj_foreach( obj,
    idx,
    max,
    key,
    val )
    +
    +Value:
    for ((idx) = 0, \
    +
    (max) = yyjson_mut_obj_size(obj), \
    +
    (key) = (max) ? ((yyjson_mut_val *)(obj)->uni.ptr)->next->next : NULL, \
    +
    (val) = (key) ? (key)->next : NULL; \
    +
    (idx) < (max); \
    +
    (idx)++, \
    +
    (key) = (val)->next, \
    +
    (val) = (key)->next)
    +
    yyjson_api_inline size_t yyjson_mut_obj_size(yyjson_mut_val *obj)
    Definition yyjson.h:6750
    +

    Macro for iterating over an object. It works like iterator, but with a more intuitive API.

    +
    Warning
    You should not modify the object while iterating over it.
    +

    Example

    size_t idx, max;
    +
    yyjson_mut_val *key, *val;
    +
    yyjson_mut_obj_foreach(obj, idx, max, key, val) {
    +
    your_func(key, val);
    +
    }
    +
    #define yyjson_mut_obj_foreach(obj, idx, max, key, val)
    Definition yyjson.h:3653
    +
    +
    +
    +

    Typedef Documentation

    + +

    ◆ yyjson_type

    + +
    +
    + + + + +
    typedef uint8_t yyjson_type
    +
    +

    Type of a JSON value (3 bit).

    + +
    +
    + +

    ◆ yyjson_subtype

    + +
    +
    + + + + +
    typedef uint8_t yyjson_subtype
    +
    +

    Subtype of a JSON value (2 bit).

    + +
    +
    + +

    ◆ yyjson_read_flag

    + +
    +
    + + + + +
    typedef uint32_t yyjson_read_flag
    +
    +

    Run-time options for JSON reader.

    + +
    +
    + +

    ◆ yyjson_read_code

    + +
    +
    + + + + +
    typedef uint32_t yyjson_read_code
    +
    +

    Result code for JSON reader.

    + +
    +
    + +

    ◆ yyjson_incr_state

    + +
    +
    + + + + +
    typedef struct yyjson_incr_state yyjson_incr_state
    +
    +

    Opaque state for incremental JSON reader.

    + +
    +
    + +

    ◆ yyjson_write_flag

    + +
    +
    + + + + +
    typedef uint32_t yyjson_write_flag
    +
    +

    Run-time options for JSON writer.

    + +
    +
    + +

    ◆ yyjson_write_code

    + +
    +
    + + + + +
    typedef uint32_t yyjson_write_code
    +
    +

    Result code for JSON writer

    + +
    +
    + +

    ◆ yyjson_ptr_code

    + +
    +
    + + + + +
    typedef uint32_t yyjson_ptr_code
    +
    +

    JSON Pointer error code.

    + +
    +
    + +

    ◆ yyjson_patch_code

    + +
    +
    + + + + +
    typedef uint32_t yyjson_patch_code
    +
    +

    Result code for JSON patch.

    + +
    +
    +

    Function Documentation

    + +

    ◆ yyjson_version()

    + +
    +
    + + + + + + + +
    yyjson_api uint32_t yyjson_version (void )
    +
    +

    The version of yyjson in hex, same as YYJSON_VERSION_HEX.

    + +
    +
    + +

    ◆ yyjson_alc_pool_init()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api bool yyjson_alc_pool_init (yyjson_alc * alc,
    void * buf,
    size_t size )
    +
    +

    A pool allocator uses fixed length pre-allocated memory.

    +

    This allocator may be used to avoid malloc/realloc calls. The pre-allocated memory should be held by the caller. The maximum amount of memory required to read a JSON can be calculated using the yyjson_read_max_memory_usage() function, but the amount of memory required to write a JSON cannot be directly calculated.

    +

    This is not a general-purpose allocator. It is designed to handle a single JSON data at a time. If it is used for overly complex memory tasks, such as parsing multiple JSON documents using the same allocator but releasing only a few of them, it may cause memory fragmentation, resulting in performance degradation and memory waste.

    +
    Parameters
    + + + + +
    alcThe allocator to be initialized. If this parameter is NULL, the function will fail and return false. If buf or size is invalid, this will be set to an empty allocator.
    bufThe buffer memory for this allocator. If this parameter is NULL, the function will fail and return false.
    sizeThe size of buf, in bytes. If this parameter is less than 8 words (32/64 bytes on 32/64-bit OS), the function will fail and return false.
    +
    +
    +
    Returns
    true if the alc has been successfully initialized.
    +

    Example

    // parse JSON with stack memory
    +
    char buf[1024];
    + +
    yyjson_alc_pool_init(&alc, buf, 1024);
    +
    +
    const char *json = "{\"name\":\"Helvetica\",\"size\":16}"
    +
    yyjson_doc *doc = yyjson_read_opts(json, strlen(json), 0, &alc, NULL);
    +
    // the memory of `doc` is on the stack
    +
    yyjson_api bool yyjson_alc_pool_init(yyjson_alc *alc, void *buf, size_t size)
    +
    yyjson_api yyjson_doc * yyjson_read_opts(char *dat, size_t len, yyjson_read_flag flg, const yyjson_alc *alc, yyjson_read_err *err)
    +
    Definition yyjson.h:586
    +
    Definition yyjson.h:4770
    +
    Warning
    This Allocator is not thread-safe.
    + +
    +
    + +

    ◆ yyjson_alc_dyn_new()

    + +
    +
    + + + + + + + +
    yyjson_api yyjson_alc * yyjson_alc_dyn_new (void )
    +
    +

    A dynamic allocator.

    +

    This allocator has a similar usage to the pool allocator above. However, when there is not enough memory, this allocator will dynamically request more memory using libc's malloc function, and frees it all at once when it is destroyed.

    +
    Returns
    A new dynamic allocator, or NULL if memory allocation failed.
    +
    Note
    The returned value should be freed with yyjson_alc_dyn_free().
    +
    Warning
    This Allocator is not thread-safe.
    + +
    +
    + +

    ◆ yyjson_alc_dyn_free()

    + +
    +
    + + + + + + + +
    yyjson_api void yyjson_alc_dyn_free (yyjson_alc * alc)
    +
    +

    Free a dynamic allocator which is created by yyjson_alc_dyn_new().

    Parameters
    + + +
    alcThe dynamic allocator to be destroyed.
    +
    +
    + +
    +
    + +

    ◆ yyjson_locate_pos()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api bool yyjson_locate_pos (const char * str,
    size_t len,
    size_t pos,
    size_t * line,
    size_t * col,
    size_t * chr )
    +
    +

    Locate the line and column number for a byte position in a string. This can be used to get better description for error position.

    +
    Parameters
    + + + + + + + +
    strThe input string.
    lenThe byte length of the input string.
    posThe byte position within the input string.
    lineA pointer to receive the line number, starting from 1.
    colA pointer to receive the column number, starting from 1.
    chrA pointer to receive the character index, starting from 0.
    +
    +
    +
    Returns
    true on success, false if str is NULL or pos is out of bounds.
    +
    Note
    Line/column/character are calculated based on Unicode characters for compatibility with text editors. For multi-byte UTF-8 characters, the returned value may not directly correspond to the byte position.
    + +
    +
    + +

    ◆ yyjson_read_opts()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api yyjson_doc * yyjson_read_opts (char * dat,
    size_t len,
    yyjson_read_flag flg,
    const yyjson_alc * alc,
    yyjson_read_err * err )
    +
    +

    Read JSON with options.

    +

    This function is thread-safe when:

      +
    1. The dat is not modified by other threads.
    2. +
    3. The alc is thread-safe or NULL.
    4. +
    +
    Parameters
    + + + + + + +
    datThe JSON data (UTF-8 without BOM), null-terminator is not required. If this parameter is NULL, the function will fail and return NULL. The dat will not be modified without the flag YYJSON_READ_INSITU, so you can pass a const char * string and case it to char * if you don't use the YYJSON_READ_INSITU flag.
    lenThe length of JSON data in bytes. If this parameter is 0, the function will fail and return NULL.
    flgThe JSON read options. Multiple options can be combined with | operator. 0 means no options.
    alcThe memory allocator used by JSON reader. Pass NULL to use the libc's default allocator.
    errA pointer to receive error information. Pass NULL if you don't need error information.
    +
    +
    +
    Returns
    A new JSON document, or NULL if an error occurs. When it's no longer needed, it should be freed with yyjson_doc_free().
    + +
    +
    + +

    ◆ yyjson_read_file()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api yyjson_doc * yyjson_read_file (const char * path,
    yyjson_read_flag flg,
    const yyjson_alc * alc,
    yyjson_read_err * err )
    +
    +

    Read a JSON file.

    +

    This function is thread-safe when:

      +
    1. The file is not modified by other threads.
    2. +
    3. The alc is thread-safe or NULL.
    4. +
    +
    Parameters
    + + + + + +
    pathThe JSON file's path. This should be a null-terminated string using the system's native encoding. If this path is NULL or invalid, the function will fail and return NULL.
    flgThe JSON read options. Multiple options can be combined with | operator. 0 means no options.
    alcThe memory allocator used by JSON reader. Pass NULL to use the libc's default allocator.
    errA pointer to receive error information. Pass NULL if you don't need error information.
    +
    +
    +
    Returns
    A new JSON document, or NULL if an error occurs. When it's no longer needed, it should be freed with yyjson_doc_free().
    +
    Warning
    On 32-bit operating system, files larger than 2GB may fail to read.
    + +
    +
    + +

    ◆ yyjson_read_fp()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api yyjson_doc * yyjson_read_fp (FILE * fp,
    yyjson_read_flag flg,
    const yyjson_alc * alc,
    yyjson_read_err * err )
    +
    +

    Read JSON from a file pointer.

    +
    Parameters
    + + + + + +
    fpThe file pointer. The data will be read from the current position of the FILE to the end. If this fp is NULL or invalid, the function will fail and return NULL.
    flgThe JSON read options. Multiple options can be combined with | operator. 0 means no options.
    alcThe memory allocator used by JSON reader. Pass NULL to use the libc's default allocator.
    errA pointer to receive error information. Pass NULL if you don't need error information.
    +
    +
    +
    Returns
    A new JSON document, or NULL if an error occurs. When it's no longer needed, it should be freed with yyjson_doc_free().
    +
    Warning
    On 32-bit operating system, files larger than 2GB may fail to read.
    + +
    +
    + +

    ◆ yyjson_read()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_doc * yyjson_read (const char * dat,
    size_t len,
    yyjson_read_flag flg )
    +
    +

    Read a JSON string.

    +

    This function is thread-safe.

    +
    Parameters
    + + + + +
    datThe JSON data (UTF-8 without BOM), null-terminator is not required. If this parameter is NULL, the function will fail and return NULL.
    lenThe length of JSON data in bytes. If this parameter is 0, the function will fail and return NULL.
    flgThe JSON read options. Multiple options can be combined with | operator. 0 means no options.
    +
    +
    +
    Returns
    A new JSON document, or NULL if an error occurs. When it's no longer needed, it should be freed with yyjson_doc_free().
    + +
    +
    + +

    ◆ yyjson_incr_new()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api yyjson_incr_state * yyjson_incr_new (char * buf,
    size_t buf_len,
    yyjson_read_flag flg,
    const yyjson_alc * alc )
    +
    +

    Initialize state for incremental read.

    +

    To read a large JSON document incrementally:

      +
    1. Call yyjson_incr_new() to create the state for incremental reading.
    2. +
    3. Call yyjson_incr_read() repeatedly.
    4. +
    5. Call yyjson_incr_free() to free the state.
    6. +
    +

    Note: The incremental JSON reader only supports standard JSON. Flags for non-standard features (e.g. comments, trailing commas) are ignored.

    +
    Parameters
    + + + + + +
    bufThe JSON data, null-terminator is not required. If this parameter is NULL, the function will fail and return NULL.
    buf_lenThe length of the JSON data in buf. If use YYJSON_READ_INSITU, buf_len should not include the padding size.
    flgThe JSON read options. Multiple options can be combined with | operator.
    alcThe memory allocator used by JSON reader. Pass NULL to use the libc's default allocator.
    +
    +
    +
    Returns
    A state for incremental reading. It should be freed with yyjson_incr_free(). NULL is returned if memory allocation fails.
    + +
    +
    + +

    ◆ yyjson_incr_read()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api yyjson_doc * yyjson_incr_read (yyjson_incr_state * state,
    size_t len,
    yyjson_read_err * err )
    +
    +

    Performs incremental read of up to len bytes.

    +

    If NULL is returned and err->code is set to YYJSON_READ_ERROR_MORE, it indicates that more data is required to continue parsing. Then, call this function again with incremented len. Continue until a document is returned or an error other than YYJSON_READ_ERROR_MORE is returned.

    +

    Note: Parsing in very small increments is not efficient. An increment of several kilobytes or megabytes is recommended.

    +
    Parameters
    + + + + +
    stateThe state for incremental reading, created using yyjson_incr_new().
    lenThe number of bytes of JSON data available to parse. If this parameter is 0, the function will fail and return NULL.
    errA pointer to receive error information.
    +
    +
    +
    Returns
    A new JSON document, or NULL if an error occurs. When the document is no longer needed, it should be freed with yyjson_doc_free().
    + +
    +
    + +

    ◆ yyjson_incr_free()

    + +
    +
    + + + + + + + +
    yyjson_api void yyjson_incr_free (yyjson_incr_state * state)
    +
    +

    Release the incremental read state and free the memory.

    + +
    +
    + +

    ◆ yyjson_read_max_memory_usage()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline size_t yyjson_read_max_memory_usage (size_t len,
    yyjson_read_flag flg )
    +
    +

    Returns the size of maximum memory usage to read a JSON data.

    +

    You may use this value to avoid malloc() or calloc() call inside the reader to get better performance, or read multiple JSON with one piece of memory.

    +
    Parameters
    + + + +
    lenThe length of JSON data in bytes.
    flgThe JSON read options.
    +
    +
    +
    Returns
    The maximum memory size to read this JSON, or 0 if overflow.
    +

    Example

    // read multiple JSON with same pre-allocated memory
    +
    +
    char *dat1, *dat2, *dat3; // JSON data
    +
    size_t len1, len2, len3; // JSON length
    +
    size_t max_len = MAX(len1, MAX(len2, len3));
    + +
    +
    // use one allocator for multiple JSON
    +
    size_t size = yyjson_read_max_memory_usage(max_len, 0);
    +
    void *buf = malloc(size);
    + +
    yyjson_alc_pool_init(&alc, buf, size);
    +
    +
    // no more alloc() or realloc() call during reading
    +
    doc = yyjson_read_opts(dat1, len1, 0, &alc, NULL);
    + +
    doc = yyjson_read_opts(dat2, len2, 0, &alc, NULL);
    + +
    doc = yyjson_read_opts(dat3, len3, 0, &alc, NULL);
    + +
    +
    free(buf);
    +
    yyjson_api_inline void yyjson_doc_free(yyjson_doc *doc)
    Definition yyjson.h:5130
    +
    yyjson_api_inline size_t yyjson_read_max_memory_usage(size_t len, yyjson_read_flag flg)
    Definition yyjson.h:1090
    +
    See also
    yyjson_alc_pool_init()
    + +
    +
    + +

    ◆ yyjson_read_number()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api const char * yyjson_read_number (const char * dat,
    yyjson_val * val,
    yyjson_read_flag flg,
    const yyjson_alc * alc,
    yyjson_read_err * err )
    +
    +

    Read a JSON number.

    +

    This function is thread-safe when data is not modified by other threads.

    +
    Parameters
    + + + + + + +
    datThe JSON data (UTF-8 without BOM), null-terminator is required. If this parameter is NULL, the function will fail and return NULL.
    valThe output value where result is stored. If this parameter is NULL, the function will fail and return NULL. The value will hold either UINT or SINT or REAL number;
    flgThe JSON read options. Multiple options can be combined with | operator. 0 means no options. Supports YYJSON_READ_NUMBER_AS_RAW and YYJSON_READ_ALLOW_INF_AND_NAN.
    alcThe memory allocator used for long number. It is only used when the built-in floating point reader is disabled. Pass NULL to use the libc's default allocator.
    errA pointer to receive error information. Pass NULL if you don't need error information.
    +
    +
    +
    Returns
    If successful, a pointer to the character after the last character used in the conversion, NULL if an error occurs.
    + +
    +
    + +

    ◆ yyjson_mut_read_number()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline const char * yyjson_mut_read_number (const char * dat,
    yyjson_mut_val * val,
    yyjson_read_flag flg,
    const yyjson_alc * alc,
    yyjson_read_err * err )
    +
    +

    Same as yyjson_read_number().

    + +
    +
    + +

    ◆ yyjson_write_opts()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api char * yyjson_write_opts (const yyjson_doc * doc,
    yyjson_write_flag flg,
    const yyjson_alc * alc,
    size_t * len,
    yyjson_write_err * err )
    +
    +

    Write a document to JSON string with options.

    +

    This function is thread-safe when: The alc is thread-safe or NULL.

    +
    Parameters
    + + + + + + +
    docThe JSON document. If this doc is NULL or has no root, the function will fail and return false.
    flgThe JSON write options. Multiple options can be combined with | operator. 0 means no options.
    alcThe memory allocator used by JSON writer. Pass NULL to use the libc's default allocator.
    lenA pointer to receive output length in bytes (not including the null-terminator). Pass NULL if you don't need length information.
    errA pointer to receive error information. Pass NULL if you don't need error information.
    +
    +
    +
    Returns
    A new JSON string, or NULL if an error occurs. This string is encoded as UTF-8 with a null-terminator. When it's no longer needed, it should be freed with free() or alc->free().
    + +
    +
    + +

    ◆ yyjson_write_file()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api bool yyjson_write_file (const char * path,
    const yyjson_doc * doc,
    yyjson_write_flag flg,
    const yyjson_alc * alc,
    yyjson_write_err * err )
    +
    +

    Write a document to JSON file with options.

    +

    This function is thread-safe when:

      +
    1. The file is not accessed by other threads.
    2. +
    3. The alc is thread-safe or NULL.
    4. +
    +
    Parameters
    + + + + + + +
    pathThe JSON file's path. This should be a null-terminated string using the system's native encoding. If this path is NULL or invalid, the function will fail and return false. If this file is not empty, the content will be discarded.
    docThe JSON document. If this doc is NULL or has no root, the function will fail and return false.
    flgThe JSON write options. Multiple options can be combined with | operator. 0 means no options.
    alcThe memory allocator used by JSON writer. Pass NULL to use the libc's default allocator.
    errA pointer to receive error information. Pass NULL if you don't need error information.
    +
    +
    +
    Returns
    true if successful, false if an error occurs.
    +
    Warning
    On 32-bit operating system, files larger than 2GB may fail to write.
    + +
    +
    + +

    ◆ yyjson_write_fp()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api bool yyjson_write_fp (FILE * fp,
    const yyjson_doc * doc,
    yyjson_write_flag flg,
    const yyjson_alc * alc,
    yyjson_write_err * err )
    +
    +

    Write a document to file pointer with options.

    +
    Parameters
    + + + + + + +
    fpThe file pointer. The data will be written to the current position of the file. If this fp is NULL or invalid, the function will fail and return false.
    docThe JSON document. If this doc is NULL or has no root, the function will fail and return false.
    flgThe JSON write options. Multiple options can be combined with | operator. 0 means no options.
    alcThe memory allocator used by JSON writer. Pass NULL to use the libc's default allocator.
    errA pointer to receive error information. Pass NULL if you don't need error information.
    +
    +
    +
    Returns
    true if successful, false if an error occurs.
    +
    Warning
    On 32-bit operating system, files larger than 2GB may fail to write.
    + +
    +
    + +

    ◆ yyjson_write()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline char * yyjson_write (const yyjson_doc * doc,
    yyjson_write_flag flg,
    size_t * len )
    +
    +

    Write a document to JSON string.

    +

    This function is thread-safe.

    +
    Parameters
    + + + + +
    docThe JSON document. If this doc is NULL or has no root, the function will fail and return false.
    flgThe JSON write options. Multiple options can be combined with | operator. 0 means no options.
    lenA pointer to receive output length in bytes (not including the null-terminator). Pass NULL if you don't need length information.
    +
    +
    +
    Returns
    A new JSON string, or NULL if an error occurs. This string is encoded as UTF-8 with a null-terminator. When it's no longer needed, it should be freed with free().
    + +
    +
    + +

    ◆ yyjson_mut_write_opts()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api char * yyjson_mut_write_opts (const yyjson_mut_doc * doc,
    yyjson_write_flag flg,
    const yyjson_alc * alc,
    size_t * len,
    yyjson_write_err * err )
    +
    +

    Write a document to JSON string with options.

    +

    This function is thread-safe when:

      +
    1. The doc is not modified by other threads.
    2. +
    3. The alc is thread-safe or NULL.
    4. +
    +
    Parameters
    + + + + + + +
    docThe mutable JSON document. If this doc is NULL or has no root, the function will fail and return false.
    flgThe JSON write options. Multiple options can be combined with | operator. 0 means no options.
    alcThe memory allocator used by JSON writer. Pass NULL to use the libc's default allocator.
    lenA pointer to receive output length in bytes (not including the null-terminator). Pass NULL if you don't need length information.
    errA pointer to receive error information. Pass NULL if you don't need error information.
    +
    +
    +
    Returns
    A new JSON string, or NULL if an error occurs. This string is encoded as UTF-8 with a null-terminator. When it's no longer needed, it should be freed with free() or alc->free().
    + +
    +
    + +

    ◆ yyjson_mut_write_file()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api bool yyjson_mut_write_file (const char * path,
    const yyjson_mut_doc * doc,
    yyjson_write_flag flg,
    const yyjson_alc * alc,
    yyjson_write_err * err )
    +
    +

    Write a document to JSON file with options.

    +

    This function is thread-safe when:

      +
    1. The file is not accessed by other threads.
    2. +
    3. The doc is not modified by other threads.
    4. +
    5. The alc is thread-safe or NULL.
    6. +
    +
    Parameters
    + + + + + + +
    pathThe JSON file's path. This should be a null-terminated string using the system's native encoding. If this path is NULL or invalid, the function will fail and return false. If this file is not empty, the content will be discarded.
    docThe mutable JSON document. If this doc is NULL or has no root, the function will fail and return false.
    flgThe JSON write options. Multiple options can be combined with | operator. 0 means no options.
    alcThe memory allocator used by JSON writer. Pass NULL to use the libc's default allocator.
    errA pointer to receive error information. Pass NULL if you don't need error information.
    +
    +
    +
    Returns
    true if successful, false if an error occurs.
    +
    Warning
    On 32-bit operating system, files larger than 2GB may fail to write.
    + +
    +
    + +

    ◆ yyjson_mut_write_fp()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api bool yyjson_mut_write_fp (FILE * fp,
    const yyjson_mut_doc * doc,
    yyjson_write_flag flg,
    const yyjson_alc * alc,
    yyjson_write_err * err )
    +
    +

    Write a document to file pointer with options.

    +
    Parameters
    + + + + + + +
    fpThe file pointer. The data will be written to the current position of the file. If this fp is NULL or invalid, the function will fail and return false.
    docThe mutable JSON document. If this doc is NULL or has no root, the function will fail and return false.
    flgThe JSON write options. Multiple options can be combined with | operator. 0 means no options.
    alcThe memory allocator used by JSON writer. Pass NULL to use the libc's default allocator.
    errA pointer to receive error information. Pass NULL if you don't need error information.
    +
    +
    +
    Returns
    true if successful, false if an error occurs.
    +
    Warning
    On 32-bit operating system, files larger than 2GB may fail to write.
    + +
    +
    + +

    ◆ yyjson_mut_write()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline char * yyjson_mut_write (const yyjson_mut_doc * doc,
    yyjson_write_flag flg,
    size_t * len )
    +
    +

    Write a document to JSON string.

    +

    This function is thread-safe when: The doc is not modified by other threads.

    +
    Parameters
    + + + + +
    docThe JSON document. If this doc is NULL or has no root, the function will fail and return false.
    flgThe JSON write options. Multiple options can be combined with | operator. 0 means no options.
    lenA pointer to receive output length in bytes (not including the null-terminator). Pass NULL if you don't need length information.
    +
    +
    +
    Returns
    A new JSON string, or NULL if an error occurs. This string is encoded as UTF-8 with a null-terminator. When it's no longer needed, it should be freed with free().
    + +
    +
    + +

    ◆ yyjson_val_write_opts()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api char * yyjson_val_write_opts (const yyjson_val * val,
    yyjson_write_flag flg,
    const yyjson_alc * alc,
    size_t * len,
    yyjson_write_err * err )
    +
    +

    Write a value to JSON string with options.

    +

    This function is thread-safe when: The alc is thread-safe or NULL.

    +
    Parameters
    + + + + + + +
    valThe JSON root value. If this parameter is NULL, the function will fail and return NULL.
    flgThe JSON write options. Multiple options can be combined with | operator. 0 means no options.
    alcThe memory allocator used by JSON writer. Pass NULL to use the libc's default allocator.
    lenA pointer to receive output length in bytes (not including the null-terminator). Pass NULL if you don't need length information.
    errA pointer to receive error information. Pass NULL if you don't need error information.
    +
    +
    +
    Returns
    A new JSON string, or NULL if an error occurs. This string is encoded as UTF-8 with a null-terminator. When it's no longer needed, it should be freed with free() or alc->free().
    + +
    +
    + +

    ◆ yyjson_val_write_file()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api bool yyjson_val_write_file (const char * path,
    const yyjson_val * val,
    yyjson_write_flag flg,
    const yyjson_alc * alc,
    yyjson_write_err * err )
    +
    +

    Write a value to JSON file with options.

    +

    This function is thread-safe when:

      +
    1. The file is not accessed by other threads.
    2. +
    3. The alc is thread-safe or NULL.
    4. +
    +
    Parameters
    + + + + + + +
    pathThe JSON file's path. This should be a null-terminated string using the system's native encoding. If this path is NULL or invalid, the function will fail and return false. If this file is not empty, the content will be discarded.
    valThe JSON root value. If this parameter is NULL, the function will fail and return NULL.
    flgThe JSON write options. Multiple options can be combined with | operator. 0 means no options.
    alcThe memory allocator used by JSON writer. Pass NULL to use the libc's default allocator.
    errA pointer to receive error information. Pass NULL if you don't need error information.
    +
    +
    +
    Returns
    true if successful, false if an error occurs.
    +
    Warning
    On 32-bit operating system, files larger than 2GB may fail to write.
    + +
    +
    + +

    ◆ yyjson_val_write_fp()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api bool yyjson_val_write_fp (FILE * fp,
    const yyjson_val * val,
    yyjson_write_flag flg,
    const yyjson_alc * alc,
    yyjson_write_err * err )
    +
    +

    Write a value to file pointer with options.

    +
    Parameters
    + + + + + + +
    fpThe file pointer. The data will be written to the current position of the file. If this path is NULL or invalid, the function will fail and return false.
    valThe JSON root value. If this parameter is NULL, the function will fail and return NULL.
    flgThe JSON write options. Multiple options can be combined with | operator. 0 means no options.
    alcThe memory allocator used by JSON writer. Pass NULL to use the libc's default allocator.
    errA pointer to receive error information. Pass NULL if you don't need error information.
    +
    +
    +
    Returns
    true if successful, false if an error occurs.
    +
    Warning
    On 32-bit operating system, files larger than 2GB may fail to write.
    + +
    +
    + +

    ◆ yyjson_val_write()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline char * yyjson_val_write (const yyjson_val * val,
    yyjson_write_flag flg,
    size_t * len )
    +
    +

    Write a value to JSON string.

    +

    This function is thread-safe.

    +
    Parameters
    + + + + +
    valThe JSON root value. If this parameter is NULL, the function will fail and return NULL.
    flgThe JSON write options. Multiple options can be combined with | operator. 0 means no options.
    lenA pointer to receive output length in bytes (not including the null-terminator). Pass NULL if you don't need length information.
    +
    +
    +
    Returns
    A new JSON string, or NULL if an error occurs. This string is encoded as UTF-8 with a null-terminator. When it's no longer needed, it should be freed with free().
    + +
    +
    + +

    ◆ yyjson_mut_val_write_opts()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api char * yyjson_mut_val_write_opts (const yyjson_mut_val * val,
    yyjson_write_flag flg,
    const yyjson_alc * alc,
    size_t * len,
    yyjson_write_err * err )
    +
    +

    Write a value to JSON string with options.

    +

    This function is thread-safe when:

      +
    1. The val is not modified by other threads.
    2. +
    3. The alc is thread-safe or NULL.
    4. +
    +
    Parameters
    + + + + + + +
    valThe mutable JSON root value. If this parameter is NULL, the function will fail and return NULL.
    flgThe JSON write options. Multiple options can be combined with | operator. 0 means no options.
    alcThe memory allocator used by JSON writer. Pass NULL to use the libc's default allocator.
    lenA pointer to receive output length in bytes (not including the null-terminator). Pass NULL if you don't need length information.
    errA pointer to receive error information. Pass NULL if you don't need error information.
    +
    +
    +
    Returns
    A new JSON string, or NULL if an error occurs. This string is encoded as UTF-8 with a null-terminator. When it's no longer needed, it should be freed with free() or alc->free().
    + +
    +
    + +

    ◆ yyjson_mut_val_write_file()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api bool yyjson_mut_val_write_file (const char * path,
    const yyjson_mut_val * val,
    yyjson_write_flag flg,
    const yyjson_alc * alc,
    yyjson_write_err * err )
    +
    +

    Write a value to JSON file with options.

    +

    This function is thread-safe when:

      +
    1. The file is not accessed by other threads.
    2. +
    3. The val is not modified by other threads.
    4. +
    5. The alc is thread-safe or NULL.
    6. +
    +
    Parameters
    + + + + + + +
    pathThe JSON file's path. This should be a null-terminated string using the system's native encoding. If this path is NULL or invalid, the function will fail and return false. If this file is not empty, the content will be discarded.
    valThe mutable JSON root value. If this parameter is NULL, the function will fail and return NULL.
    flgThe JSON write options. Multiple options can be combined with | operator. 0 means no options.
    alcThe memory allocator used by JSON writer. Pass NULL to use the libc's default allocator.
    errA pointer to receive error information. Pass NULL if you don't need error information.
    +
    +
    +
    Returns
    true if successful, false if an error occurs.
    +
    Warning
    On 32-bit operating system, files larger than 2GB may fail to write.
    + +
    +
    + +

    ◆ yyjson_mut_val_write_fp()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api bool yyjson_mut_val_write_fp (FILE * fp,
    const yyjson_mut_val * val,
    yyjson_write_flag flg,
    const yyjson_alc * alc,
    yyjson_write_err * err )
    +
    +

    Write a value to JSON file with options.

    +
    Parameters
    + + + + + + +
    fpThe file pointer. The data will be written to the current position of the file. If this path is NULL or invalid, the function will fail and return false.
    valThe mutable JSON root value. If this parameter is NULL, the function will fail and return NULL.
    flgThe JSON write options. Multiple options can be combined with | operator. 0 means no options.
    alcThe memory allocator used by JSON writer. Pass NULL to use the libc's default allocator.
    errA pointer to receive error information. Pass NULL if you don't need error information.
    +
    +
    +
    Returns
    true if successful, false if an error occurs.
    +
    Warning
    On 32-bit operating system, files larger than 2GB may fail to write.
    + +
    +
    + +

    ◆ yyjson_mut_val_write()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline char * yyjson_mut_val_write (const yyjson_mut_val * val,
    yyjson_write_flag flg,
    size_t * len )
    +
    +

    Write a value to JSON string.

    +

    This function is thread-safe when: The val is not modified by other threads.

    +
    Parameters
    + + + + +
    valThe JSON root value. If this parameter is NULL, the function will fail and return NULL.
    flgThe JSON write options. Multiple options can be combined with | operator. 0 means no options.
    lenA pointer to receive output length in bytes (not including the null-terminator). Pass NULL if you don't need length information.
    +
    +
    +
    Returns
    A new JSON string, or NULL if an error occurs. This string is encoded as UTF-8 with a null-terminator. When it's no longer needed, it should be freed with free().
    + +
    +
    + +

    ◆ yyjson_write_number()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api char * yyjson_write_number (const yyjson_val * val,
    char * buf )
    +
    +

    Write a JSON number.

    +
    Parameters
    + + + +
    valA JSON number value to be converted to a string. If this parameter is invalid, the function will fail and return NULL.
    bufA buffer to store the resulting null-terminated string. If this parameter is NULL, the function will fail and return NULL. For integer values, the buffer must be at least 21 bytes. For floating-point values, the buffer must be at least 40 bytes.
    +
    +
    +
    Returns
    On success, returns a pointer to the character after the last written character. On failure, returns NULL.
    +
    Note
      +
    • This function is thread-safe and does not allocate memory (when YYJSON_DISABLE_FAST_FP_CONV is not defined).
    • +
    • This function will fail and return NULL only in the following cases: 1) val or buf is NULL; 2) val is not a number type; 3) val is inf or nan, and non-standard JSON is explicitly disabled via the YYJSON_DISABLE_NON_STANDARD flag.
    • +
    +
    + +
    +
    + +

    ◆ yyjson_mut_write_number()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline char * yyjson_mut_write_number (const yyjson_mut_val * val,
    char * buf )
    +
    +

    Same as yyjson_write_number().

    + +
    +
    + +

    ◆ yyjson_doc_get_root()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_val * yyjson_doc_get_root (yyjson_doc * doc)
    +
    +

    Returns the root value of this JSON document. Returns NULL if doc is NULL.

    + +
    +
    + +

    ◆ yyjson_doc_get_read_size()

    + +
    +
    + + + + + + + +
    yyjson_api_inline size_t yyjson_doc_get_read_size (yyjson_doc * doc)
    +
    +

    Returns read size of input JSON data. Returns 0 if doc is NULL. For example: the read size of [1,2,3] is 7 bytes.

    + +
    +
    + +

    ◆ yyjson_doc_get_val_count()

    + +
    +
    + + + + + + + +
    yyjson_api_inline size_t yyjson_doc_get_val_count (yyjson_doc * doc)
    +
    +

    Returns total value count in this JSON document. Returns 0 if doc is NULL. For example: the value count of [1,2,3] is 4.

    + +
    +
    + +

    ◆ yyjson_doc_free()

    + +
    +
    + + + + + + + +
    yyjson_api_inline void yyjson_doc_free (yyjson_doc * doc)
    +
    +

    Release the JSON document and free the memory. After calling this function, the doc and all values from the doc are no longer available. This function will do nothing if the doc is NULL.

    + +
    +
    + +

    ◆ yyjson_is_raw()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_is_raw (yyjson_val * val)
    +
    +

    Returns whether the JSON value is raw. Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_is_null()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_is_null (yyjson_val * val)
    +
    +

    Returns whether the JSON value is null. Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_is_true()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_is_true (yyjson_val * val)
    +
    +

    Returns whether the JSON value is true. Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_is_false()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_is_false (yyjson_val * val)
    +
    +

    Returns whether the JSON value is false. Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_is_bool()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_is_bool (yyjson_val * val)
    +
    +

    Returns whether the JSON value is bool (true/false). Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_is_uint()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_is_uint (yyjson_val * val)
    +
    +

    Returns whether the JSON value is unsigned integer (uint64_t). Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_is_sint()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_is_sint (yyjson_val * val)
    +
    +

    Returns whether the JSON value is signed integer (int64_t). Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_is_int()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_is_int (yyjson_val * val)
    +
    +

    Returns whether the JSON value is integer (uint64_t/int64_t). Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_is_real()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_is_real (yyjson_val * val)
    +
    +

    Returns whether the JSON value is real number (double). Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_is_num()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_is_num (yyjson_val * val)
    +
    +

    Returns whether the JSON value is number (uint64_t/int64_t/double). Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_is_str()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_is_str (yyjson_val * val)
    +
    +

    Returns whether the JSON value is string. Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_is_arr()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_is_arr (yyjson_val * val)
    +
    +

    Returns whether the JSON value is array. Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_is_obj()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_is_obj (yyjson_val * val)
    +
    +

    Returns whether the JSON value is object. Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_is_ctn()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_is_ctn (yyjson_val * val)
    +
    +

    Returns whether the JSON value is container (array/object). Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_get_type()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_type yyjson_get_type (yyjson_val * val)
    +
    +

    Returns the JSON value's type. Returns YYJSON_TYPE_NONE if val is NULL.

    + +
    +
    + +

    ◆ yyjson_get_subtype()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_subtype yyjson_get_subtype (yyjson_val * val)
    +
    +

    Returns the JSON value's subtype. Returns YYJSON_SUBTYPE_NONE if val is NULL.

    + +
    +
    + +

    ◆ yyjson_get_tag()

    + +
    +
    + + + + + + + +
    yyjson_api_inline uint8_t yyjson_get_tag (yyjson_val * val)
    +
    +

    Returns the JSON value's tag. Returns 0 if val is NULL.

    + +
    +
    + +

    ◆ yyjson_get_type_desc()

    + +
    +
    + + + + + + + +
    yyjson_api_inline const char * yyjson_get_type_desc (yyjson_val * val)
    +
    +

    Returns the JSON value's type description. The return value should be one of these strings: "raw", "null", "string", "array", "object", "true", "false", "uint", "sint", "real", "unknown".

    + +
    +
    + +

    ◆ yyjson_get_raw()

    + +
    +
    + + + + + + + +
    yyjson_api_inline const char * yyjson_get_raw (yyjson_val * val)
    +
    +

    Returns the content if the value is raw. Returns NULL if val is NULL or type is not raw.

    + +
    +
    + +

    ◆ yyjson_get_bool()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_get_bool (yyjson_val * val)
    +
    +

    Returns the content if the value is bool. Returns false if val is NULL or type is not bool.

    + +
    +
    + +

    ◆ yyjson_get_uint()

    + +
    +
    + + + + + + + +
    yyjson_api_inline uint64_t yyjson_get_uint (yyjson_val * val)
    +
    +

    Returns the content and cast to uint64_t. Returns 0 if val is NULL or type is not integer(sint/uint).

    + +
    +
    + +

    ◆ yyjson_get_sint()

    + +
    +
    + + + + + + + +
    yyjson_api_inline int64_t yyjson_get_sint (yyjson_val * val)
    +
    +

    Returns the content and cast to int64_t. Returns 0 if val is NULL or type is not integer(sint/uint).

    + +
    +
    + +

    ◆ yyjson_get_int()

    + +
    +
    + + + + + + + +
    yyjson_api_inline int yyjson_get_int (yyjson_val * val)
    +
    +

    Returns the content and cast to int. Returns 0 if val is NULL or type is not integer(sint/uint).

    + +
    +
    + +

    ◆ yyjson_get_real()

    + +
    +
    + + + + + + + +
    yyjson_api_inline double yyjson_get_real (yyjson_val * val)
    +
    +

    Returns the content if the value is real number, or 0.0 on error. Returns 0.0 if val is NULL or type is not real(double).

    + +
    +
    + +

    ◆ yyjson_get_num()

    + +
    +
    + + + + + + + +
    yyjson_api_inline double yyjson_get_num (yyjson_val * val)
    +
    +

    Returns the content and typecast to double if the value is number. Returns 0.0 if val is NULL or type is not number(uint/sint/real).

    + +
    +
    + +

    ◆ yyjson_get_str()

    + +
    +
    + + + + + + + +
    yyjson_api_inline const char * yyjson_get_str (yyjson_val * val)
    +
    +

    Returns the content if the value is string. Returns NULL if val is NULL or type is not string.

    + +
    +
    + +

    ◆ yyjson_get_len()

    + +
    +
    + + + + + + + +
    yyjson_api_inline size_t yyjson_get_len (yyjson_val * val)
    +
    +

    Returns the content length (string length, array size, object size. Returns 0 if val is NULL or type is not string/array/object.

    + +
    +
    + +

    ◆ yyjson_equals_str()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_equals_str (yyjson_val * val,
    const char * str )
    +
    +

    Returns whether the JSON value is equals to a string. Returns false if input is NULL or type is not string.

    + +
    +
    + +

    ◆ yyjson_equals_strn()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_equals_strn (yyjson_val * val,
    const char * str,
    size_t len )
    +
    +

    Returns whether the JSON value is equals to a string. The str should be a UTF-8 string, null-terminator is not required. Returns false if input is NULL or type is not string.

    + +
    +
    + +

    ◆ yyjson_equals()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_equals (yyjson_val * lhs,
    yyjson_val * rhs )
    +
    +

    Returns whether two JSON values are equal (deep compare). Returns false if input is NULL.

    Note
    the result may be inaccurate if object has duplicate keys.
    +
    Warning
    This function is recursive and may cause a stack overflow if the object level is too deep.
    + +
    +
    + +

    ◆ yyjson_set_raw()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_set_raw (yyjson_val * val,
    const char * raw,
    size_t len )
    +
    +

    Set the value to raw. Returns false if input is NULL or val is object or array.

    Warning
    This will modify the immutable value, use with caution.
    + +
    +
    + +

    ◆ yyjson_set_null()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_set_null (yyjson_val * val)
    +
    +

    Set the value to null. Returns false if input is NULL or val is object or array.

    Warning
    This will modify the immutable value, use with caution.
    + +
    +
    + +

    ◆ yyjson_set_bool()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_set_bool (yyjson_val * val,
    bool num )
    +
    +

    Set the value to bool. Returns false if input is NULL or val is object or array.

    Warning
    This will modify the immutable value, use with caution.
    + +
    +
    + +

    ◆ yyjson_set_uint()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_set_uint (yyjson_val * val,
    uint64_t num )
    +
    +

    Set the value to uint. Returns false if input is NULL or val is object or array.

    Warning
    This will modify the immutable value, use with caution.
    + +
    +
    + +

    ◆ yyjson_set_sint()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_set_sint (yyjson_val * val,
    int64_t num )
    +
    +

    Set the value to sint. Returns false if input is NULL or val is object or array.

    Warning
    This will modify the immutable value, use with caution.
    + +
    +
    + +

    ◆ yyjson_set_int()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_set_int (yyjson_val * val,
    int num )
    +
    +

    Set the value to int. Returns false if input is NULL or val is object or array.

    Warning
    This will modify the immutable value, use with caution.
    + +
    +
    + +

    ◆ yyjson_set_float()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_set_float (yyjson_val * val,
    float num )
    +
    +

    Set the value to float. Returns false if input is NULL or val is object or array.

    Warning
    This will modify the immutable value, use with caution.
    + +
    +
    + +

    ◆ yyjson_set_double()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_set_double (yyjson_val * val,
    double num )
    +
    +

    Set the value to double. Returns false if input is NULL or val is object or array.

    Warning
    This will modify the immutable value, use with caution.
    + +
    +
    + +

    ◆ yyjson_set_real()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_set_real (yyjson_val * val,
    double num )
    +
    +

    Set the value to real. Returns false if input is NULL or val is object or array.

    Warning
    This will modify the immutable value, use with caution.
    + +
    +
    + +

    ◆ yyjson_set_fp_to_fixed()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_set_fp_to_fixed (yyjson_val * val,
    int prec )
    +
    +

    Set the floating-point number's output format to fixed-point notation. Returns false if input is NULL or val is not real type.

    See also
    YYJSON_WRITE_FP_TO_FIXED flag.
    +
    Warning
    This will modify the immutable value, use with caution.
    + +
    +
    + +

    ◆ yyjson_set_fp_to_float()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_set_fp_to_float (yyjson_val * val,
    bool flt )
    +
    +

    Set the floating-point number's output format to single-precision. Returns false if input is NULL or val is not real type.

    See also
    YYJSON_WRITE_FP_TO_FLOAT flag.
    +
    Warning
    This will modify the immutable value, use with caution.
    + +
    +
    + +

    ◆ yyjson_set_str()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_set_str (yyjson_val * val,
    const char * str )
    +
    +

    Set the value to string (null-terminated). Returns false if input is NULL or val is object or array.

    Warning
    This will modify the immutable value, use with caution.
    + +
    +
    + +

    ◆ yyjson_set_strn()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_set_strn (yyjson_val * val,
    const char * str,
    size_t len )
    +
    +

    Set the value to string (with length). Returns false if input is NULL or val is object or array.

    Warning
    This will modify the immutable value, use with caution.
    + +
    +
    + +

    ◆ yyjson_set_str_noesc()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_set_str_noesc (yyjson_val * val,
    bool noesc )
    +
    +

    Marks this string as not needing to be escaped during JSON writing. This can be used to avoid the overhead of escaping if the string contains only characters that do not require escaping. Returns false if input is NULL or val is not string.

    See also
    YYJSON_SUBTYPE_NOESC subtype.
    +
    Warning
    This will modify the immutable value, use with caution.
    + +
    +
    + +

    ◆ yyjson_arr_size()

    + +
    +
    + + + + + + + +
    yyjson_api_inline size_t yyjson_arr_size (yyjson_val * arr)
    +
    +

    Returns the number of elements in this array. Returns 0 if arr is NULL or type is not array.

    + +
    +
    + +

    ◆ yyjson_arr_get()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_val * yyjson_arr_get (yyjson_val * arr,
    size_t idx )
    +
    +

    Returns the element at the specified position in this array. Returns NULL if array is NULL/empty or the index is out of bounds.

    Warning
    This function takes a linear search time if array is not flat. For example: [1,{},3] is flat, [1,[2],3] is not flat.
    + +
    +
    + +

    ◆ yyjson_arr_get_first()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_val * yyjson_arr_get_first (yyjson_val * arr)
    +
    +

    Returns the first element of this array. Returns NULL if arr is NULL/empty or type is not array.

    + +
    +
    + +

    ◆ yyjson_arr_get_last()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_val * yyjson_arr_get_last (yyjson_val * arr)
    +
    +

    Returns the last element of this array. Returns NULL if arr is NULL/empty or type is not array.

    Warning
    This function takes a linear search time if array is not flat. For example: [1,{},3] is flat, [1,[2],3] is not flat.
    + +
    +
    + +

    ◆ yyjson_arr_iter_init()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_arr_iter_init (yyjson_val * arr,
    yyjson_arr_iter * iter )
    +
    +

    Initialize an iterator for this array.

    +
    Parameters
    + + + +
    arrThe array to be iterated over. If this parameter is NULL or not an array, iter will be set to empty.
    iterThe iterator to be initialized. If this parameter is NULL, the function will fail and return false.
    +
    +
    +
    Returns
    true if the iter has been successfully initialized.
    +
    Note
    The iterator does not need to be destroyed.
    + +
    +
    + +

    ◆ yyjson_arr_iter_with()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_arr_iter yyjson_arr_iter_with (yyjson_val * arr)
    +
    +

    Create an iterator with an array , same as yyjson_arr_iter_init().

    +
    Parameters
    + + +
    arrThe array to be iterated over. If this parameter is NULL or not an array, an empty iterator will returned.
    +
    +
    +
    Returns
    A new iterator for the array.
    +
    Note
    The iterator does not need to be destroyed.
    + +
    +
    + +

    ◆ yyjson_arr_iter_has_next()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_arr_iter_has_next (yyjson_arr_iter * iter)
    +
    +

    Returns whether the iteration has more elements. If iter is NULL, this function will return false.

    + +
    +
    + +

    ◆ yyjson_arr_iter_next()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_val * yyjson_arr_iter_next (yyjson_arr_iter * iter)
    +
    +

    Returns the next element in the iteration, or NULL on end. If iter is NULL, this function will return NULL.

    + +
    +
    + +

    ◆ yyjson_obj_size()

    + +
    +
    + + + + + + + +
    yyjson_api_inline size_t yyjson_obj_size (yyjson_val * obj)
    +
    +

    Returns the number of key-value pairs in this object. Returns 0 if obj is NULL or type is not object.

    + +
    +
    + +

    ◆ yyjson_obj_get()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_val * yyjson_obj_get (yyjson_val * obj,
    const char * key )
    +
    +

    Returns the value to which the specified key is mapped. Returns NULL if this object contains no mapping for the key. Returns NULL if obj/key is NULL, or type is not object.

    +

    The key should be a null-terminated UTF-8 string.

    +
    Warning
    This function takes a linear search time.
    + +
    +
    + +

    ◆ yyjson_obj_getn()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_val * yyjson_obj_getn (yyjson_val * obj,
    const char * key,
    size_t key_len )
    +
    +

    Returns the value to which the specified key is mapped. Returns NULL if this object contains no mapping for the key. Returns NULL if obj/key is NULL, or type is not object.

    +

    The key should be a UTF-8 string, null-terminator is not required. The key_len should be the length of the key, in bytes.

    +
    Warning
    This function takes a linear search time.
    + +
    +
    + +

    ◆ yyjson_obj_iter_init()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_obj_iter_init (yyjson_val * obj,
    yyjson_obj_iter * iter )
    +
    +

    Initialize an iterator for this object.

    +
    Parameters
    + + + +
    objThe object to be iterated over. If this parameter is NULL or not an object, iter will be set to empty.
    iterThe iterator to be initialized. If this parameter is NULL, the function will fail and return false.
    +
    +
    +
    Returns
    true if the iter has been successfully initialized.
    +
    Note
    The iterator does not need to be destroyed.
    + +
    +
    + +

    ◆ yyjson_obj_iter_with()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_obj_iter yyjson_obj_iter_with (yyjson_val * obj)
    +
    +

    Create an iterator with an object, same as yyjson_obj_iter_init().

    +
    Parameters
    + + +
    objThe object to be iterated over. If this parameter is NULL or not an object, an empty iterator will returned.
    +
    +
    +
    Returns
    A new iterator for the object.
    +
    Note
    The iterator does not need to be destroyed.
    + +
    +
    + +

    ◆ yyjson_obj_iter_has_next()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_obj_iter_has_next (yyjson_obj_iter * iter)
    +
    +

    Returns whether the iteration has more elements. If iter is NULL, this function will return false.

    + +
    +
    + +

    ◆ yyjson_obj_iter_next()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_val * yyjson_obj_iter_next (yyjson_obj_iter * iter)
    +
    +

    Returns the next key in the iteration, or NULL on end. If iter is NULL, this function will return NULL.

    + +
    +
    + +

    ◆ yyjson_obj_iter_get_val()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_val * yyjson_obj_iter_get_val (yyjson_val * key)
    +
    +

    Returns the value for key inside the iteration. If iter is NULL, this function will return NULL.

    + +
    +
    + +

    ◆ yyjson_obj_iter_get()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_val * yyjson_obj_iter_get (yyjson_obj_iter * iter,
    const char * key )
    +
    +

    Iterates to a specified key and returns the value.

    +

    This function does the same thing as yyjson_obj_get(), but is much faster if the ordering of the keys is known at compile-time and you are using the same order to look up the values. If the key exists in this object, then the iterator will stop at the next key, otherwise the iterator will not change and NULL is returned.

    +
    Parameters
    + + + +
    iterThe object iterator, should not be NULL.
    keyThe key, should be a UTF-8 string with null-terminator.
    +
    +
    +
    Returns
    The value to which the specified key is mapped. NULL if this object contains no mapping for the key or input is invalid.
    +
    Warning
    This function takes a linear search time if the key is not nearby.
    + +
    +
    + +

    ◆ yyjson_obj_iter_getn()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_val * yyjson_obj_iter_getn (yyjson_obj_iter * iter,
    const char * key,
    size_t key_len )
    +
    +

    Iterates to a specified key and returns the value.

    +

    This function does the same thing as yyjson_obj_getn(), but is much faster if the ordering of the keys is known at compile-time and you are using the same order to look up the values. If the key exists in this object, then the iterator will stop at the next key, otherwise the iterator will not change and NULL is returned.

    +
    Parameters
    + + + + +
    iterThe object iterator, should not be NULL.
    keyThe key, should be a UTF-8 string, null-terminator is not required.
    key_lenThe the length of key, in bytes.
    +
    +
    +
    Returns
    The value to which the specified key is mapped. NULL if this object contains no mapping for the key or input is invalid.
    +
    Warning
    This function takes a linear search time if the key is not nearby.
    + +
    +
    + +

    ◆ yyjson_mut_doc_get_root()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_doc_get_root (yyjson_mut_doc * doc)
    +
    +

    Returns the root value of this JSON document. Returns NULL if doc is NULL.

    + +
    +
    + +

    ◆ yyjson_mut_doc_set_root()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline void yyjson_mut_doc_set_root (yyjson_mut_doc * doc,
    yyjson_mut_val * root )
    +
    +

    Sets the root value of this JSON document. Pass NULL to clear root value of the document.

    + +
    +
    + +

    ◆ yyjson_mut_doc_set_str_pool_size()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api bool yyjson_mut_doc_set_str_pool_size (yyjson_mut_doc * doc,
    size_t len )
    +
    +

    Set the string pool size for a mutable document. This function does not allocate memory immediately, but uses the size when the next memory allocation is needed.

    +

    If the caller knows the approximate bytes of strings that the document needs to store (e.g. copy string with yyjson_mut_strcpy function), setting a larger size can avoid multiple memory allocations and improve performance.

    +
    Parameters
    + + + +
    docThe mutable document.
    lenThe desired string pool size in bytes (total string length).
    +
    +
    +
    Returns
    true if successful, false if size is 0 or overflow.
    + +
    +
    + +

    ◆ yyjson_mut_doc_set_val_pool_size()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api bool yyjson_mut_doc_set_val_pool_size (yyjson_mut_doc * doc,
    size_t count )
    +
    +

    Set the value pool size for a mutable document. This function does not allocate memory immediately, but uses the size when the next memory allocation is needed.

    +

    If the caller knows the approximate number of values that the document needs to store (e.g. create new value with yyjson_mut_xxx functions), setting a larger size can avoid multiple memory allocations and improve performance.

    +
    Parameters
    + + + +
    docThe mutable document.
    countThe desired value pool size (number of yyjson_mut_val).
    +
    +
    +
    Returns
    true if successful, false if size is 0 or overflow.
    + +
    +
    + +

    ◆ yyjson_mut_doc_free()

    + +
    +
    + + + + + + + +
    yyjson_api void yyjson_mut_doc_free (yyjson_mut_doc * doc)
    +
    +

    Release the JSON document and free the memory. After calling this function, the doc and all values from the doc are no longer available. This function will do nothing if the doc is NULL.

    + +
    +
    + +

    ◆ yyjson_mut_doc_new()

    + +
    +
    + + + + + + + +
    yyjson_api yyjson_mut_doc * yyjson_mut_doc_new (const yyjson_alc * alc)
    +
    +

    Creates and returns a new mutable JSON document, returns NULL on error. If allocator is NULL, the default allocator will be used.

    + +
    +
    + +

    ◆ yyjson_doc_mut_copy()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api yyjson_mut_doc * yyjson_doc_mut_copy (yyjson_doc * doc,
    const yyjson_alc * alc )
    +
    +

    Copies and returns a new mutable document from input, returns NULL on error. This makes a deep-copy on the immutable document. If allocator is NULL, the default allocator will be used.

    Note
    imut_doc -> mut_doc.
    + +
    +
    + +

    ◆ yyjson_mut_doc_mut_copy()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api yyjson_mut_doc * yyjson_mut_doc_mut_copy (yyjson_mut_doc * doc,
    const yyjson_alc * alc )
    +
    +

    Copies and returns a new mutable document from input, returns NULL on error. This makes a deep-copy on the mutable document. If allocator is NULL, the default allocator will be used.

    Note
    mut_doc -> mut_doc.
    + +
    +
    + +

    ◆ yyjson_val_mut_copy()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api yyjson_mut_val * yyjson_val_mut_copy (yyjson_mut_doc * doc,
    yyjson_val * val )
    +
    +

    Copies and returns a new mutable value from input, returns NULL on error. This makes a deep-copy on the immutable value. The memory was managed by mutable document.

    Note
    imut_val -> mut_val.
    + +
    +
    + +

    ◆ yyjson_mut_val_mut_copy()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api yyjson_mut_val * yyjson_mut_val_mut_copy (yyjson_mut_doc * doc,
    yyjson_mut_val * val )
    +
    +

    Copies and returns a new mutable value from input, returns NULL on error. This makes a deep-copy on the mutable value. The memory was managed by mutable document.

    Note
    mut_val -> mut_val.
    +
    Warning
    This function is recursive and may cause a stack overflow if the object level is too deep.
    + +
    +
    + +

    ◆ yyjson_mut_doc_imut_copy()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api yyjson_doc * yyjson_mut_doc_imut_copy (yyjson_mut_doc * doc,
    const yyjson_alc * alc )
    +
    +

    Copies and returns a new immutable document from input, returns NULL on error. This makes a deep-copy on the mutable document. The returned document should be freed with yyjson_doc_free().

    Note
    mut_doc -> imut_doc.
    +
    Warning
    This function is recursive and may cause a stack overflow if the object level is too deep.
    + +
    +
    + +

    ◆ yyjson_mut_val_imut_copy()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api yyjson_doc * yyjson_mut_val_imut_copy (yyjson_mut_val * val,
    const yyjson_alc * alc )
    +
    +

    Copies and returns a new immutable document from input, returns NULL on error. This makes a deep-copy on the mutable value. The returned document should be freed with yyjson_doc_free().

    Note
    mut_val -> imut_doc.
    +
    Warning
    This function is recursive and may cause a stack overflow if the object level is too deep.
    + +
    +
    + +

    ◆ yyjson_mut_is_raw()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_mut_is_raw (yyjson_mut_val * val)
    +
    +

    Returns whether the JSON value is raw. Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_mut_is_null()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_mut_is_null (yyjson_mut_val * val)
    +
    +

    Returns whether the JSON value is null. Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_mut_is_true()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_mut_is_true (yyjson_mut_val * val)
    +
    +

    Returns whether the JSON value is true. Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_mut_is_false()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_mut_is_false (yyjson_mut_val * val)
    +
    +

    Returns whether the JSON value is false. Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_mut_is_bool()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_mut_is_bool (yyjson_mut_val * val)
    +
    +

    Returns whether the JSON value is bool (true/false). Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_mut_is_uint()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_mut_is_uint (yyjson_mut_val * val)
    +
    +

    Returns whether the JSON value is unsigned integer (uint64_t). Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_mut_is_sint()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_mut_is_sint (yyjson_mut_val * val)
    +
    +

    Returns whether the JSON value is signed integer (int64_t). Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_mut_is_int()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_mut_is_int (yyjson_mut_val * val)
    +
    +

    Returns whether the JSON value is integer (uint64_t/int64_t). Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_mut_is_real()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_mut_is_real (yyjson_mut_val * val)
    +
    +

    Returns whether the JSON value is real number (double). Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_mut_is_num()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_mut_is_num (yyjson_mut_val * val)
    +
    +

    Returns whether the JSON value is number (uint/sint/real). Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_mut_is_str()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_mut_is_str (yyjson_mut_val * val)
    +
    +

    Returns whether the JSON value is string. Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_mut_is_arr()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_mut_is_arr (yyjson_mut_val * val)
    +
    +

    Returns whether the JSON value is array. Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_mut_is_obj()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_mut_is_obj (yyjson_mut_val * val)
    +
    +

    Returns whether the JSON value is object. Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_mut_is_ctn()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_mut_is_ctn (yyjson_mut_val * val)
    +
    +

    Returns whether the JSON value is container (array/object). Returns false if val is NULL.

    + +
    +
    + +

    ◆ yyjson_mut_get_type()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_type yyjson_mut_get_type (yyjson_mut_val * val)
    +
    +

    Returns the JSON value's type. Returns YYJSON_TYPE_NONE if val is NULL.

    + +
    +
    + +

    ◆ yyjson_mut_get_subtype()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_subtype yyjson_mut_get_subtype (yyjson_mut_val * val)
    +
    +

    Returns the JSON value's subtype. Returns YYJSON_SUBTYPE_NONE if val is NULL.

    + +
    +
    + +

    ◆ yyjson_mut_get_tag()

    + +
    +
    + + + + + + + +
    yyjson_api_inline uint8_t yyjson_mut_get_tag (yyjson_mut_val * val)
    +
    +

    Returns the JSON value's tag. Returns 0 if val is NULL.

    + +
    +
    + +

    ◆ yyjson_mut_get_type_desc()

    + +
    +
    + + + + + + + +
    yyjson_api_inline const char * yyjson_mut_get_type_desc (yyjson_mut_val * val)
    +
    +

    Returns the JSON value's type description. The return value should be one of these strings: "raw", "null", "string", "array", "object", "true", "false", "uint", "sint", "real", "unknown".

    + +
    +
    + +

    ◆ yyjson_mut_get_raw()

    + +
    +
    + + + + + + + +
    yyjson_api_inline const char * yyjson_mut_get_raw (yyjson_mut_val * val)
    +
    +

    Returns the content if the value is raw. Returns NULL if val is NULL or type is not raw.

    + +
    +
    + +

    ◆ yyjson_mut_get_bool()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_mut_get_bool (yyjson_mut_val * val)
    +
    +

    Returns the content if the value is bool. Returns NULL if val is NULL or type is not bool.

    + +
    +
    + +

    ◆ yyjson_mut_get_uint()

    + +
    +
    + + + + + + + +
    yyjson_api_inline uint64_t yyjson_mut_get_uint (yyjson_mut_val * val)
    +
    +

    Returns the content and cast to uint64_t. Returns 0 if val is NULL or type is not integer(sint/uint).

    + +
    +
    + +

    ◆ yyjson_mut_get_sint()

    + +
    +
    + + + + + + + +
    yyjson_api_inline int64_t yyjson_mut_get_sint (yyjson_mut_val * val)
    +
    +

    Returns the content and cast to int64_t. Returns 0 if val is NULL or type is not integer(sint/uint).

    + +
    +
    + +

    ◆ yyjson_mut_get_int()

    + +
    +
    + + + + + + + +
    yyjson_api_inline int yyjson_mut_get_int (yyjson_mut_val * val)
    +
    +

    Returns the content and cast to int. Returns 0 if val is NULL or type is not integer(sint/uint).

    + +
    +
    + +

    ◆ yyjson_mut_get_real()

    + +
    +
    + + + + + + + +
    yyjson_api_inline double yyjson_mut_get_real (yyjson_mut_val * val)
    +
    +

    Returns the content if the value is real number. Returns 0.0 if val is NULL or type is not real(double).

    + +
    +
    + +

    ◆ yyjson_mut_get_num()

    + +
    +
    + + + + + + + +
    yyjson_api_inline double yyjson_mut_get_num (yyjson_mut_val * val)
    +
    +

    Returns the content and typecast to double if the value is number. Returns 0.0 if val is NULL or type is not number(uint/sint/real).

    + +
    +
    + +

    ◆ yyjson_mut_get_str()

    + +
    +
    + + + + + + + +
    yyjson_api_inline const char * yyjson_mut_get_str (yyjson_mut_val * val)
    +
    +

    Returns the content if the value is string. Returns NULL if val is NULL or type is not string.

    + +
    +
    + +

    ◆ yyjson_mut_get_len()

    + +
    +
    + + + + + + + +
    yyjson_api_inline size_t yyjson_mut_get_len (yyjson_mut_val * val)
    +
    +

    Returns the content length (string length, array size, object size. Returns 0 if val is NULL or type is not string/array/object.

    + +
    +
    + +

    ◆ yyjson_mut_equals_str()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_equals_str (yyjson_mut_val * val,
    const char * str )
    +
    +

    Returns whether the JSON value is equals to a string. The str should be a null-terminated UTF-8 string. Returns false if input is NULL or type is not string.

    + +
    +
    + +

    ◆ yyjson_mut_equals_strn()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_equals_strn (yyjson_mut_val * val,
    const char * str,
    size_t len )
    +
    +

    Returns whether the JSON value is equals to a string. The str should be a UTF-8 string, null-terminator is not required. Returns false if input is NULL or type is not string.

    + +
    +
    + +

    ◆ yyjson_mut_equals()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_equals (yyjson_mut_val * lhs,
    yyjson_mut_val * rhs )
    +
    +

    Returns whether two JSON values are equal (deep compare). Returns false if input is NULL.

    Note
    the result may be inaccurate if object has duplicate keys.
    +
    Warning
    This function is recursive and may cause a stack overflow if the object level is too deep.
    + +
    +
    + +

    ◆ yyjson_mut_set_raw()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_set_raw (yyjson_mut_val * val,
    const char * raw,
    size_t len )
    +
    +

    Set the value to raw. Returns false if input is NULL.

    Warning
    This function should not be used on an existing object or array.
    + +
    +
    + +

    ◆ yyjson_mut_set_null()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_mut_set_null (yyjson_mut_val * val)
    +
    +

    Set the value to null. Returns false if input is NULL.

    Warning
    This function should not be used on an existing object or array.
    + +
    +
    + +

    ◆ yyjson_mut_set_bool()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_set_bool (yyjson_mut_val * val,
    bool num )
    +
    +

    Set the value to bool. Returns false if input is NULL.

    Warning
    This function should not be used on an existing object or array.
    + +
    +
    + +

    ◆ yyjson_mut_set_uint()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_set_uint (yyjson_mut_val * val,
    uint64_t num )
    +
    +

    Set the value to uint. Returns false if input is NULL.

    Warning
    This function should not be used on an existing object or array.
    + +
    +
    + +

    ◆ yyjson_mut_set_sint()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_set_sint (yyjson_mut_val * val,
    int64_t num )
    +
    +

    Set the value to sint. Returns false if input is NULL.

    Warning
    This function should not be used on an existing object or array.
    + +
    +
    + +

    ◆ yyjson_mut_set_int()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_set_int (yyjson_mut_val * val,
    int num )
    +
    +

    Set the value to int. Returns false if input is NULL.

    Warning
    This function should not be used on an existing object or array.
    + +
    +
    + +

    ◆ yyjson_mut_set_float()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_set_float (yyjson_mut_val * val,
    float num )
    +
    +

    Set the value to float. Returns false if input is NULL.

    Warning
    This function should not be used on an existing object or array.
    + +
    +
    + +

    ◆ yyjson_mut_set_double()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_set_double (yyjson_mut_val * val,
    double num )
    +
    +

    Set the value to double. Returns false if input is NULL.

    Warning
    This function should not be used on an existing object or array.
    + +
    +
    + +

    ◆ yyjson_mut_set_real()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_set_real (yyjson_mut_val * val,
    double num )
    +
    +

    Set the value to real. Returns false if input is NULL.

    Warning
    This function should not be used on an existing object or array.
    + +
    +
    + +

    ◆ yyjson_mut_set_fp_to_fixed()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_set_fp_to_fixed (yyjson_mut_val * val,
    int prec )
    +
    +

    Set the floating-point number's output format to fixed-point notation. Returns false if input is NULL or val is not real type.

    See also
    YYJSON_WRITE_FP_TO_FIXED flag.
    +
    Warning
    This will modify the immutable value, use with caution.
    + +
    +
    + +

    ◆ yyjson_mut_set_fp_to_float()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_set_fp_to_float (yyjson_mut_val * val,
    bool flt )
    +
    +

    Set the floating-point number's output format to single-precision. Returns false if input is NULL or val is not real type.

    See also
    YYJSON_WRITE_FP_TO_FLOAT flag.
    +
    Warning
    This will modify the immutable value, use with caution.
    + +
    +
    + +

    ◆ yyjson_mut_set_str()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_set_str (yyjson_mut_val * val,
    const char * str )
    +
    +

    Set the value to string (null-terminated). Returns false if input is NULL.

    Warning
    This function should not be used on an existing object or array.
    + +
    +
    + +

    ◆ yyjson_mut_set_strn()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_set_strn (yyjson_mut_val * val,
    const char * str,
    size_t len )
    +
    +

    Set the value to string (with length). Returns false if input is NULL.

    Warning
    This function should not be used on an existing object or array.
    + +
    +
    + +

    ◆ yyjson_mut_set_str_noesc()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_set_str_noesc (yyjson_mut_val * val,
    bool noesc )
    +
    +

    Marks this string as not needing to be escaped during JSON writing. This can be used to avoid the overhead of escaping if the string contains only characters that do not require escaping. Returns false if input is NULL or val is not string.

    See also
    YYJSON_SUBTYPE_NOESC subtype.
    +
    Warning
    This will modify the immutable value, use with caution.
    + +
    +
    + +

    ◆ yyjson_mut_set_arr()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_mut_set_arr (yyjson_mut_val * val)
    +
    +

    Set the value to array. Returns false if input is NULL.

    Warning
    This function should not be used on an existing object or array.
    + +
    +
    + +

    ◆ yyjson_mut_set_obj()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_mut_set_obj (yyjson_mut_val * val)
    +
    +

    Set the value to array. Returns false if input is NULL.

    Warning
    This function should not be used on an existing object or array.
    + +
    +
    + +

    ◆ yyjson_mut_raw()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_raw (yyjson_mut_doc * doc,
    const char * str )
    +
    +

    Creates and returns a raw value, returns NULL on error. The str should be a null-terminated UTF-8 string.

    +
    Warning
    The input string is not copied, you should keep this string unmodified for the lifetime of this JSON document.
    + +
    +
    + +

    ◆ yyjson_mut_rawn()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_rawn (yyjson_mut_doc * doc,
    const char * str,
    size_t len )
    +
    +

    Creates and returns a raw value, returns NULL on error. The str should be a UTF-8 string, null-terminator is not required.

    +
    Warning
    The input string is not copied, you should keep this string unmodified for the lifetime of this JSON document.
    + +
    +
    + +

    ◆ yyjson_mut_rawcpy()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_rawcpy (yyjson_mut_doc * doc,
    const char * str )
    +
    +

    Creates and returns a raw value, returns NULL on error. The str should be a null-terminated UTF-8 string. The input string is copied and held by the document.

    + +
    +
    + +

    ◆ yyjson_mut_rawncpy()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_rawncpy (yyjson_mut_doc * doc,
    const char * str,
    size_t len )
    +
    +

    Creates and returns a raw value, returns NULL on error. The str should be a UTF-8 string, null-terminator is not required. The input string is copied and held by the document.

    + +
    +
    + +

    ◆ yyjson_mut_null()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_null (yyjson_mut_doc * doc)
    +
    +

    Creates and returns a null value, returns NULL on error.

    + +
    +
    + +

    ◆ yyjson_mut_true()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_true (yyjson_mut_doc * doc)
    +
    +

    Creates and returns a true value, returns NULL on error.

    + +
    +
    + +

    ◆ yyjson_mut_false()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_false (yyjson_mut_doc * doc)
    +
    +

    Creates and returns a false value, returns NULL on error.

    + +
    +
    + +

    ◆ yyjson_mut_bool()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_bool (yyjson_mut_doc * doc,
    bool val )
    +
    +

    Creates and returns a bool value, returns NULL on error.

    + +
    +
    + +

    ◆ yyjson_mut_uint()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_uint (yyjson_mut_doc * doc,
    uint64_t num )
    +
    +

    Creates and returns an unsigned integer value, returns NULL on error.

    + +
    +
    + +

    ◆ yyjson_mut_sint()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_sint (yyjson_mut_doc * doc,
    int64_t num )
    +
    +

    Creates and returns a signed integer value, returns NULL on error.

    + +
    +
    + +

    ◆ yyjson_mut_int()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_int (yyjson_mut_doc * doc,
    int64_t num )
    +
    +

    Creates and returns a signed integer value, returns NULL on error.

    + +
    +
    + +

    ◆ yyjson_mut_float()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_float (yyjson_mut_doc * doc,
    float num )
    +
    +

    Creates and returns a float number value, returns NULL on error.

    + +
    +
    + +

    ◆ yyjson_mut_double()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_double (yyjson_mut_doc * doc,
    double num )
    +
    +

    Creates and returns a double number value, returns NULL on error.

    + +
    +
    + +

    ◆ yyjson_mut_real()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_real (yyjson_mut_doc * doc,
    double num )
    +
    +

    Creates and returns a real number value, returns NULL on error.

    + +
    +
    + +

    ◆ yyjson_mut_str()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_str (yyjson_mut_doc * doc,
    const char * str )
    +
    +

    Creates and returns a string value, returns NULL on error. The str should be a null-terminated UTF-8 string.

    Warning
    The input string is not copied, you should keep this string unmodified for the lifetime of this JSON document.
    + +
    +
    + +

    ◆ yyjson_mut_strn()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_strn (yyjson_mut_doc * doc,
    const char * str,
    size_t len )
    +
    +

    Creates and returns a string value, returns NULL on error. The str should be a UTF-8 string, null-terminator is not required.

    Warning
    The input string is not copied, you should keep this string unmodified for the lifetime of this JSON document.
    + +
    +
    + +

    ◆ yyjson_mut_strcpy()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_strcpy (yyjson_mut_doc * doc,
    const char * str )
    +
    +

    Creates and returns a string value, returns NULL on error. The str should be a null-terminated UTF-8 string. The input string is copied and held by the document.

    + +
    +
    + +

    ◆ yyjson_mut_strncpy()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_strncpy (yyjson_mut_doc * doc,
    const char * str,
    size_t len )
    +
    +

    Creates and returns a string value, returns NULL on error. The str should be a UTF-8 string, null-terminator is not required. The input string is copied and held by the document.

    + +
    +
    + +

    ◆ yyjson_mut_arr_size()

    + +
    +
    + + + + + + + +
    yyjson_api_inline size_t yyjson_mut_arr_size (yyjson_mut_val * arr)
    +
    +

    Returns the number of elements in this array. Returns 0 if arr is NULL or type is not array.

    + +
    +
    + +

    ◆ yyjson_mut_arr_get()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_get (yyjson_mut_val * arr,
    size_t idx )
    +
    +

    Returns the element at the specified position in this array. Returns NULL if array is NULL/empty or the index is out of bounds.

    Warning
    This function takes a linear search time.
    + +
    +
    + +

    ◆ yyjson_mut_arr_get_first()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_get_first (yyjson_mut_val * arr)
    +
    +

    Returns the first element of this array. Returns NULL if arr is NULL/empty or type is not array.

    + +
    +
    + +

    ◆ yyjson_mut_arr_get_last()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_get_last (yyjson_mut_val * arr)
    +
    +

    Returns the last element of this array. Returns NULL if arr is NULL/empty or type is not array.

    + +
    +
    + +

    ◆ yyjson_mut_arr_iter_init()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_iter_init (yyjson_mut_val * arr,
    yyjson_mut_arr_iter * iter )
    +
    +

    Initialize an iterator for this array.

    +
    Parameters
    + + + +
    arrThe array to be iterated over. If this parameter is NULL or not an array, iter will be set to empty.
    iterThe iterator to be initialized. If this parameter is NULL, the function will fail and return false.
    +
    +
    +
    Returns
    true if the iter has been successfully initialized.
    +
    Note
    The iterator does not need to be destroyed.
    + +
    +
    + +

    ◆ yyjson_mut_arr_iter_with()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_mut_arr_iter yyjson_mut_arr_iter_with (yyjson_mut_val * arr)
    +
    +

    Create an iterator with an array , same as yyjson_mut_arr_iter_init().

    +
    Parameters
    + + +
    arrThe array to be iterated over. If this parameter is NULL or not an array, an empty iterator will returned.
    +
    +
    +
    Returns
    A new iterator for the array.
    +
    Note
    The iterator does not need to be destroyed.
    + +
    +
    + +

    ◆ yyjson_mut_arr_iter_has_next()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_iter_has_next (yyjson_mut_arr_iter * iter)
    +
    +

    Returns whether the iteration has more elements. If iter is NULL, this function will return false.

    + +
    +
    + +

    ◆ yyjson_mut_arr_iter_next()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_iter_next (yyjson_mut_arr_iter * iter)
    +
    +

    Returns the next element in the iteration, or NULL on end. If iter is NULL, this function will return NULL.

    + +
    +
    + +

    ◆ yyjson_mut_arr_iter_remove()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_iter_remove (yyjson_mut_arr_iter * iter)
    +
    +

    Removes and returns current element in the iteration. If iter is NULL, this function will return NULL.

    + +
    +
    + +

    ◆ yyjson_mut_arr()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr (yyjson_mut_doc * doc)
    +
    +

    Creates and returns an empty mutable array.

    Parameters
    + + +
    docA mutable document, used for memory allocation only.
    +
    +
    +
    Returns
    The new array. NULL if input is NULL or memory allocation failed.
    + +
    +
    + +

    ◆ yyjson_mut_arr_with_bool()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_bool (yyjson_mut_doc * doc,
    const bool * vals,
    size_t count )
    +
    +

    Creates and returns a new mutable array with the given boolean values.

    +
    Parameters
    + + + + +
    docA mutable document, used for memory allocation only. If this parameter is NULL, the function will fail and return NULL.
    valsA C array of boolean values.
    countThe value count. If this value is 0, an empty array will return.
    +
    +
    +
    Returns
    The new array. NULL if input is invalid or memory allocation failed.
    +

    Example

    const bool vals[3] = { true, false, true };
    + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_bool(yyjson_mut_doc *doc, const bool *vals, size_t count)
    Definition yyjson.h:6226
    +
    +
    +
    + +

    ◆ yyjson_mut_arr_with_sint()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_sint (yyjson_mut_doc * doc,
    const int64_t * vals,
    size_t count )
    +
    +

    Creates and returns a new mutable array with the given sint numbers.

    +
    Parameters
    + + + + +
    docA mutable document, used for memory allocation only. If this parameter is NULL, the function will fail and return NULL.
    valsA C array of sint numbers.
    countThe number count. If this value is 0, an empty array will return.
    +
    +
    +
    Returns
    The new array. NULL if input is invalid or memory allocation failed.
    +

    Example

    const int64_t vals[3] = { -1, 0, 1 };
    + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_sint64(yyjson_mut_doc *doc, const int64_t *vals, size_t count)
    Definition yyjson.h:6271
    +
    +
    +
    + +

    ◆ yyjson_mut_arr_with_uint()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_uint (yyjson_mut_doc * doc,
    const uint64_t * vals,
    size_t count )
    +
    +

    Creates and returns a new mutable array with the given uint numbers.

    +
    Parameters
    + + + + +
    docA mutable document, used for memory allocation only. If this parameter is NULL, the function will fail and return NULL.
    valsA C array of uint numbers.
    countThe number count. If this value is 0, an empty array will return.
    +
    +
    +
    Returns
    The new array. NULL if input is invalid or memory allocation failed.
    +

    Example

    const uint64_t vals[3] = { 0, 1, 0 };
    + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_uint(yyjson_mut_doc *doc, const uint64_t *vals, size_t count)
    Definition yyjson.h:6238
    +
    +
    +
    + +

    ◆ yyjson_mut_arr_with_real()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_real (yyjson_mut_doc * doc,
    const double * vals,
    size_t count )
    +
    +

    Creates and returns a new mutable array with the given real numbers.

    +
    Parameters
    + + + + +
    docA mutable document, used for memory allocation only. If this parameter is NULL, the function will fail and return NULL.
    valsA C array of real numbers.
    countThe number count. If this value is 0, an empty array will return.
    +
    +
    +
    Returns
    The new array. NULL if input is invalid or memory allocation failed.
    +

    Example

    const double vals[3] = { 0.1, 0.2, 0.3 };
    + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_real(yyjson_mut_doc *doc, const double *vals, size_t count)
    Definition yyjson.h:6243
    +
    +
    +
    + +

    ◆ yyjson_mut_arr_with_sint8()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_sint8 (yyjson_mut_doc * doc,
    const int8_t * vals,
    size_t count )
    +
    +

    Creates and returns a new mutable array with the given int8 numbers.

    +
    Parameters
    + + + + +
    docA mutable document, used for memory allocation only. If this parameter is NULL, the function will fail and return NULL.
    valsA C array of int8 numbers.
    countThe number count. If this value is 0, an empty array will return.
    +
    +
    +
    Returns
    The new array. NULL if input is invalid or memory allocation failed.
    +

    Example

    const int8_t vals[3] = { -1, 0, 1 };
    + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_sint8(yyjson_mut_doc *doc, const int8_t *vals, size_t count)
    Definition yyjson.h:6250
    +
    +
    +
    + +

    ◆ yyjson_mut_arr_with_sint16()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_sint16 (yyjson_mut_doc * doc,
    const int16_t * vals,
    size_t count )
    +
    +

    Creates and returns a new mutable array with the given int16 numbers.

    +
    Parameters
    + + + + +
    docA mutable document, used for memory allocation only. If this parameter is NULL, the function will fail and return NULL.
    valsA C array of int16 numbers.
    countThe number count. If this value is 0, an empty array will return.
    +
    +
    +
    Returns
    The new array. NULL if input is invalid or memory allocation failed.
    +

    Example

    const int16_t vals[3] = { -1, 0, 1 };
    + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_sint16(yyjson_mut_doc *doc, const int16_t *vals, size_t count)
    Definition yyjson.h:6257
    +
    +
    +
    + +

    ◆ yyjson_mut_arr_with_sint32()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_sint32 (yyjson_mut_doc * doc,
    const int32_t * vals,
    size_t count )
    +
    +

    Creates and returns a new mutable array with the given int32 numbers.

    +
    Parameters
    + + + + +
    docA mutable document, used for memory allocation only. If this parameter is NULL, the function will fail and return NULL.
    valsA C array of int32 numbers.
    countThe number count. If this value is 0, an empty array will return.
    +
    +
    +
    Returns
    The new array. NULL if input is invalid or memory allocation failed.
    +

    Example

    const int32_t vals[3] = { -1, 0, 1 };
    + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_sint32(yyjson_mut_doc *doc, const int32_t *vals, size_t count)
    Definition yyjson.h:6264
    +
    +
    +
    + +

    ◆ yyjson_mut_arr_with_sint64()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_sint64 (yyjson_mut_doc * doc,
    const int64_t * vals,
    size_t count )
    +
    +

    Creates and returns a new mutable array with the given int64 numbers.

    +
    Parameters
    + + + + +
    docA mutable document, used for memory allocation only. If this parameter is NULL, the function will fail and return NULL.
    valsA C array of int64 numbers.
    countThe number count. If this value is 0, an empty array will return.
    +
    +
    +
    Returns
    The new array. NULL if input is invalid or memory allocation failed.
    +

    Example

    const int64_t vals[3] = { -1, 0, 1 };
    + +
    +
    +
    + +

    ◆ yyjson_mut_arr_with_uint8()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_uint8 (yyjson_mut_doc * doc,
    const uint8_t * vals,
    size_t count )
    +
    +

    Creates and returns a new mutable array with the given uint8 numbers.

    +
    Parameters
    + + + + +
    docA mutable document, used for memory allocation only. If this parameter is NULL, the function will fail and return NULL.
    valsA C array of uint8 numbers.
    countThe number count. If this value is 0, an empty array will return.
    +
    +
    +
    Returns
    The new array. NULL if input is invalid or memory allocation failed.
    +

    Example

    const uint8_t vals[3] = { 0, 1, 0 };
    + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_uint8(yyjson_mut_doc *doc, const uint8_t *vals, size_t count)
    Definition yyjson.h:6278
    +
    +
    +
    + +

    ◆ yyjson_mut_arr_with_uint16()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_uint16 (yyjson_mut_doc * doc,
    const uint16_t * vals,
    size_t count )
    +
    +

    Creates and returns a new mutable array with the given uint16 numbers.

    +
    Parameters
    + + + + +
    docA mutable document, used for memory allocation only. If this parameter is NULL, the function will fail and return NULL.
    valsA C array of uint16 numbers.
    countThe number count. If this value is 0, an empty array will return.
    +
    +
    +
    Returns
    The new array. NULL if input is invalid or memory allocation failed.
    +

    Example

    const uint16_t vals[3] = { 0, 1, 0 };
    + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_uint16(yyjson_mut_doc *doc, const uint16_t *vals, size_t count)
    Definition yyjson.h:6285
    +
    +
    +
    + +

    ◆ yyjson_mut_arr_with_uint32()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_uint32 (yyjson_mut_doc * doc,
    const uint32_t * vals,
    size_t count )
    +
    +

    Creates and returns a new mutable array with the given uint32 numbers.

    +
    Parameters
    + + + + +
    docA mutable document, used for memory allocation only. If this parameter is NULL, the function will fail and return NULL.
    valsA C array of uint32 numbers.
    countThe number count. If this value is 0, an empty array will return.
    +
    +
    +
    Returns
    The new array. NULL if input is invalid or memory allocation failed.
    +

    Example

    const uint32_t vals[3] = { 0, 1, 0 };
    + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_uint32(yyjson_mut_doc *doc, const uint32_t *vals, size_t count)
    Definition yyjson.h:6292
    +
    +
    +
    + +

    ◆ yyjson_mut_arr_with_uint64()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_uint64 (yyjson_mut_doc * doc,
    const uint64_t * vals,
    size_t count )
    +
    +

    Creates and returns a new mutable array with the given uint64 numbers.

    +
    Parameters
    + + + + +
    docA mutable document, used for memory allocation only. If this parameter is NULL, the function will fail and return NULL.
    valsA C array of uint64 numbers.
    countThe number count. If this value is 0, an empty array will return.
    +
    +
    +
    Returns
    The new array. NULL if input is invalid or memory allocation failed.
    +

    Example

    const uint64_t vals[3] = { 0, 1, 0 };
    + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_uint64(yyjson_mut_doc *doc, const uint64_t *vals, size_t count)
    Definition yyjson.h:6299
    +
    +
    +
    + +

    ◆ yyjson_mut_arr_with_float()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_float (yyjson_mut_doc * doc,
    const float * vals,
    size_t count )
    +
    +

    Creates and returns a new mutable array with the given float numbers.

    +
    Parameters
    + + + + +
    docA mutable document, used for memory allocation only. If this parameter is NULL, the function will fail and return NULL.
    valsA C array of float numbers.
    countThe number count. If this value is 0, an empty array will return.
    +
    +
    +
    Returns
    The new array. NULL if input is invalid or memory allocation failed.
    +

    Example

    const float vals[3] = { -1.0f, 0.0f, 1.0f };
    + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_float(yyjson_mut_doc *doc, const float *vals, size_t count)
    Definition yyjson.h:6306
    +
    +
    +
    + +

    ◆ yyjson_mut_arr_with_double()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_double (yyjson_mut_doc * doc,
    const double * vals,
    size_t count )
    +
    +

    Creates and returns a new mutable array with the given double numbers.

    +
    Parameters
    + + + + +
    docA mutable document, used for memory allocation only. If this parameter is NULL, the function will fail and return NULL.
    valsA C array of double numbers.
    countThe number count. If this value is 0, an empty array will return.
    +
    +
    +
    Returns
    The new array. NULL if input is invalid or memory allocation failed.
    +

    Example

    const double vals[3] = { -1.0, 0.0, 1.0 };
    + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_double(yyjson_mut_doc *doc, const double *vals, size_t count)
    Definition yyjson.h:6313
    +
    +
    +
    + +

    ◆ yyjson_mut_arr_with_str()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_str (yyjson_mut_doc * doc,
    const char ** vals,
    size_t count )
    +
    +

    Creates and returns a new mutable array with the given strings, these strings will not be copied.

    +
    Parameters
    + + + + +
    docA mutable document, used for memory allocation only. If this parameter is NULL, the function will fail and return NULL.
    valsA C array of UTF-8 null-terminator strings. If this array contains NULL, the function will fail and return NULL.
    countThe number of values in vals. If this value is 0, an empty array will return.
    +
    +
    +
    Returns
    The new array. NULL if input is invalid or memory allocation failed.
    +
    Warning
    The input strings are not copied, you should keep these strings unmodified for the lifetime of this JSON document. If these strings will be modified, you should use yyjson_mut_arr_with_strcpy() instead.
    +

    Example

    const char *vals[3] = { "a", "b", "c" };
    + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_str(yyjson_mut_doc *doc, const char **vals, size_t count)
    Definition yyjson.h:6320
    +
    +
    +
    + +

    ◆ yyjson_mut_arr_with_strn()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_strn (yyjson_mut_doc * doc,
    const char ** vals,
    const size_t * lens,
    size_t count )
    +
    +

    Creates and returns a new mutable array with the given strings and string lengths, these strings will not be copied.

    +
    Parameters
    + + + + + +
    docA mutable document, used for memory allocation only. If this parameter is NULL, the function will fail and return NULL.
    valsA C array of UTF-8 strings, null-terminator is not required. If this array contains NULL, the function will fail and return NULL.
    lensA C array of string lengths, in bytes.
    countThe number of strings in vals. If this value is 0, an empty array will return.
    +
    +
    +
    Returns
    The new array. NULL if input is invalid or memory allocation failed.
    +
    Warning
    The input strings are not copied, you should keep these strings unmodified for the lifetime of this JSON document. If these strings will be modified, you should use yyjson_mut_arr_with_strncpy() instead.
    +

    Example

    const char *vals[3] = { "a", "bb", "c" };
    +
    const size_t lens[3] = { 1, 2, 1 };
    +
    yyjson_mut_val *arr = yyjson_mut_arr_with_strn(doc, vals, lens, 3);
    +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_strn(yyjson_mut_doc *doc, const char **vals, const size_t *lens, size_t count)
    Definition yyjson.h:6328
    +
    +
    +
    + +

    ◆ yyjson_mut_arr_with_strcpy()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_strcpy (yyjson_mut_doc * doc,
    const char ** vals,
    size_t count )
    +
    +

    Creates and returns a new mutable array with the given strings, these strings will be copied.

    +
    Parameters
    + + + + +
    docA mutable document, used for memory allocation only. If this parameter is NULL, the function will fail and return NULL.
    valsA C array of UTF-8 null-terminator strings. If this array contains NULL, the function will fail and return NULL.
    countThe number of values in vals. If this value is 0, an empty array will return.
    +
    +
    +
    Returns
    The new array. NULL if input is invalid or memory allocation failed.
    +

    Example

    const char *vals[3] = { "a", "b", "c" };
    + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_strcpy(yyjson_mut_doc *doc, const char **vals, size_t count)
    Definition yyjson.h:6337
    +
    +
    +
    + +

    ◆ yyjson_mut_arr_with_strncpy()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_with_strncpy (yyjson_mut_doc * doc,
    const char ** vals,
    const size_t * lens,
    size_t count )
    +
    +

    Creates and returns a new mutable array with the given strings and string lengths, these strings will be copied.

    +
    Parameters
    + + + + + +
    docA mutable document, used for memory allocation only. If this parameter is NULL, the function will fail and return NULL.
    valsA C array of UTF-8 strings, null-terminator is not required. If this array contains NULL, the function will fail and return NULL.
    lensA C array of string lengths, in bytes.
    countThe number of strings in vals. If this value is 0, an empty array will return.
    +
    +
    +
    Returns
    The new array. NULL if input is invalid or memory allocation failed.
    +

    Example

    const char *vals[3] = { "a", "bb", "c" };
    +
    const size_t lens[3] = { 1, 2, 1 };
    +
    yyjson_mut_val *arr = yyjson_mut_arr_with_strn(doc, vals, lens, 3);
    +
    +
    +
    + +

    ◆ yyjson_mut_arr_insert()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_insert (yyjson_mut_val * arr,
    yyjson_mut_val * val,
    size_t idx )
    +
    +

    Inserts a value into an array at a given index.

    Parameters
    + + + + +
    arrThe array to which the value is to be inserted. Returns false if it is NULL or not an array.
    valThe value to be inserted. Returns false if it is NULL.
    idxThe index to which to insert the new value. Returns false if the index is out of range.
    +
    +
    +
    Returns
    Whether successful.
    +
    Warning
    This function takes a linear search time.
    + +
    +
    + +

    ◆ yyjson_mut_arr_append()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_append (yyjson_mut_val * arr,
    yyjson_mut_val * val )
    +
    +

    Inserts a value at the end of the array.

    Parameters
    + + + +
    arrThe array to which the value is to be inserted. Returns false if it is NULL or not an array.
    valThe value to be inserted. Returns false if it is NULL.
    +
    +
    +
    Returns
    Whether successful.
    + +
    +
    + +

    ◆ yyjson_mut_arr_prepend()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_prepend (yyjson_mut_val * arr,
    yyjson_mut_val * val )
    +
    +

    Inserts a value at the head of the array.

    Parameters
    + + + +
    arrThe array to which the value is to be inserted. Returns false if it is NULL or not an array.
    valThe value to be inserted. Returns false if it is NULL.
    +
    +
    +
    Returns
    Whether successful.
    + +
    +
    + +

    ◆ yyjson_mut_arr_replace()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_replace (yyjson_mut_val * arr,
    size_t idx,
    yyjson_mut_val * val )
    +
    +

    Replaces a value at index and returns old value.

    Parameters
    + + + + +
    arrThe array to which the value is to be replaced. Returns false if it is NULL or not an array.
    idxThe index to which to replace the value. Returns false if the index is out of range.
    valThe new value to replace. Returns false if it is NULL.
    +
    +
    +
    Returns
    Old value, or NULL on error.
    +
    Warning
    This function takes a linear search time.
    + +
    +
    + +

    ◆ yyjson_mut_arr_remove()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_remove (yyjson_mut_val * arr,
    size_t idx )
    +
    +

    Removes and returns a value at index.

    Parameters
    + + + +
    arrThe array from which the value is to be removed. Returns false if it is NULL or not an array.
    idxThe index from which to remove the value. Returns false if the index is out of range.
    +
    +
    +
    Returns
    Old value, or NULL on error.
    +
    Warning
    This function takes a linear search time.
    + +
    +
    + +

    ◆ yyjson_mut_arr_remove_first()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_remove_first (yyjson_mut_val * arr)
    +
    +

    Removes and returns the first value in this array.

    Parameters
    + + +
    arrThe array from which the value is to be removed. Returns false if it is NULL or not an array.
    +
    +
    +
    Returns
    The first value, or NULL on error.
    + +
    +
    + +

    ◆ yyjson_mut_arr_remove_last()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_remove_last (yyjson_mut_val * arr)
    +
    +

    Removes and returns the last value in this array.

    Parameters
    + + +
    arrThe array from which the value is to be removed. Returns false if it is NULL or not an array.
    +
    +
    +
    Returns
    The last value, or NULL on error.
    + +
    +
    + +

    ◆ yyjson_mut_arr_remove_range()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_remove_range (yyjson_mut_val * arr,
    size_t idx,
    size_t len )
    +
    +

    Removes all values within a specified range in the array.

    Parameters
    + + + + +
    arrThe array from which the value is to be removed. Returns false if it is NULL or not an array.
    idxThe start index of the range (0 is the first).
    lenThe number of items in the range (can be 0).
    +
    +
    +
    Returns
    Whether successful.
    +
    Warning
    This function takes a linear search time.
    + +
    +
    + +

    ◆ yyjson_mut_arr_clear()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_clear (yyjson_mut_val * arr)
    +
    +

    Removes all values in this array.

    Parameters
    + + +
    arrThe array from which all of the values are to be removed. Returns false if it is NULL or not an array.
    +
    +
    +
    Returns
    Whether successful.
    + +
    +
    + +

    ◆ yyjson_mut_arr_rotate()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_rotate (yyjson_mut_val * arr,
    size_t idx )
    +
    +

    Rotates values in this array for the given number of times. For example: [1,2,3,4,5] rotate 2 is [3,4,5,1,2].

    Parameters
    + + + +
    arrThe array to be rotated.
    idxIndex (or times) to rotate.
    +
    +
    +
    Warning
    This function takes a linear search time.
    + +
    +
    + +

    ◆ yyjson_mut_arr_add_val()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_add_val (yyjson_mut_val * arr,
    yyjson_mut_val * val )
    +
    +

    Adds a value at the end of the array.

    Parameters
    + + + +
    arrThe array to which the value is to be inserted. Returns false if it is NULL or not an array.
    valThe value to be inserted. Returns false if it is NULL.
    +
    +
    +
    Returns
    Whether successful.
    + +
    +
    + +

    ◆ yyjson_mut_arr_add_null()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_add_null (yyjson_mut_doc * doc,
    yyjson_mut_val * arr )
    +
    +

    Adds a null value at the end of the array.

    Parameters
    + + + +
    docThe doc is only used for memory allocation.
    arrThe array to which the value is to be inserted. Returns false if it is NULL or not an array.
    +
    +
    +
    Returns
    Whether successful.
    + +
    +
    + +

    ◆ yyjson_mut_arr_add_true()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_add_true (yyjson_mut_doc * doc,
    yyjson_mut_val * arr )
    +
    +

    Adds a true value at the end of the array.

    Parameters
    + + + +
    docThe doc is only used for memory allocation.
    arrThe array to which the value is to be inserted. Returns false if it is NULL or not an array.
    +
    +
    +
    Returns
    Whether successful.
    + +
    +
    + +

    ◆ yyjson_mut_arr_add_false()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_add_false (yyjson_mut_doc * doc,
    yyjson_mut_val * arr )
    +
    +

    Adds a false value at the end of the array.

    Parameters
    + + + +
    docThe doc is only used for memory allocation.
    arrThe array to which the value is to be inserted. Returns false if it is NULL or not an array.
    +
    +
    +
    Returns
    Whether successful.
    + +
    +
    + +

    ◆ yyjson_mut_arr_add_bool()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_add_bool (yyjson_mut_doc * doc,
    yyjson_mut_val * arr,
    bool val )
    +
    +

    Adds a bool value at the end of the array.

    Parameters
    + + + + +
    docThe doc is only used for memory allocation.
    arrThe array to which the value is to be inserted. Returns false if it is NULL or not an array.
    valThe bool value to be added.
    +
    +
    +
    Returns
    Whether successful.
    + +
    +
    + +

    ◆ yyjson_mut_arr_add_uint()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_add_uint (yyjson_mut_doc * doc,
    yyjson_mut_val * arr,
    uint64_t num )
    +
    +

    Adds an unsigned integer value at the end of the array.

    Parameters
    + + + + +
    docThe doc is only used for memory allocation.
    arrThe array to which the value is to be inserted. Returns false if it is NULL or not an array.
    numThe number to be added.
    +
    +
    +
    Returns
    Whether successful.
    + +
    +
    + +

    ◆ yyjson_mut_arr_add_sint()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_add_sint (yyjson_mut_doc * doc,
    yyjson_mut_val * arr,
    int64_t num )
    +
    +

    Adds a signed integer value at the end of the array.

    Parameters
    + + + + +
    docThe doc is only used for memory allocation.
    arrThe array to which the value is to be inserted. Returns false if it is NULL or not an array.
    numThe number to be added.
    +
    +
    +
    Returns
    Whether successful.
    + +
    +
    + +

    ◆ yyjson_mut_arr_add_int()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_add_int (yyjson_mut_doc * doc,
    yyjson_mut_val * arr,
    int64_t num )
    +
    +

    Adds an integer value at the end of the array.

    Parameters
    + + + + +
    docThe doc is only used for memory allocation.
    arrThe array to which the value is to be inserted. Returns false if it is NULL or not an array.
    numThe number to be added.
    +
    +
    +
    Returns
    Whether successful.
    + +
    +
    + +

    ◆ yyjson_mut_arr_add_float()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_add_float (yyjson_mut_doc * doc,
    yyjson_mut_val * arr,
    float num )
    +
    +

    Adds a float value at the end of the array.

    Parameters
    + + + + +
    docThe doc is only used for memory allocation.
    arrThe array to which the value is to be inserted. Returns false if it is NULL or not an array.
    numThe number to be added.
    +
    +
    +
    Returns
    Whether successful.
    + +
    +
    + +

    ◆ yyjson_mut_arr_add_double()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_add_double (yyjson_mut_doc * doc,
    yyjson_mut_val * arr,
    double num )
    +
    +

    Adds a double value at the end of the array.

    Parameters
    + + + + +
    docThe doc is only used for memory allocation.
    arrThe array to which the value is to be inserted. Returns false if it is NULL or not an array.
    numThe number to be added.
    +
    +
    +
    Returns
    Whether successful.
    + +
    +
    + +

    ◆ yyjson_mut_arr_add_real()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_add_real (yyjson_mut_doc * doc,
    yyjson_mut_val * arr,
    double num )
    +
    +

    Adds a double value at the end of the array.

    Parameters
    + + + + +
    docThe doc is only used for memory allocation.
    arrThe array to which the value is to be inserted. Returns false if it is NULL or not an array.
    numThe number to be added.
    +
    +
    +
    Returns
    Whether successful.
    + +
    +
    + +

    ◆ yyjson_mut_arr_add_str()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_add_str (yyjson_mut_doc * doc,
    yyjson_mut_val * arr,
    const char * str )
    +
    +

    Adds a string value at the end of the array (no copy).

    Parameters
    + + + + +
    docThe doc is only used for memory allocation.
    arrThe array to which the value is to be inserted. Returns false if it is NULL or not an array.
    strA null-terminated UTF-8 string.
    +
    +
    +
    Returns
    Whether successful.
    +
    Warning
    The input string is not copied, you should keep this string unmodified for the lifetime of this JSON document.
    + +
    +
    + +

    ◆ yyjson_mut_arr_add_strn()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_add_strn (yyjson_mut_doc * doc,
    yyjson_mut_val * arr,
    const char * str,
    size_t len )
    +
    +

    Adds a string value at the end of the array (no copy).

    Parameters
    + + + + + +
    docThe doc is only used for memory allocation.
    arrThe array to which the value is to be inserted. Returns false if it is NULL or not an array.
    strA UTF-8 string, null-terminator is not required.
    lenThe length of the string, in bytes.
    +
    +
    +
    Returns
    Whether successful.
    +
    Warning
    The input string is not copied, you should keep this string unmodified for the lifetime of this JSON document.
    + +
    +
    + +

    ◆ yyjson_mut_arr_add_strcpy()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_add_strcpy (yyjson_mut_doc * doc,
    yyjson_mut_val * arr,
    const char * str )
    +
    +

    Adds a string value at the end of the array (copied).

    Parameters
    + + + + +
    docThe doc is only used for memory allocation.
    arrThe array to which the value is to be inserted. Returns false if it is NULL or not an array.
    strA null-terminated UTF-8 string.
    +
    +
    +
    Returns
    Whether successful.
    + +
    +
    + +

    ◆ yyjson_mut_arr_add_strncpy()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_arr_add_strncpy (yyjson_mut_doc * doc,
    yyjson_mut_val * arr,
    const char * str,
    size_t len )
    +
    +

    Adds a string value at the end of the array (copied).

    Parameters
    + + + + + +
    docThe doc is only used for memory allocation.
    arrThe array to which the value is to be inserted. Returns false if it is NULL or not an array.
    strA UTF-8 string, null-terminator is not required.
    lenThe length of the string, in bytes.
    +
    +
    +
    Returns
    Whether successful.
    + +
    +
    + +

    ◆ yyjson_mut_arr_add_arr()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_add_arr (yyjson_mut_doc * doc,
    yyjson_mut_val * arr )
    +
    +

    Creates and adds a new array at the end of the array.

    Parameters
    + + + +
    docThe doc is only used for memory allocation.
    arrThe array to which the value is to be inserted. Returns false if it is NULL or not an array.
    +
    +
    +
    Returns
    The new array, or NULL on error.
    + +
    +
    + +

    ◆ yyjson_mut_arr_add_obj()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_arr_add_obj (yyjson_mut_doc * doc,
    yyjson_mut_val * arr )
    +
    +

    Creates and adds a new object at the end of the array.

    Parameters
    + + + +
    docThe doc is only used for memory allocation.
    arrThe array to which the value is to be inserted. Returns false if it is NULL or not an array.
    +
    +
    +
    Returns
    The new object, or NULL on error.
    + +
    +
    + +

    ◆ yyjson_mut_obj_size()

    + +
    +
    + + + + + + + +
    yyjson_api_inline size_t yyjson_mut_obj_size (yyjson_mut_val * obj)
    +
    +

    Returns the number of key-value pairs in this object. Returns 0 if obj is NULL or type is not object.

    + +
    +
    + +

    ◆ yyjson_mut_obj_get()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_get (yyjson_mut_val * obj,
    const char * key )
    +
    +

    Returns the value to which the specified key is mapped. Returns NULL if this object contains no mapping for the key. Returns NULL if obj/key is NULL, or type is not object.

    +

    The key should be a null-terminated UTF-8 string.

    +
    Warning
    This function takes a linear search time.
    + +
    +
    + +

    ◆ yyjson_mut_obj_getn()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_getn (yyjson_mut_val * obj,
    const char * key,
    size_t key_len )
    +
    +

    Returns the value to which the specified key is mapped. Returns NULL if this object contains no mapping for the key. Returns NULL if obj/key is NULL, or type is not object.

    +

    The key should be a UTF-8 string, null-terminator is not required. The key_len should be the length of the key, in bytes.

    +
    Warning
    This function takes a linear search time.
    + +
    +
    + +

    ◆ yyjson_mut_obj_iter_init()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_iter_init (yyjson_mut_val * obj,
    yyjson_mut_obj_iter * iter )
    +
    +

    Initialize an iterator for this object.

    +
    Parameters
    + + + +
    objThe object to be iterated over. If this parameter is NULL or not an array, iter will be set to empty.
    iterThe iterator to be initialized. If this parameter is NULL, the function will fail and return false.
    +
    +
    +
    Returns
    true if the iter has been successfully initialized.
    +
    Note
    The iterator does not need to be destroyed.
    + +
    +
    + +

    ◆ yyjson_mut_obj_iter_with()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_mut_obj_iter yyjson_mut_obj_iter_with (yyjson_mut_val * obj)
    +
    +

    Create an iterator with an object, same as yyjson_obj_iter_init().

    +
    Parameters
    + + +
    objThe object to be iterated over. If this parameter is NULL or not an object, an empty iterator will returned.
    +
    +
    +
    Returns
    A new iterator for the object.
    +
    Note
    The iterator does not need to be destroyed.
    + +
    +
    + +

    ◆ yyjson_mut_obj_iter_has_next()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_iter_has_next (yyjson_mut_obj_iter * iter)
    +
    +

    Returns whether the iteration has more elements. If iter is NULL, this function will return false.

    + +
    +
    + +

    ◆ yyjson_mut_obj_iter_next()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_iter_next (yyjson_mut_obj_iter * iter)
    +
    +

    Returns the next key in the iteration, or NULL on end. If iter is NULL, this function will return NULL.

    + +
    +
    + +

    ◆ yyjson_mut_obj_iter_get_val()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_iter_get_val (yyjson_mut_val * key)
    +
    +

    Returns the value for key inside the iteration. If iter is NULL, this function will return NULL.

    + +
    +
    + +

    ◆ yyjson_mut_obj_iter_remove()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_iter_remove (yyjson_mut_obj_iter * iter)
    +
    +

    Removes current key-value pair in the iteration, returns the removed value. If iter is NULL, this function will return NULL.

    + +
    +
    + +

    ◆ yyjson_mut_obj_iter_get()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_iter_get (yyjson_mut_obj_iter * iter,
    const char * key )
    +
    +

    Iterates to a specified key and returns the value.

    +

    This function does the same thing as yyjson_mut_obj_get(), but is much faster if the ordering of the keys is known at compile-time and you are using the same order to look up the values. If the key exists in this object, then the iterator will stop at the next key, otherwise the iterator will not change and NULL is returned.

    +
    Parameters
    + + + +
    iterThe object iterator, should not be NULL.
    keyThe key, should be a UTF-8 string with null-terminator.
    +
    +
    +
    Returns
    The value to which the specified key is mapped. NULL if this object contains no mapping for the key or input is invalid.
    +
    Warning
    This function takes a linear search time if the key is not nearby.
    + +
    +
    + +

    ◆ yyjson_mut_obj_iter_getn()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_iter_getn (yyjson_mut_obj_iter * iter,
    const char * key,
    size_t key_len )
    +
    +

    Iterates to a specified key and returns the value.

    +

    This function does the same thing as yyjson_mut_obj_getn() but is much faster if the ordering of the keys is known at compile-time and you are using the same order to look up the values. If the key exists in this object, then the iterator will stop at the next key, otherwise the iterator will not change and NULL is returned.

    +
    Parameters
    + + + + +
    iterThe object iterator, should not be NULL.
    keyThe key, should be a UTF-8 string, null-terminator is not required.
    key_lenThe the length of key, in bytes.
    +
    +
    +
    Returns
    The value to which the specified key is mapped. NULL if this object contains no mapping for the key or input is invalid.
    +
    Warning
    This function takes a linear search time if the key is not nearby.
    + +
    +
    + +

    ◆ yyjson_mut_obj()

    + +
    +
    + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj (yyjson_mut_doc * doc)
    +
    +

    Creates and returns a mutable object, returns NULL on error.

    + +
    +
    + +

    ◆ yyjson_mut_obj_with_str()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_with_str (yyjson_mut_doc * doc,
    const char ** keys,
    const char ** vals,
    size_t count )
    +
    +

    Creates and returns a mutable object with keys and values, returns NULL on error. The keys and values are not copied. The strings should be a null-terminated UTF-8 string.

    +
    Warning
    The input string is not copied, you should keep this string unmodified for the lifetime of this JSON document.
    +

    Example

    const char *keys[2] = { "id", "name" };
    +
    const char *vals[2] = { "01", "Harry" };
    +
    yyjson_mut_val *obj = yyjson_mut_obj_with_str(doc, keys, vals, 2);
    +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_with_str(yyjson_mut_doc *doc, const char **keys, const char **vals, size_t count)
    Definition yyjson.h:6881
    +
    +
    +
    + +

    ◆ yyjson_mut_obj_with_kv()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_with_kv (yyjson_mut_doc * doc,
    const char ** kv_pairs,
    size_t pair_count )
    +
    +

    Creates and returns a mutable object with key-value pairs and pair count, returns NULL on error. The keys and values are not copied. The strings should be a null-terminated UTF-8 string.

    +
    Warning
    The input string is not copied, you should keep this string unmodified for the lifetime of this JSON document.
    +

    Example

    const char *kv_pairs[4] = { "id", "01", "name", "Harry" };
    +
    yyjson_mut_val *obj = yyjson_mut_obj_with_kv(doc, kv_pairs, 2);
    +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_with_kv(yyjson_mut_doc *doc, const char **kv_pairs, size_t pair_count)
    Definition yyjson.h:6912
    +
    +
    +
    + +

    ◆ yyjson_mut_obj_add()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_add (yyjson_mut_val * obj,
    yyjson_mut_val * key,
    yyjson_mut_val * val )
    +
    +

    Adds a key-value pair at the end of the object. This function allows duplicated key in one object.

    Parameters
    + + + + +
    objThe object to which the new key-value pair is to be added.
    keyThe key, should be a string which is created by yyjson_mut_str(), yyjson_mut_strn(), yyjson_mut_strcpy() or yyjson_mut_strncpy().
    valThe value to add to the object.
    +
    +
    +
    Returns
    Whether successful.
    + +
    +
    + +

    ◆ yyjson_mut_obj_put()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_put (yyjson_mut_val * obj,
    yyjson_mut_val * key,
    yyjson_mut_val * val )
    +
    +

    Sets a key-value pair at the end of the object. This function may remove all key-value pairs for the given key before add.

    Parameters
    + + + + +
    objThe object to which the new key-value pair is to be added.
    keyThe key, should be a string which is created by yyjson_mut_str(), yyjson_mut_strn(), yyjson_mut_strcpy() or yyjson_mut_strncpy().
    valThe value to add to the object. If this value is null, the behavior is same as yyjson_mut_obj_remove().
    +
    +
    +
    Returns
    Whether successful.
    + +
    +
    + +

    ◆ yyjson_mut_obj_insert()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_insert (yyjson_mut_val * obj,
    yyjson_mut_val * key,
    yyjson_mut_val * val,
    size_t idx )
    +
    +

    Inserts a key-value pair to the object at the given position. This function allows duplicated key in one object.

    Parameters
    + + + + + +
    objThe object to which the new key-value pair is to be added.
    keyThe key, should be a string which is created by yyjson_mut_str(), yyjson_mut_strn(), yyjson_mut_strcpy() or yyjson_mut_strncpy().
    valThe value to add to the object.
    idxThe index to which to insert the new pair.
    +
    +
    +
    Returns
    Whether successful.
    + +
    +
    + +

    ◆ yyjson_mut_obj_remove()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_remove (yyjson_mut_val * obj,
    yyjson_mut_val * key )
    +
    +

    Removes all key-value pair from the object with given key.

    Parameters
    + + + +
    objThe object from which the key-value pair is to be removed.
    keyThe key, should be a string value.
    +
    +
    +
    Returns
    The first matched value, or NULL if no matched value.
    +
    Warning
    This function takes a linear search time.
    + +
    +
    + +

    ◆ yyjson_mut_obj_remove_key()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_remove_key (yyjson_mut_val * obj,
    const char * key )
    +
    +

    Removes all key-value pair from the object with given key.

    Parameters
    + + + +
    objThe object from which the key-value pair is to be removed.
    keyThe key, should be a UTF-8 string with null-terminator.
    +
    +
    +
    Returns
    The first matched value, or NULL if no matched value.
    +
    Warning
    This function takes a linear search time.
    + +
    +
    + +

    ◆ yyjson_mut_obj_remove_keyn()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_remove_keyn (yyjson_mut_val * obj,
    const char * key,
    size_t key_len )
    +
    +

    Removes all key-value pair from the object with given key.

    Parameters
    + + + + +
    objThe object from which the key-value pair is to be removed.
    keyThe key, should be a UTF-8 string, null-terminator is not required.
    key_lenThe length of the key.
    +
    +
    +
    Returns
    The first matched value, or NULL if no matched value.
    +
    Warning
    This function takes a linear search time.
    + +
    +
    + +

    ◆ yyjson_mut_obj_clear()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_clear (yyjson_mut_val * obj)
    +
    +

    Removes all key-value pairs in this object.

    Parameters
    + + +
    objThe object from which all of the values are to be removed.
    +
    +
    +
    Returns
    Whether successful.
    + +
    +
    + +

    ◆ yyjson_mut_obj_replace()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_replace (yyjson_mut_val * obj,
    yyjson_mut_val * key,
    yyjson_mut_val * val )
    +
    +

    Replaces value from the object with given key. If the key is not exist, or the value is NULL, it will fail.

    Parameters
    + + + + +
    objThe object to which the value is to be replaced.
    keyThe key, should be a string value.
    valThe value to replace into the object.
    +
    +
    +
    Returns
    Whether successful.
    +
    Warning
    This function takes a linear search time.
    + +
    +
    + +

    ◆ yyjson_mut_obj_rotate()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_rotate (yyjson_mut_val * obj,
    size_t idx )
    +
    +

    Rotates key-value pairs in the object for the given number of times. For example: {"a":1,"b":2,"c":3,"d":4} rotate 1 is {"b":2,"c":3,"d":4,"a":1}.

    Parameters
    + + + +
    objThe object to be rotated.
    idxIndex (or times) to rotate.
    +
    +
    +
    Returns
    Whether successful.
    +
    Warning
    This function takes a linear search time.
    + +
    +
    + +

    ◆ yyjson_mut_obj_add_null()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_add_null (yyjson_mut_doc * doc,
    yyjson_mut_val * obj,
    const char * key )
    +
    +

    Adds a null value at the end of the object. The key should be a null-terminated UTF-8 string. This function allows duplicated key in one object.

    +
    Warning
    The key string is not copied, you should keep the string unmodified for the lifetime of this JSON document.
    + +
    +
    + +

    ◆ yyjson_mut_obj_add_true()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_add_true (yyjson_mut_doc * doc,
    yyjson_mut_val * obj,
    const char * key )
    +
    +

    Adds a true value at the end of the object. The key should be a null-terminated UTF-8 string. This function allows duplicated key in one object.

    +
    Warning
    The key string is not copied, you should keep the string unmodified for the lifetime of this JSON document.
    + +
    +
    + +

    ◆ yyjson_mut_obj_add_false()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_add_false (yyjson_mut_doc * doc,
    yyjson_mut_val * obj,
    const char * key )
    +
    +

    Adds a false value at the end of the object. The key should be a null-terminated UTF-8 string. This function allows duplicated key in one object.

    +
    Warning
    The key string is not copied, you should keep the string unmodified for the lifetime of this JSON document.
    + +
    +
    + +

    ◆ yyjson_mut_obj_add_bool()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_add_bool (yyjson_mut_doc * doc,
    yyjson_mut_val * obj,
    const char * key,
    bool val )
    +
    +

    Adds a bool value at the end of the object. The key should be a null-terminated UTF-8 string. This function allows duplicated key in one object.

    +
    Warning
    The key string is not copied, you should keep the string unmodified for the lifetime of this JSON document.
    + +
    +
    + +

    ◆ yyjson_mut_obj_add_uint()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_add_uint (yyjson_mut_doc * doc,
    yyjson_mut_val * obj,
    const char * key,
    uint64_t val )
    +
    +

    Adds an unsigned integer value at the end of the object. The key should be a null-terminated UTF-8 string. This function allows duplicated key in one object.

    +
    Warning
    The key string is not copied, you should keep the string unmodified for the lifetime of this JSON document.
    + +
    +
    + +

    ◆ yyjson_mut_obj_add_sint()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_add_sint (yyjson_mut_doc * doc,
    yyjson_mut_val * obj,
    const char * key,
    int64_t val )
    +
    +

    Adds a signed integer value at the end of the object. The key should be a null-terminated UTF-8 string. This function allows duplicated key in one object.

    +
    Warning
    The key string is not copied, you should keep the string unmodified for the lifetime of this JSON document.
    + +
    +
    + +

    ◆ yyjson_mut_obj_add_int()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_add_int (yyjson_mut_doc * doc,
    yyjson_mut_val * obj,
    const char * key,
    int64_t val )
    +
    +

    Adds an int value at the end of the object. The key should be a null-terminated UTF-8 string. This function allows duplicated key in one object.

    +
    Warning
    The key string is not copied, you should keep the string unmodified for the lifetime of this JSON document.
    + +
    +
    + +

    ◆ yyjson_mut_obj_add_float()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_add_float (yyjson_mut_doc * doc,
    yyjson_mut_val * obj,
    const char * key,
    float val )
    +
    +

    Adds a float value at the end of the object. The key should be a null-terminated UTF-8 string. This function allows duplicated key in one object.

    +
    Warning
    The key string is not copied, you should keep the string unmodified for the lifetime of this JSON document.
    + +
    +
    + +

    ◆ yyjson_mut_obj_add_double()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_add_double (yyjson_mut_doc * doc,
    yyjson_mut_val * obj,
    const char * key,
    double val )
    +
    +

    Adds a double value at the end of the object. The key should be a null-terminated UTF-8 string. This function allows duplicated key in one object.

    +
    Warning
    The key string is not copied, you should keep the string unmodified for the lifetime of this JSON document.
    + +
    +
    + +

    ◆ yyjson_mut_obj_add_real()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_add_real (yyjson_mut_doc * doc,
    yyjson_mut_val * obj,
    const char * key,
    double val )
    +
    +

    Adds a real value at the end of the object. The key should be a null-terminated UTF-8 string. This function allows duplicated key in one object.

    +
    Warning
    The key string is not copied, you should keep the string unmodified for the lifetime of this JSON document.
    + +
    +
    + +

    ◆ yyjson_mut_obj_add_str()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_add_str (yyjson_mut_doc * doc,
    yyjson_mut_val * obj,
    const char * key,
    const char * val )
    +
    +

    Adds a string value at the end of the object. The key and val should be null-terminated UTF-8 strings. This function allows duplicated key in one object.

    +
    Warning
    The key/value strings are not copied, you should keep these strings unmodified for the lifetime of this JSON document.
    + +
    +
    + +

    ◆ yyjson_mut_obj_add_strn()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_add_strn (yyjson_mut_doc * doc,
    yyjson_mut_val * obj,
    const char * key,
    const char * val,
    size_t len )
    +
    +

    Adds a string value at the end of the object. The key should be a null-terminated UTF-8 string. The val should be a UTF-8 string, null-terminator is not required. The len should be the length of the val, in bytes. This function allows duplicated key in one object.

    +
    Warning
    The key/value strings are not copied, you should keep these strings unmodified for the lifetime of this JSON document.
    + +
    +
    + +

    ◆ yyjson_mut_obj_add_strcpy()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_add_strcpy (yyjson_mut_doc * doc,
    yyjson_mut_val * obj,
    const char * key,
    const char * val )
    +
    +

    Adds a string value at the end of the object. The key and val should be null-terminated UTF-8 strings. The value string is copied. This function allows duplicated key in one object.

    +
    Warning
    The key string is not copied, you should keep the string unmodified for the lifetime of this JSON document.
    + +
    +
    + +

    ◆ yyjson_mut_obj_add_strncpy()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_add_strncpy (yyjson_mut_doc * doc,
    yyjson_mut_val * obj,
    const char * key,
    const char * val,
    size_t len )
    +
    +

    Adds a string value at the end of the object. The key should be a null-terminated UTF-8 string. The val should be a UTF-8 string, null-terminator is not required. The len should be the length of the val, in bytes. This function allows duplicated key in one object.

    +
    Warning
    The key strings are not copied, you should keep these strings unmodified for the lifetime of this JSON document.
    + +
    +
    + +

    ◆ yyjson_mut_obj_add_arr()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_add_arr (yyjson_mut_doc * doc,
    yyjson_mut_val * obj,
    const char * key )
    +
    +

    Creates and adds a new array to the target object. The key should be a null-terminated UTF-8 string. This function allows duplicated key in one object.

    +
    Warning
    The key string is not copied, you should keep these strings unmodified for the lifetime of this JSON document.
    +
    Returns
    The new array, or NULL on error.
    + +
    +
    + +

    ◆ yyjson_mut_obj_add_obj()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_add_obj (yyjson_mut_doc * doc,
    yyjson_mut_val * obj,
    const char * key )
    +
    +

    Creates and adds a new object to the target object. The key should be a null-terminated UTF-8 string. This function allows duplicated key in one object.

    +
    Warning
    The key string is not copied, you should keep these strings unmodified for the lifetime of this JSON document.
    +
    Returns
    The new object, or NULL on error.
    + +
    +
    + +

    ◆ yyjson_mut_obj_add_val()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_add_val (yyjson_mut_doc * doc,
    yyjson_mut_val * obj,
    const char * key,
    yyjson_mut_val * val )
    +
    +

    Adds a JSON value at the end of the object. The key should be a null-terminated UTF-8 string. This function allows duplicated key in one object.

    +
    Warning
    The key string is not copied, you should keep the string unmodified for the lifetime of this JSON document.
    + +
    +
    + +

    ◆ yyjson_mut_obj_remove_str()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_remove_str (yyjson_mut_val * obj,
    const char * key )
    +
    +

    Removes all key-value pairs for the given key. Returns the first value to which the specified key is mapped or NULL if this object contains no mapping for the key. The key should be a null-terminated UTF-8 string.

    +
    Warning
    This function takes a linear search time.
    + +
    +
    + +

    ◆ yyjson_mut_obj_remove_strn()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_obj_remove_strn (yyjson_mut_val * obj,
    const char * key,
    size_t len )
    +
    +

    Removes all key-value pairs for the given key. Returns the first value to which the specified key is mapped or NULL if this object contains no mapping for the key. The key should be a UTF-8 string, null-terminator is not required. The len should be the length of the key, in bytes.

    +
    Warning
    This function takes a linear search time.
    + +
    +
    + +

    ◆ yyjson_mut_obj_rename_key()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_rename_key (yyjson_mut_doc * doc,
    yyjson_mut_val * obj,
    const char * key,
    const char * new_key )
    +
    +

    Replaces all matching keys with the new key. Returns true if at least one key was renamed. The key and new_key should be a null-terminated UTF-8 string. The new_key is copied and held by doc.

    +
    Warning
    This function takes a linear search time. If new_key already exists, it will cause duplicate keys.
    + +
    +
    + +

    ◆ yyjson_mut_obj_rename_keyn()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_obj_rename_keyn (yyjson_mut_doc * doc,
    yyjson_mut_val * obj,
    const char * key,
    size_t len,
    const char * new_key,
    size_t new_len )
    +
    +

    Replaces all matching keys with the new key. Returns true if at least one key was renamed. The key and new_key should be a UTF-8 string, null-terminator is not required. The new_key is copied and held by doc.

    +
    Warning
    This function takes a linear search time. If new_key already exists, it will cause duplicate keys.
    + +
    +
    + +

    ◆ yyjson_doc_ptr_get()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_val * yyjson_doc_ptr_get (yyjson_doc * doc,
    const char * ptr )
    +
    +

    Get value by a JSON Pointer.

    Parameters
    + + + +
    docThe JSON document to be queried.
    ptrThe JSON pointer string (UTF-8 with null-terminator).
    +
    +
    +
    Returns
    The value referenced by the JSON pointer. NULL if doc or ptr is NULL, or the JSON pointer cannot be resolved.
    + +
    +
    + +

    ◆ yyjson_doc_ptr_getn()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_val * yyjson_doc_ptr_getn (yyjson_doc * doc,
    const char * ptr,
    size_t len )
    +
    +

    Get value by a JSON Pointer.

    Parameters
    + + + + +
    docThe JSON document to be queried.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    +
    +
    +
    Returns
    The value referenced by the JSON pointer. NULL if doc or ptr is NULL, or the JSON pointer cannot be resolved.
    + +
    +
    + +

    ◆ yyjson_doc_ptr_getx()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_val * yyjson_doc_ptr_getx (yyjson_doc * doc,
    const char * ptr,
    size_t len,
    yyjson_ptr_err * err )
    +
    +

    Get value by a JSON Pointer.

    Parameters
    + + + + + +
    docThe JSON document to be queried.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    errA pointer to store the error information, or NULL if not needed.
    +
    +
    +
    Returns
    The value referenced by the JSON pointer. NULL if doc or ptr is NULL, or the JSON pointer cannot be resolved.
    + +
    +
    + +

    ◆ yyjson_ptr_get()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_val * yyjson_ptr_get (yyjson_val * val,
    const char * ptr )
    +
    +

    Get value by a JSON Pointer.

    Parameters
    + + + +
    valThe JSON value to be queried.
    ptrThe JSON pointer string (UTF-8 with null-terminator).
    +
    +
    +
    Returns
    The value referenced by the JSON pointer. NULL if val or ptr is NULL, or the JSON pointer cannot be resolved.
    + +
    +
    + +

    ◆ yyjson_ptr_getn()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_val * yyjson_ptr_getn (yyjson_val * val,
    const char * ptr,
    size_t len )
    +
    +

    Get value by a JSON Pointer.

    Parameters
    + + + + +
    valThe JSON value to be queried.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    +
    +
    +
    Returns
    The value referenced by the JSON pointer. NULL if val or ptr is NULL, or the JSON pointer cannot be resolved.
    + +
    +
    + +

    ◆ yyjson_ptr_getx()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_val * yyjson_ptr_getx (yyjson_val * val,
    const char * ptr,
    size_t len,
    yyjson_ptr_err * err )
    +
    +

    Get value by a JSON Pointer.

    Parameters
    + + + + + +
    valThe JSON value to be queried.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    errA pointer to store the error information, or NULL if not needed.
    +
    +
    +
    Returns
    The value referenced by the JSON pointer. NULL if val or ptr is NULL, or the JSON pointer cannot be resolved.
    + +
    +
    + +

    ◆ yyjson_mut_doc_ptr_get()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_doc_ptr_get (yyjson_mut_doc * doc,
    const char * ptr )
    +
    +

    Get value by a JSON Pointer.

    Parameters
    + + + +
    docThe JSON document to be queried.
    ptrThe JSON pointer string (UTF-8 with null-terminator).
    +
    +
    +
    Returns
    The value referenced by the JSON pointer. NULL if doc or ptr is NULL, or the JSON pointer cannot be resolved.
    + +
    +
    + +

    ◆ yyjson_mut_doc_ptr_getn()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_doc_ptr_getn (yyjson_mut_doc * doc,
    const char * ptr,
    size_t len )
    +
    +

    Get value by a JSON Pointer.

    Parameters
    + + + + +
    docThe JSON document to be queried.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    +
    +
    +
    Returns
    The value referenced by the JSON pointer. NULL if doc or ptr is NULL, or the JSON pointer cannot be resolved.
    + +
    +
    + +

    ◆ yyjson_mut_doc_ptr_getx()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_doc_ptr_getx (yyjson_mut_doc * doc,
    const char * ptr,
    size_t len,
    yyjson_ptr_ctx * ctx,
    yyjson_ptr_err * err )
    +
    +

    Get value by a JSON Pointer.

    Parameters
    + + + + + + +
    docThe JSON document to be queried.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    ctxA pointer to store the result context, or NULL if not needed.
    errA pointer to store the error information, or NULL if not needed.
    +
    +
    +
    Returns
    The value referenced by the JSON pointer. NULL if doc or ptr is NULL, or the JSON pointer cannot be resolved.
    + +
    +
    + +

    ◆ yyjson_mut_ptr_get()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_ptr_get (yyjson_mut_val * val,
    const char * ptr )
    +
    +

    Get value by a JSON Pointer.

    Parameters
    + + + +
    valThe JSON value to be queried.
    ptrThe JSON pointer string (UTF-8 with null-terminator).
    +
    +
    +
    Returns
    The value referenced by the JSON pointer. NULL if val or ptr is NULL, or the JSON pointer cannot be resolved.
    + +
    +
    + +

    ◆ yyjson_mut_ptr_getn()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_ptr_getn (yyjson_mut_val * val,
    const char * ptr,
    size_t len )
    +
    +

    Get value by a JSON Pointer.

    Parameters
    + + + + +
    valThe JSON value to be queried.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    +
    +
    +
    Returns
    The value referenced by the JSON pointer. NULL if val or ptr is NULL, or the JSON pointer cannot be resolved.
    + +
    +
    + +

    ◆ yyjson_mut_ptr_getx()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_ptr_getx (yyjson_mut_val * val,
    const char * ptr,
    size_t len,
    yyjson_ptr_ctx * ctx,
    yyjson_ptr_err * err )
    +
    +

    Get value by a JSON Pointer.

    Parameters
    + + + + + + +
    valThe JSON value to be queried.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    ctxA pointer to store the result context, or NULL if not needed.
    errA pointer to store the error information, or NULL if not needed.
    +
    +
    +
    Returns
    The value referenced by the JSON pointer. NULL if val or ptr is NULL, or the JSON pointer cannot be resolved.
    + +
    +
    + +

    ◆ yyjson_mut_doc_ptr_add()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_doc_ptr_add (yyjson_mut_doc * doc,
    const char * ptr,
    yyjson_mut_val * new_val )
    +
    +

    Add (insert) value by a JSON pointer.

    Parameters
    + + + + +
    docThe target JSON document.
    ptrThe JSON pointer string (UTF-8 with null-terminator).
    new_valThe value to be added.
    +
    +
    +
    Returns
    true if JSON pointer is valid and new value is added, false otherwise.
    +
    Note
    The parent nodes will be created if they do not exist.
    + +
    +
    + +

    ◆ yyjson_mut_doc_ptr_addn()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_doc_ptr_addn (yyjson_mut_doc * doc,
    const char * ptr,
    size_t len,
    yyjson_mut_val * new_val )
    +
    +

    Add (insert) value by a JSON pointer.

    Parameters
    + + + + + +
    docThe target JSON document.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    new_valThe value to be added.
    +
    +
    +
    Returns
    true if JSON pointer is valid and new value is added, false otherwise.
    +
    Note
    The parent nodes will be created if they do not exist.
    + +
    +
    + +

    ◆ yyjson_mut_doc_ptr_addx()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_doc_ptr_addx (yyjson_mut_doc * doc,
    const char * ptr,
    size_t len,
    yyjson_mut_val * new_val,
    bool create_parent,
    yyjson_ptr_ctx * ctx,
    yyjson_ptr_err * err )
    +
    +

    Add (insert) value by a JSON pointer.

    Parameters
    + + + + + + + + +
    docThe target JSON document.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    new_valThe value to be added.
    create_parentWhether to create parent nodes if not exist.
    ctxA pointer to store the result context, or NULL if not needed.
    errA pointer to store the error information, or NULL if not needed.
    +
    +
    +
    Returns
    true if JSON pointer is valid and new value is added, false otherwise.
    + +
    +
    + +

    ◆ yyjson_mut_ptr_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_ptr_add (yyjson_mut_val * val,
    const char * ptr,
    yyjson_mut_val * new_val,
    yyjson_mut_doc * doc )
    +
    +

    Add (insert) value by a JSON pointer.

    Parameters
    + + + + + +
    valThe target JSON value.
    ptrThe JSON pointer string (UTF-8 with null-terminator).
    docOnly used to create new values when needed.
    new_valThe value to be added.
    +
    +
    +
    Returns
    true if JSON pointer is valid and new value is added, false otherwise.
    +
    Note
    The parent nodes will be created if they do not exist.
    + +
    +
    + +

    ◆ yyjson_mut_ptr_addn()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_ptr_addn (yyjson_mut_val * val,
    const char * ptr,
    size_t len,
    yyjson_mut_val * new_val,
    yyjson_mut_doc * doc )
    +
    +

    Add (insert) value by a JSON pointer.

    Parameters
    + + + + + + +
    valThe target JSON value.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    docOnly used to create new values when needed.
    new_valThe value to be added.
    +
    +
    +
    Returns
    true if JSON pointer is valid and new value is added, false otherwise.
    +
    Note
    The parent nodes will be created if they do not exist.
    + +
    +
    + +

    ◆ yyjson_mut_ptr_addx()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_ptr_addx (yyjson_mut_val * val,
    const char * ptr,
    size_t len,
    yyjson_mut_val * new_val,
    yyjson_mut_doc * doc,
    bool create_parent,
    yyjson_ptr_ctx * ctx,
    yyjson_ptr_err * err )
    +
    +

    Add (insert) value by a JSON pointer.

    Parameters
    + + + + + + + + + +
    valThe target JSON value.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    docOnly used to create new values when needed.
    new_valThe value to be added.
    create_parentWhether to create parent nodes if not exist.
    ctxA pointer to store the result context, or NULL if not needed.
    errA pointer to store the error information, or NULL if not needed.
    +
    +
    +
    Returns
    true if JSON pointer is valid and new value is added, false otherwise.
    + +
    +
    + +

    ◆ yyjson_mut_doc_ptr_set()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_doc_ptr_set (yyjson_mut_doc * doc,
    const char * ptr,
    yyjson_mut_val * new_val )
    +
    +

    Set value by a JSON pointer.

    Parameters
    + + + + +
    docThe target JSON document.
    ptrThe JSON pointer string (UTF-8 with null-terminator).
    new_valThe value to be set, pass NULL to remove.
    +
    +
    +
    Returns
    true if JSON pointer is valid and new value is set, false otherwise.
    +
    Note
    The parent nodes will be created if they do not exist. If the target value already exists, it will be replaced by the new value.
    + +
    +
    + +

    ◆ yyjson_mut_doc_ptr_setn()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_doc_ptr_setn (yyjson_mut_doc * doc,
    const char * ptr,
    size_t len,
    yyjson_mut_val * new_val )
    +
    +

    Set value by a JSON pointer.

    Parameters
    + + + + + +
    docThe target JSON document.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    new_valThe value to be set, pass NULL to remove.
    +
    +
    +
    Returns
    true if JSON pointer is valid and new value is set, false otherwise.
    +
    Note
    The parent nodes will be created if they do not exist. If the target value already exists, it will be replaced by the new value.
    + +
    +
    + +

    ◆ yyjson_mut_doc_ptr_setx()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_doc_ptr_setx (yyjson_mut_doc * doc,
    const char * ptr,
    size_t len,
    yyjson_mut_val * new_val,
    bool create_parent,
    yyjson_ptr_ctx * ctx,
    yyjson_ptr_err * err )
    +
    +

    Set value by a JSON pointer.

    Parameters
    + + + + + + + + +
    docThe target JSON document.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    new_valThe value to be set, pass NULL to remove.
    create_parentWhether to create parent nodes if not exist.
    ctxA pointer to store the result context, or NULL if not needed.
    errA pointer to store the error information, or NULL if not needed.
    +
    +
    +
    Returns
    true if JSON pointer is valid and new value is set, false otherwise.
    +
    Note
    If the target value already exists, it will be replaced by the new value.
    + +
    +
    + +

    ◆ yyjson_mut_ptr_set()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_ptr_set (yyjson_mut_val * val,
    const char * ptr,
    yyjson_mut_val * new_val,
    yyjson_mut_doc * doc )
    +
    +

    Set value by a JSON pointer.

    Parameters
    + + + + + +
    valThe target JSON value.
    ptrThe JSON pointer string (UTF-8 with null-terminator).
    new_valThe value to be set, pass NULL to remove.
    docOnly used to create new values when needed.
    +
    +
    +
    Returns
    true if JSON pointer is valid and new value is set, false otherwise.
    +
    Note
    The parent nodes will be created if they do not exist. If the target value already exists, it will be replaced by the new value.
    + +
    +
    + +

    ◆ yyjson_mut_ptr_setn()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_ptr_setn (yyjson_mut_val * val,
    const char * ptr,
    size_t len,
    yyjson_mut_val * new_val,
    yyjson_mut_doc * doc )
    +
    +

    Set value by a JSON pointer.

    Parameters
    + + + + + + +
    valThe target JSON value.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    new_valThe value to be set, pass NULL to remove.
    docOnly used to create new values when needed.
    +
    +
    +
    Returns
    true if JSON pointer is valid and new value is set, false otherwise.
    +
    Note
    The parent nodes will be created if they do not exist. If the target value already exists, it will be replaced by the new value.
    + +
    +
    + +

    ◆ yyjson_mut_ptr_setx()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_mut_ptr_setx (yyjson_mut_val * val,
    const char * ptr,
    size_t len,
    yyjson_mut_val * new_val,
    yyjson_mut_doc * doc,
    bool create_parent,
    yyjson_ptr_ctx * ctx,
    yyjson_ptr_err * err )
    +
    +

    Set value by a JSON pointer.

    Parameters
    + + + + + + + + + +
    valThe target JSON value.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    new_valThe value to be set, pass NULL to remove.
    docOnly used to create new values when needed.
    create_parentWhether to create parent nodes if not exist.
    ctxA pointer to store the result context, or NULL if not needed.
    errA pointer to store the error information, or NULL if not needed.
    +
    +
    +
    Returns
    true if JSON pointer is valid and new value is set, false otherwise.
    +
    Note
    If the target value already exists, it will be replaced by the new value.
    + +
    +
    + +

    ◆ yyjson_mut_doc_ptr_replace()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_doc_ptr_replace (yyjson_mut_doc * doc,
    const char * ptr,
    yyjson_mut_val * new_val )
    +
    +

    Replace value by a JSON pointer.

    Parameters
    + + + + +
    docThe target JSON document.
    ptrThe JSON pointer string (UTF-8 with null-terminator).
    new_valThe new value to replace the old one.
    +
    +
    +
    Returns
    The old value that was replaced, or NULL if not found.
    + +
    +
    + +

    ◆ yyjson_mut_doc_ptr_replacen()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_doc_ptr_replacen (yyjson_mut_doc * doc,
    const char * ptr,
    size_t len,
    yyjson_mut_val * new_val )
    +
    +

    Replace value by a JSON pointer.

    Parameters
    + + + + + +
    docThe target JSON document.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    new_valThe new value to replace the old one.
    +
    +
    +
    Returns
    The old value that was replaced, or NULL if not found.
    + +
    +
    + +

    ◆ yyjson_mut_doc_ptr_replacex()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_doc_ptr_replacex (yyjson_mut_doc * doc,
    const char * ptr,
    size_t len,
    yyjson_mut_val * new_val,
    yyjson_ptr_ctx * ctx,
    yyjson_ptr_err * err )
    +
    +

    Replace value by a JSON pointer.

    Parameters
    + + + + + + + +
    docThe target JSON document.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    new_valThe new value to replace the old one.
    ctxA pointer to store the result context, or NULL if not needed.
    errA pointer to store the error information, or NULL if not needed.
    +
    +
    +
    Returns
    The old value that was replaced, or NULL if not found.
    + +
    +
    + +

    ◆ yyjson_mut_ptr_replace()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_ptr_replace (yyjson_mut_val * val,
    const char * ptr,
    yyjson_mut_val * new_val )
    +
    +

    Replace value by a JSON pointer.

    Parameters
    + + + + +
    valThe target JSON value.
    ptrThe JSON pointer string (UTF-8 with null-terminator).
    new_valThe new value to replace the old one.
    +
    +
    +
    Returns
    The old value that was replaced, or NULL if not found.
    + +
    +
    + +

    ◆ yyjson_mut_ptr_replacen()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_ptr_replacen (yyjson_mut_val * val,
    const char * ptr,
    size_t len,
    yyjson_mut_val * new_val )
    +
    +

    Replace value by a JSON pointer.

    Parameters
    + + + + + +
    valThe target JSON value.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    new_valThe new value to replace the old one.
    +
    +
    +
    Returns
    The old value that was replaced, or NULL if not found.
    + +
    +
    + +

    ◆ yyjson_mut_ptr_replacex()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_ptr_replacex (yyjson_mut_val * val,
    const char * ptr,
    size_t len,
    yyjson_mut_val * new_val,
    yyjson_ptr_ctx * ctx,
    yyjson_ptr_err * err )
    +
    +

    Replace value by a JSON pointer.

    Parameters
    + + + + + + + +
    valThe target JSON value.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    new_valThe new value to replace the old one.
    ctxA pointer to store the result context, or NULL if not needed.
    errA pointer to store the error information, or NULL if not needed.
    +
    +
    +
    Returns
    The old value that was replaced, or NULL if not found.
    + +
    +
    + +

    ◆ yyjson_mut_doc_ptr_remove()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_doc_ptr_remove (yyjson_mut_doc * doc,
    const char * ptr )
    +
    +

    Remove value by a JSON pointer.

    Parameters
    + + + +
    docThe target JSON document.
    ptrThe JSON pointer string (UTF-8 with null-terminator).
    +
    +
    +
    Returns
    The removed value, or NULL on error.
    + +
    +
    + +

    ◆ yyjson_mut_doc_ptr_removen()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_doc_ptr_removen (yyjson_mut_doc * doc,
    const char * ptr,
    size_t len )
    +
    +

    Remove value by a JSON pointer.

    Parameters
    + + + + +
    docThe target JSON document.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    +
    +
    +
    Returns
    The removed value, or NULL on error.
    + +
    +
    + +

    ◆ yyjson_mut_doc_ptr_removex()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_doc_ptr_removex (yyjson_mut_doc * doc,
    const char * ptr,
    size_t len,
    yyjson_ptr_ctx * ctx,
    yyjson_ptr_err * err )
    +
    +

    Remove value by a JSON pointer.

    Parameters
    + + + + + + +
    docThe target JSON document.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    ctxA pointer to store the result context, or NULL if not needed.
    errA pointer to store the error information, or NULL if not needed.
    +
    +
    +
    Returns
    The removed value, or NULL on error.
    + +
    +
    + +

    ◆ yyjson_mut_ptr_remove()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_ptr_remove (yyjson_mut_val * val,
    const char * ptr )
    +
    +

    Remove value by a JSON pointer.

    Parameters
    + + + +
    valThe target JSON value.
    ptrThe JSON pointer string (UTF-8 with null-terminator).
    +
    +
    +
    Returns
    The removed value, or NULL on error.
    + +
    +
    + +

    ◆ yyjson_mut_ptr_removen()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_ptr_removen (yyjson_mut_val * val,
    const char * ptr,
    size_t len )
    +
    +

    Remove value by a JSON pointer.

    Parameters
    + + + + +
    valThe target JSON value.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    +
    +
    +
    Returns
    The removed value, or NULL on error.
    + +
    +
    + +

    ◆ yyjson_mut_ptr_removex()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api_inline yyjson_mut_val * yyjson_mut_ptr_removex (yyjson_mut_val * val,
    const char * ptr,
    size_t len,
    yyjson_ptr_ctx * ctx,
    yyjson_ptr_err * err )
    +
    +

    Remove value by a JSON pointer.

    Parameters
    + + + + + + +
    valThe target JSON value.
    ptrThe JSON pointer string (UTF-8, null-terminator is not required).
    lenThe length of ptr in bytes.
    ctxA pointer to store the result context, or NULL if not needed.
    errA pointer to store the error information, or NULL if not needed.
    +
    +
    +
    Returns
    The removed value, or NULL on error.
    + +
    +
    + +

    ◆ yyjson_ptr_ctx_append()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_ptr_ctx_append (yyjson_ptr_ctx * ctx,
    yyjson_mut_val * key,
    yyjson_mut_val * val )
    +
    +

    Append value by JSON pointer context.

    Parameters
    + + + + +
    ctxThe context from the yyjson_mut_ptr_xxx() calls.
    keyNew key if ctx->ctn is object, or NULL if ctx->ctn is array.
    valNew value to be added.
    +
    +
    +
    Returns
    true on success or false on fail.
    + +
    +
    + +

    ◆ yyjson_ptr_ctx_replace()

    + +
    +
    + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_ptr_ctx_replace (yyjson_ptr_ctx * ctx,
    yyjson_mut_val * val )
    +
    +

    Replace value by JSON pointer context.

    Parameters
    + + + +
    ctxThe context from the yyjson_mut_ptr_xxx() calls.
    valNew value to be replaced.
    +
    +
    +
    Returns
    true on success or false on fail.
    +
    Note
    If success, the old value will be returned via ctx->old.
    + +
    +
    + +

    ◆ yyjson_ptr_ctx_remove()

    + +
    +
    + + + + + + + +
    yyjson_api_inline bool yyjson_ptr_ctx_remove (yyjson_ptr_ctx * ctx)
    +
    +

    Remove value by JSON pointer context.

    Parameters
    + + +
    ctxThe context from the yyjson_mut_ptr_xxx() calls.
    +
    +
    +
    Returns
    true on success or false on fail.
    +
    Note
    If success, the old value will be returned via ctx->old.
    + +
    +
    + +

    ◆ yyjson_patch()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api yyjson_mut_val * yyjson_patch (yyjson_mut_doc * doc,
    yyjson_val * orig,
    yyjson_val * patch,
    yyjson_patch_err * err )
    +
    +

    Creates and returns a patched JSON value (RFC 6902). The memory of the returned value is allocated by the doc. The err is used to receive error information, pass NULL if not needed. Returns NULL if the patch could not be applied.

    + +
    +
    + +

    ◆ yyjson_mut_patch()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    yyjson_api yyjson_mut_val * yyjson_mut_patch (yyjson_mut_doc * doc,
    yyjson_mut_val * orig,
    yyjson_mut_val * patch,
    yyjson_patch_err * err )
    +
    +

    Creates and returns a patched JSON value (RFC 6902). The memory of the returned value is allocated by the doc. The err is used to receive error information, pass NULL if not needed. Returns NULL if the patch could not be applied.

    + +
    +
    + +

    ◆ yyjson_merge_patch()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api yyjson_mut_val * yyjson_merge_patch (yyjson_mut_doc * doc,
    yyjson_val * orig,
    yyjson_val * patch )
    +
    +

    Creates and returns a merge-patched JSON value (RFC 7386). The memory of the returned value is allocated by the doc. Returns NULL if the patch could not be applied.

    +
    Warning
    This function is recursive and may cause a stack overflow if the object level is too deep.
    + +
    +
    + +

    ◆ yyjson_mut_merge_patch()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api yyjson_mut_val * yyjson_mut_merge_patch (yyjson_mut_doc * doc,
    yyjson_mut_val * orig,
    yyjson_mut_val * patch )
    +
    +

    Creates and returns a merge-patched JSON value (RFC 7386). The memory of the returned value is allocated by the doc. Returns NULL if the patch could not be applied.

    +
    Warning
    This function is recursive and may cause a stack overflow if the object level is too deep.
    + +
    +
    + +

    ◆ yyjson_ptr_get_bool()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_ptr_get_bool (yyjson_val * root,
    const char * ptr,
    bool * value )
    +
    +

    Set provided value if the JSON Pointer (RFC 6901) exists and is type bool. Returns true if value at ptr exists and is the correct type, otherwise false.

    + +
    +
    + +

    ◆ yyjson_ptr_get_uint()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_ptr_get_uint (yyjson_val * root,
    const char * ptr,
    uint64_t * value )
    +
    +

    Set provided value if the JSON Pointer (RFC 6901) exists and is an integer that fits in uint64_t. Returns true if successful, otherwise false.

    + +
    +
    + +

    ◆ yyjson_ptr_get_sint()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_ptr_get_sint (yyjson_val * root,
    const char * ptr,
    int64_t * value )
    +
    +

    Set provided value if the JSON Pointer (RFC 6901) exists and is an integer that fits in int64_t. Returns true if successful, otherwise false.

    + +
    +
    + +

    ◆ yyjson_ptr_get_real()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_ptr_get_real (yyjson_val * root,
    const char * ptr,
    double * value )
    +
    +

    Set provided value if the JSON Pointer (RFC 6901) exists and is type real. Returns true if value at ptr exists and is the correct type, otherwise false.

    + +
    +
    + +

    ◆ yyjson_ptr_get_num()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_ptr_get_num (yyjson_val * root,
    const char * ptr,
    double * value )
    +
    +

    Set provided value if the JSON Pointer (RFC 6901) exists and is type sint, uint or real. Returns true if value at ptr exists and is the correct type, otherwise false.

    + +
    +
    + +

    ◆ yyjson_ptr_get_str()

    + +
    +
    + + + + + + + + + + + + + + + + +
    yyjson_api_inline bool yyjson_ptr_get_str (yyjson_val * root,
    const char * ptr,
    const char ** value )
    +
    +

    Set provided value if the JSON Pointer (RFC 6901) exists and is type string. Returns true if value at ptr exists and is the correct type, otherwise false.

    + +
    +
    + +

    ◆ yyjson_deprecated() [1/10]

    + +
    +
    + + + + + + + +
    yyjson_deprecated ("renamed to yyjson_doc_ptr_get" )
    +
    +
    Deprecated
    renamed to yyjson_doc_ptr_get
    + +
    +
    + +

    ◆ yyjson_deprecated() [2/10]

    + +
    +
    + + + + + + + +
    yyjson_deprecated ("renamed to yyjson_doc_ptr_getn" )
    +
    +
    Deprecated
    renamed to yyjson_doc_ptr_getn
    + +
    +
    + +

    ◆ yyjson_deprecated() [3/10]

    + +
    +
    + + + + + + + +
    yyjson_deprecated ("renamed to yyjson_mut_doc_ptr_get" )
    +
    +
    Deprecated
    renamed to yyjson_mut_doc_ptr_get
    + +
    +
    + +

    ◆ yyjson_deprecated() [4/10]

    + +
    +
    + + + + + + + +
    yyjson_deprecated ("renamed to yyjson_mut_doc_ptr_getn" )
    +
    +
    Deprecated
    renamed to yyjson_mut_doc_ptr_getn
    + +
    +
    + +

    ◆ yyjson_deprecated() [5/10]

    + +
    +
    + + + + + + + +
    yyjson_deprecated ("renamed to yyjson_ptr_get" )
    +
    +
    Deprecated
    renamed to yyjson_ptr_get
    + +
    +
    + +

    ◆ yyjson_deprecated() [6/10]

    + +
    +
    + + + + + + + +
    yyjson_deprecated ("renamed to yyjson_ptr_getn" )
    +
    +
    Deprecated
    renamed to yyjson_ptr_getn
    + +
    +
    + +

    ◆ yyjson_deprecated() [7/10]

    + +
    +
    + + + + + + + +
    yyjson_deprecated ("renamed to yyjson_mut_ptr_get" )
    +
    +
    Deprecated
    renamed to yyjson_mut_ptr_get
    + +
    +
    + +

    ◆ yyjson_deprecated() [8/10]

    + +
    +
    + + + + + + + +
    yyjson_deprecated ("renamed to yyjson_mut_ptr_getn" )
    +
    +
    Deprecated
    renamed to yyjson_mut_ptr_getn
    + +
    +
    + +

    ◆ yyjson_deprecated() [9/10]

    + +
    +
    + + + + + + + +
    yyjson_deprecated ("renamed to unsafe_yyjson_ptr_getn" )
    +
    +
    Deprecated
    renamed to yyjson_mut_ptr_getn
    + +
    +
    + +

    ◆ yyjson_deprecated() [10/10]

    + +
    +
    + + + + + + + +
    yyjson_deprecated ("renamed to unsafe_yyjson_mut_ptr_getx" )
    +
    +
    Deprecated
    renamed to unsafe_yyjson_mut_ptr_getx
    + +
    +
    +

    Variable Documentation

    + +

    ◆ YYJSON_READ_NOFLAG

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_flag YYJSON_READ_NOFLAG = 0
    +
    +static
    +
    +

    Default option (RFC 8259 compliant):

      +
    • Read positive integer as uint64_t.
    • +
    • Read negative integer as int64_t.
    • +
    • Read floating-point number as double with round-to-nearest mode.
    • +
    • Read integer which cannot fit in uint64_t or int64_t as double.
    • +
    • Report error if double number is infinity.
    • +
    • Report error if string contains invalid UTF-8 character or BOM.
    • +
    • Report error on trailing commas, comments, inf and nan literals.
    • +
    + +
    +
    + +

    ◆ YYJSON_READ_INSITU

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_flag YYJSON_READ_INSITU = 1 << 0
    +
    +static
    +
    +

    Read the input data in-situ. This option allows the reader to modify and use input data to store string values, which can increase reading speed slightly. The caller should hold the input data before free the document. The input data must be padded by at least YYJSON_PADDING_SIZE bytes. For example: [1,2] should be [1,2]\0\0\0\0, input length should be 5.

    + +
    +
    + +

    ◆ YYJSON_READ_STOP_WHEN_DONE

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_flag YYJSON_READ_STOP_WHEN_DONE = 1 << 1
    +
    +static
    +
    +

    Stop when done instead of issuing an error if there's additional content after a JSON document. This option may be used to parse small pieces of JSON in larger data, such as NDJSON.

    + +
    +
    + +

    ◆ YYJSON_READ_ALLOW_TRAILING_COMMAS

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_flag YYJSON_READ_ALLOW_TRAILING_COMMAS = 1 << 2
    +
    +static
    +
    +

    Allow single trailing comma at the end of an object or array, such as [1,2,3,], {"a":1,"b":2,} (non-standard).

    + +
    +
    + +

    ◆ YYJSON_READ_ALLOW_COMMENTS

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_flag YYJSON_READ_ALLOW_COMMENTS = 1 << 3
    +
    +static
    +
    +

    Allow C-style single-line and mult-line comments (non-standard).

    + +
    +
    + +

    ◆ YYJSON_READ_ALLOW_INF_AND_NAN

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_flag YYJSON_READ_ALLOW_INF_AND_NAN = 1 << 4
    +
    +static
    +
    +

    Allow inf/nan number and literal, case-insensitive, such as 1e999, NaN, inf, -Infinity (non-standard).

    + +
    +
    + +

    ◆ YYJSON_READ_NUMBER_AS_RAW

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_flag YYJSON_READ_NUMBER_AS_RAW = 1 << 5
    +
    +static
    +
    +

    Read all numbers as raw strings (value with YYJSON_TYPE_RAW type), inf/nan literal is also read as raw with ALLOW_INF_AND_NAN flag.

    + +
    +
    + +

    ◆ YYJSON_READ_ALLOW_INVALID_UNICODE

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_flag YYJSON_READ_ALLOW_INVALID_UNICODE = 1 << 6
    +
    +static
    +
    +

    Allow reading invalid unicode when parsing string values (non-standard). Invalid characters will be allowed to appear in the string values, but invalid escape sequences will still be reported as errors. This flag does not affect the performance of correctly encoded strings.

    +
    Warning
    Strings in JSON values may contain incorrect encoding when this option is used, you need to handle these strings carefully to avoid security risks.
    + +
    +
    + +

    ◆ YYJSON_READ_BIGNUM_AS_RAW

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_flag YYJSON_READ_BIGNUM_AS_RAW = 1 << 7
    +
    +static
    +
    +

    Read big numbers as raw strings. These big numbers include integers that cannot be represented by int64_t and uint64_t, and floating-point numbers that cannot be represented by finite double. The flag will be overridden by YYJSON_READ_NUMBER_AS_RAW flag.

    + +
    +
    + +

    ◆ YYJSON_READ_ALLOW_BOM

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_flag YYJSON_READ_ALLOW_BOM = 1 << 8
    +
    +static
    +
    +

    Allow UTF-8 BOM and skip it before parsing if any (non-standard).

    + +
    +
    + +

    ◆ YYJSON_READ_ALLOW_EXT_NUMBER

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_flag YYJSON_READ_ALLOW_EXT_NUMBER = 1 << 9
    +
    +static
    +
    +

    Allow extended number formats (non-standard):

      +
    • Hexadecimal numbers, such as 0x7B.
    • +
    • Numbers with leading or trailing decimal point, such as .123, 123..
    • +
    • Numbers with a leading plus sign, such as +123.
    • +
    + +
    +
    + +

    ◆ YYJSON_READ_ALLOW_EXT_ESCAPE

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_flag YYJSON_READ_ALLOW_EXT_ESCAPE = 1 << 10
    +
    +static
    +
    +

    Allow extended escape sequences in strings (non-standard):

      +
    • Additional escapes: \a, \e, \v, \', \?, \0.
    • +
    • Hex escapes: \xNN, such as \x7B.
    • +
    • Line continuation: backslash followed by line terminator sequences.
    • +
    • Unknown escape: if backslash is followed by an unsupported character, the backslash will be removed and the character will be kept as-is. However, \1-\9 will still trigger an error.
    • +
    + +
    +
    + +

    ◆ YYJSON_READ_ALLOW_EXT_WHITESPACE

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_flag YYJSON_READ_ALLOW_EXT_WHITESPACE = 1 << 11
    +
    +static
    +
    +

    Allow extended whitespace characters (non-standard):

      +
    • Vertical tab \v and form feed \f.
    • +
    • Line separator \u2028 and paragraph separator \u2029.
    • +
    • Non-breaking space \xA0.
    • +
    • Byte order mark: \uFEFF.
    • +
    • Other Unicode characters in the Zs (Separator, space) category.
    • +
    + +
    +
    + +

    ◆ YYJSON_READ_ALLOW_SINGLE_QUOTED_STR

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_flag YYJSON_READ_ALLOW_SINGLE_QUOTED_STR = 1 << 12
    +
    +static
    +
    +

    Allow strings enclosed in single quotes (non-standard), such as 'ab'.

    + +
    +
    + +

    ◆ YYJSON_READ_ALLOW_UNQUOTED_KEY

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_flag YYJSON_READ_ALLOW_UNQUOTED_KEY = 1 << 13
    +
    +static
    +
    +

    Allow object keys without quotes (non-standard), such as {a:1,b:2}. This extends the ECMAScript IdentifierName rule by allowing any non-whitespace character with code point above U+007F.

    + +
    +
    + +

    ◆ YYJSON_READ_JSON5

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_flag YYJSON_READ_JSON5
    +
    +static
    +
    +Initial value:
    =
    +
    (1 << 2) |
    +
    (1 << 3) |
    +
    (1 << 4) |
    +
    (1 << 9) |
    +
    (1 << 10) |
    +
    (1 << 11) |
    +
    (1 << 12) |
    +
    (1 << 13)
    +

    Allow JSON5 format, see: [https://json5.org]. This flag supports all JSON5 features with some additional extensions:

      +
    • Accepts more escape sequences than JSON5 (e.g. \a, \e).
    • +
    • Unquoted keys are not limited to ECMAScript IdentifierName.
    • +
    • Allow case-insensitive NaN, Inf and Infinity literals.
    • +
    + +
    +
    + +

    ◆ YYJSON_READ_SUCCESS

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_code YYJSON_READ_SUCCESS = 0
    +
    +static
    +
    +

    Success, no error.

    + +
    +
    + +

    ◆ YYJSON_READ_ERROR_INVALID_PARAMETER

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_code YYJSON_READ_ERROR_INVALID_PARAMETER = 1
    +
    +static
    +
    +

    Invalid parameter, such as NULL input string or 0 input length.

    + +
    +
    + +

    ◆ YYJSON_READ_ERROR_MEMORY_ALLOCATION

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_code YYJSON_READ_ERROR_MEMORY_ALLOCATION = 2
    +
    +static
    +
    +

    Memory allocation failed.

    + +
    +
    + +

    ◆ YYJSON_READ_ERROR_EMPTY_CONTENT

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_code YYJSON_READ_ERROR_EMPTY_CONTENT = 3
    +
    +static
    +
    +

    Input JSON string is empty.

    + +
    +
    + +

    ◆ YYJSON_READ_ERROR_UNEXPECTED_CONTENT

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_code YYJSON_READ_ERROR_UNEXPECTED_CONTENT = 4
    +
    +static
    +
    +

    Unexpected content after document, such as [123]abc.

    + +
    +
    + +

    ◆ YYJSON_READ_ERROR_UNEXPECTED_END

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_code YYJSON_READ_ERROR_UNEXPECTED_END = 5
    +
    +static
    +
    +

    Unexpected end of input, the parsed part is valid, such as [123.

    + +
    +
    + +

    ◆ YYJSON_READ_ERROR_UNEXPECTED_CHARACTER

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_code YYJSON_READ_ERROR_UNEXPECTED_CHARACTER = 6
    +
    +static
    +
    +

    Unexpected character inside the document, such as [abc].

    + +
    +
    + +

    ◆ YYJSON_READ_ERROR_JSON_STRUCTURE

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_code YYJSON_READ_ERROR_JSON_STRUCTURE = 7
    +
    +static
    +
    +

    Invalid JSON structure, such as [1,].

    + +
    +
    + +

    ◆ YYJSON_READ_ERROR_INVALID_COMMENT

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_code YYJSON_READ_ERROR_INVALID_COMMENT = 8
    +
    +static
    +
    +

    Invalid comment, deprecated, use UNEXPECTED_END for unclosed comment.

    + +
    +
    + +

    ◆ YYJSON_READ_ERROR_INVALID_NUMBER

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_code YYJSON_READ_ERROR_INVALID_NUMBER = 9
    +
    +static
    +
    +

    Invalid number, such as 123.e12, 000.

    + +
    +
    + +

    ◆ YYJSON_READ_ERROR_INVALID_STRING

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_code YYJSON_READ_ERROR_INVALID_STRING = 10
    +
    +static
    +
    +

    Invalid string, such as invalid escaped character inside a string.

    + +
    +
    + +

    ◆ YYJSON_READ_ERROR_LITERAL

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_code YYJSON_READ_ERROR_LITERAL = 11
    +
    +static
    +
    +

    Invalid JSON literal, such as truu.

    + +
    +
    + +

    ◆ YYJSON_READ_ERROR_FILE_OPEN

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_code YYJSON_READ_ERROR_FILE_OPEN = 12
    +
    +static
    +
    +

    Failed to open a file.

    + +
    +
    + +

    ◆ YYJSON_READ_ERROR_FILE_READ

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_code YYJSON_READ_ERROR_FILE_READ = 13
    +
    +static
    +
    +

    Failed to read a file.

    + +
    +
    + +

    ◆ YYJSON_READ_ERROR_MORE

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_read_code YYJSON_READ_ERROR_MORE = 14
    +
    +static
    +
    +

    Incomplete input during incremental parsing; parsing state is preserved.

    + +
    +
    + +

    ◆ YYJSON_WRITE_NOFLAG

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_write_flag YYJSON_WRITE_NOFLAG = 0
    +
    +static
    +
    +

    Default option:

      +
    • Write JSON minify.
    • +
    • Report error on inf or nan number.
    • +
    • Report error on invalid UTF-8 string.
    • +
    • Do not escape unicode or slash.
    • +
    + +
    +
    + +

    ◆ YYJSON_WRITE_PRETTY

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_write_flag YYJSON_WRITE_PRETTY = 1 << 0
    +
    +static
    +
    +

    Write JSON pretty with 4 space indent.

    + +
    +
    + +

    ◆ YYJSON_WRITE_ESCAPE_UNICODE

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_write_flag YYJSON_WRITE_ESCAPE_UNICODE = 1 << 1
    +
    +static
    +
    +

    Escape unicode as uXXXX, make the output ASCII only.

    + +
    +
    + +

    ◆ YYJSON_WRITE_ESCAPE_SLASHES

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_write_flag YYJSON_WRITE_ESCAPE_SLASHES = 1 << 2
    +
    +static
    +
    +

    Escape '/' as '\/'.

    + +
    +
    + +

    ◆ YYJSON_WRITE_ALLOW_INF_AND_NAN

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_write_flag YYJSON_WRITE_ALLOW_INF_AND_NAN = 1 << 3
    +
    +static
    +
    +

    Write inf and nan number as 'Infinity' and 'NaN' literal (non-standard).

    + +
    +
    + +

    ◆ YYJSON_WRITE_INF_AND_NAN_AS_NULL

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_write_flag YYJSON_WRITE_INF_AND_NAN_AS_NULL = 1 << 4
    +
    +static
    +
    +

    Write inf and nan number as null literal. This flag will override YYJSON_WRITE_ALLOW_INF_AND_NAN flag.

    + +
    +
    + +

    ◆ YYJSON_WRITE_ALLOW_INVALID_UNICODE

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_write_flag YYJSON_WRITE_ALLOW_INVALID_UNICODE = 1 << 5
    +
    +static
    +
    +

    Allow invalid unicode when encoding string values (non-standard). Invalid characters in string value will be copied byte by byte. If YYJSON_WRITE_ESCAPE_UNICODE flag is also set, invalid character will be escaped as U+FFFD (replacement character). This flag does not affect the performance of correctly encoded strings.

    + +
    +
    + +

    ◆ YYJSON_WRITE_PRETTY_TWO_SPACES

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_write_flag YYJSON_WRITE_PRETTY_TWO_SPACES = 1 << 6
    +
    +static
    +
    +

    Write JSON pretty with 2 space indent. This flag will override YYJSON_WRITE_PRETTY flag.

    + +
    +
    + +

    ◆ YYJSON_WRITE_NEWLINE_AT_END

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_write_flag YYJSON_WRITE_NEWLINE_AT_END = 1 << 7
    +
    +static
    +
    +

    Adds a newline character \n at the end of the JSON. This can be helpful for text editors or NDJSON.

    + +
    +
    + +

    ◆ YYJSON_WRITE_SUCCESS

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_write_code YYJSON_WRITE_SUCCESS = 0
    +
    +static
    +
    +

    Success, no error.

    + +
    +
    + +

    ◆ YYJSON_WRITE_ERROR_INVALID_PARAMETER

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_write_code YYJSON_WRITE_ERROR_INVALID_PARAMETER = 1
    +
    +static
    +
    +

    Invalid parameter, such as NULL document.

    + +
    +
    + +

    ◆ YYJSON_WRITE_ERROR_MEMORY_ALLOCATION

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_write_code YYJSON_WRITE_ERROR_MEMORY_ALLOCATION = 2
    +
    +static
    +
    +

    Memory allocation failure occurs.

    + +
    +
    + +

    ◆ YYJSON_WRITE_ERROR_INVALID_VALUE_TYPE

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_write_code YYJSON_WRITE_ERROR_INVALID_VALUE_TYPE = 3
    +
    +static
    +
    +

    Invalid value type in JSON document.

    + +
    +
    + +

    ◆ YYJSON_WRITE_ERROR_NAN_OR_INF

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_write_code YYJSON_WRITE_ERROR_NAN_OR_INF = 4
    +
    +static
    +
    +

    NaN or Infinity number occurs.

    + +
    +
    + +

    ◆ YYJSON_WRITE_ERROR_FILE_OPEN

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_write_code YYJSON_WRITE_ERROR_FILE_OPEN = 5
    +
    +static
    +
    +

    Failed to open a file.

    + +
    +
    + +

    ◆ YYJSON_WRITE_ERROR_FILE_WRITE

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_write_code YYJSON_WRITE_ERROR_FILE_WRITE = 6
    +
    +static
    +
    +

    Failed to write a file.

    + +
    +
    + +

    ◆ YYJSON_WRITE_ERROR_INVALID_STRING

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_write_code YYJSON_WRITE_ERROR_INVALID_STRING = 7
    +
    +static
    +
    +

    Invalid unicode in string.

    + +
    +
    + +

    ◆ YYJSON_PTR_ERR_NONE

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_ptr_code YYJSON_PTR_ERR_NONE = 0
    +
    +static
    +
    +

    No JSON pointer error.

    + +
    +
    + +

    ◆ YYJSON_PTR_ERR_PARAMETER

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_ptr_code YYJSON_PTR_ERR_PARAMETER = 1
    +
    +static
    +
    +

    Invalid input parameter, such as NULL input.

    + +
    +
    + +

    ◆ YYJSON_PTR_ERR_SYNTAX

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_ptr_code YYJSON_PTR_ERR_SYNTAX = 2
    +
    +static
    +
    +

    JSON pointer syntax error, such as invalid escape, token no prefix.

    + +
    +
    + +

    ◆ YYJSON_PTR_ERR_RESOLVE

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_ptr_code YYJSON_PTR_ERR_RESOLVE = 3
    +
    +static
    +
    +

    JSON pointer resolve failed, such as index out of range, key not found.

    + +
    +
    + +

    ◆ YYJSON_PTR_ERR_NULL_ROOT

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_ptr_code YYJSON_PTR_ERR_NULL_ROOT = 4
    +
    +static
    +
    +

    Document's root is NULL, but it is required for the function call.

    + +
    +
    + +

    ◆ YYJSON_PTR_ERR_SET_ROOT

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_ptr_code YYJSON_PTR_ERR_SET_ROOT = 5
    +
    +static
    +
    +

    Cannot set root as the target is not a document.

    + +
    +
    + +

    ◆ YYJSON_PTR_ERR_MEMORY_ALLOCATION

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_ptr_code YYJSON_PTR_ERR_MEMORY_ALLOCATION = 6
    +
    +static
    +
    +

    The memory allocation failed and a new value could not be created.

    + +
    +
    + +

    ◆ YYJSON_PATCH_SUCCESS

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_patch_code YYJSON_PATCH_SUCCESS = 0
    +
    +static
    +
    +

    Success, no error.

    + +
    +
    + +

    ◆ YYJSON_PATCH_ERROR_INVALID_PARAMETER

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_patch_code YYJSON_PATCH_ERROR_INVALID_PARAMETER = 1
    +
    +static
    +
    +

    Invalid parameter, such as NULL input or non-array patch.

    + +
    +
    + +

    ◆ YYJSON_PATCH_ERROR_MEMORY_ALLOCATION

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_patch_code YYJSON_PATCH_ERROR_MEMORY_ALLOCATION = 2
    +
    +static
    +
    +

    Memory allocation failure occurs.

    + +
    +
    + +

    ◆ YYJSON_PATCH_ERROR_INVALID_OPERATION

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_patch_code YYJSON_PATCH_ERROR_INVALID_OPERATION = 3
    +
    +static
    +
    +

    JSON patch operation is not object type.

    + +
    +
    + +

    ◆ YYJSON_PATCH_ERROR_MISSING_KEY

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_patch_code YYJSON_PATCH_ERROR_MISSING_KEY = 4
    +
    +static
    +
    +

    JSON patch operation is missing a required key.

    + +
    +
    + +

    ◆ YYJSON_PATCH_ERROR_INVALID_MEMBER

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_patch_code YYJSON_PATCH_ERROR_INVALID_MEMBER = 5
    +
    +static
    +
    +

    JSON patch operation member is invalid.

    + +
    +
    + +

    ◆ YYJSON_PATCH_ERROR_EQUAL

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_patch_code YYJSON_PATCH_ERROR_EQUAL = 6
    +
    +static
    +
    +

    JSON patch operation test not equal.

    + +
    +
    + +

    ◆ YYJSON_PATCH_ERROR_POINTER

    + +
    +
    + + + + + +
    + + + + +
    const yyjson_patch_code YYJSON_PATCH_ERROR_POINTER = 7
    +
    +static
    +
    +

    JSON patch operation failed on JSON pointer.

    + +
    +
    +
    +
    + + + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h.js b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h.js new file mode 100644 index 00000000000..436ac3ab7cb --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h.js @@ -0,0 +1,548 @@ +var yyjson_8h = +[ + [ "yyjson_alc", "yyjson_8h.html#structyyjson__alc", [ + [ "malloc", "yyjson_8h.html#a83133b6b92e0fec52ec3c62538f44311", null ], + [ "realloc", "yyjson_8h.html#affacb85df656149df6c07880f0ecbe95", null ], + [ "free", "yyjson_8h.html#a2c770ff93f0f331bd60076eecd93661e", null ], + [ "ctx", "yyjson_8h.html#ae9499246c39efd68c206280de1b31f45", null ] + ] ], + [ "yyjson_read_err", "yyjson_8h.html#structyyjson__read__err", [ + [ "code", "yyjson_8h.html#a550600110929a7030f464a460b5b62cb", null ], + [ "msg", "yyjson_8h.html#a9044823fa7fb431019662e589d45707c", null ], + [ "pos", "yyjson_8h.html#a87eb200779eff088b93ea0a67ab3e300", null ] + ] ], + [ "yyjson_write_err", "yyjson_8h.html#structyyjson__write__err", [ + [ "code", "yyjson_8h.html#ae4aa66c2b00d3173291dd48ae398b1c0", null ], + [ "msg", "yyjson_8h.html#a3db87979e01ea1d86ce073b9e7218fe9", null ] + ] ], + [ "yyjson_arr_iter", "yyjson_8h.html#structyyjson__arr__iter", [ + [ "idx", "yyjson_8h.html#a1dbfcf575677cf45d7b1e1bef3de9c91", null ], + [ "max", "yyjson_8h.html#a4c9dc89d29725de644b1d9b801aa28ff", null ], + [ "cur", "yyjson_8h.html#a7445de186190ceef09c5be6d589e6a65", null ] + ] ], + [ "yyjson_obj_iter", "yyjson_8h.html#structyyjson__obj__iter", [ + [ "idx", "yyjson_8h.html#a6c2526c5ad89f0addaae26f356ecf609", null ], + [ "max", "yyjson_8h.html#a05ac3955547a4be055542f922564ded6", null ], + [ "cur", "yyjson_8h.html#af15973d5bdb6b7b8ea79571220771027", null ], + [ "obj", "yyjson_8h.html#addf8b34eb1d89a54df0482acbd29872c", null ] + ] ], + [ "yyjson_mut_arr_iter", "yyjson_8h.html#structyyjson__mut__arr__iter", [ + [ "idx", "yyjson_8h.html#a2ed1833f97594ca751e4d079d1620e7a", null ], + [ "max", "yyjson_8h.html#a1d8217217a7138d40e01752d3181ab85", null ], + [ "cur", "yyjson_8h.html#a2498a5bf91ec2eb7d4a00f89dc465954", null ], + [ "pre", "yyjson_8h.html#aa2481ee429a84f67e5f2200a4bbc6155", null ], + [ "arr", "yyjson_8h.html#ad58dcd5f514d5f3c71412ec86af9e2d0", null ] + ] ], + [ "yyjson_mut_obj_iter", "yyjson_8h.html#structyyjson__mut__obj__iter", [ + [ "idx", "yyjson_8h.html#ad58bddcf6dd41d193d37d2a16df159d1", null ], + [ "max", "yyjson_8h.html#aaf5c505b42eeb64e7a0ac17e3d7d3847", null ], + [ "cur", "yyjson_8h.html#a4fc0b10196e010a7e5e9a2cec6769904", null ], + [ "pre", "yyjson_8h.html#a934aea39ecf26ad163ad5dcf45cb8e6f", null ], + [ "obj", "yyjson_8h.html#ab5169c5637fdfc27fe10b919b78b6468", null ] + ] ], + [ "yyjson_ptr_err", "yyjson_8h.html#structyyjson__ptr__err", [ + [ "code", "yyjson_8h.html#ac82ebe0c715ad673a943e784f325b538", null ], + [ "msg", "yyjson_8h.html#a4d811ed5e9271667460dc1dc491d3295", null ], + [ "pos", "yyjson_8h.html#a4b851ac068173fde6d305039762e33fd", null ] + ] ], + [ "yyjson_ptr_ctx", "yyjson_8h.html#structyyjson__ptr__ctx", [ + [ "ctn", "yyjson_8h.html#a9fabdf4380dc8f44f9b7479b54c75dd0", null ], + [ "pre", "yyjson_8h.html#ac68fb5d2b48052c8ab3368d3ef6a6b81", null ], + [ "old", "yyjson_8h.html#a4bd05d7a5f157f5178f97415c7ba08f7", null ] + ] ], + [ "yyjson_patch_err", "yyjson_8h.html#structyyjson__patch__err", [ + [ "code", "yyjson_8h.html#a96dab43e96fd2d54e26deb4c25792ab7", null ], + [ "idx", "yyjson_8h.html#ac1584d63763ce24855df7aee5c9c5782", null ], + [ "msg", "yyjson_8h.html#ae5741da19f51abd241bdce87a921ba4a", null ], + [ "ptr", "yyjson_8h.html#a766102bcfc009fe568ea5655f133f753", null ] + ] ], + [ "yyjson_val_uni", "yyjson_8h.html#unionyyjson__val__uni", null ], + [ "yyjson_val", "yyjson_8h.html#structyyjson__val", [ + [ "tag", "yyjson_8h.html#ab589c80e05e4e65fa28e23acc1ee8255", null ], + [ "uni", "yyjson_8h.html#a3a07ac3ac97c66ae9b23efeab600d013", null ] + ] ], + [ "yyjson_doc", "yyjson_8h.html#structyyjson__doc", [ + [ "root", "yyjson_8h.html#ad22baac3e9ae0ff932b38f4257c3b800", null ], + [ "alc", "yyjson_8h.html#ab1a7e03f48bb31760030fbdab7d6597b", null ], + [ "dat_read", "yyjson_8h.html#a72bc53a422a133e2eba68ffa736f9e8b", null ], + [ "val_read", "yyjson_8h.html#ac12f7aed42260b8d2ede0fded3f72167", null ], + [ "str_pool", "yyjson_8h.html#a83e0a27da01978e46f074b6bb068d9eb", null ] + ] ], + [ "yyjson_mut_val", "yyjson_8h.html#structyyjson__mut__val", [ + [ "tag", "yyjson_8h.html#a5fd1ae5bada624c9687acce330eef7aa", null ], + [ "uni", "yyjson_8h.html#a2f30e3958bf136b4e8453a0e78b43d0f", null ], + [ "next", "yyjson_8h.html#a172090776a18e45190c933fb3294c07c", null ] + ] ], + [ "yyjson_str_chunk", "yyjson_8h.html#structyyjson__str__chunk", null ], + [ "yyjson_str_pool", "yyjson_8h.html#structyyjson__str__pool", null ], + [ "yyjson_val_chunk", "yyjson_8h.html#structyyjson__val__chunk", null ], + [ "yyjson_val_pool", "yyjson_8h.html#structyyjson__val__pool", null ], + [ "yyjson_mut_doc", "yyjson_8h.html#structyyjson__mut__doc", [ + [ "root", "yyjson_8h.html#a17d4291b05a54acc6310d16653de48b3", null ], + [ "alc", "yyjson_8h.html#a1b6f74828e64779d450ffd0cbe61f08f", null ], + [ "str_pool", "yyjson_8h.html#a11aa8b6fd06edf8fe371bae828052b39", null ], + [ "val_pool", "yyjson_8h.html#a5607c9ba393206ad94ecd90fbeb59017", null ] + ] ], + [ "YYJSON_MSC_VER", "yyjson_8h.html#a77011c6b1268f9068abe1975b92e38e0", null ], + [ "YYJSON_GCC_VER", "yyjson_8h.html#a0de4b27af40f104d2b1aac72edd6832e", null ], + [ "YYJSON_IS_REAL_GCC", "yyjson_8h.html#a4781760a87346473a82f26fdd897fa52", null ], + [ "YYJSON_STDC_VER", "yyjson_8h.html#a0a914f47b39417dd25fe728eef7d8f00", null ], + [ "YYJSON_CPP_VER", "yyjson_8h.html#a2b6ed8ca435b89b44a9c66cad30fd9d5", null ], + [ "yyjson_has_builtin", "yyjson_8h.html#a35f777885b981bd9caf1c24737b40921", null ], + [ "yyjson_has_attribute", "yyjson_8h.html#ad7a6d7801cb0c35ee08fc6ba9d343106", null ], + [ "yyjson_has_feature", "yyjson_8h.html#ae8f6fbea7b0eee0545bcf8d272ce7f33", null ], + [ "yyjson_has_include", "yyjson_8h.html#afe50edcbf467f426784326f2282c51fd", null ], + [ "yyjson_inline", "yyjson_8h.html#a45a5da162ba8a920163c74b71f48ead8", null ], + [ "yyjson_noinline", "yyjson_8h.html#a07affd3b28fe93360627a1c4e03b5b88", null ], + [ "yyjson_align", "yyjson_8h.html#a37185af21190fa0852a9b1ef9e041151", null ], + [ "yyjson_likely", "yyjson_8h.html#a2fcd8be107f850c0d81ba7bff62edeb7", null ], + [ "yyjson_unlikely", "yyjson_8h.html#a13065ff687cfd3b49eb38739676594f3", null ], + [ "YYJSON_HAS_CONSTANT_P", "yyjson_8h.html#acf1b73925eff2306f4e23837cd874c8d", null ], + [ "yyjson_deprecated", "yyjson_8h.html#af0cb2540fb4d4fc9809933a3020efaf8", null ], + [ "yyjson_api", "yyjson_8h.html#a691136e772913e98860a791e65b70f04", null ], + [ "yyjson_api_inline", "yyjson_8h.html#a682886dc8be2307076b125b496b15570", null ], + [ "__bool_true_false_are_defined", "yyjson_8h.html#a665b0cc9ee2ced31785321d55cde349e", null ], + [ "YYJSON_U64_TO_F64_NO_IMPL", "yyjson_8h.html#a39520db5ba6361257b7b51783357b877", null ], + [ "YYJSON_VERSION_MAJOR", "yyjson_8h.html#a78cf6dd1700f2cd7d7f256b4c2339d8b", null ], + [ "YYJSON_VERSION_MINOR", "yyjson_8h.html#a4c03e94b391df0f2b019c8df6c6e70f1", null ], + [ "YYJSON_VERSION_PATCH", "yyjson_8h.html#aa6d66fc870aac34589593a0bf6561647", null ], + [ "YYJSON_VERSION_HEX", "yyjson_8h.html#ac02a007abcdf7a80894f839acafa5963", null ], + [ "YYJSON_VERSION_STRING", "yyjson_8h.html#a7b766ff66469615aab5bed9f760aab07", null ], + [ "YYJSON_TYPE_NONE", "yyjson_8h.html#a1db6e43b1df0a46cee92d837ad553cc2", null ], + [ "YYJSON_TYPE_RAW", "yyjson_8h.html#ae548138e539cfcebdfad39a58da44470", null ], + [ "YYJSON_TYPE_NULL", "yyjson_8h.html#a3c003e6f71f42835957e6b9cf845a2e2", null ], + [ "YYJSON_TYPE_BOOL", "yyjson_8h.html#a085018fbc0363aad32708fdf8b247e36", null ], + [ "YYJSON_TYPE_NUM", "yyjson_8h.html#a720689b031a276a194e43c276fea9154", null ], + [ "YYJSON_TYPE_STR", "yyjson_8h.html#a3a75e44d4e709fbfafa3137a15edbb68", null ], + [ "YYJSON_TYPE_ARR", "yyjson_8h.html#a69ef1dad0f3735313d762050178ed320", null ], + [ "YYJSON_TYPE_OBJ", "yyjson_8h.html#a79764d1a17bdd0a5b4f2b553a9d114b9", null ], + [ "YYJSON_SUBTYPE_NONE", "yyjson_8h.html#a2a9e116a307c8dbcebc82305eca91fd3", null ], + [ "YYJSON_SUBTYPE_FALSE", "yyjson_8h.html#a17877edf97bce2f3d7cf993cc9662a30", null ], + [ "YYJSON_SUBTYPE_TRUE", "yyjson_8h.html#ae6a759cdc8865c891a89a67abd18a60e", null ], + [ "YYJSON_SUBTYPE_UINT", "yyjson_8h.html#aa6a600891d4a3551b83a30afe576fd57", null ], + [ "YYJSON_SUBTYPE_SINT", "yyjson_8h.html#ab5b72a76b60c408b8a7f2dfc31fbcbce", null ], + [ "YYJSON_SUBTYPE_REAL", "yyjson_8h.html#a1efeaba2c4446788c9b30d20e1b82f73", null ], + [ "YYJSON_SUBTYPE_NOESC", "yyjson_8h.html#af470523a4d0e9d89dfed5bcfae287bdb", null ], + [ "YYJSON_TYPE_MASK", "yyjson_8h.html#a53b930a8e372ddd7c8d4d389caad391e", null ], + [ "YYJSON_TYPE_BIT", "yyjson_8h.html#a9bc0cb130d1498238e942b93b8d8effd", null ], + [ "YYJSON_SUBTYPE_MASK", "yyjson_8h.html#a7d15bc48e9734dab6620e35ec30cc348", null ], + [ "YYJSON_SUBTYPE_BIT", "yyjson_8h.html#aa451fb3ba37fd42f69253e7d727836b7", null ], + [ "YYJSON_RESERVED_MASK", "yyjson_8h.html#af44f401747d1fa6dd1b600c54de919ad", null ], + [ "YYJSON_RESERVED_BIT", "yyjson_8h.html#a3aad1e39dcb4aec3e7e477500c220a53", null ], + [ "YYJSON_TAG_MASK", "yyjson_8h.html#ac91eb401b770474ab76706ec58ac803d", null ], + [ "YYJSON_TAG_BIT", "yyjson_8h.html#aa7acf05a1b4d7c04db1b09fffbedf35b", null ], + [ "YYJSON_PADDING_SIZE", "yyjson_8h.html#abbe8e69f634b1a5a78c1dae08b88e0ef", null ], + [ "YYJSON_WRITE_FP_FLAG_BITS", "yyjson_8h.html#a88948a21da1cda94c1e96e9f2c694d90", null ], + [ "YYJSON_WRITE_FP_PREC_BITS", "yyjson_8h.html#ae661cccbf7206ef595909458768f11fd", null ], + [ "YYJSON_WRITE_FP_TO_FIXED", "yyjson_8h.html#aa6456ada04bdbe304c1f3fb14e309ac6", null ], + [ "YYJSON_WRITE_FP_TO_FLOAT", "yyjson_8h.html#ab1d81ddd4cc7bd198d537a7b6cd17ad3", null ], + [ "yyjson_arr_foreach", "yyjson_8h.html#a60fd8094ee3eff6e7b629471f50aa139", null ], + [ "yyjson_obj_foreach", "yyjson_8h.html#a32884e21b899ea5869b12aec02083002", null ], + [ "yyjson_mut_arr_foreach", "yyjson_8h.html#a23a525f4192a237730aedfad55798fdb", null ], + [ "yyjson_mut_obj_foreach", "yyjson_8h.html#ae3f12da3b11d3227dd517a1079065a3f", null ], + [ "yyjson_type", "yyjson_8h.html#a4d30446a286f54e2f95847f3c6669493", null ], + [ "yyjson_subtype", "yyjson_8h.html#a012fa5561c6c87879cceee4e0879a6b6", null ], + [ "yyjson_read_flag", "yyjson_8h.html#a36af676813028c1360e8b343768f0e81", null ], + [ "yyjson_read_code", "yyjson_8h.html#a0590c5ffcdd4f997a0ab5845ef624531", null ], + [ "yyjson_incr_state", "yyjson_8h.html#a1961d8efe52ccb4f0de1c84f68f22e94", null ], + [ "yyjson_write_flag", "yyjson_8h.html#afb7989387fc481f678e13325c18e6338", null ], + [ "yyjson_write_code", "yyjson_8h.html#ae19102b96509817f1188f732be19642b", null ], + [ "yyjson_ptr_code", "yyjson_8h.html#ac2f82adc891664bd3f7ef75591330e2f", null ], + [ "yyjson_patch_code", "yyjson_8h.html#ad55a4435333880ce99fedf2aa82b7e46", null ], + [ "yyjson_version", "yyjson_8h.html#a874f912f9c023bc353d1a770798017a1", null ], + [ "yyjson_alc_pool_init", "yyjson_8h.html#a6068c4293a2b35493b18421b9afbd3d5", null ], + [ "yyjson_alc_dyn_new", "yyjson_8h.html#a6a90ae91b82c2e8d6665a28a691eee18", null ], + [ "yyjson_alc_dyn_free", "yyjson_8h.html#aaa9b7978e7b40e6d5d8d1cb3da0568d6", null ], + [ "yyjson_locate_pos", "yyjson_8h.html#ac742b11ff26fb9af6362ffd2f3f21061", null ], + [ "yyjson_read_opts", "yyjson_8h.html#acf234d21f0cb4b7fc89381ef25e9f0a8", null ], + [ "yyjson_read_file", "yyjson_8h.html#a605ac08b083fb65331d7fa5eb5d32225", null ], + [ "yyjson_read_fp", "yyjson_8h.html#a7f8c3918f8ab161bf7e2e203ff0f291e", null ], + [ "yyjson_read", "yyjson_8h.html#aeab3c2a1d86225e5b181fb1bba7587d4", null ], + [ "yyjson_incr_new", "yyjson_8h.html#a49c78bbfa5c961c1807d332f52d201f4", null ], + [ "yyjson_incr_read", "yyjson_8h.html#adf5847c72fffb345de33667fd935097a", null ], + [ "yyjson_incr_free", "yyjson_8h.html#a333bd893cdd22a379e2476e90b5532f2", null ], + [ "yyjson_read_max_memory_usage", "yyjson_8h.html#ae511cac592355c2f60f170402b9d8dbf", null ], + [ "yyjson_read_number", "yyjson_8h.html#a2b7dfa8495fb1d839e6294f2e7c4b58a", null ], + [ "yyjson_mut_read_number", "yyjson_8h.html#aed1fdeb679986591d5f2f257c5cf3b60", null ], + [ "yyjson_write_opts", "yyjson_8h.html#a43ccc01254525cef16699e72079e3e49", null ], + [ "yyjson_write_file", "yyjson_8h.html#a2d82bd0dc78358326b03e28b9acc19e4", null ], + [ "yyjson_write_fp", "yyjson_8h.html#a29eea00c04954094701bd90235a7073e", null ], + [ "yyjson_write", "yyjson_8h.html#ad231975496ac3788fe5d69804e295443", null ], + [ "yyjson_mut_write_opts", "yyjson_8h.html#a7af42d62aa1583986c687c5cd10b010e", null ], + [ "yyjson_mut_write_file", "yyjson_8h.html#ad2a7aa77fa66a593536e3d7c3edb1d7a", null ], + [ "yyjson_mut_write_fp", "yyjson_8h.html#ac8c17e7086a6d0a8db559ce0076c71e0", null ], + [ "yyjson_mut_write", "yyjson_8h.html#a881e2ee3f487385810829df8bc675f1f", null ], + [ "yyjson_val_write_opts", "yyjson_8h.html#a79720744960c9b4fdabbfb28379bbeb4", null ], + [ "yyjson_val_write_file", "yyjson_8h.html#a725cc27bd7bd37c1d18c41589abd34db", null ], + [ "yyjson_val_write_fp", "yyjson_8h.html#a3e5ad66dd43cc51500fff0926bae21a0", null ], + [ "yyjson_val_write", "yyjson_8h.html#a00409eb59aee687f7778d00510b59d38", null ], + [ "yyjson_mut_val_write_opts", "yyjson_8h.html#abdaf14b79fe803289070c0e5d5a705b8", null ], + [ "yyjson_mut_val_write_file", "yyjson_8h.html#adf8b2d3c8b57e85d58108d58c68b0db5", null ], + [ "yyjson_mut_val_write_fp", "yyjson_8h.html#acb80caf1bf1aecd6b68f38b84628c492", null ], + [ "yyjson_mut_val_write", "yyjson_8h.html#a700da5ce5bf8bb9d3739cc73a0f51cdf", null ], + [ "yyjson_write_number", "yyjson_8h.html#a26250087651ed3282ef31a27a0673333", null ], + [ "yyjson_mut_write_number", "yyjson_8h.html#a9dec76e0a9d0c9e6039f2d15ec8b26fb", null ], + [ "yyjson_doc_get_root", "yyjson_8h.html#aa33a13a85b840b3dbc1f8534db2bd8fc", null ], + [ "yyjson_doc_get_read_size", "yyjson_8h.html#a33580e2537c25685fd1209951dcbc967", null ], + [ "yyjson_doc_get_val_count", "yyjson_8h.html#a89cb55aebc946e462968a2bcace5ba5a", null ], + [ "yyjson_doc_free", "yyjson_8h.html#adad98bd766cf52d99f2c54dcb120786d", null ], + [ "yyjson_is_raw", "yyjson_8h.html#a286c610e7e27b8b4667a93eba2e2fa28", null ], + [ "yyjson_is_null", "yyjson_8h.html#a81cc3185457d7fd86f3818319d7efe18", null ], + [ "yyjson_is_true", "yyjson_8h.html#a527bfefae4532c4061e56d581ec4fc01", null ], + [ "yyjson_is_false", "yyjson_8h.html#a6105e202bdb2e3b0bd1b561722b80afa", null ], + [ "yyjson_is_bool", "yyjson_8h.html#a2e3dedcd83d286602101018024f21c52", null ], + [ "yyjson_is_uint", "yyjson_8h.html#ac4b6eb9e397730bbb264f64d46cafacf", null ], + [ "yyjson_is_sint", "yyjson_8h.html#ac3de217ef6c479380e38f35a2a166477", null ], + [ "yyjson_is_int", "yyjson_8h.html#a5079543ec26e3634d0d97491195f0daf", null ], + [ "yyjson_is_real", "yyjson_8h.html#a3cf0581ecad48a658da626cf86903f42", null ], + [ "yyjson_is_num", "yyjson_8h.html#aedbd4efc6436d66382936b8c450a5877", null ], + [ "yyjson_is_str", "yyjson_8h.html#a52f3358d27af0b1f1aeb3fe4dc7da1c0", null ], + [ "yyjson_is_arr", "yyjson_8h.html#add7037998fb39b3e2d1b3caf59f9d66a", null ], + [ "yyjson_is_obj", "yyjson_8h.html#affa9d4c51b9073804d91ef50e3f5ebd6", null ], + [ "yyjson_is_ctn", "yyjson_8h.html#a01aace85ea46ac42974d86fb217a5086", null ], + [ "yyjson_get_type", "yyjson_8h.html#a7d8d98b60284e646b8b22a8341d99a7f", null ], + [ "yyjson_get_subtype", "yyjson_8h.html#a7435fee591b112fbdcc455fc60b1416b", null ], + [ "yyjson_get_tag", "yyjson_8h.html#a022754b3eabf9ec15a4f8e9d52db015f", null ], + [ "yyjson_get_type_desc", "yyjson_8h.html#a489b91cc6038a17ebc90193bc00e9e8b", null ], + [ "yyjson_get_raw", "yyjson_8h.html#a5e90e838f969425f75372d4b4246d145", null ], + [ "yyjson_get_bool", "yyjson_8h.html#aaed218041aa262337e179d487f4c770c", null ], + [ "yyjson_get_uint", "yyjson_8h.html#ab439bc90f6631a67dd3ed4626eb3b4ad", null ], + [ "yyjson_get_sint", "yyjson_8h.html#ac4aab52f91a8b365344a74812be4e712", null ], + [ "yyjson_get_int", "yyjson_8h.html#a383b0a924785a30a49f6c59de235cd28", null ], + [ "yyjson_get_real", "yyjson_8h.html#a5bfc74dbba137fc4d662702666f5073a", null ], + [ "yyjson_get_num", "yyjson_8h.html#ac24ffc0726b50f38283c9f01f4e58d9b", null ], + [ "yyjson_get_str", "yyjson_8h.html#a986e994db00b2749e000af0a4331454c", null ], + [ "yyjson_get_len", "yyjson_8h.html#ae4b5e4edc9713d9f48e2a6750ad5ebff", null ], + [ "yyjson_equals_str", "yyjson_8h.html#a147b5b874e6b939731f1b6c15abcbbca", null ], + [ "yyjson_equals_strn", "yyjson_8h.html#a1a7a91be15978b45345976c8432769aa", null ], + [ "yyjson_equals", "yyjson_8h.html#adabd9eb44fac843109d6bc79f12ff6ff", null ], + [ "yyjson_set_raw", "yyjson_8h.html#a75ee22602fb750b67fda804fb653ef1e", null ], + [ "yyjson_set_null", "yyjson_8h.html#a079fdf2d481492c8533104437dbf2283", null ], + [ "yyjson_set_bool", "yyjson_8h.html#ad99ceda574b466f8102699e52564c8da", null ], + [ "yyjson_set_uint", "yyjson_8h.html#a90614444c9d6bbd7d8586176986adbc5", null ], + [ "yyjson_set_sint", "yyjson_8h.html#ad0f58bd6ac0289fd55d09b02fa3d4743", null ], + [ "yyjson_set_int", "yyjson_8h.html#af1f4dd90c0bd891cb139e72cfd588789", null ], + [ "yyjson_set_float", "yyjson_8h.html#aae763338f1c11ad9da6be1cf522daf6e", null ], + [ "yyjson_set_double", "yyjson_8h.html#acfc9cec2bb59669d777fe219730793b8", null ], + [ "yyjson_set_real", "yyjson_8h.html#ac782a838c6378f022434d7ab3a3b333d", null ], + [ "yyjson_set_fp_to_fixed", "yyjson_8h.html#a1f72379c8ef022cbe6ad815101c8acec", null ], + [ "yyjson_set_fp_to_float", "yyjson_8h.html#a0705e92b9d45c609be958ec7f2351900", null ], + [ "yyjson_set_str", "yyjson_8h.html#a9a0f4082d2244b7264a819bbc32ebbdf", null ], + [ "yyjson_set_strn", "yyjson_8h.html#a9e49dc52b6209708df0ccf4ddf49b8c4", null ], + [ "yyjson_set_str_noesc", "yyjson_8h.html#a44386e6e1084aaea376238723bd11d74", null ], + [ "yyjson_arr_size", "yyjson_8h.html#a0ea8514c92f39fd93ddcbe93a7f466e5", null ], + [ "yyjson_arr_get", "yyjson_8h.html#ac709738fbf9da708c28992c40746fcbf", null ], + [ "yyjson_arr_get_first", "yyjson_8h.html#ad54c34d490dd8e479e21e4cb29bc814b", null ], + [ "yyjson_arr_get_last", "yyjson_8h.html#a15bbce96107aa455670ebe9aab98964d", null ], + [ "yyjson_arr_iter_init", "yyjson_8h.html#a95aebc83fff9793f7701a6e37df5e03f", null ], + [ "yyjson_arr_iter_with", "yyjson_8h.html#a38b10c3293b817b25d9dd985da121cb5", null ], + [ "yyjson_arr_iter_has_next", "yyjson_8h.html#a216b976b352fe001d580fe837a844e79", null ], + [ "yyjson_arr_iter_next", "yyjson_8h.html#ab608a351427921421a2e23877399acd5", null ], + [ "yyjson_obj_size", "yyjson_8h.html#aa9789f197f972dc433ea2eb622defd50", null ], + [ "yyjson_obj_get", "yyjson_8h.html#a1e8a4dea2e9e9248acde14c664ab702b", null ], + [ "yyjson_obj_getn", "yyjson_8h.html#a2936ca2492ae8cdcdf0435f5259ff854", null ], + [ "yyjson_obj_iter_init", "yyjson_8h.html#a2b6a426ece4ffeb9dede1f7a9970140d", null ], + [ "yyjson_obj_iter_with", "yyjson_8h.html#a543806a566821ccc6c7069edabc59a85", null ], + [ "yyjson_obj_iter_has_next", "yyjson_8h.html#ab83087bafd1f48910b62bf63200679e1", null ], + [ "yyjson_obj_iter_next", "yyjson_8h.html#a6033befb82b9331d2c19c09799ec5bcf", null ], + [ "yyjson_obj_iter_get_val", "yyjson_8h.html#a3403b9c25c8b8f2b3027f4e6d97d0ca8", null ], + [ "yyjson_obj_iter_get", "yyjson_8h.html#a1f3b09c4f279287f8af93b3754a41e85", null ], + [ "yyjson_obj_iter_getn", "yyjson_8h.html#a7a45a4b5a1340bb3c2907b7faf3981be", null ], + [ "yyjson_mut_doc_get_root", "yyjson_8h.html#aa33ac310f363ace5f4dda3697b2c0123", null ], + [ "yyjson_mut_doc_set_root", "yyjson_8h.html#a8a9f7ea865526acb97ee4eff8d0bb79f", null ], + [ "yyjson_mut_doc_set_str_pool_size", "yyjson_8h.html#aec93f33123755af4dfa25c1335a44184", null ], + [ "yyjson_mut_doc_set_val_pool_size", "yyjson_8h.html#a9dd1f854542f298e963f0912a5a0e002", null ], + [ "yyjson_mut_doc_free", "yyjson_8h.html#a7a5f504993031f912d06777b8a7b5aff", null ], + [ "yyjson_mut_doc_new", "yyjson_8h.html#ae27cb375110302ec19f4376d7cab3c5b", null ], + [ "yyjson_doc_mut_copy", "yyjson_8h.html#a083356ecb65e45453033285f3d836de9", null ], + [ "yyjson_mut_doc_mut_copy", "yyjson_8h.html#a6ee1dc133fa773528286cd0b25300cb2", null ], + [ "yyjson_val_mut_copy", "yyjson_8h.html#a04ff184b833fe2d6932309821e2b2e5a", null ], + [ "yyjson_mut_val_mut_copy", "yyjson_8h.html#a66761be40cfb010086ec798ddb44018f", null ], + [ "yyjson_mut_doc_imut_copy", "yyjson_8h.html#a797642b2f815a4f05db03ef87f08cc4f", null ], + [ "yyjson_mut_val_imut_copy", "yyjson_8h.html#a7a142af553e7831989593aee44f74e26", null ], + [ "yyjson_mut_is_raw", "yyjson_8h.html#a2bbea1da400b473e92b8429027d0f307", null ], + [ "yyjson_mut_is_null", "yyjson_8h.html#a17fda97923bb434d4214c56534586606", null ], + [ "yyjson_mut_is_true", "yyjson_8h.html#a5c94af000c170272356f060c76f91559", null ], + [ "yyjson_mut_is_false", "yyjson_8h.html#aadb5f3196fe14e75914ed34d6e700076", null ], + [ "yyjson_mut_is_bool", "yyjson_8h.html#ad18730f04c429faa79be473de57efd5e", null ], + [ "yyjson_mut_is_uint", "yyjson_8h.html#a740d49152b7b9974c65efeab698dfb67", null ], + [ "yyjson_mut_is_sint", "yyjson_8h.html#a907fa46c6ab95e9d7652392507f17e3b", null ], + [ "yyjson_mut_is_int", "yyjson_8h.html#a7bb8c32c190a8e4ce4f5e9e95623f304", null ], + [ "yyjson_mut_is_real", "yyjson_8h.html#acfc8545d9b1af8dd8f1488e34fbac351", null ], + [ "yyjson_mut_is_num", "yyjson_8h.html#a4c37c92b9977d86475cda1884c9ae52e", null ], + [ "yyjson_mut_is_str", "yyjson_8h.html#ad9f16424bfef46cd479066905f653591", null ], + [ "yyjson_mut_is_arr", "yyjson_8h.html#a538974615c719cb8ea2e8ea7705569cf", null ], + [ "yyjson_mut_is_obj", "yyjson_8h.html#aaafe8a57b5e53c9f7f9984c80ab3be1f", null ], + [ "yyjson_mut_is_ctn", "yyjson_8h.html#a25f0e04af88792dd01e0ed8461ffb51b", null ], + [ "yyjson_mut_get_type", "yyjson_8h.html#a69acff4e2298d6b1a315d5f75a5eaa9d", null ], + [ "yyjson_mut_get_subtype", "yyjson_8h.html#a1a032ed912524326d22331f7dd1366f2", null ], + [ "yyjson_mut_get_tag", "yyjson_8h.html#a64603b1c33c9ebc626665dea61e25abd", null ], + [ "yyjson_mut_get_type_desc", "yyjson_8h.html#a0718192e8eb1b46a83116b15ce6e67c7", null ], + [ "yyjson_mut_get_raw", "yyjson_8h.html#a3de6970785ebf0dd000d28c916793388", null ], + [ "yyjson_mut_get_bool", "yyjson_8h.html#a5ae266ef7d5c52eaa2d5afeafab41721", null ], + [ "yyjson_mut_get_uint", "yyjson_8h.html#a708869e986c30d3a03026be8ce4c2b37", null ], + [ "yyjson_mut_get_sint", "yyjson_8h.html#af9824de7303491b4e43dd423878ae0a0", null ], + [ "yyjson_mut_get_int", "yyjson_8h.html#aad6de220fa487e31bd1bd2c2cccd9bff", null ], + [ "yyjson_mut_get_real", "yyjson_8h.html#addde26cc012f50aee79a623e6be4614e", null ], + [ "yyjson_mut_get_num", "yyjson_8h.html#ae46242b9ad367c677a5026f6ea30c635", null ], + [ "yyjson_mut_get_str", "yyjson_8h.html#a896424a210ec4983f0634467ebe85a68", null ], + [ "yyjson_mut_get_len", "yyjson_8h.html#aec3a6e6812f3ca8fd58c858275443fe0", null ], + [ "yyjson_mut_equals_str", "yyjson_8h.html#ab2c44c43c9e8ff194799fd59ae688ee2", null ], + [ "yyjson_mut_equals_strn", "yyjson_8h.html#a1887a4e64900348851f22d528950bf7e", null ], + [ "yyjson_mut_equals", "yyjson_8h.html#ab0a5c5a568b7f2c0a6301149f0f6aa84", null ], + [ "yyjson_mut_set_raw", "yyjson_8h.html#a510bd8af8c64911827c890bd67245282", null ], + [ "yyjson_mut_set_null", "yyjson_8h.html#a6e0c3b9ff069db64e4aa14da1078b538", null ], + [ "yyjson_mut_set_bool", "yyjson_8h.html#a108d97873650fd95453f3c82a0b6a2aa", null ], + [ "yyjson_mut_set_uint", "yyjson_8h.html#a84604772b235ec0f651532013f2480a8", null ], + [ "yyjson_mut_set_sint", "yyjson_8h.html#ad3c513a8fd61c173c4afa404572e02f6", null ], + [ "yyjson_mut_set_int", "yyjson_8h.html#a64168360e4ac45070f98c6db92b89cd7", null ], + [ "yyjson_mut_set_float", "yyjson_8h.html#a22cb5a0c2cfd20893de76ef77a785627", null ], + [ "yyjson_mut_set_double", "yyjson_8h.html#a185b931c987bc80325339ab7369753c6", null ], + [ "yyjson_mut_set_real", "yyjson_8h.html#a0cbd041b4d5a31d6dcc0bd759eae6cf7", null ], + [ "yyjson_mut_set_fp_to_fixed", "yyjson_8h.html#a0c58c31c80202d83c1c2d3bd69e3bf72", null ], + [ "yyjson_mut_set_fp_to_float", "yyjson_8h.html#a1568c53a68914a5660a50490232737ac", null ], + [ "yyjson_mut_set_str", "yyjson_8h.html#a84e98fae940ff675b2a22076cbd5efc1", null ], + [ "yyjson_mut_set_strn", "yyjson_8h.html#a298c4558e0b349e4f801f210f19ac8b1", null ], + [ "yyjson_mut_set_str_noesc", "yyjson_8h.html#acaf2da602f21785dbacc66661f89a570", null ], + [ "yyjson_mut_set_arr", "yyjson_8h.html#af6dac7e5e95ccc12d79c31b96d33940a", null ], + [ "yyjson_mut_set_obj", "yyjson_8h.html#a533791670fe27f71bab321d586e11ea2", null ], + [ "yyjson_mut_raw", "yyjson_8h.html#a7541eb4eadf59e84f1ef06889789d460", null ], + [ "yyjson_mut_rawn", "yyjson_8h.html#a3f69c2e1cdc99ae4f9914435b7a542d7", null ], + [ "yyjson_mut_rawcpy", "yyjson_8h.html#a35cfc3e94310aaddb9eaf6609c4640d9", null ], + [ "yyjson_mut_rawncpy", "yyjson_8h.html#a8a9cc40b5f3f93b66ba191449f81fbda", null ], + [ "yyjson_mut_null", "yyjson_8h.html#a73e0044fd0c511263cbf5cd869976475", null ], + [ "yyjson_mut_true", "yyjson_8h.html#a032637dbdee5a6525420384daa097dff", null ], + [ "yyjson_mut_false", "yyjson_8h.html#a184a7d8fa5b929ce01c7181712c34747", null ], + [ "yyjson_mut_bool", "yyjson_8h.html#a57afc80d0c89c0ae20d5ff183f3a8205", null ], + [ "yyjson_mut_uint", "yyjson_8h.html#a893a09172b402af1bf520cf7347dfeab", null ], + [ "yyjson_mut_sint", "yyjson_8h.html#acd434c1a97d275f97f743e47e228831a", null ], + [ "yyjson_mut_int", "yyjson_8h.html#a92e202b3738250ffee612089bdec91eb", null ], + [ "yyjson_mut_float", "yyjson_8h.html#a3497c331c3a3746dab89e20a38c5daa0", null ], + [ "yyjson_mut_double", "yyjson_8h.html#a97fb1056954960e76be19e33dc5b6df0", null ], + [ "yyjson_mut_real", "yyjson_8h.html#a177181eee333314c7b40e2dc573fcdec", null ], + [ "yyjson_mut_str", "yyjson_8h.html#ae8d7e4c75adb1b9adb2246165491a4a3", null ], + [ "yyjson_mut_strn", "yyjson_8h.html#a13c39f37c6936907c266ba9c076dd741", null ], + [ "yyjson_mut_strcpy", "yyjson_8h.html#a95300bcf1cdb52d296e39aa1a4650741", null ], + [ "yyjson_mut_strncpy", "yyjson_8h.html#a1588bdc6f4125e5c6d1daf6b240f6ff8", null ], + [ "yyjson_mut_arr_size", "yyjson_8h.html#a847bb374b9c7fa6fff34088d23d87dad", null ], + [ "yyjson_mut_arr_get", "yyjson_8h.html#a08b69c78024de357ed49abcc19d5b2f3", null ], + [ "yyjson_mut_arr_get_first", "yyjson_8h.html#a9ff667f95ec6e6e264509e1681c74357", null ], + [ "yyjson_mut_arr_get_last", "yyjson_8h.html#a8f6ad942e4ba4d3fb7cb52459af708a6", null ], + [ "yyjson_mut_arr_iter_init", "yyjson_8h.html#ad88b6743f333d9e4eff04b0138619e74", null ], + [ "yyjson_mut_arr_iter_with", "yyjson_8h.html#a9d8bf48b287cc0099eb6619d8b4b712e", null ], + [ "yyjson_mut_arr_iter_has_next", "yyjson_8h.html#a214c115652630e5acaa9fa062844e0c9", null ], + [ "yyjson_mut_arr_iter_next", "yyjson_8h.html#a793250c5394193a73b5e9506c8381994", null ], + [ "yyjson_mut_arr_iter_remove", "yyjson_8h.html#a20fa69856e99295473e1b3e111adc3b1", null ], + [ "yyjson_mut_arr", "yyjson_8h.html#aec0e874c4847338f3b61bf46257cb557", null ], + [ "yyjson_mut_arr_with_bool", "yyjson_8h.html#afd2b114767b989006259409c6955bb37", null ], + [ "yyjson_mut_arr_with_sint", "yyjson_8h.html#a05771fb3cd9c9d2f854dc9528feac58a", null ], + [ "yyjson_mut_arr_with_uint", "yyjson_8h.html#ab2237deb1190a0333a88d571a8adcb0c", null ], + [ "yyjson_mut_arr_with_real", "yyjson_8h.html#a7173b66e47ee6fad38b11651d20e7ddf", null ], + [ "yyjson_mut_arr_with_sint8", "yyjson_8h.html#ab9c7f452ed21a9800501c25e715f35f7", null ], + [ "yyjson_mut_arr_with_sint16", "yyjson_8h.html#a72bd3b0467273c40dbe376bc7c0a8f06", null ], + [ "yyjson_mut_arr_with_sint32", "yyjson_8h.html#a54bfa0c027fb21e9e5c33a9f4ecbe0f5", null ], + [ "yyjson_mut_arr_with_sint64", "yyjson_8h.html#a37d0c7987b2958550076586ca36082fd", null ], + [ "yyjson_mut_arr_with_uint8", "yyjson_8h.html#a2ae7e73e8a1431554d621059b06222e6", null ], + [ "yyjson_mut_arr_with_uint16", "yyjson_8h.html#a85f4bcdc777cde51a40359ac9e38c98b", null ], + [ "yyjson_mut_arr_with_uint32", "yyjson_8h.html#ac24336d6f29b5b6c09f513373b6fc83e", null ], + [ "yyjson_mut_arr_with_uint64", "yyjson_8h.html#aae70fe76dfae0e8aa93d0226ec8510d9", null ], + [ "yyjson_mut_arr_with_float", "yyjson_8h.html#a50039175677ae5fdd51f1c6942fa3d3d", null ], + [ "yyjson_mut_arr_with_double", "yyjson_8h.html#ac81702a782ecfeb9874ce43706ecf02e", null ], + [ "yyjson_mut_arr_with_str", "yyjson_8h.html#af7da1562cde867338bc69395c2aeb0ad", null ], + [ "yyjson_mut_arr_with_strn", "yyjson_8h.html#a419008c4a6f2dc4221211b0d7770109a", null ], + [ "yyjson_mut_arr_with_strcpy", "yyjson_8h.html#a90c3e1c55dcf04a7879abed9a57cb278", null ], + [ "yyjson_mut_arr_with_strncpy", "yyjson_8h.html#ad8c68a8cec010d2d5f8942eb1136afde", null ], + [ "yyjson_mut_arr_insert", "yyjson_8h.html#ae0898f45c9fca1d7d6bdd35b3488a10f", null ], + [ "yyjson_mut_arr_append", "yyjson_8h.html#af089d7f9bfb1b4fadf46073a534379b0", null ], + [ "yyjson_mut_arr_prepend", "yyjson_8h.html#a1557f6dca4e03380449cb9b5f043f699", null ], + [ "yyjson_mut_arr_replace", "yyjson_8h.html#a33704c7475fcdbc8ce7504e9b9756b16", null ], + [ "yyjson_mut_arr_remove", "yyjson_8h.html#a26d9cd39957b06085492ec7050850a19", null ], + [ "yyjson_mut_arr_remove_first", "yyjson_8h.html#af7484aeed9b789103efb985f2f42ab46", null ], + [ "yyjson_mut_arr_remove_last", "yyjson_8h.html#a923bc9e3c4af69b5bdb5361a9f0a4ba5", null ], + [ "yyjson_mut_arr_remove_range", "yyjson_8h.html#ab96f33fef20cadcb9bb045c60749b516", null ], + [ "yyjson_mut_arr_clear", "yyjson_8h.html#a274fc7be14bed93794e3e720927f7bc5", null ], + [ "yyjson_mut_arr_rotate", "yyjson_8h.html#a6df6d46adbd674a53cbfc049d49ec5c5", null ], + [ "yyjson_mut_arr_add_val", "yyjson_8h.html#ab361240999d684579904a9aa3af5004f", null ], + [ "yyjson_mut_arr_add_null", "yyjson_8h.html#afb1e130c69db1f54e924e82c3d6377c9", null ], + [ "yyjson_mut_arr_add_true", "yyjson_8h.html#a125859d255ca67ed339fbf3d05539c94", null ], + [ "yyjson_mut_arr_add_false", "yyjson_8h.html#a930a47cf837316e3758e38057178edac", null ], + [ "yyjson_mut_arr_add_bool", "yyjson_8h.html#a5c7fae9804b126005f99c67f3c703ad5", null ], + [ "yyjson_mut_arr_add_uint", "yyjson_8h.html#a6efba736a610baa629bf2a0b0a41d4a9", null ], + [ "yyjson_mut_arr_add_sint", "yyjson_8h.html#ab459a079674a115123c353441dacda22", null ], + [ "yyjson_mut_arr_add_int", "yyjson_8h.html#ad20aad460c6d7c62f7c371ca5be54667", null ], + [ "yyjson_mut_arr_add_float", "yyjson_8h.html#ab07c81d726e44806b918481becf7f6d3", null ], + [ "yyjson_mut_arr_add_double", "yyjson_8h.html#a39283533d6fee8d33eb0e3b818ce8fee", null ], + [ "yyjson_mut_arr_add_real", "yyjson_8h.html#aa47704ca9b08cdd7b8b151ec67c4afd6", null ], + [ "yyjson_mut_arr_add_str", "yyjson_8h.html#a09acbadaf1d791167a277ed35540577b", null ], + [ "yyjson_mut_arr_add_strn", "yyjson_8h.html#a97b82f92bd96415090ce9803b9757bf9", null ], + [ "yyjson_mut_arr_add_strcpy", "yyjson_8h.html#a2877858de77e7765ef44d8659eb7fcd3", null ], + [ "yyjson_mut_arr_add_strncpy", "yyjson_8h.html#a158fecc9fb751aeb56472844321bdfab", null ], + [ "yyjson_mut_arr_add_arr", "yyjson_8h.html#a8e0dfe2ac2a53faadf137d159162d193", null ], + [ "yyjson_mut_arr_add_obj", "yyjson_8h.html#acd2884309c99b42f916fffd50c018c59", null ], + [ "yyjson_mut_obj_size", "yyjson_8h.html#a601ac20666dd26bfbec016ee4cbb1b92", null ], + [ "yyjson_mut_obj_get", "yyjson_8h.html#a90a824479a3d07f47e9bcce9bbbfcdc0", null ], + [ "yyjson_mut_obj_getn", "yyjson_8h.html#a9f40302607516131c026ca5f13a29946", null ], + [ "yyjson_mut_obj_iter_init", "yyjson_8h.html#ad32e0e0427bda63164f12fe689a6f854", null ], + [ "yyjson_mut_obj_iter_with", "yyjson_8h.html#aedac207e6c2d5e031997e2b0df73db6a", null ], + [ "yyjson_mut_obj_iter_has_next", "yyjson_8h.html#aca1345f5057068e556cc6fadda10d04c", null ], + [ "yyjson_mut_obj_iter_next", "yyjson_8h.html#a55f4228c2d65d497ad3cee8abe95c0be", null ], + [ "yyjson_mut_obj_iter_get_val", "yyjson_8h.html#aaa4bef14b71ff145fe8cdc2fa98c7f45", null ], + [ "yyjson_mut_obj_iter_remove", "yyjson_8h.html#a6e891b4020dd6325d6eacb5e108da3c4", null ], + [ "yyjson_mut_obj_iter_get", "yyjson_8h.html#a9e79f1480256c6e2e8dfbf61da9cd853", null ], + [ "yyjson_mut_obj_iter_getn", "yyjson_8h.html#a3d3ab359890ab167041732a871ab943d", null ], + [ "yyjson_mut_obj", "yyjson_8h.html#a721dacf0e32ee6c7f18817aca806e9b2", null ], + [ "yyjson_mut_obj_with_str", "yyjson_8h.html#a49cfc79051b729689f4f08592b284cc9", null ], + [ "yyjson_mut_obj_with_kv", "yyjson_8h.html#afc2749d9ed694b6d0a4f5c14da19c7d4", null ], + [ "yyjson_mut_obj_add", "yyjson_8h.html#ac0e1bcd9f449e4b1e62d25fb96830a62", null ], + [ "yyjson_mut_obj_put", "yyjson_8h.html#acbfde7c1173b4258f83029c6dacf47c3", null ], + [ "yyjson_mut_obj_insert", "yyjson_8h.html#a98e9f97614fce2a6187473eeb35274e8", null ], + [ "yyjson_mut_obj_remove", "yyjson_8h.html#a660d533ce8b661e85c5b14e4e99e5085", null ], + [ "yyjson_mut_obj_remove_key", "yyjson_8h.html#a13d5da22b245b8242d9c5c6bd6b3582b", null ], + [ "yyjson_mut_obj_remove_keyn", "yyjson_8h.html#a36b5cade5e5cfecd47e9ae584078e2b4", null ], + [ "yyjson_mut_obj_clear", "yyjson_8h.html#aee5bc7d2ad2169a04f54e63139eddb86", null ], + [ "yyjson_mut_obj_replace", "yyjson_8h.html#a964840d68d5d27ad2e16c63b4b2475b6", null ], + [ "yyjson_mut_obj_rotate", "yyjson_8h.html#a0f1a9fea8fbc13caf61861dfdb498d46", null ], + [ "yyjson_mut_obj_add_null", "yyjson_8h.html#a6efc657d7f9aefdcba51e753fcea02c1", null ], + [ "yyjson_mut_obj_add_true", "yyjson_8h.html#a80380f14a448ea046eb718e068c2df6b", null ], + [ "yyjson_mut_obj_add_false", "yyjson_8h.html#a52c88fea8622d7bf4e81ecea93dc5df6", null ], + [ "yyjson_mut_obj_add_bool", "yyjson_8h.html#abe2f1b0c0b8cb9ceab3cdc35d4574c86", null ], + [ "yyjson_mut_obj_add_uint", "yyjson_8h.html#a5f48e712fe4988f779a35309779dd765", null ], + [ "yyjson_mut_obj_add_sint", "yyjson_8h.html#a4070a94fca9592eefa2798dd45237d85", null ], + [ "yyjson_mut_obj_add_int", "yyjson_8h.html#a56726ff7e284700736e26e56afa6cf7b", null ], + [ "yyjson_mut_obj_add_float", "yyjson_8h.html#aead391adc0e8fba55c0b230ac4d36612", null ], + [ "yyjson_mut_obj_add_double", "yyjson_8h.html#a29d6ef8f7bf8135d9b7d93cb4c7d2c0c", null ], + [ "yyjson_mut_obj_add_real", "yyjson_8h.html#aa4b243e9de837405d83bcc3251156cea", null ], + [ "yyjson_mut_obj_add_str", "yyjson_8h.html#a996f8aa51f4c1475448974cf98f28df3", null ], + [ "yyjson_mut_obj_add_strn", "yyjson_8h.html#a4530f9fc02f8604cef3de273feb4ab6a", null ], + [ "yyjson_mut_obj_add_strcpy", "yyjson_8h.html#abeeca08e3b6994dddd55951a83cd648f", null ], + [ "yyjson_mut_obj_add_strncpy", "yyjson_8h.html#a1d544048860a8c53510d560b4d60411a", null ], + [ "yyjson_mut_obj_add_arr", "yyjson_8h.html#a1d27c9ad366209b83f236d74ec7e1991", null ], + [ "yyjson_mut_obj_add_obj", "yyjson_8h.html#a7241260b7fefbbdfdf7566d207b486c5", null ], + [ "yyjson_mut_obj_add_val", "yyjson_8h.html#a210aa96478b0b005b1611fe2f0ecbaa2", null ], + [ "yyjson_mut_obj_remove_str", "yyjson_8h.html#a630b55e2937f7ffe8c0dcef20497ce93", null ], + [ "yyjson_mut_obj_remove_strn", "yyjson_8h.html#ae6dfd237f7997125e606d678b3b59b5c", null ], + [ "yyjson_mut_obj_rename_key", "yyjson_8h.html#aea65c64007cfa236faa17e1ac87c4e5e", null ], + [ "yyjson_mut_obj_rename_keyn", "yyjson_8h.html#a335b9fdffa2885eb5eddd1ee2b43016b", null ], + [ "yyjson_doc_ptr_get", "yyjson_8h.html#a9a9b30d275e211df9b84b91f4b95907a", null ], + [ "yyjson_doc_ptr_getn", "yyjson_8h.html#a5b12a7b59d79123f9de71510efa2df3d", null ], + [ "yyjson_doc_ptr_getx", "yyjson_8h.html#a53930a7b337295aefe993760fcc05645", null ], + [ "yyjson_ptr_get", "yyjson_8h.html#a897cf07015f4f79fb4ebb0b3f58ac292", null ], + [ "yyjson_ptr_getn", "yyjson_8h.html#aa3612af25f159df0c0587ddf8c7c58db", null ], + [ "yyjson_ptr_getx", "yyjson_8h.html#a4b69d3a0061294fecd4a94927ad10e96", null ], + [ "yyjson_mut_doc_ptr_get", "yyjson_8h.html#a5ad2700fe7073292adb71d508a049604", null ], + [ "yyjson_mut_doc_ptr_getn", "yyjson_8h.html#a085db50b4cf005e489b7401281ea8636", null ], + [ "yyjson_mut_doc_ptr_getx", "yyjson_8h.html#a6031b6b35b06127f3fa2278be67c29ea", null ], + [ "yyjson_mut_ptr_get", "yyjson_8h.html#a8add57045c09758844b9433dbe3d4451", null ], + [ "yyjson_mut_ptr_getn", "yyjson_8h.html#a7d72991b7e14b54845b639ef37c1c54c", null ], + [ "yyjson_mut_ptr_getx", "yyjson_8h.html#abb1b3f84ca4f32c72dad8eea83f3d116", null ], + [ "yyjson_mut_doc_ptr_add", "yyjson_8h.html#ae1a372cfbbc8a536decaf1db5223804d", null ], + [ "yyjson_mut_doc_ptr_addn", "yyjson_8h.html#a5ee67bcb7012b25bd3bd7f88e5bb1699", null ], + [ "yyjson_mut_doc_ptr_addx", "yyjson_8h.html#ad284e6ee4236ffa0be5d45625d57cac4", null ], + [ "yyjson_mut_ptr_add", "yyjson_8h.html#ab49d3e532c97846b198b360602a9b5ca", null ], + [ "yyjson_mut_ptr_addn", "yyjson_8h.html#aa65216783e9cd2ff949092399a2608d8", null ], + [ "yyjson_mut_ptr_addx", "yyjson_8h.html#a256b4f50ed8e6830d57fbf7df7053141", null ], + [ "yyjson_mut_doc_ptr_set", "yyjson_8h.html#a6c844108b8cdd6583802570b1500630c", null ], + [ "yyjson_mut_doc_ptr_setn", "yyjson_8h.html#a222fa618ed3b7f6cbd355bb04708498f", null ], + [ "yyjson_mut_doc_ptr_setx", "yyjson_8h.html#a48213b9742ba7fe6fb54b79be2da1f97", null ], + [ "yyjson_mut_ptr_set", "yyjson_8h.html#a4de077663ebedc11a24ddbde66a72945", null ], + [ "yyjson_mut_ptr_setn", "yyjson_8h.html#ac8ba98e62d5d4c5ab9ddd44173164756", null ], + [ "yyjson_mut_ptr_setx", "yyjson_8h.html#a181de44520dcd7eb3211c617d10f4525", null ], + [ "yyjson_mut_doc_ptr_replace", "yyjson_8h.html#a1a52947332757bebf28985bad6fb3d5d", null ], + [ "yyjson_mut_doc_ptr_replacen", "yyjson_8h.html#a71d44a9f504b50eab96e59d348b2553f", null ], + [ "yyjson_mut_doc_ptr_replacex", "yyjson_8h.html#aed5fc7ff1c73fd7a1829e863ce92ad65", null ], + [ "yyjson_mut_ptr_replace", "yyjson_8h.html#ad617af11eb6bf81926531878f0117bba", null ], + [ "yyjson_mut_ptr_replacen", "yyjson_8h.html#af324a76bd5e45899cccba7850d9ce43a", null ], + [ "yyjson_mut_ptr_replacex", "yyjson_8h.html#a41f9c6e4641f813a7a94f12ea79b34ce", null ], + [ "yyjson_mut_doc_ptr_remove", "yyjson_8h.html#a0358ed2cf421e64f5052068f41ca8f26", null ], + [ "yyjson_mut_doc_ptr_removen", "yyjson_8h.html#a4ede66b0b130faa9af1c47878cf52be2", null ], + [ "yyjson_mut_doc_ptr_removex", "yyjson_8h.html#a286f0920116870a3d27b466c515234a3", null ], + [ "yyjson_mut_ptr_remove", "yyjson_8h.html#a853738b59790700627f7212b6e00922d", null ], + [ "yyjson_mut_ptr_removen", "yyjson_8h.html#a3447370d5ab7657cd98c54ef17fb047b", null ], + [ "yyjson_mut_ptr_removex", "yyjson_8h.html#a68a954cfda2a17cc612bb31460b902e1", null ], + [ "yyjson_ptr_ctx_append", "yyjson_8h.html#aa0dcc48007c1754a4a181d81f22cb488", null ], + [ "yyjson_ptr_ctx_replace", "yyjson_8h.html#ac61826dc8fd7fa6cafa58fa9a45d058e", null ], + [ "yyjson_ptr_ctx_remove", "yyjson_8h.html#a92d8ec53e4cf8426288d86868dc89e09", null ], + [ "yyjson_patch", "yyjson_8h.html#a2d0864410efdd15e4591fecc0b4c082c", null ], + [ "yyjson_mut_patch", "yyjson_8h.html#ad4cca957150bd6f19fa12a4f907dffee", null ], + [ "yyjson_merge_patch", "yyjson_8h.html#a9026faa4e022392c28e8f9afa553362f", null ], + [ "yyjson_mut_merge_patch", "yyjson_8h.html#aad64266ebfbdd2a9627050cf1f3f48d7", null ], + [ "yyjson_ptr_get_bool", "yyjson_8h.html#ac5d042e8760c46d5db48254a7740a48e", null ], + [ "yyjson_ptr_get_uint", "yyjson_8h.html#a695d5d491618baa20d1f3258cf0fed8e", null ], + [ "yyjson_ptr_get_sint", "yyjson_8h.html#a0b3d05df2a4e4748c75f35fa8ce8c650", null ], + [ "yyjson_ptr_get_real", "yyjson_8h.html#a858ac36d7ad6a86e539cd84118498edb", null ], + [ "yyjson_ptr_get_num", "yyjson_8h.html#a013cce9ecb58c53f0c3c9e1b081aa9c9", null ], + [ "yyjson_ptr_get_str", "yyjson_8h.html#a177e25caf069be7e36b1ba17cad7dc7d", null ], + [ "yyjson_deprecated", "yyjson_8h.html#a16058fb6568716afd9754100862d460d", null ], + [ "yyjson_deprecated", "yyjson_8h.html#a5761a41e92b6f6ea1f5de114e36efb12", null ], + [ "yyjson_deprecated", "yyjson_8h.html#a128b475e13bb4301babef4e03b9fda52", null ], + [ "yyjson_deprecated", "yyjson_8h.html#a9c6dd96d063bacfa6413f7de90f90d91", null ], + [ "yyjson_deprecated", "yyjson_8h.html#a2d26305e46b3a7f72619232805fa10c6", null ], + [ "yyjson_deprecated", "yyjson_8h.html#a2acc549f8ce6bcac63ea89271b73d27a", null ], + [ "yyjson_deprecated", "yyjson_8h.html#a84eb8968317b261a2e29528c1d8cf031", null ], + [ "yyjson_deprecated", "yyjson_8h.html#a23d9715d999b1156d91adadeac913c32", null ], + [ "yyjson_deprecated", "yyjson_8h.html#a1cea8f887599cb77d9394ecd07ae875e", null ], + [ "yyjson_deprecated", "yyjson_8h.html#a779bd9e777e3a58d7e3ea5c6977d1965", null ], + [ "YYJSON_READ_NOFLAG", "yyjson_8h.html#a8940a4ae4ba3467bb7bc6c5ee3deb2ea", null ], + [ "YYJSON_READ_INSITU", "yyjson_8h.html#aa476cdc60442393b93dd0474ed4f08bc", null ], + [ "YYJSON_READ_STOP_WHEN_DONE", "yyjson_8h.html#ad2fb99734b237a7af74924443fe5260e", null ], + [ "YYJSON_READ_ALLOW_TRAILING_COMMAS", "yyjson_8h.html#a046c7832484dab943bed61ffac274e9c", null ], + [ "YYJSON_READ_ALLOW_COMMENTS", "yyjson_8h.html#aff1d62b68993630e74355e4611b77520", null ], + [ "YYJSON_READ_ALLOW_INF_AND_NAN", "yyjson_8h.html#a4b5c0a7092625f0324bccec938f8862f", null ], + [ "YYJSON_READ_NUMBER_AS_RAW", "yyjson_8h.html#a1cafb3655e6e9e60f019d2b7a9bf79c2", null ], + [ "YYJSON_READ_ALLOW_INVALID_UNICODE", "yyjson_8h.html#abdbf139ee03d263c8a833fbef8cbf63c", null ], + [ "YYJSON_READ_BIGNUM_AS_RAW", "yyjson_8h.html#a305e109d45b8e2b419b7266b839dffa0", null ], + [ "YYJSON_READ_ALLOW_BOM", "yyjson_8h.html#af1d965029a44a6a65b9ef3f9a4ccbc09", null ], + [ "YYJSON_READ_ALLOW_EXT_NUMBER", "yyjson_8h.html#a17429af07c44e8d9b3f6083df78e2ab1", null ], + [ "YYJSON_READ_ALLOW_EXT_ESCAPE", "yyjson_8h.html#aa0ef136f329e2b6016ceddf508e2d996", null ], + [ "YYJSON_READ_ALLOW_EXT_WHITESPACE", "yyjson_8h.html#a63f7c53c14f9de30d222acaa287eb490", null ], + [ "YYJSON_READ_ALLOW_SINGLE_QUOTED_STR", "yyjson_8h.html#ade31e55bb9edddbaf2cd5c0c0ba03c64", null ], + [ "YYJSON_READ_ALLOW_UNQUOTED_KEY", "yyjson_8h.html#a38be7a9df2511df7d72b678379d7ca01", null ], + [ "YYJSON_READ_JSON5", "yyjson_8h.html#a8618ef9d06392f4267d853d8c0986319", null ], + [ "YYJSON_READ_SUCCESS", "yyjson_8h.html#a5b8948d47748a81d6a4abf94949e0e88", null ], + [ "YYJSON_READ_ERROR_INVALID_PARAMETER", "yyjson_8h.html#a841a5fd5b187b1ff40232e9d36a5a156", null ], + [ "YYJSON_READ_ERROR_MEMORY_ALLOCATION", "yyjson_8h.html#a0b729e2b5afc21914a723897dda10c3f", null ], + [ "YYJSON_READ_ERROR_EMPTY_CONTENT", "yyjson_8h.html#ad8eeaba5611ace5817c7019067cf85fd", null ], + [ "YYJSON_READ_ERROR_UNEXPECTED_CONTENT", "yyjson_8h.html#a0d42ebb09b02ed4e579938b96a833070", null ], + [ "YYJSON_READ_ERROR_UNEXPECTED_END", "yyjson_8h.html#ae82405796b54b235125a5dd14c06650b", null ], + [ "YYJSON_READ_ERROR_UNEXPECTED_CHARACTER", "yyjson_8h.html#aec30d870399447d1b611c400dff5a55c", null ], + [ "YYJSON_READ_ERROR_JSON_STRUCTURE", "yyjson_8h.html#ad5bf7b51ed21d3c99500a8f488b2b4b0", null ], + [ "YYJSON_READ_ERROR_INVALID_COMMENT", "yyjson_8h.html#a70209d60e93b24573e8830911c7940a6", null ], + [ "YYJSON_READ_ERROR_INVALID_NUMBER", "yyjson_8h.html#a8f8b24bb3b8dafc3f135a926b06da2fa", null ], + [ "YYJSON_READ_ERROR_INVALID_STRING", "yyjson_8h.html#ab4f2d4e7fa716c89d3a31f74504898a9", null ], + [ "YYJSON_READ_ERROR_LITERAL", "yyjson_8h.html#a18810c64371c556ea42c0addb9e25bdc", null ], + [ "YYJSON_READ_ERROR_FILE_OPEN", "yyjson_8h.html#a76cb39cc0755460feedaf3fcf32cea01", null ], + [ "YYJSON_READ_ERROR_FILE_READ", "yyjson_8h.html#a2cea1aba7baff98fee5affd7737fc969", null ], + [ "YYJSON_READ_ERROR_MORE", "yyjson_8h.html#a48706a3eb7761926a6c0ec3239dda76c", null ], + [ "YYJSON_WRITE_NOFLAG", "yyjson_8h.html#ae152a6e8e8c6e4efd798fa6eca9d311f", null ], + [ "YYJSON_WRITE_PRETTY", "yyjson_8h.html#aebdaa55a1673e99d2dcea01a15c633be", null ], + [ "YYJSON_WRITE_ESCAPE_UNICODE", "yyjson_8h.html#ac234e82f7a1203e656bcbb0af2ce8c01", null ], + [ "YYJSON_WRITE_ESCAPE_SLASHES", "yyjson_8h.html#a0eeb35b40e688fce9dd61ed400984042", null ], + [ "YYJSON_WRITE_ALLOW_INF_AND_NAN", "yyjson_8h.html#a38fa90e4cf75b0a78148de2058c1b3bd", null ], + [ "YYJSON_WRITE_INF_AND_NAN_AS_NULL", "yyjson_8h.html#a4408e0c5928db936b89d49ccf255100b", null ], + [ "YYJSON_WRITE_ALLOW_INVALID_UNICODE", "yyjson_8h.html#ae2709fd5ec704ef7a569d62195e4652d", null ], + [ "YYJSON_WRITE_PRETTY_TWO_SPACES", "yyjson_8h.html#a7b13411e137d8085b68b2e0fc9d6736b", null ], + [ "YYJSON_WRITE_NEWLINE_AT_END", "yyjson_8h.html#ab0cfae40d7ae6489d73c6cf5db9c09e1", null ], + [ "YYJSON_WRITE_SUCCESS", "yyjson_8h.html#a20d8f66fbe535a20596001dc2022f0b4", null ], + [ "YYJSON_WRITE_ERROR_INVALID_PARAMETER", "yyjson_8h.html#a7f123c4c3d850fd6c4e46a2b3aad4508", null ], + [ "YYJSON_WRITE_ERROR_MEMORY_ALLOCATION", "yyjson_8h.html#a4d515d2d192d13281ffe69c1d95cdd49", null ], + [ "YYJSON_WRITE_ERROR_INVALID_VALUE_TYPE", "yyjson_8h.html#a40c9783509f730cb3ef67080be9444d8", null ], + [ "YYJSON_WRITE_ERROR_NAN_OR_INF", "yyjson_8h.html#a179477749cf2aa26c0841089debe4756", null ], + [ "YYJSON_WRITE_ERROR_FILE_OPEN", "yyjson_8h.html#a41cb8e304e08d7455f43c753bfa19b82", null ], + [ "YYJSON_WRITE_ERROR_FILE_WRITE", "yyjson_8h.html#a7910a72a728d4f245d43417a42e2e91a", null ], + [ "YYJSON_WRITE_ERROR_INVALID_STRING", "yyjson_8h.html#ab8f221edd44b0c61d9ff78637bfca05e", null ], + [ "YYJSON_PTR_ERR_NONE", "yyjson_8h.html#a41a31c0ddcce2b75cacb5fd2375d1ca7", null ], + [ "YYJSON_PTR_ERR_PARAMETER", "yyjson_8h.html#a2aafb20a8b3f52a085880c262edf9264", null ], + [ "YYJSON_PTR_ERR_SYNTAX", "yyjson_8h.html#a4eb15db0deb14f592e8d6966fd0af261", null ], + [ "YYJSON_PTR_ERR_RESOLVE", "yyjson_8h.html#affa45e3752beb609cb0b2fa159d1d319", null ], + [ "YYJSON_PTR_ERR_NULL_ROOT", "yyjson_8h.html#a5c8d7b159d5eede673be0c9b93897abb", null ], + [ "YYJSON_PTR_ERR_SET_ROOT", "yyjson_8h.html#af8eda6e0f4e8aaedd0f410481c7c13d6", null ], + [ "YYJSON_PTR_ERR_MEMORY_ALLOCATION", "yyjson_8h.html#ac33bbc34a7aa3d634e3ba5794521f67d", null ], + [ "YYJSON_PATCH_SUCCESS", "yyjson_8h.html#a2f1611858d54b9a1a52b66337bc5e0c9", null ], + [ "YYJSON_PATCH_ERROR_INVALID_PARAMETER", "yyjson_8h.html#a10037da4811bc7822093e9417a738c27", null ], + [ "YYJSON_PATCH_ERROR_MEMORY_ALLOCATION", "yyjson_8h.html#ad764ba2c4bd7d5da4107c46482871bcc", null ], + [ "YYJSON_PATCH_ERROR_INVALID_OPERATION", "yyjson_8h.html#a39f7a03e87df8d89482c15e5c6575ef3", null ], + [ "YYJSON_PATCH_ERROR_MISSING_KEY", "yyjson_8h.html#a5e724ca36dfc1f6cce285be9e0c1953a", null ], + [ "YYJSON_PATCH_ERROR_INVALID_MEMBER", "yyjson_8h.html#a1529e42ade3c00f0b513f6cb6d722f22", null ], + [ "YYJSON_PATCH_ERROR_EQUAL", "yyjson_8h.html#adb43ed842536ac6e5ac17f5f693992be", null ], + [ "YYJSON_PATCH_ERROR_POINTER", "yyjson_8h.html#a6e43e19e2920e8d3725372efb98c3aad", null ] +]; \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__alc.js b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__alc.js new file mode 100644 index 00000000000..9aad6eb59f4 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__alc.js @@ -0,0 +1,7 @@ +var yyjson_8h_structyyjson__alc = +[ + [ "malloc", "yyjson_8h.html#a83133b6b92e0fec52ec3c62538f44311", null ], + [ "realloc", "yyjson_8h.html#affacb85df656149df6c07880f0ecbe95", null ], + [ "free", "yyjson_8h.html#a2c770ff93f0f331bd60076eecd93661e", null ], + [ "ctx", "yyjson_8h.html#ae9499246c39efd68c206280de1b31f45", null ] +]; \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__arr__iter.js b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__arr__iter.js new file mode 100644 index 00000000000..ee988a26f2a --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__arr__iter.js @@ -0,0 +1,6 @@ +var yyjson_8h_structyyjson__arr__iter = +[ + [ "idx", "yyjson_8h.html#a1dbfcf575677cf45d7b1e1bef3de9c91", null ], + [ "max", "yyjson_8h.html#a4c9dc89d29725de644b1d9b801aa28ff", null ], + [ "cur", "yyjson_8h.html#a7445de186190ceef09c5be6d589e6a65", null ] +]; \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__doc.js b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__doc.js new file mode 100644 index 00000000000..a10e4648ddd --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__doc.js @@ -0,0 +1,8 @@ +var yyjson_8h_structyyjson__doc = +[ + [ "root", "yyjson_8h.html#ad22baac3e9ae0ff932b38f4257c3b800", null ], + [ "alc", "yyjson_8h.html#ab1a7e03f48bb31760030fbdab7d6597b", null ], + [ "dat_read", "yyjson_8h.html#a72bc53a422a133e2eba68ffa736f9e8b", null ], + [ "val_read", "yyjson_8h.html#ac12f7aed42260b8d2ede0fded3f72167", null ], + [ "str_pool", "yyjson_8h.html#a83e0a27da01978e46f074b6bb068d9eb", null ] +]; \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__mut__arr__iter.js b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__mut__arr__iter.js new file mode 100644 index 00000000000..18065ad9cfa --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__mut__arr__iter.js @@ -0,0 +1,8 @@ +var yyjson_8h_structyyjson__mut__arr__iter = +[ + [ "idx", "yyjson_8h.html#a2ed1833f97594ca751e4d079d1620e7a", null ], + [ "max", "yyjson_8h.html#a1d8217217a7138d40e01752d3181ab85", null ], + [ "cur", "yyjson_8h.html#a2498a5bf91ec2eb7d4a00f89dc465954", null ], + [ "pre", "yyjson_8h.html#aa2481ee429a84f67e5f2200a4bbc6155", null ], + [ "arr", "yyjson_8h.html#ad58dcd5f514d5f3c71412ec86af9e2d0", null ] +]; \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__mut__doc.js b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__mut__doc.js new file mode 100644 index 00000000000..8e5efc81686 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__mut__doc.js @@ -0,0 +1,7 @@ +var yyjson_8h_structyyjson__mut__doc = +[ + [ "root", "yyjson_8h.html#a17d4291b05a54acc6310d16653de48b3", null ], + [ "alc", "yyjson_8h.html#a1b6f74828e64779d450ffd0cbe61f08f", null ], + [ "str_pool", "yyjson_8h.html#a11aa8b6fd06edf8fe371bae828052b39", null ], + [ "val_pool", "yyjson_8h.html#a5607c9ba393206ad94ecd90fbeb59017", null ] +]; \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__mut__obj__iter.js b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__mut__obj__iter.js new file mode 100644 index 00000000000..6e0930770e9 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__mut__obj__iter.js @@ -0,0 +1,8 @@ +var yyjson_8h_structyyjson__mut__obj__iter = +[ + [ "idx", "yyjson_8h.html#ad58bddcf6dd41d193d37d2a16df159d1", null ], + [ "max", "yyjson_8h.html#aaf5c505b42eeb64e7a0ac17e3d7d3847", null ], + [ "cur", "yyjson_8h.html#a4fc0b10196e010a7e5e9a2cec6769904", null ], + [ "pre", "yyjson_8h.html#a934aea39ecf26ad163ad5dcf45cb8e6f", null ], + [ "obj", "yyjson_8h.html#ab5169c5637fdfc27fe10b919b78b6468", null ] +]; \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__mut__val.js b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__mut__val.js new file mode 100644 index 00000000000..359ec830aa3 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__mut__val.js @@ -0,0 +1,6 @@ +var yyjson_8h_structyyjson__mut__val = +[ + [ "tag", "yyjson_8h.html#a5fd1ae5bada624c9687acce330eef7aa", null ], + [ "uni", "yyjson_8h.html#a2f30e3958bf136b4e8453a0e78b43d0f", null ], + [ "next", "yyjson_8h.html#a172090776a18e45190c933fb3294c07c", null ] +]; \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__obj__iter.js b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__obj__iter.js new file mode 100644 index 00000000000..ece62267132 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__obj__iter.js @@ -0,0 +1,7 @@ +var yyjson_8h_structyyjson__obj__iter = +[ + [ "idx", "yyjson_8h.html#a6c2526c5ad89f0addaae26f356ecf609", null ], + [ "max", "yyjson_8h.html#a05ac3955547a4be055542f922564ded6", null ], + [ "cur", "yyjson_8h.html#af15973d5bdb6b7b8ea79571220771027", null ], + [ "obj", "yyjson_8h.html#addf8b34eb1d89a54df0482acbd29872c", null ] +]; \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__patch__err.js b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__patch__err.js new file mode 100644 index 00000000000..0169579a7fd --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__patch__err.js @@ -0,0 +1,7 @@ +var yyjson_8h_structyyjson__patch__err = +[ + [ "code", "yyjson_8h.html#a96dab43e96fd2d54e26deb4c25792ab7", null ], + [ "idx", "yyjson_8h.html#ac1584d63763ce24855df7aee5c9c5782", null ], + [ "msg", "yyjson_8h.html#ae5741da19f51abd241bdce87a921ba4a", null ], + [ "ptr", "yyjson_8h.html#a766102bcfc009fe568ea5655f133f753", null ] +]; \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__ptr__ctx.js b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__ptr__ctx.js new file mode 100644 index 00000000000..60174d0e7f4 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__ptr__ctx.js @@ -0,0 +1,6 @@ +var yyjson_8h_structyyjson__ptr__ctx = +[ + [ "ctn", "yyjson_8h.html#a9fabdf4380dc8f44f9b7479b54c75dd0", null ], + [ "pre", "yyjson_8h.html#ac68fb5d2b48052c8ab3368d3ef6a6b81", null ], + [ "old", "yyjson_8h.html#a4bd05d7a5f157f5178f97415c7ba08f7", null ] +]; \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__ptr__err.js b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__ptr__err.js new file mode 100644 index 00000000000..8d9dad29f0f --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__ptr__err.js @@ -0,0 +1,6 @@ +var yyjson_8h_structyyjson__ptr__err = +[ + [ "code", "yyjson_8h.html#ac82ebe0c715ad673a943e784f325b538", null ], + [ "msg", "yyjson_8h.html#a4d811ed5e9271667460dc1dc491d3295", null ], + [ "pos", "yyjson_8h.html#a4b851ac068173fde6d305039762e33fd", null ] +]; \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__read__err.js b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__read__err.js new file mode 100644 index 00000000000..4e3efaeea30 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__read__err.js @@ -0,0 +1,6 @@ +var yyjson_8h_structyyjson__read__err = +[ + [ "code", "yyjson_8h.html#a550600110929a7030f464a460b5b62cb", null ], + [ "msg", "yyjson_8h.html#a9044823fa7fb431019662e589d45707c", null ], + [ "pos", "yyjson_8h.html#a87eb200779eff088b93ea0a67ab3e300", null ] +]; \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__val.js b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__val.js new file mode 100644 index 00000000000..fc45551287a --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__val.js @@ -0,0 +1,5 @@ +var yyjson_8h_structyyjson__val = +[ + [ "tag", "yyjson_8h.html#ab589c80e05e4e65fa28e23acc1ee8255", null ], + [ "uni", "yyjson_8h.html#a3a07ac3ac97c66ae9b23efeab600d013", null ] +]; \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__write__err.js b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__write__err.js new file mode 100644 index 00000000000..fcc84a554b1 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/html/yyjson_8h_structyyjson__write__err.js @@ -0,0 +1,5 @@ +var yyjson_8h_structyyjson__write__err = +[ + [ "code", "yyjson_8h.html#ae4aa66c2b00d3173291dd48ae398b1c0", null ], + [ "msg", "yyjson_8h.html#a3db87979e01ea1d86ce073b9e7218fe9", null ] +]; \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/doxygen/theme/doxygen-awesome-darkmode-toggle.js b/lib/yyjson-0.12.0/doc/doxygen/theme/doxygen-awesome-darkmode-toggle.js new file mode 100644 index 00000000000..40fe2d38e09 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/theme/doxygen-awesome-darkmode-toggle.js @@ -0,0 +1,157 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +class DoxygenAwesomeDarkModeToggle extends HTMLElement { + // SVG icons from https://fonts.google.com/icons + // Licensed under the Apache 2.0 license: + // https://www.apache.org/licenses/LICENSE-2.0.html + static lightModeIcon = `` + static darkModeIcon = `` + static title = "Toggle Light/Dark Mode" + + static prefersLightModeInDarkModeKey = "prefers-light-mode-in-dark-mode" + static prefersDarkModeInLightModeKey = "prefers-dark-mode-in-light-mode" + + static _staticConstructor = function() { + DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.userPreference) + // Update the color scheme when the browsers preference changes + // without user interaction on the website. + window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => { + DoxygenAwesomeDarkModeToggle.onSystemPreferenceChanged() + }) + // Update the color scheme when the tab is made visible again. + // It is possible that the appearance was changed in another tab + // while this tab was in the background. + document.addEventListener("visibilitychange", visibilityState => { + if (document.visibilityState === 'visible') { + DoxygenAwesomeDarkModeToggle.onSystemPreferenceChanged() + } + }); + }() + + static init() { + $(function() { + $(document).ready(function() { + const toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle') + toggleButton.title = DoxygenAwesomeDarkModeToggle.title + toggleButton.updateIcon() + + window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => { + toggleButton.updateIcon() + }) + document.addEventListener("visibilitychange", visibilityState => { + if (document.visibilityState === 'visible') { + toggleButton.updateIcon() + } + }); + + $(document).ready(function(){ + document.getElementById("MSearchBox").parentNode.appendChild(toggleButton) + }) + $(window).resize(function(){ + document.getElementById("MSearchBox").parentNode.appendChild(toggleButton) + }) + }) + }) + } + + constructor() { + super(); + this.onclick=this.toggleDarkMode + } + + /** + * @returns `true` for dark-mode, `false` for light-mode system preference + */ + static get systemPreference() { + return window.matchMedia('(prefers-color-scheme: dark)').matches + } + + /** + * @returns `true` for dark-mode, `false` for light-mode user preference + */ + static get userPreference() { + return (!DoxygenAwesomeDarkModeToggle.systemPreference && localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey)) || + (DoxygenAwesomeDarkModeToggle.systemPreference && !localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey)) + } + + static set userPreference(userPreference) { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = userPreference + if(!userPreference) { + if(DoxygenAwesomeDarkModeToggle.systemPreference) { + localStorage.setItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey, true) + } else { + localStorage.removeItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey) + } + } else { + if(!DoxygenAwesomeDarkModeToggle.systemPreference) { + localStorage.setItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey, true) + } else { + localStorage.removeItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey) + } + } + DoxygenAwesomeDarkModeToggle.onUserPreferenceChanged() + } + + static enableDarkMode(enable) { + if(enable) { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = true + document.documentElement.classList.add("dark-mode") + document.documentElement.classList.remove("light-mode") + } else { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = false + document.documentElement.classList.remove("dark-mode") + document.documentElement.classList.add("light-mode") + } + } + + static onSystemPreferenceChanged() { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = DoxygenAwesomeDarkModeToggle.userPreference + DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.darkModeEnabled) + } + + static onUserPreferenceChanged() { + DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.darkModeEnabled) + } + + toggleDarkMode() { + DoxygenAwesomeDarkModeToggle.userPreference = !DoxygenAwesomeDarkModeToggle.userPreference + this.updateIcon() + } + + updateIcon() { + if(DoxygenAwesomeDarkModeToggle.darkModeEnabled) { + this.innerHTML = DoxygenAwesomeDarkModeToggle.darkModeIcon + } else { + this.innerHTML = DoxygenAwesomeDarkModeToggle.lightModeIcon + } + } +} + +customElements.define("doxygen-awesome-dark-mode-toggle", DoxygenAwesomeDarkModeToggle); diff --git a/lib/yyjson-0.12.0/doc/doxygen/theme/doxygen-awesome-sidebar-only-darkmode-toggle.css b/lib/yyjson-0.12.0/doc/doxygen/theme/doxygen-awesome-sidebar-only-darkmode-toggle.css new file mode 100644 index 00000000000..d207446e0be --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/theme/doxygen-awesome-sidebar-only-darkmode-toggle.css @@ -0,0 +1,40 @@ + +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +@media screen and (min-width: 768px) { + + #MSearchBox { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - var(--searchbar-height) - 1px); + } + + #MSearchField { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - 66px - var(--searchbar-height)); + } +} diff --git a/lib/yyjson-0.12.0/doc/doxygen/theme/doxygen-awesome-sidebar-only.css b/lib/yyjson-0.12.0/doc/doxygen/theme/doxygen-awesome-sidebar-only.css new file mode 100644 index 00000000000..853f6d6926e --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/theme/doxygen-awesome-sidebar-only.css @@ -0,0 +1,116 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + */ + +html { + /* side nav width. MUST be = `TREEVIEW_WIDTH`. + * Make sure it is wide enough to contain the page title (logo + title + version) + */ + --side-nav-fixed-width: 335px; + --menu-display: none; + + --top-height: 120px; + --toc-sticky-top: -25px; + --toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 25px); +} + +#projectname { + white-space: nowrap; +} + + +@media screen and (min-width: 768px) { + html { + --searchbar-background: var(--page-background-color); + } + + #side-nav { + min-width: var(--side-nav-fixed-width); + max-width: var(--side-nav-fixed-width); + top: var(--top-height); + overflow: visible; + } + + #nav-tree, #side-nav { + height: calc(100vh - var(--top-height)) !important; + } + + #nav-tree { + padding: 0; + } + + #top { + display: block; + border-bottom: none; + height: var(--top-height); + margin-bottom: calc(0px - var(--top-height)); + max-width: var(--side-nav-fixed-width); + overflow: hidden; + background: var(--side-nav-background); + } + #main-nav { + float: left; + padding-right: 0; + } + + .ui-resizable-handle { + cursor: default; + width: 1px !important; + background: var(--separator-color); + box-shadow: 0 calc(-2 * var(--top-height)) 0 0 var(--separator-color); + } + + #nav-path { + position: fixed; + right: 0; + left: var(--side-nav-fixed-width); + bottom: 0; + width: auto; + } + + #doc-content { + height: calc(100vh - 31px) !important; + padding-bottom: calc(3 * var(--spacing-large)); + padding-top: calc(var(--top-height) - 80px); + box-sizing: border-box; + margin-left: var(--side-nav-fixed-width) !important; + } + + #MSearchBox { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium))); + } + + #MSearchField { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - 65px); + } + + #MSearchResultsWindow { + left: var(--spacing-medium) !important; + right: auto; + } +} diff --git a/lib/yyjson-0.12.0/doc/doxygen/theme/doxygen-awesome.css b/lib/yyjson-0.12.0/doc/doxygen/theme/doxygen-awesome.css new file mode 100644 index 00000000000..c2f41142f99 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/theme/doxygen-awesome.css @@ -0,0 +1,2681 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +html { + /* primary theme color. This will affect the entire websites color scheme: links, arrows, labels, ... */ + --primary-color: #1779c4; + --primary-dark-color: #335c80; + --primary-light-color: #70b1e9; + + /* page base colors */ + --page-background-color: #ffffff; + --page-foreground-color: #2f4153; + --page-secondary-foreground-color: #6f7e8e; + + /* color for all separators on the website: hr, borders, ... */ + --separator-color: #dedede; + + /* border radius for all rounded components. Will affect many components, like dropdowns, memitems, codeblocks, ... */ + --border-radius-large: 8px; + --border-radius-small: 4px; + --border-radius-medium: 6px; + + /* default spacings. Most components reference these values for spacing, to provide uniform spacing on the page. */ + --spacing-small: 5px; + --spacing-medium: 10px; + --spacing-large: 16px; + + /* default box shadow used for raising an element above the normal content. Used in dropdowns, search result, ... */ + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.075); + + --odd-color: rgba(0,0,0,.028); + + /* font-families. will affect all text on the website + * font-family: the normal font for text, headlines, menus + * font-family-monospace: used for preformatted text in memtitle, code, fragments + */ + --font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif; + --font-family-monospace: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; + + /* font sizes */ + --page-font-size: 15.6px; + --navigation-font-size: 14.4px; + --toc-font-size: 13.4px; + --code-font-size: 14px; /* affects code, fragment */ + --title-font-size: 22px; + + /* content text properties. These only affect the page content, not the navigation or any other ui elements */ + --content-line-height: 27px; + /* The content is centered and constraint in it's width. To make the content fill the whole page, set the variable to auto.*/ + --content-maxwidth: 1050px; + --table-line-height: 24px; + --toc-sticky-top: var(--spacing-medium); + --toc-width: 200px; + --toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 85px); + + /* colors for various content boxes: @warning, @note, @deprecated @bug */ + --warning-color: #faf3d8; + --warning-color-dark: #f3a600; + --warning-color-darker: #5f4204; + --note-color: #e4f3ff; + --note-color-dark: #1879C4; + --note-color-darker: #274a5c; + --todo-color: #e4dafd; + --todo-color-dark: #5b2bdd; + --todo-color-darker: #2a0d72; + --deprecated-color: #ecf0f3; + --deprecated-color-dark: #5b6269; + --deprecated-color-darker: #43454a; + --bug-color: #f8d1cc; + --bug-color-dark: #b61825; + --bug-color-darker: #75070f; + --invariant-color: #d8f1e3; + --invariant-color-dark: #44b86f; + --invariant-color-darker: #265532; + + /* blockquote colors */ + --blockquote-background: #f8f9fa; + --blockquote-foreground: #636568; + + /* table colors */ + --tablehead-background: #f1f1f1; + --tablehead-foreground: var(--page-foreground-color); + + /* menu-display: block | none + * Visibility of the top navigation on screens >= 768px. On smaller screen the menu is always visible. + * `GENERATE_TREEVIEW` MUST be enabled! + */ + --menu-display: block; + + --menu-focus-foreground: var(--page-background-color); + --menu-focus-background: var(--primary-color); + --menu-selected-background: rgba(0,0,0,.05); + + + --header-background: var(--page-background-color); + --header-foreground: var(--page-foreground-color); + + /* searchbar colors */ + --searchbar-background: var(--side-nav-background); + --searchbar-foreground: var(--page-foreground-color); + + /* searchbar size + * (`searchbar-width` is only applied on screens >= 768px. + * on smaller screens the searchbar will always fill the entire screen width) */ + --searchbar-height: 33px; + --searchbar-width: 210px; + --searchbar-border-radius: var(--searchbar-height); + + /* code block colors */ + --code-background: #f5f5f5; + --code-foreground: var(--page-foreground-color); + + /* fragment colors */ + --fragment-background: #F8F9FA; + --fragment-foreground: #37474F; + --fragment-keyword: #bb6bb2; + --fragment-keywordtype: #8258b3; + --fragment-keywordflow: #d67c3b; + --fragment-token: #438a59; + --fragment-comment: #969696; + --fragment-link: #5383d6; + --fragment-preprocessor: #46aaa5; + --fragment-linenumber-color: #797979; + --fragment-linenumber-background: #f4f4f5; + --fragment-linenumber-border: #e3e5e7; + --fragment-lineheight: 20px; + + /* sidebar navigation (treeview) colors */ + --side-nav-background: #fbfbfb; + --side-nav-foreground: var(--page-foreground-color); + --side-nav-arrow-opacity: 0; + --side-nav-arrow-hover-opacity: 0.9; + + --toc-background: var(--side-nav-background); + --toc-foreground: var(--side-nav-foreground); + + /* height of an item in any tree / collapsible table */ + --tree-item-height: 30px; + + --memname-font-size: var(--code-font-size); + --memtitle-font-size: 18px; + + --webkit-scrollbar-size: 7px; + --webkit-scrollbar-padding: 4px; + --webkit-scrollbar-color: var(--separator-color); + + --animation-duration: .12s +} + +@media screen and (max-width: 767px) { + html { + --page-font-size: 16px; + --navigation-font-size: 16px; + --toc-font-size: 15px; + --code-font-size: 15px; /* affects code, fragment */ + --title-font-size: 22px; + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.35); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #3b2e04; + --warning-color-dark: #f1b602; + --warning-color-darker: #ceb670; + --note-color: #163750; + --note-color-dark: #1982D2; + --note-color-darker: #dcf0fa; + --todo-color: #2a2536; + --todo-color-dark: #7661b3; + --todo-color-darker: #ae9ed6; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2e1917; + --bug-color-dark: #ad2617; + --bug-color-darker: #f5b1aa; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; + } +} + +/* dark mode variables are defined twice, to support both the dark-mode without and with doxygen-awesome-darkmode-toggle.js */ +html.dark-mode { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.30); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #3b2e04; + --warning-color-dark: #f1b602; + --warning-color-darker: #ceb670; + --note-color: #163750; + --note-color-dark: #1982D2; + --note-color-darker: #dcf0fa; + --todo-color: #2a2536; + --todo-color-dark: #7661b3; + --todo-color-darker: #ae9ed6; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2e1917; + --bug-color-dark: #ad2617; + --bug-color-darker: #f5b1aa; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; +} + +body { + color: var(--page-foreground-color); + background-color: var(--page-background-color); + font-size: var(--page-font-size); +} + +body, table, div, p, dl, #nav-tree .label, .title, +.sm-dox a, .sm-dox a:hover, .sm-dox a:focus, #projectname, +.SelectItem, #MSearchField, .navpath li.navelem a, +.navpath li.navelem a:hover, p.reference, p.definition, div.toc li, div.toc h3 { + font-family: var(--font-family); +} + +h1, h2, h3, h4, h5 { + margin-top: 1em; + font-weight: 600; + line-height: initial; +} + +p, div, table, dl, p.reference, p.definition { + font-size: var(--page-font-size); +} + +p.reference, p.definition { + color: var(--page-secondary-foreground-color); +} + +a:link, a:visited, a:hover, a:focus, a:active { + color: var(--primary-color) !important; + font-weight: 500; + background: none; +} + +a.anchor { + scroll-margin-top: var(--spacing-large); + display: block; +} + +/* + Title and top navigation + */ + +#top { + background: var(--header-background); + border-bottom: 1px solid var(--separator-color); +} + +@media screen and (min-width: 768px) { + #top { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + } +} + +#main-nav { + flex-grow: 5; + padding: var(--spacing-small) var(--spacing-medium); +} + +#titlearea { + width: auto; + padding: var(--spacing-medium) var(--spacing-large); + background: none; + color: var(--header-foreground); + border-bottom: none; +} + +@media screen and (max-width: 767px) { + #titlearea { + padding-bottom: var(--spacing-small); + } +} + +#titlearea table tbody tr { + height: auto !important; +} + +#projectname { + font-size: var(--title-font-size); + font-weight: 600; +} + +#projectnumber { + font-family: inherit; + font-size: 60%; +} + +#projectbrief { + font-family: inherit; + font-size: 80%; +} + +#projectlogo { + vertical-align: middle; +} + +#projectlogo img { + max-height: calc(var(--title-font-size) * 2); + margin-right: var(--spacing-small); +} + +.sm-dox, .tabs, .tabs2, .tabs3 { + background: none; + padding: 0; +} + +.tabs, .tabs2, .tabs3 { + border-bottom: 1px solid var(--separator-color); + margin-bottom: -1px; +} + +.main-menu-btn-icon, .main-menu-btn-icon:before, .main-menu-btn-icon:after { + background: var(--page-secondary-foreground-color); +} + +@media screen and (max-width: 767px) { + .sm-dox a span.sub-arrow { + background: var(--code-background); + } + + #main-menu a.has-submenu span.sub-arrow { + color: var(--page-secondary-foreground-color); + border-radius: var(--border-radius-medium); + } + + #main-menu a.has-submenu:hover span.sub-arrow { + color: var(--page-foreground-color); + } +} + +@media screen and (min-width: 768px) { + .sm-dox li, .tablist li { + display: var(--menu-display); + } + + .sm-dox a span.sub-arrow { + border-color: var(--header-foreground) transparent transparent transparent; + } + + .sm-dox a:hover span.sub-arrow { + border-color: var(--menu-focus-foreground) transparent transparent transparent; + } + + .sm-dox ul a span.sub-arrow { + border-color: transparent transparent transparent var(--page-foreground-color); + } + + .sm-dox ul a:hover span.sub-arrow { + border-color: transparent transparent transparent var(--menu-focus-foreground); + } +} + +.sm-dox ul { + background: var(--page-background-color); + box-shadow: var(--box-shadow); + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium) !important; + padding: var(--spacing-small); + animation: ease-out 150ms slideInMenu; +} + +@keyframes slideInMenu { + from { + opacity: 0; + transform: translate(0px, -2px); + } + + to { + opacity: 1; + transform: translate(0px, 0px); + } +} + +.sm-dox ul a { + color: var(--page-foreground-color) !important; + background: var(--page-background-color); + font-size: var(--navigation-font-size); +} + +.sm-dox>li>ul:after { + border-bottom-color: var(--page-background-color) !important; +} + +.sm-dox>li>ul:before { + border-bottom-color: var(--separator-color) !important; +} + +.sm-dox ul a:hover, .sm-dox ul a:active, .sm-dox ul a:focus { + font-size: var(--navigation-font-size) !important; + color: var(--menu-focus-foreground) !important; + text-shadow: none; + background-color: var(--menu-focus-background); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a, .sm-dox a:focus, .tablist li, .tablist li a, .tablist li.current a { + text-shadow: none; + background: transparent; + background-image: none !important; + color: var(--header-foreground) !important; + font-weight: normal; + font-size: var(--navigation-font-size); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a:focus { + outline: auto; +} + +.sm-dox a:hover, .sm-dox a:active, .tablist li a:hover { + text-shadow: none; + font-weight: normal; + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; + border-radius: var(--border-radius-small) !important; + font-size: var(--navigation-font-size); +} + +.tablist li.current { + border-radius: var(--border-radius-small); + background: var(--menu-selected-background); +} + +.tablist li { + margin: var(--spacing-small) 0 var(--spacing-small) var(--spacing-small); +} + +.tablist a { + padding: 0 var(--spacing-large); +} + + +/* + Search box + */ + +#MSearchBox { + height: var(--searchbar-height); + background: var(--searchbar-background); + border-radius: var(--searchbar-border-radius); + border: 1px solid var(--separator-color); + overflow: hidden; + width: var(--searchbar-width); + position: relative; + box-shadow: none; + display: block; + margin-top: 0; +} + +/* until Doxygen 1.9.4 */ +.left img#MSearchSelect { + left: 0; + user-select: none; + padding-left: 8px; +} + +/* Doxygen 1.9.5 */ +.left span#MSearchSelect { + left: 0; + user-select: none; + margin-left: 8px; + padding: 0; +} + +.left #MSearchSelect[src$=".png"] { + padding-left: 0 +} + +.SelectionMark { + user-select: none; +} + +.tabs .left #MSearchSelect { + padding-left: 0; +} + +.tabs #MSearchBox { + position: absolute; + right: var(--spacing-medium); +} + +@media screen and (max-width: 767px) { + .tabs #MSearchBox { + position: relative; + right: 0; + margin-left: var(--spacing-medium); + margin-top: 0; + } +} + +#MSearchSelectWindow, #MSearchResultsWindow { + z-index: 9999; +} + +#MSearchBox.MSearchBoxActive { + border-color: var(--primary-color); + box-shadow: inset 0 0 0 1px var(--primary-color); +} + +#main-menu > li:last-child { + margin-right: 0; +} + +@media screen and (max-width: 767px) { + #main-menu > li:last-child { + height: 50px; + } +} + +#MSearchField { + font-size: var(--navigation-font-size); + height: calc(var(--searchbar-height) - 2px); + background: transparent; + width: calc(var(--searchbar-width) - 64px); +} + +.MSearchBoxActive #MSearchField { + color: var(--searchbar-foreground); +} + +#MSearchSelect { + top: calc(calc(var(--searchbar-height) / 2) - 11px); +} + +#MSearchBox span.left, #MSearchBox span.right { + background: none; + background-image: none; +} + +#MSearchBox span.right { + padding-top: calc(calc(var(--searchbar-height) / 2) - 12px); + position: absolute; + right: var(--spacing-small); +} + +.tabs #MSearchBox span.right { + top: calc(calc(var(--searchbar-height) / 2) - 12px); +} + +@keyframes slideInSearchResults { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } +} + +#MSearchResultsWindow { + left: auto !important; + right: var(--spacing-medium); + border-radius: var(--border-radius-large); + border: 1px solid var(--separator-color); + transform: translate(0, 20px); + box-shadow: var(--box-shadow); + animation: ease-out 280ms slideInSearchResults; + background: var(--page-background-color); +} + +iframe#MSearchResults { + margin: 4px; +} + +iframe { + color-scheme: normal; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) iframe#MSearchResults { + filter: invert() hue-rotate(180deg); + } +} + +html.dark-mode iframe#MSearchResults { + filter: invert() hue-rotate(180deg); +} + +#MSearchResults .SRPage { + background-color: transparent; +} + +#MSearchResults .SRPage .SREntry { + font-size: 10pt; + padding: var(--spacing-small) var(--spacing-medium); +} + +#MSearchSelectWindow { + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + box-shadow: var(--box-shadow); + background: var(--page-background-color); + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); +} + +#MSearchSelectWindow a.SelectItem { + font-size: var(--navigation-font-size); + line-height: var(--content-line-height); + margin: 0 var(--spacing-small); + border-radius: var(--border-radius-small); + color: var(--page-foreground-color) !important; + font-weight: normal; +} + +#MSearchSelectWindow a.SelectItem:hover { + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; +} + +@media screen and (max-width: 767px) { + #MSearchBox { + margin-top: var(--spacing-medium); + margin-bottom: var(--spacing-medium); + width: calc(100vw - 30px); + } + + #main-menu > li:last-child { + float: none !important; + } + + #MSearchField { + width: calc(100vw - 110px); + } + + @keyframes slideInSearchResultsMobile { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } + } + + #MSearchResultsWindow { + left: var(--spacing-medium) !important; + right: var(--spacing-medium); + overflow: auto; + transform: translate(0, 20px); + animation: ease-out 280ms slideInSearchResultsMobile; + width: auto !important; + } + + /* + * Overwrites for fixing the searchbox on mobile in doxygen 1.9.2 + */ + label.main-menu-btn ~ #searchBoxPos1 { + top: 3px !important; + right: 6px !important; + left: 45px; + display: flex; + } + + label.main-menu-btn ~ #searchBoxPos1 > #MSearchBox { + margin-top: 0; + margin-bottom: 0; + flex-grow: 2; + float: left; + } +} + +/* + Tree view + */ + +#side-nav { + padding: 0 !important; + background: var(--side-nav-background); + min-width: 8px; + max-width: 50vw; +} + +@media screen and (max-width: 767px) { + #side-nav { + display: none; + } + + #doc-content { + margin-left: 0 !important; + } +} + +#nav-tree { + background: transparent; + margin-right: 1px; +} + +#nav-tree .label { + font-size: var(--navigation-font-size); +} + +#nav-tree .item { + height: var(--tree-item-height); + line-height: var(--tree-item-height); + overflow: hidden; + text-overflow: ellipsis; +} + +#nav-tree .item > a:focus { + outline: none; +} + +#nav-sync { + bottom: 12px; + right: 12px; + top: auto !important; + user-select: none; +} + +#nav-tree .selected { + text-shadow: none; + background-image: none; + background-color: transparent; + position: relative; + color: var(--primary-color) !important; + font-weight: 500; +} + +#nav-tree .selected::after { + content: ""; + position: absolute; + top: 1px; + bottom: 1px; + left: 0; + width: 4px; + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + background: var(--primary-color); +} + + +#nav-tree a { + color: var(--side-nav-foreground) !important; + font-weight: normal; +} + +#nav-tree a:focus { + outline-style: auto; +} + +#nav-tree .arrow { + opacity: var(--side-nav-arrow-opacity); + background: none; +} + +.arrow { + color: inherit; + cursor: pointer; + font-size: 45%; + vertical-align: middle; + margin-right: 2px; + font-family: serif; + height: auto; + text-align: right; +} + +#nav-tree div.item:hover .arrow, #nav-tree a:focus .arrow { + opacity: var(--side-nav-arrow-hover-opacity); +} + +#nav-tree .selected a { + color: var(--primary-color) !important; + font-weight: bolder; + font-weight: 600; +} + +.ui-resizable-e { + width: 4px; + background: transparent; + box-shadow: inset -1px 0 0 0 var(--separator-color); +} + +/* + Contents + */ + +div.header { + border-bottom: 1px solid var(--separator-color); + background-color: var(--page-background-color); + background-image: none; +} + +@media screen and (min-width: 1000px) { + #doc-content > div > div.contents, + .PageDoc > div.contents { + display: flex; + flex-direction: row-reverse; + flex-wrap: nowrap; + align-items: flex-start; + } + + div.contents .textblock { + min-width: 200px; + flex-grow: 1; + } +} + +div.contents, div.header .title, div.header .summary { + max-width: var(--content-maxwidth); +} + +div.contents, div.header .title { + line-height: initial; + margin: calc(var(--spacing-medium) + .2em) auto var(--spacing-medium) auto; +} + +div.header .summary { + margin: var(--spacing-medium) auto 0 auto; +} + +div.headertitle { + padding: 0; +} + +div.header .title { + font-weight: 600; + font-size: 225%; + padding: var(--spacing-medium) var(--spacing-large); + word-break: break-word; +} + +div.header .summary { + width: auto; + display: block; + float: none; + padding: 0 var(--spacing-large); +} + +td.memSeparator { + border-color: var(--separator-color); +} + +span.mlabel { + background: var(--primary-color); + border: none; + padding: 4px 9px; + border-radius: 12px; + margin-right: var(--spacing-medium); +} + +span.mlabel:last-of-type { + margin-right: 2px; +} + +div.contents { + padding: 0 var(--spacing-large); +} + +div.contents p, div.contents li { + line-height: var(--content-line-height); +} + +div.contents div.dyncontent { + margin: var(--spacing-medium) 0; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) div.contents div.dyncontent img, + html:not(.light-mode) div.contents center img, + html:not(.light-mode) div.contents > table img, + html:not(.light-mode) div.contents div.dyncontent iframe, + html:not(.light-mode) div.contents center iframe, + html:not(.light-mode) div.contents table iframe, + html:not(.light-mode) div.contents .dotgraph iframe { + filter: brightness(89%) hue-rotate(180deg) invert(); + } +} + +html.dark-mode div.contents div.dyncontent img, +html.dark-mode div.contents center img, +html.dark-mode div.contents > table img, +html.dark-mode div.contents div.dyncontent iframe, +html.dark-mode div.contents center iframe, +html.dark-mode div.contents table iframe, +html.dark-mode div.contents .dotgraph iframe + { + filter: brightness(89%) hue-rotate(180deg) invert(); +} + +h2.groupheader { + border-bottom: 0px; + color: var(--page-foreground-color); + box-shadow: + 100px 0 var(--page-background-color), + -100px 0 var(--page-background-color), + 100px 0.75px var(--separator-color), + -100px 0.75px var(--separator-color), + 500px 0 var(--page-background-color), + -500px 0 var(--page-background-color), + 500px 0.75px var(--separator-color), + -500px 0.75px var(--separator-color), + 900px 0 var(--page-background-color), + -900px 0 var(--page-background-color), + 900px 0.75px var(--separator-color), + -900px 0.75px var(--separator-color), + 1400px 0 var(--page-background-color), + -1400px 0 var(--page-background-color), + 1400px 0.75px var(--separator-color), + -1400px 0.75px var(--separator-color), + 1900px 0 var(--page-background-color), + -1900px 0 var(--page-background-color), + 1900px 0.75px var(--separator-color), + -1900px 0.75px var(--separator-color); +} + +blockquote { + margin: 0 var(--spacing-medium) 0 var(--spacing-medium); + padding: var(--spacing-small) var(--spacing-large); + background: var(--blockquote-background); + color: var(--blockquote-foreground); + border-left: 0; + overflow: visible; + border-radius: var(--border-radius-medium); + overflow: visible; + position: relative; +} + +blockquote::before, blockquote::after { + font-weight: bold; + font-family: serif; + font-size: 360%; + opacity: .15; + position: absolute; +} + +blockquote::before { + content: "“"; + left: -10px; + top: 4px; +} + +blockquote::after { + content: "â€"; + right: -8px; + bottom: -25px; +} + +blockquote p { + margin: var(--spacing-small) 0 var(--spacing-medium) 0; +} +.paramname, .paramname em { + font-weight: 600; + color: var(--primary-dark-color); +} + +.paramname > code { + border: 0; +} + +table.params .paramname { + font-weight: 600; + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + padding-right: var(--spacing-small); + line-height: var(--table-line-height); +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--primary-light-color); +} + +.alphachar a { + color: var(--page-foreground-color); +} + +.dotgraph { + max-width: 100%; + overflow-x: scroll; +} + +.dotgraph .caption { + position: sticky; + left: 0; +} + +/* Wrap Graphviz graphs with the `interactive_dotgraph` class if `INTERACTIVE_SVG = YES` */ +.interactive_dotgraph .dotgraph iframe { + max-width: 100%; +} + +/* + Table of Contents + */ + +div.contents .toc { + max-height: var(--toc-max-height); + min-width: var(--toc-width); + border: 0; + border-left: 1px solid var(--separator-color); + border-radius: 0; + background-color: var(--page-background-color); + box-shadow: none; + position: sticky; + top: var(--toc-sticky-top); + padding: 0 var(--spacing-large); + margin: var(--spacing-small) 0 var(--spacing-large) var(--spacing-large); +} + +div.toc h3 { + color: var(--toc-foreground); + font-size: var(--navigation-font-size); + margin: var(--spacing-large) 0 var(--spacing-medium) 0; +} + +div.toc li { + padding: 0; + background: none; + line-height: var(--toc-font-size); + margin: var(--toc-font-size) 0 0 0; +} + +div.toc li::before { + display: none; +} + +div.toc ul { + margin-top: 0 +} + +div.toc li a { + font-size: var(--toc-font-size); + color: var(--page-foreground-color) !important; + text-decoration: none; +} + +div.toc li a:hover, div.toc li a.active { + color: var(--primary-color) !important; +} + +div.toc li a.aboveActive { + color: var(--page-secondary-foreground-color) !important; +} + + +@media screen and (max-width: 999px) { + div.contents .toc { + max-height: 45vh; + float: none; + width: auto; + margin: 0 0 var(--spacing-medium) 0; + position: relative; + top: 0; + position: relative; + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + background-color: var(--toc-background); + box-shadow: var(--box-shadow); + } + + div.contents .toc.interactive { + max-height: calc(var(--navigation-font-size) + 2 * var(--spacing-large)); + overflow: hidden; + } + + div.contents .toc > h3 { + -webkit-tap-highlight-color: transparent; + cursor: pointer; + position: sticky; + top: 0; + background-color: var(--toc-background); + margin: 0; + padding: var(--spacing-large) 0; + display: block; + } + + div.contents .toc.interactive > h3::before { + content: ""; + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid var(--primary-color); + display: inline-block; + margin-right: var(--spacing-small); + margin-bottom: calc(var(--navigation-font-size) / 4); + transform: rotate(-90deg); + transition: transform var(--animation-duration) ease-out; + } + + div.contents .toc.interactive.open > h3::before { + transform: rotate(0deg); + } + + div.contents .toc.interactive.open { + max-height: 45vh; + overflow: auto; + transition: max-height 0.2s ease-in-out; + } + + div.contents .toc a, div.contents .toc a.active { + color: var(--primary-color) !important; + } + + div.contents .toc a:hover { + text-decoration: underline; + } +} + +/* + Code & Fragments + */ + +code, div.fragment, pre.fragment { + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + overflow: hidden; +} + +code { + display: inline; + background: var(--code-background); + color: var(--code-foreground); + padding: 2px 6px; +} + +div.fragment, pre.fragment { + margin: var(--spacing-medium) 0; + padding: calc(var(--spacing-large) - (var(--spacing-large) / 6)) var(--spacing-large); + background: var(--fragment-background); + color: var(--fragment-foreground); + overflow-x: auto; +} + +@media screen and (max-width: 767px) { + div.fragment, pre.fragment { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-right: 0; + } + + .contents > div.fragment, + .textblock > div.fragment, + .textblock > pre.fragment, + .textblock > .tabbed > ul > li > div.fragment, + .textblock > .tabbed > ul > li > pre.fragment, + .contents > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > pre.fragment, + .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + border-radius: 0; + border-left: 0; + } + + .textblock li > .fragment, + .textblock li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + } + + .memdoc li > .fragment, + .memdoc li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + } + + .textblock ul, .memdoc ul { + overflow: initial; + } + + .memdoc > div.fragment, + .memdoc > pre.fragment, + dl dd > div.fragment, + dl dd pre.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > div.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > pre.fragment, + dl dd > .doxygen-awesome-fragment-wrapper > div.fragment, + dl dd .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + border-radius: 0; + border-left: 0; + } +} + +code, code a, pre.fragment, div.fragment, div.fragment .line, div.fragment span, div.fragment .line a, div.fragment .line span { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size) !important; +} + +div.line:after { + margin-right: var(--spacing-medium); +} + +div.fragment .line, pre.fragment { + white-space: pre; + word-wrap: initial; + line-height: var(--fragment-lineheight); +} + +div.fragment span.keyword { + color: var(--fragment-keyword); +} + +div.fragment span.keywordtype { + color: var(--fragment-keywordtype); +} + +div.fragment span.keywordflow { + color: var(--fragment-keywordflow); +} + +div.fragment span.stringliteral { + color: var(--fragment-token) +} + +div.fragment span.comment { + color: var(--fragment-comment); +} + +div.fragment a.code { + color: var(--fragment-link) !important; +} + +div.fragment span.preprocessor { + color: var(--fragment-preprocessor); +} + +div.fragment span.lineno { + display: inline-block; + width: 27px; + border-right: none; + background: var(--fragment-linenumber-background); + color: var(--fragment-linenumber-color); +} + +div.fragment span.lineno a { + background: none; + color: var(--fragment-link) !important; +} + +div.fragment > .line:first-child .lineno { + box-shadow: -999999px 0px 0 999999px var(--fragment-linenumber-background), -999998px 0px 0 999999px var(--fragment-linenumber-border); + background-color: var(--fragment-linenumber-background) !important; +} + +div.line { + border-radius: var(--border-radius-small); +} + +div.line.glow { + background-color: var(--primary-light-color); + box-shadow: none; +} + +/* + dl warning, attention, note, deprecated, bug, ... + */ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, dl.invariant, dl.pre, dl.post, dl.todo, dl.remark { + padding: var(--spacing-medium); + margin: var(--spacing-medium) 0; + color: var(--page-background-color); + overflow: hidden; + margin-left: 0; + border-radius: var(--border-radius-small); +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention { + background: var(--warning-color); + border-left: 8px solid var(--warning-color-dark); + color: var(--warning-color-darker); +} + +dl.warning dt, dl.attention dt { + color: var(--warning-color-dark); +} + +dl.note, dl.remark { + background: var(--note-color); + border-left: 8px solid var(--note-color-dark); + color: var(--note-color-darker); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-dark); +} + +dl.todo { + background: var(--todo-color); + border-left: 8px solid var(--todo-color-dark); + color: var(--todo-color-darker); +} + +dl.todo dt a { + color: var(--todo-color-dark) !important; +} + +dl.bug dt a { + color: var(--todo-color-dark) !important; +} + +dl.bug { + background: var(--bug-color); + border-left: 8px solid var(--bug-color-dark); + color: var(--bug-color-darker); +} + +dl.bug dt a { + color: var(--bug-color-dark) !important; +} + +dl.deprecated { + background: var(--deprecated-color); + border-left: 8px solid var(--deprecated-color-dark); + color: var(--deprecated-color-darker); +} + +dl.deprecated dt a { + color: var(--deprecated-color-dark) !important; +} + +dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color); + border-left: 8px solid var(--invariant-color-dark); + color: var(--invariant-color-darker); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-dark); +} + +/* + memitem + */ + +div.memdoc, div.memproto, h2.memtitle { + box-shadow: none; + background-image: none; + border: none; +} + +div.memdoc { + padding: 0 var(--spacing-medium); + background: var(--page-background-color); +} + +h2.memtitle, div.memitem { + border: 1px solid var(--separator-color); + box-shadow: var(--box-shadow); +} + +h2.memtitle { + box-shadow: 0px var(--spacing-medium) 0 -1px var(--fragment-background), var(--box-shadow); +} + +div.memitem { + transition: none; +} + +div.memproto, h2.memtitle { + background: var(--fragment-background); +} + +h2.memtitle { + font-weight: 500; + font-size: var(--memtitle-font-size); + font-family: var(--font-family-monospace); + border-bottom: none; + border-top-left-radius: var(--border-radius-medium); + border-top-right-radius: var(--border-radius-medium); + word-break: break-all; + position: relative; +} + +h2.memtitle:after { + content: ""; + display: block; + background: var(--fragment-background); + height: var(--spacing-medium); + bottom: calc(0px - var(--spacing-medium)); + left: 0; + right: -14px; + position: absolute; + border-top-right-radius: var(--border-radius-medium); +} + +h2.memtitle > span.permalink { + font-size: inherit; +} + +h2.memtitle > span.permalink > a { + text-decoration: none; + padding-left: 3px; + margin-right: -4px; + user-select: none; + display: inline-block; + margin-top: -6px; +} + +h2.memtitle > span.permalink > a:hover { + color: var(--primary-dark-color) !important; +} + +a:target + h2.memtitle, a:target + h2.memtitle + div.memitem { + border-color: var(--primary-light-color); +} + +div.memitem { + border-top-right-radius: var(--border-radius-medium); + border-bottom-right-radius: var(--border-radius-medium); + border-bottom-left-radius: var(--border-radius-medium); + overflow: hidden; + display: block !important; +} + +div.memdoc { + border-radius: 0; +} + +div.memproto { + border-radius: 0 var(--border-radius-small) 0 0; + overflow: auto; + border-bottom: 1px solid var(--separator-color); + padding: var(--spacing-medium); + margin-bottom: -1px; +} + +div.memtitle { + border-top-right-radius: var(--border-radius-medium); + border-top-left-radius: var(--border-radius-medium); +} + +div.memproto table.memname { + font-family: var(--font-family-monospace); + color: var(--page-foreground-color); + font-size: var(--memname-font-size); + text-shadow: none; +} + +div.memproto div.memtemplate { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--memname-font-size); + margin-left: 2px; + text-shadow: none; +} + +table.mlabels, table.mlabels > tbody { + display: block; +} + +td.mlabels-left { + width: auto; +} + +td.mlabels-right { + margin-top: 3px; + position: sticky; + left: 0; +} + +table.mlabels > tbody > tr:first-child { + display: flex; + justify-content: space-between; + flex-wrap: wrap; +} + +.memname, .memitem span.mlabels { + margin: 0 +} + +/* + reflist + */ + +dl.reflist { + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-medium); + border: 1px solid var(--separator-color); + overflow: hidden; + padding: 0; +} + + +dl.reflist dt, dl.reflist dd { + box-shadow: none; + text-shadow: none; + background-image: none; + border: none; + padding: 12px; +} + + +dl.reflist dt { + font-weight: 500; + border-radius: 0; + background: var(--code-background); + border-bottom: 1px solid var(--separator-color); + color: var(--page-foreground-color) +} + + +dl.reflist dd { + background: none; +} + +/* + Table + */ + +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname), +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { + display: inline-block; + max-width: 100%; +} + +.contents > table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname):not(.classindex) { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); +} + +table.fieldtable, +table.markdownTable tbody, +table.doxtable tbody { + border: none; + margin: var(--spacing-medium) 0; + box-shadow: 0 0 0 1px var(--separator-color); + border-radius: var(--border-radius-small); +} + +table.markdownTable, table.doxtable, table.fieldtable { + padding: 1px; +} + +table.doxtable caption { + display: block; +} + +table.fieldtable { + border-collapse: collapse; + width: 100%; +} + +th.markdownTableHeadLeft, +th.markdownTableHeadRight, +th.markdownTableHeadCenter, +th.markdownTableHeadNone, +table.doxtable th { + background: var(--tablehead-background); + color: var(--tablehead-foreground); + font-weight: 600; + font-size: var(--page-font-size); +} + +th.markdownTableHeadLeft:first-child, +th.markdownTableHeadRight:first-child, +th.markdownTableHeadCenter:first-child, +th.markdownTableHeadNone:first-child, +table.doxtable tr th:first-child { + border-top-left-radius: var(--border-radius-small); +} + +th.markdownTableHeadLeft:last-child, +th.markdownTableHeadRight:last-child, +th.markdownTableHeadCenter:last-child, +th.markdownTableHeadNone:last-child, +table.doxtable tr th:last-child { + border-top-right-radius: var(--border-radius-small); +} + +table.markdownTable td, +table.markdownTable th, +table.fieldtable td, +table.fieldtable th, +table.doxtable td, +table.doxtable th { + border: 1px solid var(--separator-color); + padding: var(--spacing-small) var(--spacing-medium); +} + +table.markdownTable td:last-child, +table.markdownTable th:last-child, +table.fieldtable td:last-child, +table.fieldtable th:last-child, +table.doxtable td:last-child, +table.doxtable th:last-child { + border-right: none; +} + +table.markdownTable td:first-child, +table.markdownTable th:first-child, +table.fieldtable td:first-child, +table.fieldtable th:first-child, +table.doxtable td:first-child, +table.doxtable th:first-child { + border-left: none; +} + +table.markdownTable tr:first-child td, +table.markdownTable tr:first-child th, +table.fieldtable tr:first-child td, +table.fieldtable tr:first-child th, +table.doxtable tr:first-child td, +table.doxtable tr:first-child th { + border-top: none; +} + +table.markdownTable tr:last-child td, +table.markdownTable tr:last-child th, +table.fieldtable tr:last-child td, +table.fieldtable tr:last-child th, +table.doxtable tr:last-child td, +table.doxtable tr:last-child th { + border-bottom: none; +} + +table.markdownTable tr, table.doxtable tr { + border-bottom: 1px solid var(--separator-color); +} + +table.markdownTable tr:last-child, table.doxtable tr:last-child { + border-bottom: none; +} + +.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) { + display: block; +} + +.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { + display: table; + width: 100%; +} + +table.fieldtable th { + font-size: var(--page-font-size); + font-weight: 600; + background-image: none; + background-color: var(--tablehead-background); + color: var(--tablehead-foreground); +} + +table.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fieldinit, .fieldtable td.fielddoc, .fieldtable th { + border-bottom: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); +} + +table.fieldtable tr:last-child td:first-child { + border-bottom-left-radius: var(--border-radius-small); +} + +table.fieldtable tr:last-child td:last-child { + border-bottom-right-radius: var(--border-radius-small); +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--primary-light-color); + box-shadow: none; +} + +table.memberdecls { + display: block; + -webkit-tap-highlight-color: transparent; +} + +table.memberdecls tr[class^='memitem'] { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); +} + +table.memberdecls tr[class^='memitem'] .memTemplParams { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + color: var(--primary-dark-color); + white-space: normal; +} + +table.memberdecls .memItemLeft, +table.memberdecls .memItemRight, +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight, +table.memberdecls .memTemplParams { + transition: none; + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + background-color: var(--fragment-background); +} + +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight { + padding-top: 2px; +} + +table.memberdecls .memTemplParams { + border-bottom: 0; + border-left: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + padding-bottom: var(--spacing-small); +} + +table.memberdecls .memTemplItemLeft { + border-radius: 0 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + border-top: 0; +} + +table.memberdecls .memTemplItemRight { + border-radius: 0 0 var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-left: 0; + border-top: 0; +} + +table.memberdecls .memItemLeft { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + padding-left: var(--spacing-medium); + padding-right: 0; +} + +table.memberdecls .memItemRight { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-right: var(--spacing-medium); + padding-left: 0; + +} + +table.memberdecls .mdescLeft, table.memberdecls .mdescRight { + background: none; + color: var(--page-foreground-color); + padding: var(--spacing-small) 0; +} + +table.memberdecls .memItemLeft, +table.memberdecls .memTemplItemLeft { + padding-right: var(--spacing-medium); +} + +table.memberdecls .memSeparator { + background: var(--page-background-color); + height: var(--spacing-large); + border: 0; + transition: none; +} + +table.memberdecls .groupheader { + margin-bottom: var(--spacing-large); +} + +table.memberdecls .inherit_header td { + padding: 0 0 var(--spacing-medium) 0; + text-indent: -12px; + color: var(--page-secondary-foreground-color); +} + +table.memberdecls img[src="closed.png"], +table.memberdecls img[src="open.png"], +div.dynheader img[src="open.png"], +div.dynheader img[src="closed.png"] { + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid var(--primary-color); + margin-top: 8px; + display: block; + float: left; + margin-left: -10px; + transition: transform var(--animation-duration) ease-out; +} + +table.memberdecls img { + margin-right: 10px; +} + +table.memberdecls img[src="closed.png"], +div.dynheader img[src="closed.png"] { + transform: rotate(-90deg); + +} + +.compoundTemplParams { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--code-font-size); +} + +@media screen and (max-width: 767px) { + + table.memberdecls .memItemLeft, + table.memberdecls .memItemRight, + table.memberdecls .mdescLeft, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemLeft, + table.memberdecls .memTemplItemRight, + table.memberdecls .memTemplParams { + display: block; + text-align: left; + padding-left: var(--spacing-large); + margin: 0 calc(0px - var(--spacing-large)) 0 calc(0px - var(--spacing-large)); + border-right: none; + border-left: none; + border-radius: 0; + white-space: normal; + } + + table.memberdecls .memItemLeft, + table.memberdecls .mdescLeft, + table.memberdecls .memTemplItemLeft { + border-bottom: 0; + padding-bottom: 0; + } + + table.memberdecls .memTemplItemLeft { + padding-top: 0; + } + + table.memberdecls .mdescLeft { + margin-bottom: calc(0px - var(--page-font-size)); + } + + table.memberdecls .memItemRight, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemRight { + border-top: 0; + padding-top: 0; + padding-right: var(--spacing-large); + overflow-x: auto; + } + + table.memberdecls tr[class^='memitem']:not(.inherit) { + display: block; + width: calc(100vw - 2 * var(--spacing-large)); + } + + table.memberdecls .mdescRight { + color: var(--page-foreground-color); + } + + table.memberdecls tr.inherit { + visibility: hidden; + } + + table.memberdecls tr[style="display: table-row;"] { + display: block !important; + visibility: visible; + width: calc(100vw - 2 * var(--spacing-large)); + animation: fade .5s; + } + + @keyframes fade { + 0% { + opacity: 0; + max-height: 0; + } + + 100% { + opacity: 1; + max-height: 200px; + } + } +} + + +/* + Horizontal Rule + */ + +hr { + margin-top: var(--spacing-large); + margin-bottom: var(--spacing-large); + height: 1px; + background-color: var(--separator-color); + border: 0; +} + +.contents hr { + box-shadow: 100px 0 var(--separator-color), + -100px 0 var(--separator-color), + 500px 0 var(--separator-color), + -500px 0 var(--separator-color), + 900px 0 var(--separator-color), + -900px 0 var(--separator-color), + 1400px 0 var(--separator-color), + -1400px 0 var(--separator-color), + 1900px 0 var(--separator-color), + -1900px 0 var(--separator-color); +} + +.contents img, .contents .center, .contents center, .contents div.image object { + max-width: 100%; + overflow: auto; +} + +@media screen and (max-width: 767px) { + .contents .dyncontent > .center, .contents > center { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); + } +} + +/* + Directories + */ +div.directory { + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + width: auto; +} + +table.directory { + font-family: var(--font-family); + font-size: var(--page-font-size); + font-weight: normal; + width: 100%; +} + +table.directory td.entry, table.directory td.desc { + padding: calc(var(--spacing-small) / 2) var(--spacing-small); + line-height: var(--table-line-height); +} + +table.directory tr.even td:last-child { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; +} + +table.directory tr.even td:first-child { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); +} + +table.directory tr.even:last-child td:last-child { + border-radius: 0 var(--border-radius-small) 0 0; +} + +table.directory tr.even:last-child td:first-child { + border-radius: var(--border-radius-small) 0 0 0; +} + +table.directory td.desc { + min-width: 250px; +} + +table.directory tr.even { + background-color: var(--odd-color); +} + +table.directory tr.odd { + background-color: transparent; +} + +.icona { + width: auto; + height: auto; + margin: 0 var(--spacing-small); +} + +.icon { + background: var(--primary-color); + border-radius: var(--border-radius-small); + font-size: var(--page-font-size); + padding: calc(var(--page-font-size) / 5); + line-height: var(--page-font-size); + transform: scale(0.8); + height: auto; + width: var(--page-font-size); + user-select: none; +} + +.iconfopen, .icondoc, .iconfclosed { + background-position: center; + margin-bottom: 0; + height: var(--table-line-height); +} + +.icondoc { + filter: saturate(0.2); +} + +@media screen and (max-width: 767px) { + div.directory { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) .iconfopen, html:not(.light-mode) .iconfclosed { + filter: hue-rotate(180deg) invert(); + } +} + +html.dark-mode .iconfopen, html.dark-mode .iconfclosed { + filter: hue-rotate(180deg) invert(); +} + +/* + Class list + */ + +.classindex dl.odd { + background: var(--odd-color); + border-radius: var(--border-radius-small); +} + +.classindex dl.even { + background-color: transparent; +} + +/* + Class Index Doxygen 1.8 +*/ + +table.classindex { + margin-left: 0; + margin-right: 0; + width: 100%; +} + +table.classindex table div.ah { + background-image: none; + background-color: initial; + border-color: var(--separator-color); + color: var(--page-foreground-color); + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-large); + padding: var(--spacing-small); +} + +div.qindex { + background-color: var(--odd-color); + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + padding: var(--spacing-small) 0; +} + +/* + Footer and nav-path + */ + +#nav-path { + width: 100%; +} + +#nav-path ul { + background-image: none; + background: var(--page-background-color); + border: none; + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + border-bottom: 0; + box-shadow: 0 0.75px 0 var(--separator-color); + font-size: var(--navigation-font-size); +} + +img.footer { + width: 60px; +} + +.navpath li.footer { + color: var(--page-secondary-foreground-color); +} + +address.footer { + color: var(--page-secondary-foreground-color); + margin-bottom: var(--spacing-large); +} + +#nav-path li.navelem { + background-image: none; + display: flex; + align-items: center; +} + +.navpath li.navelem a { + text-shadow: none; + display: inline-block; + color: var(--primary-color) !important; +} + +.navpath li.navelem b { + color: var(--primary-dark-color); + font-weight: 500; +} + +li.navelem { + padding: 0; + margin-left: -8px; +} + +li.navelem:first-child { + margin-left: var(--spacing-large); +} + +li.navelem:first-child:before { + display: none; +} + +#nav-path li.navelem:after { + content: ''; + border: 5px solid var(--page-background-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(4.2); + z-index: 10; + margin-left: 6px; +} + +#nav-path li.navelem:before { + content: ''; + border: 5px solid var(--separator-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(3.2); + margin-right: var(--spacing-small); +} + +.navpath li.navelem a:hover { + color: var(--primary-color); +} + +/* + Scrollbars for Webkit +*/ + +#nav-tree::-webkit-scrollbar, +div.fragment::-webkit-scrollbar, +pre.fragment::-webkit-scrollbar, +div.memproto::-webkit-scrollbar, +.contents center::-webkit-scrollbar, +.contents .center::-webkit-scrollbar, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar, +div.contents .toc::-webkit-scrollbar, +.contents .dotgraph::-webkit-scrollbar, +.contents .tabs-overview-container::-webkit-scrollbar { + background: transparent; + width: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + height: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); +} + +#nav-tree::-webkit-scrollbar-thumb, +div.fragment::-webkit-scrollbar-thumb, +pre.fragment::-webkit-scrollbar-thumb, +div.memproto::-webkit-scrollbar-thumb, +.contents center::-webkit-scrollbar-thumb, +.contents .center::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-thumb, +div.contents .toc::-webkit-scrollbar-thumb, +.contents .dotgraph::-webkit-scrollbar-thumb, +.contents .tabs-overview-container::-webkit-scrollbar-thumb { + background-color: transparent; + border: var(--webkit-scrollbar-padding) solid transparent; + border-radius: calc(var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + background-clip: padding-box; +} + +#nav-tree:hover::-webkit-scrollbar-thumb, +div.fragment:hover::-webkit-scrollbar-thumb, +pre.fragment:hover::-webkit-scrollbar-thumb, +div.memproto:hover::-webkit-scrollbar-thumb, +.contents center:hover::-webkit-scrollbar-thumb, +.contents .center:hover::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody:hover::-webkit-scrollbar-thumb, +div.contents .toc:hover::-webkit-scrollbar-thumb, +.contents .dotgraph:hover::-webkit-scrollbar-thumb, +.contents .tabs-overview-container:hover::-webkit-scrollbar-thumb { + background-color: var(--webkit-scrollbar-color); +} + +#nav-tree::-webkit-scrollbar-track, +div.fragment::-webkit-scrollbar-track, +pre.fragment::-webkit-scrollbar-track, +div.memproto::-webkit-scrollbar-track, +.contents center::-webkit-scrollbar-track, +.contents .center::-webkit-scrollbar-track, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-track, +div.contents .toc::-webkit-scrollbar-track, +.contents .dotgraph::-webkit-scrollbar-track, +.contents .tabs-overview-container::-webkit-scrollbar-track { + background: transparent; +} + +#nav-tree::-webkit-scrollbar-corner { + background-color: var(--side-nav-background); +} + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, +div.contents .toc { + overflow-x: auto; + overflow-x: overlay; +} + +#nav-tree { + overflow-x: auto; + overflow-y: auto; + overflow-y: overlay; +} + +/* + Scrollbars for Firefox +*/ + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, +div.contents .toc, +.contents .dotgraph, +.contents .tabs-overview-container { + scrollbar-width: thin; +} + +/* + Optional Dark mode toggle button +*/ + +doxygen-awesome-dark-mode-toggle { + display: inline-block; + margin: 0 0 0 var(--spacing-small); + padding: 0; + width: var(--searchbar-height); + height: var(--searchbar-height); + background: none; + border: none; + border-radius: var(--searchbar-height); + vertical-align: middle; + text-align: center; + line-height: var(--searchbar-height); + font-size: 22px; + display: flex; + align-items: center; + justify-content: center; + user-select: none; + cursor: pointer; +} + +doxygen-awesome-dark-mode-toggle > svg { + transition: transform var(--animation-duration) ease-in-out; +} + +doxygen-awesome-dark-mode-toggle:active > svg { + transform: scale(.5); +} + +doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.03); +} + +html.dark-mode doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.18); +} + +/* + Optional fragment copy button +*/ +.doxygen-awesome-fragment-wrapper { + position: relative; +} + +doxygen-awesome-fragment-copy-button { + opacity: 0; + background: var(--fragment-background); + width: 28px; + height: 28px; + position: absolute; + right: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + top: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + border: 1px solid var(--fragment-foreground); + cursor: pointer; + border-radius: var(--border-radius-small); + display: flex; + justify-content: center; + align-items: center; +} + +.doxygen-awesome-fragment-wrapper:hover doxygen-awesome-fragment-copy-button, doxygen-awesome-fragment-copy-button.success { + opacity: .28; +} + +doxygen-awesome-fragment-copy-button:hover, doxygen-awesome-fragment-copy-button.success { + opacity: 1 !important; +} + +doxygen-awesome-fragment-copy-button:active:not([class~=success]) svg { + transform: scale(.91); +} + +doxygen-awesome-fragment-copy-button svg { + fill: var(--fragment-foreground); + width: 18px; + height: 18px; +} + +doxygen-awesome-fragment-copy-button.success svg { + fill: rgb(14, 168, 14); +} + +doxygen-awesome-fragment-copy-button.success { + border-color: rgb(14, 168, 14); +} + +@media screen and (max-width: 767px) { + .textblock > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .textblock li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + dl dd > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button { + right: 0; + } +} + +/* + Optional paragraph link button +*/ + +a.anchorlink { + font-size: 90%; + margin-left: var(--spacing-small); + color: var(--page-foreground-color) !important; + text-decoration: none; + opacity: .15; + display: none; + transition: opacity var(--animation-duration) ease-in-out, color var(--animation-duration) ease-in-out; +} + +a.anchorlink svg { + fill: var(--page-foreground-color); +} + +h3 a.anchorlink svg, h4 a.anchorlink svg { + margin-bottom: -3px; + margin-top: -4px; +} + +a.anchorlink:hover { + opacity: .45; +} + +h2:hover a.anchorlink, h1:hover a.anchorlink, h3:hover a.anchorlink, h4:hover a.anchorlink { + display: inline-block; +} + +/* + Optional tab feature +*/ + +.tabbed > ul { + padding-inline-start: 0px; + margin: 0; + padding: var(--spacing-small) 0; +} + +.tabbed > ul > li { + display: none; +} + +.tabbed > ul > li.selected { + display: block; +} + +.tabs-overview-container { + overflow-x: auto; + display: block; + overflow-y: visible; +} + +.tabs-overview { + border-bottom: 1px solid var(--separator-color); + display: flex; + flex-direction: row; +} + +@media screen and (max-width: 767px) { + .tabs-overview-container { + margin: 0 calc(0px - var(--spacing-large)); + } + .tabs-overview { + padding: 0 var(--spacing-large) + } +} + +.tabs-overview button.tab-button { + color: var(--page-foreground-color); + margin: 0; + border: none; + background: transparent; + padding: calc(var(--spacing-large) / 2) 0; + display: inline-block; + font-size: var(--page-font-size); + cursor: pointer; + box-shadow: 0 1px 0 0 var(--separator-color); + position: relative; + + -webkit-tap-highlight-color: transparent; +} + +.tabs-overview button.tab-button .tab-title::before { + display: block; + content: attr(title); + font-weight: 600; + height: 0; + overflow: hidden; + visibility: hidden; +} + +.tabs-overview button.tab-button .tab-title { + float: left; + white-space: nowrap; + font-weight: normal; + padding: calc(var(--spacing-large) / 2) var(--spacing-large); + border-radius: var(--border-radius-medium); + transition: background-color var(--animation-duration) ease-in-out, font-weight var(--animation-duration) ease-in-out; +} + +.tabs-overview button.tab-button:not(:last-child) .tab-title { + box-shadow: 8px 0 0 -7px var(--separator-color); +} + +.tabs-overview button.tab-button:hover .tab-title { + background: var(--separator-color); + box-shadow: none; +} + +.tabs-overview button.tab-button.active .tab-title { + font-weight: 600; +} + +.tabs-overview button.tab-button::after { + content: ''; + display: block; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 0; + width: 0%; + margin: 0 auto; + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + background-color: var(--primary-color); + transition: width var(--animation-duration) ease-in-out, height var(--animation-duration) ease-in-out; +} + +.tabs-overview button.tab-button.active::after { + width: 100%; + box-sizing: border-box; + height: 3px; +} + + +/* + Navigation Buttons +*/ + +.section_buttons:not(:empty) { + margin-top: calc(var(--spacing-large) * 3); +} + +.section_buttons table.markdownTable { + display: block; + width: 100%; +} + +.section_buttons table.markdownTable tbody { + display: table !important; + width: 100%; + box-shadow: none; + border-spacing: 10px; +} + +.section_buttons table.markdownTable td { + padding: 0; +} + +.section_buttons table.markdownTable th { + display: none; +} + +.section_buttons table.markdownTable tr.markdownTableHead { + border: none; +} + +.section_buttons tr th, .section_buttons tr td { + background: none; + border: none; + padding: var(--spacing-large) 0 var(--spacing-small); +} + +.section_buttons a { + display: inline-block; + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + color: var(--page-secondary-foreground-color) !important; + text-decoration: none; + transition: color var(--animation-duration) ease-in-out, background-color var(--animation-duration) ease-in-out; +} + +.section_buttons a:hover { + color: var(--page-foreground-color) !important; + background-color: var(--odd-color); +} + +.section_buttons tr td.markdownTableBodyLeft a { + padding: var(--spacing-medium) var(--spacing-large) var(--spacing-medium) calc(var(--spacing-large) / 2); +} + +.section_buttons tr td.markdownTableBodyRight a { + padding: var(--spacing-medium) calc(var(--spacing-large) / 2) var(--spacing-medium) var(--spacing-large); +} + +.section_buttons tr td.markdownTableBodyLeft a::before, +.section_buttons tr td.markdownTableBodyRight a::after { + color: var(--page-secondary-foreground-color) !important; + display: inline-block; + transition: color .08s ease-in-out, transform .09s ease-in-out; +} + +.section_buttons tr td.markdownTableBodyLeft a::before { + content: '〈'; + padding-right: var(--spacing-large); +} + + +.section_buttons tr td.markdownTableBodyRight a::after { + content: '〉'; + padding-left: var(--spacing-large); +} + + +.section_buttons tr td.markdownTableBodyLeft a:hover::before { + color: var(--page-foreground-color) !important; + transform: translateX(-3px); +} + +.section_buttons tr td.markdownTableBodyRight a:hover::after { + color: var(--page-foreground-color) !important; + transform: translateX(3px); +} + +@media screen and (max-width: 450px) { + .section_buttons a { + width: 100%; + box-sizing: border-box; + } + + .section_buttons tr td:nth-of-type(1).markdownTableBodyLeft a { + border-radius: var(--border-radius-medium) 0 0 var(--border-radius-medium); + border-right: none; + } + + .section_buttons tr td:nth-of-type(2).markdownTableBodyRight a { + border-radius: 0 var(--border-radius-medium) var(--border-radius-medium) 0; + } +} diff --git a/lib/yyjson-0.12.0/doc/doxygen/theme/yyjson-footer.html b/lib/yyjson-0.12.0/doc/doxygen/theme/yyjson-footer.html new file mode 100644 index 00000000000..b921c5cec0f --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/theme/yyjson-footer.html @@ -0,0 +1,19 @@ + + + + + + + +
  • + + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/theme/yyjson-header.html b/lib/yyjson-0.12.0/doc/doxygen/theme/yyjson-header.html new file mode 100644 index 00000000000..c5a2403f637 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/theme/yyjson-header.html @@ -0,0 +1,85 @@ + + + + + + + + +$projectname: $title +$title + + + + + + + + + + + + + + +$treeview +$search +$mathjax +$darkmode + +$extrastylesheet + + + + + + + +
    + + + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    $projectname $projectnumber +
    +
    $projectbrief
    +
    +
    $projectbrief
    +
    $searchbox
    $searchbox
    +
    + + diff --git a/lib/yyjson-0.12.0/doc/doxygen/theme/yyjson-style.css b/lib/yyjson-0.12.0/doc/doxygen/theme/yyjson-style.css new file mode 100644 index 00000000000..149b8bdbbf9 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/doxygen/theme/yyjson-style.css @@ -0,0 +1,37 @@ +html { + --side-nav-arrow-opacity: 0.9; + --content-maxwidth: 800px; +} +div.header { + max-width: 826px; +} +div.header .summary { + padding: 0; + margin-left: 26px; + margin-right: 0; + text-align: left; +} +div.contents, div.header .title { + margin-left: 10px; + margin-right: 10px; +} +@media screen and (max-width: 767px) { + #projectalign { + padding-left: 0; + } + .sm-dox { + margin-top: 4px; + margin-left: 6px; + margin-right: 6px; + } + div.header .summary { + margin-left: 16px; + } + div.contents, div.header .title { + margin-left: 0; + margin-right: 0; + } +} +#MSearchResultsWindow { + max-width: 310px; +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/images/perf_reader_a14.svg b/lib/yyjson-0.12.0/doc/images/perf_reader_a14.svg new file mode 100644 index 00000000000..c01f33c47ff --- /dev/null +++ b/lib/yyjson-0.12.0/doc/images/perf_reader_a14.svg @@ -0,0 +1 @@ +Created with Highcharts 8.2.0GB/sJSON readergigabytes per second (larger is better)yyjson_fastyyjsonsimdjsonrapidjsoncanadacitm_catalogfgogithub_eventsgsoc-2018lottieotfccpoettwittertwitterescaped0246 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/images/perf_reader_ec2.svg b/lib/yyjson-0.12.0/doc/images/perf_reader_ec2.svg new file mode 100644 index 00000000000..81d14bfecf9 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/images/perf_reader_ec2.svg @@ -0,0 +1 @@ +Created with Highcharts 8.2.0GB/sJSON readergigabytes per second (larger is better)yyjson_fastyyjsonsimdjsonrapidjsoncanadacitm_catalogfgogithub_eventsgsoc-2018lottieotfccpoettwittertwitterescaped0123 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/images/struct.sketch b/lib/yyjson-0.12.0/doc/images/struct.sketch new file mode 100644 index 00000000000..79dca0ed266 Binary files /dev/null and b/lib/yyjson-0.12.0/doc/images/struct.sketch differ diff --git a/lib/yyjson-0.12.0/doc/images/struct_idoc1.svg b/lib/yyjson-0.12.0/doc/images/struct_idoc1.svg new file mode 100644 index 00000000000..d00386f6ebd --- /dev/null +++ b/lib/yyjson-0.12.0/doc/images/struct_idoc1.svg @@ -0,0 +1,140 @@ + + + yyjson + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ["a ,"résumé sum\u00E9","page ] + + + + ["a","r\u00E9sum\u00E9","page"] + + + + + + + + + + + 3 + + + 64 + + + + + + + + + + + + 1 + + + ptr + + + + + + + + + + + + 6 + + + ptr + + + + + + + + + + + + 4 + + + ptr + + + + + + + array + + + string + + + original data + + + copied data + + + string + + + string + + + \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/images/struct_idoc2.svg b/lib/yyjson-0.12.0/doc/images/struct_idoc2.svg new file mode 100644 index 00000000000..48e1e953421 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/images/struct_idoc2.svg @@ -0,0 +1,202 @@ + + + struct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {"foo":[666,999],"bar":[]} + + + + + + + + + + + 2 + + + 112 + + + + + + + + + + + + 3 + + + ptr + + + + + + + + + + + + 2 + + + 48 + + + + + + + + + + + + + 666 + + + + + + + + + + + + + 999 + + + + + + + + + + + + 3 + + + ptr + + + + + + + + + + + + 0 + + + 16 + + + + object + + + string + + + object(112 byte) + + + array(48byte) + + + array(16byte) + + + array + + + uint + + + uint + + + string + + + array + + + + + + \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/images/struct_ival.svg b/lib/yyjson-0.12.0/doc/images/struct_ival.svg new file mode 100644 index 00000000000..f989d3ab635 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/images/struct_ival.svg @@ -0,0 +1,55 @@ + + + struct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8bit + + + 56bit + + + 64bit + + + + + type + + + length + + + payload + + + + + \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/images/struct_mdoc.svg b/lib/yyjson-0.12.0/doc/images/struct_mdoc.svg new file mode 100644 index 00000000000..5a4d0da5c94 --- /dev/null +++ b/lib/yyjson-0.12.0/doc/images/struct_mdoc.svg @@ -0,0 +1,280 @@ + + + struct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + âž”"a" + + + next + + + + + + + + + + + + + 2 + + + child + + + + + + + + + + + + + + 1 + + + âž”"b" + + + next + + + + + + + + + + + + + + 55 + + + next + + + + + + + + + + + + + 4 + + + child + + + next + + + + + + + + + + + + + + 44 + + + next + + + + + + + + + + + + + + 11 + + + next + + + + + + + + + + + + + + 22 + + + next + + + + + + + + + + + + + + 33 + + + next + + + + + {"a":55,"b":[11,22,33,44]} + + + + + + + + + + + uint + + + uint + + + uint + + + uint + + + key + + + key + + + object + + + val(array) + + + val(uint) + + + + + \ No newline at end of file diff --git a/lib/yyjson-0.12.0/doc/images/struct_mval.svg b/lib/yyjson-0.12.0/doc/images/struct_mval.svg new file mode 100644 index 00000000000..91ca3efcb9f --- /dev/null +++ b/lib/yyjson-0.12.0/doc/images/struct_mval.svg @@ -0,0 +1,72 @@ + + + struct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8bit + + + 56bit + + + 64bit + + + 64bit + + + + + type + + + length + + + payload + + + next pointer + + + + + \ No newline at end of file diff --git a/lib/yyjson-0.12.0/fuzz/fuzzer.c b/lib/yyjson-0.12.0/fuzz/fuzzer.c new file mode 100644 index 00000000000..993b3b74a0a --- /dev/null +++ b/lib/yyjson-0.12.0/fuzz/fuzzer.c @@ -0,0 +1,26 @@ +#include + +static void test_with_flags(const uint8_t *data, size_t size, + yyjson_read_flag rflg, yyjson_write_flag wflg) { + yyjson_doc *idoc = yyjson_read((const char *)data, size, rflg); + yyjson_mut_doc *mdoc = yyjson_doc_mut_copy(idoc, NULL); + char *ijson = yyjson_write(idoc, wflg, NULL); + if (ijson) free((void *)ijson); + char *mjson = yyjson_mut_write(mdoc, wflg, NULL); + if (mjson) free((void *)mjson); + yyjson_doc_free(idoc); + yyjson_mut_doc_free(mdoc); +} + +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + test_with_flags(data, size, + YYJSON_READ_NOFLAG, + YYJSON_WRITE_NOFLAG); + test_with_flags(data, size, + YYJSON_READ_JSON5, + YYJSON_WRITE_PRETTY | + YYJSON_WRITE_ESCAPE_UNICODE | + YYJSON_WRITE_ESCAPE_SLASHES | + YYJSON_WRITE_ALLOW_INF_AND_NAN); + return 0; +} diff --git a/lib/yyjson-0.12.0/fuzz/fuzzer.dict b/lib/yyjson-0.12.0/fuzz/fuzzer.dict new file mode 100644 index 00000000000..e4523b58012 --- /dev/null +++ b/lib/yyjson-0.12.0/fuzz/fuzzer.dict @@ -0,0 +1,50 @@ +"{}" +",{}" +":{}" +"{\"\":0}" +"{{}}" + +"[]" +",[]" +":[]" +"[0]" +"[[]]" + +"0" +"," +":" +"1.2e-34" + +"true" +"false" +"null" + +"''" +"\\" +"\\b" +"\\f" +"\\n" +"\\r" +"\\t" +"\\u0000" +"\\x00" +"\\0" +"\\uD800\\uDC00" +"\\uDBFF\\uDFFF" + +"//" +"/**/" + +"\x01\x00" +"\x00\x00\x00\x00" +"\x00\x00\x00\x00\x00\x00\x00\x00" +"\x00\x00\x00\x00\x00\x00\x00\x01" +"\x01\x00\x00\x00\x00\x00\x00\x00" +"\x10\x00\x00\x00\x00\x00\x00\x00" + +"\xff\xff" +"\xfe\xff\xff\xee" +"\xff\xff\xff\xff" +"\xfe\xff\xff\xff\xff\xff\xff\xfa" +"\xfb\xff\xff\xff\xff\xff\xff\xff" +"\xff\xff\xff\xff\xff\xff\xff\xff" diff --git a/lib/yyjson-0.12.0/misc/jsoninfo.c b/lib/yyjson-0.12.0/misc/jsoninfo.c new file mode 100644 index 00000000000..e11576e1d9b --- /dev/null +++ b/lib/yyjson-0.12.0/misc/jsoninfo.c @@ -0,0 +1,161 @@ +/*============================================================================== + * A command line tool to print JSON info and rewrite JSON. + * Copyright (C) 2020 Yaoyuan . + * + * Released under the MIT License: + * https://github.com/ibireme/yyjson/blob/master/LICENSE + *============================================================================*/ + +#include +#include "yyjson.h" + +void print_help(void) { + printf("JSON info tool\n"); + printf("Usage: jsoninfo [options] file\n"); + printf("Example of printing info: jsoninfo twitter.json\n"); + printf("Example of minify json: jsoninfo -m -o twitter.min.json twitter.json\n"); + printf("Options:\n"); + printf(" -h --help Print this help.\n"); + printf(" -p --pretty Rewrite with pretty format (default).\n"); + printf(" -m --minify Rewrite with minify format.\n"); + printf(" -e --escape Escape unicode for rewrite.\n"); + printf(" -s --slash Escape slashes for rewrite.\n"); + printf(" -o --output file Output file path for rewrite.\n"); +} + +static const char *O_PATH = NULL; +static const char *O_OUT = NULL; +static bool O_PRETTY = false; +static bool O_MINIFY = false; +static bool O_ESCAPE = false; +static bool O_SLASH = false; + +int main(int argc, const char * argv[]) { + if (argc <= 1) { + print_help(); + return 0; + } + + for (int i = 1; i < argc - 1; i++) { + const char *arg = argv[i]; + size_t len = strlen(arg); + if (len < 2 || arg[0] != '-') { + printf("unknown option: %s\n", arg); + return 0; + } else if (!strcmp(arg, "-h") || !strcmp(arg, "--help")) { + print_help(); + return 0; + } else if (!strcmp(arg, "-p") || !strcmp(arg, "--pretty")) { + if (O_PRETTY) { printf("duplicated option: %s\n", arg); return 0; } + O_PRETTY = true; + } else if (!strcmp(arg, "-m") || !strcmp(arg, "--minify")) { + if (O_MINIFY) { printf("duplicated option: %s\n", arg); return 0; } + O_MINIFY = true; + } else if (!strcmp(arg, "-e") || !strcmp(arg, "--escape")) { + if (O_ESCAPE) { printf("duplicated option: %s\n", arg); return 0; } + O_ESCAPE = true; + } else if (!strcmp(arg, "-s") || !strcmp(arg, "--slash")) { + if (O_SLASH) { printf("duplicated option: %s\n", arg); return 0; } + O_SLASH = true; + } else if (!strcmp(arg, "-o") || !strcmp(arg, "--output")) { + if (O_OUT) { printf("duplicated option: %s\n", arg); return 0; } + if (++i >= argc - 1) { printf("no input file\n"); return 0; } + O_OUT = argv[i]; + } else { + printf("unknown option: %s\n", arg); + return 0; + } + } + O_PATH = argv[argc - 1]; + if (!strcmp(O_PATH, "-h") || !strcmp(O_PATH, "--help")) { + print_help(); + return 0; + } + if (strlen(O_PATH) == 0 || O_PATH[0] == '-') { + printf("no input file\n"); + return 0; + } + if (O_MINIFY && O_PRETTY) { + printf("conflict option --minify and --pretty\n"); + return 0; + } + if (O_MINIFY || O_PRETTY || O_ESCAPE || O_SLASH) { + if (!O_OUT) { + printf("no output file specified\n"); + return 0; + } + } + if (!O_MINIFY && !O_PRETTY) { + O_PRETTY = true; + } + + yyjson_read_err err; + yyjson_doc *doc = yyjson_read_file(O_PATH, 0 , NULL, &err); + if (!doc) { + printf("JSON read fail: %s, position:%ld\n", err.msg, (long)err.pos); + return 0; + } + + if (O_OUT) { + yyjson_write_err werr; + yyjson_write_flag flg = YYJSON_WRITE_NOFLAG; + if (O_PRETTY) flg |= YYJSON_WRITE_PRETTY; + if (O_ESCAPE) flg |= YYJSON_WRITE_ESCAPE_UNICODE; + if (O_SLASH) flg |= YYJSON_WRITE_ESCAPE_SLASHES; + bool suc = yyjson_write_file(O_OUT, doc, flg, NULL, &werr); + if (!suc) { + printf("Write fail: %s.\n", werr.msg); + } + yyjson_doc_free(doc); + return 0; + } + + long num_null = 0; + long num_bool = 0; + long num_int = 0; + long num_real = 0; + long num_str = 0; + long num_obj = 0; + long num_arr = 0; + for (size_t i = 0, max = yyjson_doc_get_val_count(doc); i < max; i++) { + yyjson_val *val = doc->root + i; + switch (yyjson_get_type(val)) { + case YYJSON_TYPE_NULL: num_null++; break; + case YYJSON_TYPE_BOOL: num_bool++; break; + case YYJSON_TYPE_STR: num_str++; break; + case YYJSON_TYPE_OBJ: num_obj++; break; + case YYJSON_TYPE_ARR: num_arr++; break; + case YYJSON_TYPE_NUM: + switch (yyjson_get_subtype(val)) { + case YYJSON_SUBTYPE_UINT: num_int++; break; + case YYJSON_SUBTYPE_SINT: num_int++; break; + case YYJSON_SUBTYPE_REAL: num_real++; break; + default: break; + } + default: break; + } + } + + size_t val_count = yyjson_doc_get_val_count(doc); + size_t read_size = yyjson_doc_get_read_size(doc); + + const char *name = O_PATH; + for (const char *tmp = name, *max = name + strlen(name); tmp < max; tmp++) { + if ((*tmp == '/' || *tmp == '\\') && tmp + 1 < max) { + name = tmp + 1; + } + } + + printf("name: %s\n", name); + printf("size: %ld\n", (long)read_size); + printf("vals: %ld\n", (long)val_count); + printf(" arr: %ld\n", num_arr); + printf(" obj: %ld\n", num_obj); + printf(" str: %ld\n", num_str); + printf(" int: %ld\n", num_int); + printf(" real: %ld\n", num_real); + printf(" bool: %ld\n", num_bool); + printf(" null: %ld\n", num_null); + + return 0; +} diff --git a/lib/yyjson-0.12.0/misc/make_tables.c b/lib/yyjson-0.12.0/misc/make_tables.c new file mode 100644 index 00000000000..227854fb036 --- /dev/null +++ b/lib/yyjson-0.12.0/misc/make_tables.c @@ -0,0 +1,564 @@ +/*============================================================================== + * Make look-up tables for yyjson. + * Copyright (C) 2020 Yaoyuan . + * + * Released under the MIT License: + * https://github.com/ibireme/yyjson/blob/master/LICENSE + *============================================================================*/ + +#include +#include +#include +#include +#include +#include + +typedef float f32; +typedef double f64; +typedef int8_t i8; +typedef uint8_t u8; +typedef int16_t i16; +typedef uint16_t u16; +typedef int32_t i32; +typedef uint32_t u32; +typedef int64_t i64; +typedef uint64_t u64; +typedef size_t usize; + +/*----------------------------------------------------------------------------*/ + +//Generate fp table with C (gmp/mpfr): +//#include +//#include +//void make_pow10_sig_table(void) { +// static const int DEF_PREC = 5000; +// static const int BUF_LEN = 2000; +// char buf[BUF_LEN]; +// +// mpfr_t sigMax, sigMin, half; +// mpfr_t pow10, pow2, div, sub; +// mpfr_inits2(DEF_PREC, sigMax, sigMin, half, NULL); +// mpfr_inits2(DEF_PREC, pow10, pow2, div, sub, NULL); +// +// mpfr_set_ui(sigMax, 0xFFFFFFFFFFFFFFFFULL, MPFR_RNDN); +// mpfr_set_ui(sigMin, 0x8000000000000000ULL, MPFR_RNDN); +// mpfr_set_d(half, 0.5, MPFR_RNDN); +// +// int e10min = -343, e10max = 324, e10step = 1; +// +// printf("#define POW10_SIG_TABLE_MIN_EXP %d\n", e10min); +// printf("#define POW10_SIG_TABLE_MAX_EXP %d\n", e10max); +// printf("#define POW10_SIG_TABLE_MIN_EXACT_EXP %d\n", 0); +// printf("#define POW10_SIG_TABLE_MAX_EXACT_EXP %d\n", 55); +// printf("static const u64 pow10_sig_table[] = {\n"); +// +// for (int e10 = e10min; e10 <= e10max; e10 += e10step) { +// mpfr_set_d(pow10, 10, MPFR_RNDN); +// mpfr_pow_si(pow10, pow10, e10, MPFR_RNDN); // pow10 = 10^e10 +// +// // 10^e10 = 2^e2 +// // e2 = floor(log2(pow(10, e10))) +// // e2 = floor(log2(10) * e10) +// int e2 = (int)floor(log2(10) * e10) - 64 + 1; +// mpfr_set_d(pow2, 2, MPFR_RNDN); +// mpfr_pow_si(pow2, pow2, e2, MPFR_RNDN); // pow2 = 2^e2 +// mpfr_div(div, pow10, pow2, MPFR_RNDN); // div = pow10 / pow2; +// if (mpfr_cmp(div, sigMin) < 0 || mpfr_cmp(div, sigMax) > 0) { +// printf("err!\n"); // make sure the highest bit is 1 (normalized) +// } +// +// mpfr_set_d(pow2, 2, MPFR_RNDN); +// mpfr_pow_si(pow2, pow2, e2, MPFR_RNDN); // pow2 = 2^e2 +// mpfr_div(div, pow10, pow2, MPFR_RNDN); // div = pow10 / pow2; +// +// mpfr_snprintf(buf, BUF_LEN, "%.1000Rg", div); +// u64 val = strtoull(buf, NULL, 0); +// mpfr_sub_ui(sub, div, val, MPFR_RNDN); // sub = div - (uint64_t)div +// int cmp = mpfr_cmp(sub, half); +// if (cmp == 0) printf("err!\n"); // avoid round to even +// if (cmp > 0 && val == UINT64_MAX) printf("err!\n"); // avoid round up overflow +// +// printf(" "); +// printf("U64(0x%.8X, 0x%.8X),", (u32)(val >> 32), (u32)val); +// +// mpfr_set_d(pow2, 2, MPFR_RNDN); +// mpfr_pow_si(pow2, pow2, 64, MPFR_RNDN); // pow2 = 2^64 +// mpfr_mul(sub, sub, pow2, MPFR_RNDN); // sub *= 2^64 +// +// mpfr_snprintf(buf, BUF_LEN, "%.1000Rg", sub); +// u64 val2 = strtoull(buf, NULL, 0); +// mpfr_sub_ui(sub, sub, val2, MPFR_RNDN); // sub -= (uint64_t)sub +// int cmp2 = mpfr_cmp(sub, half); +// if (cmp2 == 0) printf("err!\n"); // avoid round to even +// if ((cmp > 0) && (val2 < ((u64)1) << 63)) printf("err!\n"); // avoid round up overflow +// bool is_exact = mpfr_cmp_ui(sub, 0) == 0; +// +// printf(" "); +// printf("U64(0x%.8X, 0x%.8X)", (u32)(val2 >> 32), (u32)val2); +// printf("%c", e10 < e10max ? ',' : ' '); +// printf(" /* %s 10^%d */", is_exact ? "==" : "~=", e10); +// printf("\n"); +// } +// +// printf("};\n"); +// printf("\n"); +// +// mpfr_clears(sigMax, sigMin, half, NULL); +// mpfr_clears(pow10, pow2, div, sub, NULL); +//} + + + +//Generate fp table with Python: +//import decimal +//from decimal import Decimal +// +//POW10_SIG_TABLE_MIN_EXP = -343 +//POW10_SIG_TABLE_MAX_EXP = 324 +//POW10_SIG_TABLE_MIN_EXACT_EXP = 0 +//POW10_SIG_TABLE_MAX_EXACT_EXP = 55 +// +// +//def calc_pow10_u128(p: int) -> int: +// """ +// Calculate the power of 10 and return the high 128 bits of the result. +// """ +// +// # Calculate 10^p with high precision +// decimal.getcontext().prec = 5000 +// sig = Decimal(10) ** p +// +// # Normalize the sig to range [0.5,1) +// while sig < 1: +// sig *= 2 +// while sig >= 1: +// sig /= 2 +// +// # Calculate the highest 128 bits of the sig +// all = sig * (2 ** 128) +// top = int(all) +// return top +// +// +//def is_pow10_u128_exact(p: int) -> bool: +// """ +// Check if calc_pow10_u128(p) is exact value. +// """ +// +// # Calculate 10^p with high precision +// decimal.getcontext().prec = 5000 +// sig = Decimal(10) ** p +// +// # Normalize the sig to range [0.5,1) +// while sig < 1: +// sig *= 2 +// while sig >= 1: +// sig /= 2 +// +// # Calculate the highest 128 bits of the sig +// all = sig * (2 ** 128) +// top = int(all) +// return top == all +// +// +//def print_pow10_u128_table(): +// """ +// Print the power of 10 table for yy_strtod() and yy_dtoa(). +// """ +// print(f"#define POW10_SIG_TABLE_MIN_EXP {POW10_SIG_TABLE_MIN_EXP}") +// print(f"#define POW10_SIG_TABLE_MAX_EXP {POW10_SIG_TABLE_MAX_EXP}") +// print(f"#define POW10_SIG_TABLE_MIN_EXACT_EXP {POW10_SIG_TABLE_MIN_EXACT_EXP}") +// print(f"#define POW10_SIG_TABLE_MAX_EXACT_EXP {POW10_SIG_TABLE_MAX_EXACT_EXP}") +// print("static const u64 pow10_sig_table[] = {") +// for p in range(POW10_SIG_TABLE_MIN_EXP, POW10_SIG_TABLE_MAX_EXP + 1): +// is_exact = is_pow10_u128_exact(p) +// assert is_exact == (p in range(POW10_SIG_TABLE_MIN_EXACT_EXP, POW10_SIG_TABLE_MAX_EXACT_EXP + 1)) +// +// c = calc_pow10_u128(p) +// s = f"{c:X}" +// line = f" U64(0x{s[0:8]}, 0x{s[8:16]}), U64(0x{s[16:24]}, 0x{s[24:32]})" +// if is_exact: +// line += f", /* == 10^{p} */" +// elif p == POW10_SIG_TABLE_MAX_EXP: +// line += f" /* ~= 10^{p} */" +// else: +// line += f", /* ~= 10^{p} */" +// print(line) +// print("};") +// +// +//if __name__ == "__main__": +// print_pow10_u128_table() + + + +/*----------------------------------------------------------------------------*/ + +static void make_dec_trailing_zero_table(void) { + int table_len = 100; + int line_len = 10; + + printf("static const u8 dec_trailing_zero_table[] = {\n"); + for (int i = 0; i < table_len; i++) { + int tz = 0; + if (i == 0) tz = 2; + else { + if ((i % 10) == 0) tz++; + } + + bool is_head = ((i % line_len) == 0); + bool is_tail = ((i % line_len) == line_len - 1); + bool is_last = i + 1 == table_len; + + if (is_head) printf(" "); + + printf("%1d", tz); + + if (i + 1 < table_len) printf(","); + if (!is_tail && !is_last) printf(" "); else printf("\n"); + } + printf("};\n"); + printf("\n"); +} + +/*----------------------------------------------------------------------------*/ + +/* char_table1 */ +#define CHAR_TYPE_ASCII (1 << 0) /* Except: ["\], [0x00-0x1F, 0x80-0xFF] */ +#define CHAR_TYPE_ASCII_SQ (1 << 1) /* Except: ['\], [0x00-0x1F, 0x80-0xFF] */ +#define CHAR_TYPE_SPACE (1 << 2) /* Whitespace: [ \t\n\r] */ +#define CHAR_TYPE_SPACE_EXT (1 << 3) /* Whitespace: [ \t\n\r\v\f], JSON5 */ +#define CHAR_TYPE_NUM (1 << 4) /* Number: [.-+0-9] */ +#define CHAR_TYPE_COMMENT (1 << 5) /* Comment: [/] */ + +/* char_table2 */ +#define CHAR_TYPE_EOL (1 << 0) /* End of line: [\r\n] */ +#define CHAR_TYPE_EOL_EXT (1 << 1) /* End of line: [\r\n], JSON5 */ +#define CHAR_TYPE_ID_START (1 << 2) /* ID start: [_$A-Za-z\], U+0080+ */ +#define CHAR_TYPE_ID_NEXT (1 << 3) /* ID next: [_$A-Za-z0-9\], U+0080+ */ +#define CHAR_TYPE_ID_ASCII (1 << 4) /* ID next ASCII: [_$A-Za-z0-9] */ + +/* char_table3 */ +#define CHAR_TYPE_SIGN (1 << 0) /* [-+] */ +#define CHAR_TYPE_DIGIT (1 << 1) /* [0-9] */ +#define CHAR_TYPE_NONZERO (1 << 2) /* [1-9] */ +#define CHAR_TYPE_EXP (1 << 3) /* [eE] */ +#define CHAR_TYPE_DOT (1 << 4) /* [.] */ + +static void print_char_table(u8 *table, const char *name) { + int table_len = 256; + int line_len = 8; + + printf("static const u8 %s[256] = {\n", name); + for (int i = 0; i < table_len; i++) { + bool is_head = ((i % line_len) == 0); + bool is_tail = ((i % line_len) == line_len - 1); + bool is_last = i + 1 == table_len; + + if (is_head) printf(" "); + printf("0x%.2X", table[i]); + if (i + 1 < table_len) printf(","); + if (!is_tail && !is_last) printf(" "); else printf("\n"); + } + printf("};\n"); + printf("\n"); +} + +static void make_char_table(void) { + u8 table[256]; + + // ------------- table1 ------------- + memset(table, 0, sizeof(table)); + + for (int i = 0; i <= 0xFF; i++) { + table[i] |= (CHAR_TYPE_ASCII | CHAR_TYPE_ASCII_SQ); + } + table['\"'] &= ~(u8)(CHAR_TYPE_ASCII); // double quote + table['\''] &= ~(u8)(CHAR_TYPE_ASCII_SQ); // single quote + table['\\'] &= ~(u8)(CHAR_TYPE_ASCII | CHAR_TYPE_ASCII_SQ); + for (int i = 0x00; i <= 0x1F; i++) { + table[i] &= ~(u8)(CHAR_TYPE_ASCII | CHAR_TYPE_ASCII_SQ); + } + for (int i = 0x80; i <= 0xFF; i++) { + table[i] &= ~(u8)(CHAR_TYPE_ASCII | CHAR_TYPE_ASCII_SQ); + } + + table[' '] |= (CHAR_TYPE_SPACE | CHAR_TYPE_SPACE_EXT); + table['\t'] |= (CHAR_TYPE_SPACE | CHAR_TYPE_SPACE_EXT); + table['\n'] |= (CHAR_TYPE_SPACE | CHAR_TYPE_SPACE_EXT); + table['\r'] |= (CHAR_TYPE_SPACE | CHAR_TYPE_SPACE_EXT); + table['\v'] |= CHAR_TYPE_SPACE_EXT; + table['\f'] |= CHAR_TYPE_SPACE_EXT; + table[0xC2] |= CHAR_TYPE_SPACE_EXT; // U+00a0 [C2 A0] non-breaking space + table[0xE1] |= CHAR_TYPE_SPACE_EXT; // U+1680 [E1 9A 80] ogham space mark + table[0xE2] |= CHAR_TYPE_SPACE_EXT; // U+2000+ [E2 XX XX] unicode 'Zs' category + table[0xE3] |= CHAR_TYPE_SPACE_EXT; // U+3000 [E3 80 80] ideographical space + table[0xEF] |= CHAR_TYPE_SPACE_EXT; // U+FEFF [EF BB BF] byte order mark + table['.'] |= CHAR_TYPE_NUM; + table['-'] |= CHAR_TYPE_NUM; + table['+'] |= CHAR_TYPE_NUM; + for (int i = '0'; i <= '9'; i++) { + table[i] |= CHAR_TYPE_NUM; + } + + table['/'] |= CHAR_TYPE_COMMENT; + print_char_table(table, "char_table1"); + + + // ------------- table2 ------------- + memset(table, 0, sizeof(table)); + table['\r'] |= (CHAR_TYPE_EOL | CHAR_TYPE_EOL_EXT); + table['\n'] |= (CHAR_TYPE_EOL | CHAR_TYPE_EOL_EXT); + table[0xE2] |= CHAR_TYPE_EOL_EXT; // U+2028 [E2 80 A8], U+2029 [E2 80 A9] + table['_'] |= (CHAR_TYPE_ID_START | CHAR_TYPE_ID_NEXT | CHAR_TYPE_ID_ASCII); + table['$'] |= (CHAR_TYPE_ID_START | CHAR_TYPE_ID_NEXT | CHAR_TYPE_ID_ASCII); + table['\\'] |= (CHAR_TYPE_ID_START | CHAR_TYPE_ID_NEXT); + for (int i = 'A'; i <= 'Z'; i++) { + table[i] |= (CHAR_TYPE_ID_START | CHAR_TYPE_ID_NEXT | CHAR_TYPE_ID_ASCII); + } + for (int i = 'a'; i <= 'z'; i++) { + table[i] |= (CHAR_TYPE_ID_START | CHAR_TYPE_ID_NEXT | CHAR_TYPE_ID_ASCII); + } + for (int i = '0'; i <= '9'; i++) { + table[i] |= (CHAR_TYPE_ID_NEXT | CHAR_TYPE_ID_ASCII); + } + for (int i = 0x80; i <= 0xFF; i++) { + table[i] |= (CHAR_TYPE_ID_START | CHAR_TYPE_ID_NEXT); + } + print_char_table(table, "char_table2"); + + + // ------------- table3 ------------- + memset(table, 0, sizeof(table)); + table['-'] |= CHAR_TYPE_SIGN; + table['+'] |= CHAR_TYPE_SIGN; + table['e'] |= CHAR_TYPE_EXP; + table['E'] |= CHAR_TYPE_EXP; + table['.'] |= CHAR_TYPE_DOT; + for (int i = '0'; i <= '9'; i++) { + table[i] |= CHAR_TYPE_DIGIT; + } + for (int i = '1'; i <= '9'; i++) { + table[i] |= CHAR_TYPE_NONZERO; + } + print_char_table(table, "char_table3"); +} + + +/*----------------------------------------------------------------------------*/ + +static void make_hex_conv_table(void) { + u8 table[256] = {0}; + + for (int i = 0; i < 256; i++) { + if ('0' <= i && i <= '9') { + table[i] = (u8)(i - '0'); + } else if ('a' <= i && i <= 'f') { + table[i] = (u8)(0xA + i - 'a'); + } else if ('A' <= i && i <= 'F') { + table[i] = (u8)(0xA + i - 'A'); + } else { + table[i] = 0xF0; + } + } + + int table_len = 256; + int line_len = 8; + printf("static const u8 hex_conv_table[256] = {\n"); + for (int i = 0; i < table_len; i++) { + bool is_head = ((i % line_len) == 0); + bool is_tail = ((i % line_len) == line_len - 1); + bool is_last = i + 1 == table_len; + + if (is_head) printf(" "); + printf("0x%.2X", table[i]); + if (i + 1 < table_len) printf(","); + if (!is_tail && !is_last) printf(" "); else printf("\n"); + } + printf("};\n"); + printf("\n"); +} + +/*----------------------------------------------------------------------------*/ + +static void make_u64_pow10_table(void) { + int table_len = 20; + int line_len = 2; + + printf("static const u64 u64_pow10_table[U64_POW10_MAX_EXP + 1] = {\n"); + for (int i = 0; i < table_len; i++) { + bool is_head = ((i % line_len) == 0); + bool is_tail = ((i % line_len) == line_len - 1); + bool is_last = i + 1 == table_len; + + u64 num = 1; + for (int e = 0; e < i; e++) num *= 10; + + if (is_head) printf(" "); + printf("U64(0x%.8X, 0x%.8X)", (u32)(num >> 32), (u32)(num)); + if (i + 1 < table_len) printf(","); + if (!is_tail && !is_last) printf(" "); else printf("\n"); + } + printf("};\n"); + printf("\n"); +} + +/*----------------------------------------------------------------------------*/ + +/** Character encode type, if (type > CHAR_ENC_ERR_1) bytes = type / 2; */ +#define CHAR_ENC_CPY_1 0 /* 1-byte UTF-8, copy. */ +#define CHAR_ENC_ERR_1 1 /* 1-byte UTF-8, error. */ +#define CHAR_ENC_ESC_A 2 /* 1-byte ASCII, escaped as '\x'. */ +#define CHAR_ENC_ESC_1 3 /* 1-byte UTF-8, escaped as '\uXXXX'. */ +#define CHAR_ENC_CPY_2 4 /* 2-byte UTF-8, copy. */ +#define CHAR_ENC_ESC_2 5 /* 2-byte UTF-8, escaped as '\uXXXX'. */ +#define CHAR_ENC_CPY_3 6 /* 3-byte UTF-8, copy. */ +#define CHAR_ENC_ESC_3 7 /* 3-byte UTF-8, escaped as '\uXXXX'. */ +#define CHAR_ENC_CPY_4 8 /* 4-byte UTF-8, copy. */ +#define CHAR_ENC_ESC_4 9 /* 4-byte UTF-8, escaped as '\uXXXX\uXXXX'. */ + +static void make_enc_table_one(const char *name, u8 *table, + int table_len, int line_len) { + printf("static const char_enc_type %s[%d] = {\n", name, table_len); + for (int i = 0; i < table_len; i++) { + bool is_head = ((i % line_len) == 0); + bool is_tail = ((i % line_len) == line_len - 1); + bool is_last = i + 1 == table_len; + + if (is_head) printf(" "); + printf("%d", table[i]); + if (i + 1 < table_len) printf(","); + if (!is_tail && !is_last) printf(" "); else printf("\n"); + } + printf("};\n"); + printf("\n"); +} + +static void make_enc_table(void) { + u8 table[256]; + int table_len = 256; + int line_len = 16; + + // ASCII: copy or escape + for (int i = 0; i <= 0x80; i++) { + if (i == '\b') table[i] = CHAR_ENC_ESC_A; else + if (i == '\t') table[i] = CHAR_ENC_ESC_A; else + if (i == '\n') table[i] = CHAR_ENC_ESC_A; else + if (i == '\f') table[i] = CHAR_ENC_ESC_A; else + if (i == '\r') table[i] = CHAR_ENC_ESC_A; else + if (i == '\\') table[i] = CHAR_ENC_ESC_A; else + if (i == '"') table[i] = CHAR_ENC_ESC_A; else + if (i <= 0x1F) table[i] = CHAR_ENC_ESC_1; else + table[i] = CHAR_ENC_CPY_1; + } + + // Unicode: copy, do not escape + for (int i = 0x80; i <= 0xFF; i++) { + if ((i & 0xE0) == 0xC0) table[i] = CHAR_ENC_CPY_2; else + if ((i & 0xF0) == 0xE0) table[i] = CHAR_ENC_CPY_3; else + if ((i & 0xF8) == 0xF0) table[i] = CHAR_ENC_CPY_4; else + table[i] = CHAR_ENC_ERR_1; + } + table['/'] = CHAR_ENC_CPY_1; + make_enc_table_one("enc_table_cpy", table, table_len, line_len); + table['/'] = CHAR_ENC_ESC_A; + make_enc_table_one("enc_table_cpy_slash", table, table_len, line_len); + + // Unicode: escape + for (int i = 0x80; i <= 0xFF; i++) { + if ((i & 0xE0) == 0xC0) table[i] = CHAR_ENC_ESC_2; else + if ((i & 0xF0) == 0xE0) table[i] = CHAR_ENC_ESC_3; else + if ((i & 0xF8) == 0xF0) table[i] = CHAR_ENC_ESC_4; else + table[i] = CHAR_ENC_ERR_1; + } + table['/'] = CHAR_ENC_CPY_1; + make_enc_table_one("enc_table_esc", table, table_len, line_len); + table['/'] = CHAR_ENC_ESC_A; + make_enc_table_one("enc_table_esc_slash", table, table_len, line_len); +} + +/*----------------------------------------------------------------------------*/ + +static void make_esc_hex_char_table(void) { + int table_len = 512; + int line_len = 8; + + printf("static const u8 esc_hex_char_table[512] = {\n"); + for (int i = 0; i < table_len; i++) { + bool is_head = ((i % line_len) == 0); + bool is_tail = ((i % line_len) == line_len - 1); + bool is_last = i + 1 == table_len; + + if (is_head) printf(" "); + + char buf[16]; + sprintf(buf, "%.2X", i / 2); + printf("'%c'", buf[i % 2]); + + if (i + 1 < table_len) printf(","); + if (!is_tail && !is_last) printf(" "); else printf("\n"); + } + printf("};\n"); + printf("\n"); +} + +/*----------------------------------------------------------------------------*/ + +static void make_esc_single_char_table(void) { + u8 table[512]; + int table_len = 512; + int line_len = 8; + + memset(table, ' ', 512); + table['\b' * 2 + 0] = '\\'; + table['\b' * 2 + 1] = 'b'; + + table['\t' * 2 + 0] = '\\'; + table['\t' * 2 + 1] = 't'; + + table['\n' * 2 + 0] = '\\'; + table['\n' * 2 + 1] = 'n'; + + table['\f' * 2 + 0] = '\\'; + table['\f' * 2 + 1] = 'f'; + + table['\r' * 2 + 0] = '\\'; + table['\r' * 2 + 1] = 'r'; + + table['\\' * 2 + 0] = '\\'; + table['\\' * 2 + 1] = '\\'; + + table['/' * 2 + 0] = '\\'; + table['/' * 2 + 1] = '/'; + + table['"' * 2 + 0] = '\\'; + table['"' * 2 + 1] = '"'; + + printf("static const u8 esc_single_char_table[512] = {\n"); + for (int i = 0; i < table_len; i++) { + bool is_head = ((i % line_len) == 0); + bool is_tail = ((i % line_len) == line_len - 1); + bool is_last = i + 1 == table_len; + + if (is_head) printf(" "); + + if (table[i] == '\\') printf("'\\\\'"); + else printf("'%c'", table[i]); + + if (i + 1 < table_len) printf(","); + if (!is_tail && !is_last) printf(" "); else printf("\n"); + } + printf("};\n"); + printf("\n"); +} + +int main(void) { + make_dec_trailing_zero_table(); + make_char_table(); + make_hex_conv_table(); + make_u64_pow10_table(); + make_enc_table(); + make_esc_hex_char_table(); + make_esc_single_char_table(); + return 0; +} diff --git a/lib/yyjson-0.12.0/src/yyjson.c b/lib/yyjson-0.12.0/src/yyjson.c new file mode 100644 index 00000000000..916b9880143 --- /dev/null +++ b/lib/yyjson-0.12.0/src/yyjson.c @@ -0,0 +1,11225 @@ +/*============================================================================== + Copyright (c) 2020 YaoYuan + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + *============================================================================*/ + +#include "yyjson.h" +#include /* for `HUGE_VAL/INFINIY/NAN` macros, no libm required */ + + + +/*============================================================================== + * MARK: - Warning Suppress (Private) + *============================================================================*/ + +#if defined(__clang__) +# pragma clang diagnostic ignored "-Wunused-function" +# pragma clang diagnostic ignored "-Wunused-parameter" +# pragma clang diagnostic ignored "-Wunused-label" +# pragma clang diagnostic ignored "-Wunused-macros" +# pragma clang diagnostic ignored "-Wunused-variable" +#elif defined(__GNUC__) +# pragma GCC diagnostic ignored "-Wunused-function" +# pragma GCC diagnostic ignored "-Wunused-parameter" +# pragma GCC diagnostic ignored "-Wunused-label" +# pragma GCC diagnostic ignored "-Wunused-macros" +# pragma GCC diagnostic ignored "-Wunused-variable" +#elif defined(_MSC_VER) +# pragma warning(disable:4100) /* unreferenced formal parameter */ +# pragma warning(disable:4101) /* unreferenced variable */ +# pragma warning(disable:4102) /* unreferenced label */ +# pragma warning(disable:4127) /* conditional expression is constant */ +# pragma warning(disable:4706) /* assignment within conditional expression */ +#endif + + + +/*============================================================================== + * MARK: - Version (Public) + *============================================================================*/ + +uint32_t yyjson_version(void) { + return YYJSON_VERSION_HEX; +} + + + +/*============================================================================== + * MARK: - Flags (Private) + *============================================================================*/ + +/* msvc intrinsic */ +#if YYJSON_MSC_VER >= 1400 +# include +# if defined(_M_AMD64) || defined(_M_ARM64) +# define MSC_HAS_BIT_SCAN_64 1 +# pragma intrinsic(_BitScanForward64) +# pragma intrinsic(_BitScanReverse64) +# else +# define MSC_HAS_BIT_SCAN_64 0 +# endif +# if defined(_M_AMD64) || defined(_M_ARM64) || \ + defined(_M_IX86) || defined(_M_ARM) +# define MSC_HAS_BIT_SCAN 1 +# pragma intrinsic(_BitScanForward) +# pragma intrinsic(_BitScanReverse) +# else +# define MSC_HAS_BIT_SCAN 0 +# endif +# if defined(_M_AMD64) +# define MSC_HAS_UMUL128 1 +# pragma intrinsic(_umul128) +# else +# define MSC_HAS_UMUL128 0 +# endif +#else +# define MSC_HAS_BIT_SCAN_64 0 +# define MSC_HAS_BIT_SCAN 0 +# define MSC_HAS_UMUL128 0 +#endif + +/* gcc builtin */ +#if yyjson_has_builtin(__builtin_clzll) || yyjson_gcc_available(3, 4, 0) +# define GCC_HAS_CLZLL 1 +#else +# define GCC_HAS_CLZLL 0 +#endif + +#if yyjson_has_builtin(__builtin_ctzll) || yyjson_gcc_available(3, 4, 0) +# define GCC_HAS_CTZLL 1 +#else +# define GCC_HAS_CTZLL 0 +#endif + +/* int128 type */ +#if defined(__SIZEOF_INT128__) && (__SIZEOF_INT128__ == 16) && \ + (defined(__GNUC__) || defined(__clang__) || defined(__INTEL_COMPILER)) +# define YYJSON_HAS_INT128 1 +#else +# define YYJSON_HAS_INT128 0 +#endif + +/* IEEE 754 floating-point binary representation */ +#if defined(__STDC_IEC_559__) || defined(__STDC_IEC_60559_BFP__) +# define YYJSON_HAS_IEEE_754 1 +#elif FLT_RADIX == 2 && \ + FLT_MANT_DIG == 24 && FLT_DIG == 6 && \ + FLT_MIN_EXP == -125 && FLT_MAX_EXP == 128 && \ + FLT_MIN_10_EXP == -37 && FLT_MAX_10_EXP == 38 && \ + DBL_MANT_DIG == 53 && DBL_DIG == 15 && \ + DBL_MIN_EXP == -1021 && DBL_MAX_EXP == 1024 && \ + DBL_MIN_10_EXP == -307 && DBL_MAX_10_EXP == 308 +# define YYJSON_HAS_IEEE_754 1 +#else +# define YYJSON_HAS_IEEE_754 0 +# undef YYJSON_DISABLE_FAST_FP_CONV +# define YYJSON_DISABLE_FAST_FP_CONV 1 +#endif + +/* + Correct rounding in double number computations. + + On the x86 architecture, some compilers may use x87 FPU instructions for + floating-point arithmetic. The x87 FPU loads all floating point number as + 80-bit double-extended precision internally, then rounds the result to original + precision, which may produce inaccurate results. For a more detailed + explanation, see the paper: https://arxiv.org/abs/cs/0701192 + + Here are some examples of double precision calculation error: + + 2877.0 / 1e6 == 0.002877, but x87 returns 0.0028770000000000002 + 43683.0 * 1e21 == 4.3683e25, but x87 returns 4.3683000000000004e25 + + Here are some examples of compiler flags to generate x87 instructions on x86: + + clang -m32 -mno-sse + gcc/icc -m32 -mfpmath=387 + msvc /arch:SSE or /arch:IA32 + + If we are sure that there's no similar error described above, we can define the + YYJSON_DOUBLE_MATH_CORRECT as 1 to enable the fast path calculation. This is + not an accurate detection, it's just try to avoid the error at compile-time. + An accurate detection can be done at run-time: + + bool is_double_math_correct(void) { + volatile double r = 43683.0; + r *= 1e21; + return r == 4.3683e25; + } + + See also: utils.h in https://github.com/google/double-conversion/ + */ +#if !defined(FLT_EVAL_METHOD) && defined(__FLT_EVAL_METHOD__) +# define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ +#endif + +#if defined(FLT_EVAL_METHOD) && FLT_EVAL_METHOD != 0 && FLT_EVAL_METHOD != 1 +# define YYJSON_DOUBLE_MATH_CORRECT 0 +#elif defined(i386) || defined(__i386) || defined(__i386__) || \ + defined(_X86_) || defined(__X86__) || defined(_M_IX86) || \ + defined(__I86__) || defined(__IA32__) || defined(__THW_INTEL) +# if (defined(_MSC_VER) && defined(_M_IX86_FP) && _M_IX86_FP == 2) || \ + (defined(__SSE2_MATH__) && __SSE2_MATH__) +# define YYJSON_DOUBLE_MATH_CORRECT 1 +# else +# define YYJSON_DOUBLE_MATH_CORRECT 0 +# endif +#elif defined(__mc68000__) || defined(__pnacl__) || defined(__native_client__) +# define YYJSON_DOUBLE_MATH_CORRECT 0 +#else +# define YYJSON_DOUBLE_MATH_CORRECT 1 +#endif + +/* + Detect the endianness at compile-time. + YYJSON_ENDIAN == YYJSON_BIG_ENDIAN + YYJSON_ENDIAN == YYJSON_LITTLE_ENDIAN + */ +#define YYJSON_BIG_ENDIAN 4321 +#define YYJSON_LITTLE_ENDIAN 1234 + +#if yyjson_has_include() +# include /* POSIX */ +#endif +#if yyjson_has_include() +# include /* Linux */ +#elif yyjson_has_include() +# include /* BSD, Android */ +#elif yyjson_has_include() +# include /* BSD, Darwin */ +#endif + +#if defined(BYTE_ORDER) && BYTE_ORDER +# if defined(BIG_ENDIAN) && (BYTE_ORDER == BIG_ENDIAN) +# define YYJSON_ENDIAN YYJSON_BIG_ENDIAN +# elif defined(LITTLE_ENDIAN) && (BYTE_ORDER == LITTLE_ENDIAN) +# define YYJSON_ENDIAN YYJSON_LITTLE_ENDIAN +# endif +#elif defined(__BYTE_ORDER) && __BYTE_ORDER +# if defined(__BIG_ENDIAN) && (__BYTE_ORDER == __BIG_ENDIAN) +# define YYJSON_ENDIAN YYJSON_BIG_ENDIAN +# elif defined(__LITTLE_ENDIAN) && (__BYTE_ORDER == __LITTLE_ENDIAN) +# define YYJSON_ENDIAN YYJSON_LITTLE_ENDIAN +# endif +#elif defined(__BYTE_ORDER__) && __BYTE_ORDER__ +# if defined(__ORDER_BIG_ENDIAN__) && \ + (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +# define YYJSON_ENDIAN YYJSON_BIG_ENDIAN +# elif defined(__ORDER_LITTLE_ENDIAN__) && \ + (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) +# define YYJSON_ENDIAN YYJSON_LITTLE_ENDIAN +# endif +#elif (defined(__LITTLE_ENDIAN__) && __LITTLE_ENDIAN__ == 1) || \ + defined(__i386) || defined(__i386__) || \ + defined(_X86_) || defined(__X86__) || \ + defined(_M_IX86) || defined(__THW_INTEL__) || \ + defined(__x86_64) || defined(__x86_64__) || \ + defined(__amd64) || defined(__amd64__) || \ + defined(_M_AMD64) || defined(_M_X64) || \ + defined(_M_ARM) || defined(_M_ARM64) || \ + defined(__ARMEL__) || defined(__THUMBEL__) || defined(__AARCH64EL__) || \ + defined(_MIPSEL) || defined(__MIPSEL) || defined(__MIPSEL__) || \ + defined(__EMSCRIPTEN__) || defined(__wasm__) || \ + defined(__loongarch__) +# define YYJSON_ENDIAN YYJSON_LITTLE_ENDIAN +#elif (defined(__BIG_ENDIAN__) && __BIG_ENDIAN__ == 1) || \ + defined(__ARMEB__) || defined(__THUMBEB__) || defined(__AARCH64EB__) || \ + defined(_MIPSEB) || defined(__MIPSEB) || defined(__MIPSEB__) || \ + defined(__or1k__) || defined(__OR1K__) +# define YYJSON_ENDIAN YYJSON_BIG_ENDIAN +#else +# define YYJSON_ENDIAN 0 /* unknown endian, detect at run-time */ +#endif + +/* + This macro controls how yyjson handles unaligned memory accesses. + + By default, yyjson uses `memcpy()` for memory copying. This allows the compiler + to optimize the code and emit unaligned memory access instructions when + supported by the target architecture. + + However, on some older compilers or architectures where `memcpy()` is not + well-optimized and may result in unnecessary function calls, defining this + macro as 1 may help. In such cases, yyjson switches to manual byte-by-byte + access, which can potentially improve performance. + + An example of the generated assembly code for ARM can be found here: + https://godbolt.org/z/334jjhxPT + + This flag is already enabled for common architectures in the following code, + so manual configuration is usually unnecessary. If unsure, you can check the + generated assembly or run benchmarks to make an informed decision. + */ +#ifndef YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS +# if defined(__ia64) || defined(_IA64) || defined(__IA64__) || \ + defined(__ia64__) || defined(_M_IA64) || defined(__itanium__) +# define YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS 1 /* Itanium */ +# elif (defined(__arm__) || defined(__arm64__) || defined(__aarch64__)) && \ + (defined(__GNUC__) || defined(__clang__)) && \ + (!defined(__ARM_FEATURE_UNALIGNED) || !__ARM_FEATURE_UNALIGNED) +# define YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS 1 /* ARM */ +# elif defined(__sparc) || defined(__sparc__) +# define YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS 1 /* SPARC */ +# elif defined(__mips) || defined(__mips__) || defined(__MIPS__) +# define YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS 1 /* MIPS */ +# elif defined(__m68k__) || defined(M68000) +# define YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS 1 /* M68K */ +# else +# define YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS 0 +# endif +#endif + +/* + Estimated initial ratio of the JSON data (data_size / value_count). + For example: + + data: {"id":12345678,"name":"Harry"} + data_size: 30 + value_count: 5 + ratio: 6 + + yyjson uses dynamic memory with a growth factor of 1.5 when reading and writing + JSON, the ratios below are used to determine the initial memory size. + + A too large ratio will waste memory, and a too small ratio will cause multiple + memory growths and degrade performance. Currently, these ratios are generated + with some commonly used JSON datasets. + */ +#define YYJSON_READER_ESTIMATED_PRETTY_RATIO 16 +#define YYJSON_READER_ESTIMATED_MINIFY_RATIO 6 +#define YYJSON_WRITER_ESTIMATED_PRETTY_RATIO 32 +#define YYJSON_WRITER_ESTIMATED_MINIFY_RATIO 18 + +/* The initial and maximum size of the memory pool's chunk in yyjson_mut_doc. */ +#define YYJSON_MUT_DOC_STR_POOL_INIT_SIZE 0x100 +#define YYJSON_MUT_DOC_STR_POOL_MAX_SIZE 0x10000000 +#define YYJSON_MUT_DOC_VAL_POOL_INIT_SIZE (0x10 * sizeof(yyjson_mut_val)) +#define YYJSON_MUT_DOC_VAL_POOL_MAX_SIZE (0x1000000 * sizeof(yyjson_mut_val)) + +/* The minimum size of the dynamic allocator's chunk. */ +#define YYJSON_ALC_DYN_MIN_SIZE 0x1000 + +/* Default value for compile-time options. */ +#ifndef YYJSON_DISABLE_READER +#define YYJSON_DISABLE_READER 0 +#endif +#ifndef YYJSON_DISABLE_WRITER +#define YYJSON_DISABLE_WRITER 0 +#endif +#ifndef YYJSON_DISABLE_INCR_READER +#define YYJSON_DISABLE_INCR_READER 0 +#endif +#ifndef YYJSON_DISABLE_UTILS +#define YYJSON_DISABLE_UTILS 0 +#endif +#ifndef YYJSON_DISABLE_FAST_FP_CONV +#define YYJSON_DISABLE_FAST_FP_CONV 0 +#endif +#ifndef YYJSON_DISABLE_NON_STANDARD +#define YYJSON_DISABLE_NON_STANDARD 0 +#endif +#ifndef YYJSON_DISABLE_UTF8_VALIDATION +#define YYJSON_DISABLE_UTF8_VALIDATION 0 +#endif + + + +/*============================================================================== + * MARK: - Macros (Private) + *============================================================================*/ + +/* Macros used for loop unrolling and other purpose. */ +#define repeat2(x) { x x } +#define repeat4(x) { x x x x } +#define repeat8(x) { x x x x x x x x } +#define repeat16(x) { x x x x x x x x x x x x x x x x } + +#define repeat2_incr(x) { x(0) x(1) } +#define repeat4_incr(x) { x(0) x(1) x(2) x(3) } +#define repeat8_incr(x) { x(0) x(1) x(2) x(3) x(4) x(5) x(6) x(7) } +#define repeat16_incr(x) { x(0) x(1) x(2) x(3) x(4) x(5) x(6) x(7) \ + x(8) x(9) x(10) x(11) x(12) x(13) x(14) x(15) } +#define repeat_in_1_18(x) { x(1) x(2) x(3) x(4) x(5) x(6) x(7) x(8) \ + x(9) x(10) x(11) x(12) x(13) x(14) x(15) x(16) \ + x(17) x(18) } + +/* Macros used to provide branch prediction information for compiler. */ +#undef likely +#define likely(x) yyjson_likely(x) +#undef unlikely +#define unlikely(x) yyjson_unlikely(x) + +/* Macros used to provide inline information for compiler. */ +#undef static_inline +#define static_inline static yyjson_inline +#undef static_noinline +#define static_noinline static yyjson_noinline + +/* Macros for min and max. */ +#undef yyjson_min +#define yyjson_min(x, y) ((x) < (y) ? (x) : (y)) +#undef yyjson_max +#define yyjson_max(x, y) ((x) > (y) ? (x) : (y)) + +/* Used to write u64 literal for C89 which doesn't support "ULL" suffix. */ +#undef U64 +#define U64(hi, lo) ((((u64)hi##UL) << 32U) + lo##UL) +#undef U32 +#define U32(hi) ((u32)(hi##UL)) + +/* Used to cast away (remove) const qualifier. */ +#define constcast(type) (type)(void *)(size_t)(const void *) + +/* + Compiler barriers for single variables. + + These macros inform GCC that a read or write access to the given memory + location will occur, preventing certain compiler optimizations or reordering + around the access to 'val'. They do not emit any actual instructions. + + This is useful when GCC's default optimization strategies are suboptimal and + precise control over memory access patterns is required. + These barriers are not needed when using Clang or MSVC. + */ +#if YYJSON_IS_REAL_GCC +# define gcc_load_barrier(val) __asm__ volatile(""::"m"(val)) +# define gcc_store_barrier(val) __asm__ volatile("":"=m"(val)) +# define gcc_full_barrier(val) __asm__ volatile("":"=m"(val):"m"(val)) +#else +# define gcc_load_barrier(val) +# define gcc_store_barrier(val) +# define gcc_full_barrier(val) +#endif + + + +/*============================================================================== + * MARK: - Constants (Private) + *============================================================================*/ + +/* Common error messages. */ +#define MSG_FOPEN "failed to open file" +#define MSG_FREAD "failed to read file" +#define MSG_FWRITE "failed to write file" +#define MSG_FCLOSE "failed to close file" +#define MSG_MALLOC "failed to allocate memory" +#define MSG_CHAR_T "invalid literal, expected 'true'" +#define MSG_CHAR_F "invalid literal, expected 'false'" +#define MSG_CHAR_N "invalid literal, expected 'null'" +#define MSG_CHAR "unexpected character, expected a JSON value" +#define MSG_ARR_END "unexpected character, expected ',' or ']'" +#define MSG_OBJ_KEY "unexpected character, expected a string key" +#define MSG_OBJ_SEP "unexpected character, expected ':' after key" +#define MSG_OBJ_END "unexpected character, expected ',' or '}'" +#define MSG_GARBAGE "unexpected content after document" +#define MSG_NOT_END "unexpected end of data" +#define MSG_COMMENT "unclosed multiline comment" +#define MSG_COMMA "trailing comma is not allowed" +#define MSG_NAN_INF "nan or inf number is not allowed" +#define MSG_ERR_TYPE "invalid JSON value type" +#define MSG_ERR_BOM "UTF-8 byte order mark (BOM) is not supported" +#define MSG_ERR_UTF8 "invalid utf-8 encoding in string" +#define MSG_ERR_UTF16 "UTF-16 encoding is not supported" +#define MSG_ERR_UTF32 "UTF-32 encoding is not supported" + +/* U64 constant values */ +#undef U64_MAX +#define U64_MAX U64(0xFFFFFFFF, 0xFFFFFFFF) +#undef I64_MAX +#define I64_MAX U64(0x7FFFFFFF, 0xFFFFFFFF) +#undef USIZE_MAX +#define USIZE_MAX ((usize)(~(usize)0)) + +/* Maximum number of digits for reading u32/u64/usize safety (not overflow). */ +#undef U32_SAFE_DIG +#define U32_SAFE_DIG 9 /* u32 max is 4294967295, 10 digits */ +#undef U64_SAFE_DIG +#define U64_SAFE_DIG 19 /* u64 max is 18446744073709551615, 20 digits */ +#undef USIZE_SAFE_DIG +#define USIZE_SAFE_DIG (sizeof(usize) == 8 ? U64_SAFE_DIG : U32_SAFE_DIG) + +/* Inf bits (positive) */ +#define F64_BITS_INF U64(0x7FF00000, 0x00000000) + +/* NaN bits (quiet NaN, no payload, no sign) */ +#if defined(__hppa__) || (defined(__mips__) && !defined(__mips_nan2008)) +#define F64_BITS_NAN U64(0x7FF7FFFF, 0xFFFFFFFF) +#else +#define F64_BITS_NAN U64(0x7FF80000, 0x00000000) +#endif + +/* maximum significant digits count in decimal when reading double number */ +#define F64_MAX_DEC_DIG 768 + +/* maximum decimal power of double number (1.7976931348623157e308) */ +#define F64_MAX_DEC_EXP 308 + +/* minimum decimal power of double number (4.9406564584124654e-324) */ +#define F64_MIN_DEC_EXP (-324) + +/* maximum binary power of double number */ +#define F64_MAX_BIN_EXP 1024 + +/* minimum binary power of double number */ +#define F64_MIN_BIN_EXP (-1021) + +/* float/double number bits */ +#define F32_BITS 32 +#define F64_BITS 64 + +/* float/double number exponent part bits */ +#define F32_EXP_BITS 8 +#define F64_EXP_BITS 11 + +/* float/double number significand part bits */ +#define F32_SIG_BITS 23 +#define F64_SIG_BITS 52 + +/* float/double number significand part bits (with 1 hidden bit) */ +#define F32_SIG_FULL_BITS 24 +#define F64_SIG_FULL_BITS 53 + +/* float/double number significand bit mask */ +#define F32_SIG_MASK U32(0x007FFFFF) +#define F64_SIG_MASK U64(0x000FFFFF, 0xFFFFFFFF) + +/* float/double number exponent bit mask */ +#define F32_EXP_MASK U32(0x7F800000) +#define F64_EXP_MASK U64(0x7FF00000, 0x00000000) + +/* float/double number exponent bias */ +#define F32_EXP_BIAS 127 +#define F64_EXP_BIAS 1023 + +/* float/double number significant digits count in decimal */ +#define F32_DEC_DIG 9 +#define F64_DEC_DIG 17 + +/* buffer length required for float/double number writer */ +#define FP_BUF_LEN 40 + +/* maximum length of a number in incremental parsing */ +#define INCR_NUM_MAX_LEN 1024 + + + +/*============================================================================== + * MARK: - Types (Private) + *============================================================================*/ + +/** Type define for primitive types. */ +typedef float f32; +typedef double f64; +typedef int8_t i8; +typedef uint8_t u8; +typedef int16_t i16; +typedef uint16_t u16; +typedef int32_t i32; +typedef uint32_t u32; +typedef int64_t i64; +typedef uint64_t u64; +typedef size_t usize; + +/** 128-bit integer, used by floating-point number reader and writer. */ +#if YYJSON_HAS_INT128 +__extension__ typedef __int128 i128; +__extension__ typedef unsigned __int128 u128; +#endif + +/** 16/32/64-bit vector */ +typedef struct v16 { char c[2]; } v16; +typedef struct v32 { char c[4]; } v32; +typedef struct v64 { char c[8]; } v64; + +/** 16/32/64-bit vector union */ +typedef union v16_uni { v16 v; u16 u; } v16_uni; +typedef union v32_uni { v32 v; u32 u; } v32_uni; +typedef union v64_uni { v64 v; u64 u; } v64_uni; + + + +/*============================================================================== + * MARK: - Load/Store Utils (Private) + *============================================================================*/ + +#define byte_move_idx(x) ((char *)dst)[x] = ((const char *)src)[x]; +#define byte_move_src(x) ((char *)tmp)[x] = ((const char *)src)[x]; +#define byte_move_dst(x) ((char *)dst)[x] = ((const char *)tmp)[x]; + +/** Same as `memcpy(dst, src, 2)`, no overlap. */ +static_inline void byte_copy_2(void *dst, const void *src) { +#if !YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS + memcpy(dst, src, 2); +#else + repeat2_incr(byte_move_idx) +#endif +} + +/** Same as `memcpy(dst, src, 4)`, no overlap. */ +static_inline void byte_copy_4(void *dst, const void *src) { +#if !YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS + memcpy(dst, src, 4); +#else + repeat4_incr(byte_move_idx) +#endif +} + +/** Same as `memcpy(dst, src, 8)`, no overlap. */ +static_inline void byte_copy_8(void *dst, const void *src) { +#if !YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS + memcpy(dst, src, 8); +#else + repeat8_incr(byte_move_idx) +#endif +} + +/** Same as `memcpy(dst, src, 16)`, no overlap. */ +static_inline void byte_copy_16(void *dst, const void *src) { +#if !YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS + memcpy(dst, src, 16); +#else + repeat16_incr(byte_move_idx) +#endif +} + +/** Same as `memmove(dst, src, 2)`, allows overlap. */ +static_inline void byte_move_2(void *dst, const void *src) { +#if !YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS + u16 tmp; + memcpy(&tmp, src, 2); + memcpy(dst, &tmp, 2); +#else + char tmp[2]; + repeat2_incr(byte_move_src) + repeat2_incr(byte_move_dst) +#endif +} + +/** Same as `memmove(dst, src, 4)`, allows overlap. */ +static_inline void byte_move_4(void *dst, const void *src) { +#if !YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS + u32 tmp; + memcpy(&tmp, src, 4); + memcpy(dst, &tmp, 4); +#else + char tmp[4]; + repeat4_incr(byte_move_src) + repeat4_incr(byte_move_dst) +#endif +} + +/** Same as `memmove(dst, src, 8)`, allows overlap. */ +static_inline void byte_move_8(void *dst, const void *src) { +#if !YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS + u64 tmp; + memcpy(&tmp, src, 8); + memcpy(dst, &tmp, 8); +#else + char tmp[8]; + repeat8_incr(byte_move_src) + repeat8_incr(byte_move_dst) +#endif +} + +/** Same as `memmove(dst, src, 16)`, allows overlap. */ +static_inline void byte_move_16(void *dst, const void *src) { +#if !YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS + char *pdst = (char *)dst; + const char *psrc = (const char *)src; + u64 tmp1, tmp2; + memcpy(&tmp1, psrc, 8); + memcpy(&tmp2, psrc + 8, 8); + memcpy(pdst, &tmp1, 8); + memcpy(pdst + 8, &tmp2, 8); +#else + char tmp[16]; + repeat16_incr(byte_move_src) + repeat16_incr(byte_move_dst) +#endif +} + +/** Same as `memmove(dst, src, n)`, but only `dst <= src` and `n <= 16`. */ +static_inline void byte_move_forward(void *dst, void *src, usize n) { + char *d = (char *)dst, *s = (char *)src; + n += (n % 2); /* round up to even */ + if (n == 16) { byte_move_16(d, s); return; } + if (n >= 8) { byte_move_8(d, s); n -= 8; d += 8; s += 8; } + if (n >= 4) { byte_move_4(d, s); n -= 4; d += 4; s += 4; } + if (n >= 2) { byte_move_2(d, s); } +} + +/** Same as `memcmp(buf, pat, 2) == 0`. */ +static_inline bool byte_match_2(void *buf, const char *pat) { +#if !YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS + v16_uni u1, u2; + memcpy(&u1, buf, 2); + memcpy(&u2, pat, 2); + return u1.u == u2.u; +#else + return ((char *)buf)[0] == ((const char *)pat)[0] && + ((char *)buf)[1] == ((const char *)pat)[1]; +#endif +} + +/** Same as `memcmp(buf, pat, 4) == 0`. */ +static_inline bool byte_match_4(void *buf, const char *pat) { +#if !YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS + v32_uni u1, u2; + memcpy(&u1, buf, 4); + memcpy(&u2, pat, 4); + return u1.u == u2.u; +#else + return ((char *)buf)[0] == ((const char *)pat)[0] && + ((char *)buf)[1] == ((const char *)pat)[1] && + ((char *)buf)[2] == ((const char *)pat)[2] && + ((char *)buf)[3] == ((const char *)pat)[3]; +#endif +} + +/** Loads 2 bytes from `src` as a u16 (native-endian). */ +static_inline u16 byte_load_2(const void *src) { + v16_uni uni; +#if !YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS + memcpy(&uni, src, 2); +#else + uni.v.c[0] = ((const char *)src)[0]; + uni.v.c[1] = ((const char *)src)[1]; +#endif + return uni.u; +} + +/** Loads 3 bytes from `src` as a u32 (native-endian). */ +static_inline u32 byte_load_3(const void *src) { + v32_uni uni; +#if !YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS + memcpy(&uni, src, 2); + uni.v.c[2] = ((const char *)src)[2]; + uni.v.c[3] = 0; +#else + uni.v.c[0] = ((const char *)src)[0]; + uni.v.c[1] = ((const char *)src)[1]; + uni.v.c[2] = ((const char *)src)[2]; + uni.v.c[3] = 0; +#endif + return uni.u; +} + +/** Loads 4 bytes from `src` as a u32 (native-endian). */ +static_inline u32 byte_load_4(const void *src) { + v32_uni uni; +#if !YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS + memcpy(&uni, src, 4); +#else + uni.v.c[0] = ((const char *)src)[0]; + uni.v.c[1] = ((const char *)src)[1]; + uni.v.c[2] = ((const char *)src)[2]; + uni.v.c[3] = ((const char *)src)[3]; +#endif + return uni.u; +} + + + +/*============================================================================== + * MARK: - Character Utils (Private) + * These lookup tables were generated by `misc/make_tables.c`. + *============================================================================*/ + +/* char_table1 */ +#define CHAR_TYPE_ASCII (1 << 0) /* Except: ["\], [0x00-0x1F, 0x80-0xFF] */ +#define CHAR_TYPE_ASCII_SQ (1 << 1) /* Except: ['\], [0x00-0x1F, 0x80-0xFF] */ +#define CHAR_TYPE_SPACE (1 << 2) /* Whitespace: [ \t\n\r] */ +#define CHAR_TYPE_SPACE_EXT (1 << 3) /* Whitespace: [ \t\n\r\v\f], JSON5 */ +#define CHAR_TYPE_NUM (1 << 4) /* Number: [.-+0-9] */ +#define CHAR_TYPE_COMMENT (1 << 5) /* Comment: [/] */ + +/* char_table2 */ +#define CHAR_TYPE_EOL (1 << 0) /* End of line: [\r\n] */ +#define CHAR_TYPE_EOL_EXT (1 << 1) /* End of line: [\r\n], JSON5 */ +#define CHAR_TYPE_ID_START (1 << 2) /* ID start: [_$A-Za-z\], U+0080+ */ +#define CHAR_TYPE_ID_NEXT (1 << 3) /* ID next: [_$A-Za-z0-9\], U+0080+ */ +#define CHAR_TYPE_ID_ASCII (1 << 4) /* ID next ASCII: [_$A-Za-z0-9] */ + +/* char_table3 */ +#define CHAR_TYPE_SIGN (1 << 0) /* [-+] */ +#define CHAR_TYPE_DIGIT (1 << 1) /* [0-9] */ +#define CHAR_TYPE_NONZERO (1 << 2) /* [1-9] */ +#define CHAR_TYPE_EXP (1 << 3) /* [eE] */ +#define CHAR_TYPE_DOT (1 << 4) /* [.] */ + +static const u8 char_table1[256] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0C, 0x0C, 0x08, 0x08, 0x0C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0F, 0x03, 0x02, 0x03, 0x03, 0x03, 0x03, 0x01, + 0x03, 0x03, 0x03, 0x13, 0x03, 0x13, 0x13, 0x23, + 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, + 0x13, 0x13, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x00, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const u8 char_table2[256] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x00, 0x0C, 0x00, 0x00, 0x1C, + 0x00, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C +}; + +static const u8 char_table3[256] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x10, 0x00, + 0x02, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +/** Match a whitespace: [ \t\n\r]. */ +static_inline bool char_is_space(u8 c) { + return !!(char_table1[c] & CHAR_TYPE_SPACE); +} + +/** Match an extended whitespace: [ \t\n\r\\v\\f], JSON5 whitespace. */ +static_inline bool char_is_space_ext(u8 c) { + return !!(char_table1[c] & CHAR_TYPE_SPACE_EXT); +} + +/** Match a JSON number: [.-+0-9]. */ +static_inline bool char_is_num(u8 c) { + return !!(char_table1[c] & CHAR_TYPE_NUM); +} + +/** Match an ASCII character in string: ["\], [0x00-0x1F, 0x80-0xFF]. */ +static_inline bool char_is_ascii_skip(u8 c) { + return !!(char_table1[c] & CHAR_TYPE_ASCII); +} + +/** Match an ASCII character single-quoted: ['\], [0x00-0x1F, 0x80-0xFF]. */ +static_inline bool char_is_ascii_skip_sq(u8 c) { + return !!(char_table1[c] & CHAR_TYPE_ASCII_SQ); +} + +/** Match a trivia character: extended whitespace or comment. */ +static_inline bool char_is_trivia(u8 c) { + return !!(char_table1[c] & (CHAR_TYPE_SPACE_EXT | CHAR_TYPE_COMMENT)); +} + +/** Match a line end character: [\r\n]. */ +static_inline bool char_is_eol(u8 c) { + return !!(char_table2[c] & CHAR_TYPE_EOL); +} + +/** Match an extended line end character: [\r\n], JSON5 line terminator. */ +static_inline bool char_is_eol_ext(u8 c) { + return !!(char_table2[c] & CHAR_TYPE_EOL_EXT); +} + +/** Match an identifier name start: [_$A-Za-z\], U+0080+. */ +static_inline bool char_is_id_start(u8 c) { + return !!(char_table2[c] & CHAR_TYPE_ID_START); +} + +/** Match an identifier name next: [_$A-Za-z0-9\], U+0080+. */ +static_inline bool char_is_id_next(u8 c) { + return !!(char_table2[c] & CHAR_TYPE_ID_NEXT); +} + +/** Match an identifier name ASCII: [_$A-Za-z0-9]. */ +static_inline bool char_is_id_ascii(u8 c) { + return !!(char_table2[c] & CHAR_TYPE_ID_ASCII); +} + +/** Match a sign: [+-] */ +static_inline bool char_is_sign(u8 d) { + return !!(char_table3[d] & CHAR_TYPE_SIGN); +} + +/** Match a none-zero digit: [1-9] */ +static_inline bool char_is_nonzero(u8 d) { + return !!(char_table3[d] & CHAR_TYPE_NONZERO); +} + +/** Match a digit: [0-9] */ +static_inline bool char_is_digit(u8 d) { + return !!(char_table3[d] & CHAR_TYPE_DIGIT); +} + +/** Match an exponent sign: [eE]. */ +static_inline bool char_is_exp(u8 d) { + return !!(char_table3[d] & CHAR_TYPE_EXP); +} + +/** Match a floating point indicator: [.eE]. */ +static_inline bool char_is_fp(u8 d) { + return !!(char_table3[d] & (CHAR_TYPE_DOT | CHAR_TYPE_EXP)); +} + +/** Match a digit or floating point indicator: [0-9.eE]. */ +static_inline bool char_is_digit_or_fp(u8 d) { + return !!(char_table3[d] & (CHAR_TYPE_DIGIT | CHAR_TYPE_DOT | + CHAR_TYPE_EXP)); +} + +/** Match a JSON container: `{` or `[`. */ +static_inline bool char_is_ctn(u8 c) { + return (c & 0xDF) == 0x5B; /* '[': 0x5B, '{': 0x7B */ +} + +/** Convert ASCII letter to lowercase; valid only for [A-Za-z]. */ +static_inline u8 char_to_lower(u8 c) { + return c | 0x20; +} + +/** Match UTF-8 byte order mask. */ +static_inline bool is_utf8_bom(const u8 *cur) { + return byte_load_3(cur) == byte_load_3("\xEF\xBB\xBF"); +} + +/** Match UTF-16 byte order mask. */ +static_inline bool is_utf16_bom(const u8 *cur) { + return byte_load_2(cur) == byte_load_2("\xFE\xFF") || + byte_load_2(cur) == byte_load_2("\xFF\xFE"); +} + +/** Match UTF-32 byte order mask, need length check to avoid zero padding. */ +static_inline bool is_utf32_bom(const u8 *cur) { + return byte_load_4(cur) == byte_load_4("\x00\x00\xFE\xFF") || + byte_load_4(cur) == byte_load_4("\xFF\xFE\x00\x00"); +} + +/** Get the extended line end length. Used with `char_is_eol_ext`. */ +static_inline usize ext_eol_len(const u8 *cur) { + if (cur[0] < 0x80) return 1; + if (cur[1] == 0x80 && (cur[2] == 0xA8 || cur[2] == 0xA9)) return 3; + return 0; +} + +/** Get the extended whitespace length. Used with `char_is_space_ext`. */ +static_inline usize ext_space_len(const u8 *cur) { + if (cur[0] < 0x80) { + return 1; + } else if (byte_load_2(cur) == byte_load_2("\xC2\xA0")) { + return 2; + } else if (byte_load_2(cur) == byte_load_2("\xE2\x80")) { + if (cur[2] >= 0x80 && cur[2] <= 0x8A) return 3; + if (cur[2] == 0xA8 || cur[2] == 0xA9 || cur[2] == 0xAF) return 3; + } else { + u32 uni = byte_load_3(cur); + if (uni == byte_load_3("\xE1\x9A\x80") || + uni == byte_load_3("\xE2\x81\x9F") || + uni == byte_load_3("\xE3\x80\x80") || + uni == byte_load_3("\xEF\xBB\xBF")) return 3; + } + return 0; +} + + + +/*============================================================================== + * MARK: - Hex Character Reader (Private) + * This function is used by JSON reader to read escaped characters. + *============================================================================*/ + +/** + This table is used to convert 4 hex character sequence to a number. + A valid hex character [0-9A-Fa-f] will mapped to it's raw number [0x00, 0x0F], + an invalid hex character will mapped to [0xF0]. + (generate with misc/make_tables.c) + */ +static const u8 hex_conv_table[256] = { + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0 +}; + +/** Load 4 hex characters to `u16`, return true on valid input. */ +static_inline bool hex_load_4(const u8 *src, u16 *dst) { + u16 c0 = hex_conv_table[src[0]]; + u16 c1 = hex_conv_table[src[1]]; + u16 c2 = hex_conv_table[src[2]]; + u16 c3 = hex_conv_table[src[3]]; + u16 t0 = (u16)((c0 << 8) | c2); + u16 t1 = (u16)((c1 << 8) | c3); + *dst = (u16)((t0 << 4) | t1); + return ((t0 | t1) & (u16)0xF0F0) == 0; +} + +/** Load 2 hex characters to `u8`, return true on valid input. */ +static_inline bool hex_load_2(const u8 *src, u8 *dst) { + u8 c0 = hex_conv_table[src[0]]; + u8 c1 = hex_conv_table[src[1]]; + *dst = (u8)((c0 << 4) | c1); + return ((c0 | c1) & 0xF0) == 0; +} + +/** Match a hexadecimal numeric character: [0-9a-fA-F]. */ +static_inline bool char_is_hex(u8 c) { + return hex_conv_table[c] != 0xF0; +} + + + +/*============================================================================== + * MARK: - UTF8 Validation (Private) + * Each Unicode code point is encoded using 1 to 4 bytes in UTF-8. + * Validation is performed using a 4-byte mask and pattern-based approach, + * which requires the input data to be padded with four zero bytes at the end. + *============================================================================*/ + +/* Macro for concatenating four u8 into a u32 and keeping the byte order. */ +#if YYJSON_ENDIAN == YYJSON_LITTLE_ENDIAN +# define utf8_seq_def(name, a, b, c, d) \ + static const u32 utf8_seq_##name = 0x##d##c##b##a##UL; +# define utf8_seq(name) utf8_seq_##name +#elif YYJSON_ENDIAN == YYJSON_BIG_ENDIAN +# define utf8_seq_def(name, a, b, c, d) \ + static const u32 utf8_seq_##name = 0x##a##b##c##d##UL; +# define utf8_seq(name) utf8_seq_##name +#else +# define utf8_seq_def(name, a, b, c, d) \ + static const v32_uni utf8_uni_##name = {{ 0x##a, 0x##b, 0x##c, 0x##d }}; +# define utf8_seq(name) utf8_uni_##name.u +#endif + +/* + 1-byte sequence (U+0000 to U+007F) + bit min [.......0] (U+0000) + bit max [.1111111] (U+007F) + bit mask [x.......] (80) + bit pattern [0.......] (00) + */ +utf8_seq_def(b1_mask, 80, 00, 00, 00) +utf8_seq_def(b1_patt, 00, 00, 00, 00) +#define is_utf8_seq1(uni) ( \ + ((uni & utf8_seq(b1_mask)) == utf8_seq(b1_patt)) ) + +/* + 2-byte sequence (U+0080 to U+07FF) + bit min [......10 ..000000] (U+0080) + bit max [...11111 ..111111] (U+07FF) + bit mask [xxx..... xx......] (E0 C0) + bit pattern [110..... 10......] (C0 80) + bit require [...xxxx. ........] (1E 00) + */ +utf8_seq_def(b2_mask, E0, C0, 00, 00) +utf8_seq_def(b2_patt, C0, 80, 00, 00) +utf8_seq_def(b2_requ, 1E, 00, 00, 00) +#define is_utf8_seq2(uni) ( \ + ((uni & utf8_seq(b2_mask)) == utf8_seq(b2_patt)) && \ + ((uni & utf8_seq(b2_requ))) ) + +/* + 3-byte sequence (U+0800 to U+FFFF) + bit min [........ ..100000 ..000000] (U+0800) + bit max [....1111 ..111111 ..111111] (U+FFFF) + bit mask [xxxx.... xx...... xx......] (F0 C0 C0) + bit pattern [1110.... 10...... 10......] (E0 80 80) + bit require [....xxxx ..x..... ........] (0F 20 00) + + 3-byte invalid sequence, reserved for surrogate halves (U+D800 to U+DFFF) + bit min [....1101 ..100000 ..000000] (U+D800) + bit max [....1101 ..111111 ..111111] (U+DFFF) + bit mask [....xxxx ..x..... ........] (0F 20 00) + bit pattern [....1101 ..1..... ........] (0D 20 00) + */ +utf8_seq_def(b3_mask, F0, C0, C0, 00) +utf8_seq_def(b3_patt, E0, 80, 80, 00) +utf8_seq_def(b3_requ, 0F, 20, 00, 00) +utf8_seq_def(b3_erro, 0D, 20, 00, 00) +#define is_utf8_seq3(uni) ( \ + ((uni & utf8_seq(b3_mask)) == utf8_seq(b3_patt)) && \ + ((tmp = (uni & utf8_seq(b3_requ)))) && \ + ((tmp != utf8_seq(b3_erro))) ) + +/* + 4-byte sequence (U+10000 to U+10FFFF) + bit min [........ ...10000 ..000000 ..000000] (U+10000) + bit max [.....100 ..001111 ..111111 ..111111] (U+10FFFF) + bit mask [xxxxx... xx...... xx...... xx......] (F8 C0 C0 C0) + bit pattern [11110... 10...... 10...... 10......] (F0 80 80 80) + bit require [.....xxx ..xx.... ........ ........] (07 30 00 00) + bit require 1 [.....x.. ........ ........ ........] (04 00 00 00) + bit require 2 [......xx ..xx.... ........ ........] (03 30 00 00) + */ +utf8_seq_def(b4_mask, F8, C0, C0, C0) +utf8_seq_def(b4_patt, F0, 80, 80, 80) +utf8_seq_def(b4_requ, 07, 30, 00, 00) +utf8_seq_def(b4_req1, 04, 00, 00, 00) +utf8_seq_def(b4_req2, 03, 30, 00, 00) +#define is_utf8_seq4(uni) ( \ + ((uni & utf8_seq(b4_mask)) == utf8_seq(b4_patt)) && \ + ((tmp = (uni & utf8_seq(b4_requ)))) && \ + ((tmp & utf8_seq(b4_req1)) == 0 || (tmp & utf8_seq(b4_req2)) == 0) ) + + + +/*============================================================================== + * MARK: - Power10 Lookup Table (Private) + * These data are used by the floating-point number reader and writer. + *============================================================================*/ + +#if !YYJSON_DISABLE_FAST_FP_CONV + +/** Maximum pow10 exponent that can be represented exactly as a float64. */ +#define F64_POW10_MAX_EXACT_EXP 22 + +/** Cached pow10 table. */ +static const f64 f64_pow10_table[F64_POW10_MAX_EXACT_EXP + 1] = { + 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, + 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22 +}; + +/** Maximum pow10 exponent that can be represented exactly as a uint64. */ +#define U64_POW10_MAX_EXACT_EXP 19 + +/** Table: [ 10^0, ..., 10^19 ] (generate with misc/make_tables.c) */ +static const u64 u64_pow10_table[U64_POW10_MAX_EXACT_EXP + 1] = { + U64(0x00000000, 0x00000001), U64(0x00000000, 0x0000000A), + U64(0x00000000, 0x00000064), U64(0x00000000, 0x000003E8), + U64(0x00000000, 0x00002710), U64(0x00000000, 0x000186A0), + U64(0x00000000, 0x000F4240), U64(0x00000000, 0x00989680), + U64(0x00000000, 0x05F5E100), U64(0x00000000, 0x3B9ACA00), + U64(0x00000002, 0x540BE400), U64(0x00000017, 0x4876E800), + U64(0x000000E8, 0xD4A51000), U64(0x00000918, 0x4E72A000), + U64(0x00005AF3, 0x107A4000), U64(0x00038D7E, 0xA4C68000), + U64(0x002386F2, 0x6FC10000), U64(0x01634578, 0x5D8A0000), + U64(0x0DE0B6B3, 0xA7640000), U64(0x8AC72304, 0x89E80000) +}; + +/** Minimum decimal exponent in pow10_sig_table. */ +#define POW10_SIG_TABLE_MIN_EXP -343 + +/** Maximum decimal exponent in pow10_sig_table. */ +#define POW10_SIG_TABLE_MAX_EXP 324 + +/** Minimum exact decimal exponent in pow10_sig_table */ +#define POW10_SIG_TABLE_MIN_EXACT_EXP 0 + +/** Maximum exact decimal exponent in pow10_sig_table */ +#define POW10_SIG_TABLE_MAX_EXACT_EXP 55 + +/** Normalized significant 128 bits of pow10, no rounded up (size: 10.4KB). + This lookup table is used by both the double number reader and writer. + (generate with misc/make_tables.c) */ +static const u64 pow10_sig_table[] = { + U64(0xBF29DCAB, 0xA82FDEAE), U64(0x7432EE87, 0x3880FC33), /* ~= 10^-343 */ + U64(0xEEF453D6, 0x923BD65A), U64(0x113FAA29, 0x06A13B3F), /* ~= 10^-342 */ + U64(0x9558B466, 0x1B6565F8), U64(0x4AC7CA59, 0xA424C507), /* ~= 10^-341 */ + U64(0xBAAEE17F, 0xA23EBF76), U64(0x5D79BCF0, 0x0D2DF649), /* ~= 10^-340 */ + U64(0xE95A99DF, 0x8ACE6F53), U64(0xF4D82C2C, 0x107973DC), /* ~= 10^-339 */ + U64(0x91D8A02B, 0xB6C10594), U64(0x79071B9B, 0x8A4BE869), /* ~= 10^-338 */ + U64(0xB64EC836, 0xA47146F9), U64(0x9748E282, 0x6CDEE284), /* ~= 10^-337 */ + U64(0xE3E27A44, 0x4D8D98B7), U64(0xFD1B1B23, 0x08169B25), /* ~= 10^-336 */ + U64(0x8E6D8C6A, 0xB0787F72), U64(0xFE30F0F5, 0xE50E20F7), /* ~= 10^-335 */ + U64(0xB208EF85, 0x5C969F4F), U64(0xBDBD2D33, 0x5E51A935), /* ~= 10^-334 */ + U64(0xDE8B2B66, 0xB3BC4723), U64(0xAD2C7880, 0x35E61382), /* ~= 10^-333 */ + U64(0x8B16FB20, 0x3055AC76), U64(0x4C3BCB50, 0x21AFCC31), /* ~= 10^-332 */ + U64(0xADDCB9E8, 0x3C6B1793), U64(0xDF4ABE24, 0x2A1BBF3D), /* ~= 10^-331 */ + U64(0xD953E862, 0x4B85DD78), U64(0xD71D6DAD, 0x34A2AF0D), /* ~= 10^-330 */ + U64(0x87D4713D, 0x6F33AA6B), U64(0x8672648C, 0x40E5AD68), /* ~= 10^-329 */ + U64(0xA9C98D8C, 0xCB009506), U64(0x680EFDAF, 0x511F18C2), /* ~= 10^-328 */ + U64(0xD43BF0EF, 0xFDC0BA48), U64(0x0212BD1B, 0x2566DEF2), /* ~= 10^-327 */ + U64(0x84A57695, 0xFE98746D), U64(0x014BB630, 0xF7604B57), /* ~= 10^-326 */ + U64(0xA5CED43B, 0x7E3E9188), U64(0x419EA3BD, 0x35385E2D), /* ~= 10^-325 */ + U64(0xCF42894A, 0x5DCE35EA), U64(0x52064CAC, 0x828675B9), /* ~= 10^-324 */ + U64(0x818995CE, 0x7AA0E1B2), U64(0x7343EFEB, 0xD1940993), /* ~= 10^-323 */ + U64(0xA1EBFB42, 0x19491A1F), U64(0x1014EBE6, 0xC5F90BF8), /* ~= 10^-322 */ + U64(0xCA66FA12, 0x9F9B60A6), U64(0xD41A26E0, 0x77774EF6), /* ~= 10^-321 */ + U64(0xFD00B897, 0x478238D0), U64(0x8920B098, 0x955522B4), /* ~= 10^-320 */ + U64(0x9E20735E, 0x8CB16382), U64(0x55B46E5F, 0x5D5535B0), /* ~= 10^-319 */ + U64(0xC5A89036, 0x2FDDBC62), U64(0xEB2189F7, 0x34AA831D), /* ~= 10^-318 */ + U64(0xF712B443, 0xBBD52B7B), U64(0xA5E9EC75, 0x01D523E4), /* ~= 10^-317 */ + U64(0x9A6BB0AA, 0x55653B2D), U64(0x47B233C9, 0x2125366E), /* ~= 10^-316 */ + U64(0xC1069CD4, 0xEABE89F8), U64(0x999EC0BB, 0x696E840A), /* ~= 10^-315 */ + U64(0xF148440A, 0x256E2C76), U64(0xC00670EA, 0x43CA250D), /* ~= 10^-314 */ + U64(0x96CD2A86, 0x5764DBCA), U64(0x38040692, 0x6A5E5728), /* ~= 10^-313 */ + U64(0xBC807527, 0xED3E12BC), U64(0xC6050837, 0x04F5ECF2), /* ~= 10^-312 */ + U64(0xEBA09271, 0xE88D976B), U64(0xF7864A44, 0xC633682E), /* ~= 10^-311 */ + U64(0x93445B87, 0x31587EA3), U64(0x7AB3EE6A, 0xFBE0211D), /* ~= 10^-310 */ + U64(0xB8157268, 0xFDAE9E4C), U64(0x5960EA05, 0xBAD82964), /* ~= 10^-309 */ + U64(0xE61ACF03, 0x3D1A45DF), U64(0x6FB92487, 0x298E33BD), /* ~= 10^-308 */ + U64(0x8FD0C162, 0x06306BAB), U64(0xA5D3B6D4, 0x79F8E056), /* ~= 10^-307 */ + U64(0xB3C4F1BA, 0x87BC8696), U64(0x8F48A489, 0x9877186C), /* ~= 10^-306 */ + U64(0xE0B62E29, 0x29ABA83C), U64(0x331ACDAB, 0xFE94DE87), /* ~= 10^-305 */ + U64(0x8C71DCD9, 0xBA0B4925), U64(0x9FF0C08B, 0x7F1D0B14), /* ~= 10^-304 */ + U64(0xAF8E5410, 0x288E1B6F), U64(0x07ECF0AE, 0x5EE44DD9), /* ~= 10^-303 */ + U64(0xDB71E914, 0x32B1A24A), U64(0xC9E82CD9, 0xF69D6150), /* ~= 10^-302 */ + U64(0x892731AC, 0x9FAF056E), U64(0xBE311C08, 0x3A225CD2), /* ~= 10^-301 */ + U64(0xAB70FE17, 0xC79AC6CA), U64(0x6DBD630A, 0x48AAF406), /* ~= 10^-300 */ + U64(0xD64D3D9D, 0xB981787D), U64(0x092CBBCC, 0xDAD5B108), /* ~= 10^-299 */ + U64(0x85F04682, 0x93F0EB4E), U64(0x25BBF560, 0x08C58EA5), /* ~= 10^-298 */ + U64(0xA76C5823, 0x38ED2621), U64(0xAF2AF2B8, 0x0AF6F24E), /* ~= 10^-297 */ + U64(0xD1476E2C, 0x07286FAA), U64(0x1AF5AF66, 0x0DB4AEE1), /* ~= 10^-296 */ + U64(0x82CCA4DB, 0x847945CA), U64(0x50D98D9F, 0xC890ED4D), /* ~= 10^-295 */ + U64(0xA37FCE12, 0x6597973C), U64(0xE50FF107, 0xBAB528A0), /* ~= 10^-294 */ + U64(0xCC5FC196, 0xFEFD7D0C), U64(0x1E53ED49, 0xA96272C8), /* ~= 10^-293 */ + U64(0xFF77B1FC, 0xBEBCDC4F), U64(0x25E8E89C, 0x13BB0F7A), /* ~= 10^-292 */ + U64(0x9FAACF3D, 0xF73609B1), U64(0x77B19161, 0x8C54E9AC), /* ~= 10^-291 */ + U64(0xC795830D, 0x75038C1D), U64(0xD59DF5B9, 0xEF6A2417), /* ~= 10^-290 */ + U64(0xF97AE3D0, 0xD2446F25), U64(0x4B057328, 0x6B44AD1D), /* ~= 10^-289 */ + U64(0x9BECCE62, 0x836AC577), U64(0x4EE367F9, 0x430AEC32), /* ~= 10^-288 */ + U64(0xC2E801FB, 0x244576D5), U64(0x229C41F7, 0x93CDA73F), /* ~= 10^-287 */ + U64(0xF3A20279, 0xED56D48A), U64(0x6B435275, 0x78C1110F), /* ~= 10^-286 */ + U64(0x9845418C, 0x345644D6), U64(0x830A1389, 0x6B78AAA9), /* ~= 10^-285 */ + U64(0xBE5691EF, 0x416BD60C), U64(0x23CC986B, 0xC656D553), /* ~= 10^-284 */ + U64(0xEDEC366B, 0x11C6CB8F), U64(0x2CBFBE86, 0xB7EC8AA8), /* ~= 10^-283 */ + U64(0x94B3A202, 0xEB1C3F39), U64(0x7BF7D714, 0x32F3D6A9), /* ~= 10^-282 */ + U64(0xB9E08A83, 0xA5E34F07), U64(0xDAF5CCD9, 0x3FB0CC53), /* ~= 10^-281 */ + U64(0xE858AD24, 0x8F5C22C9), U64(0xD1B3400F, 0x8F9CFF68), /* ~= 10^-280 */ + U64(0x91376C36, 0xD99995BE), U64(0x23100809, 0xB9C21FA1), /* ~= 10^-279 */ + U64(0xB5854744, 0x8FFFFB2D), U64(0xABD40A0C, 0x2832A78A), /* ~= 10^-278 */ + U64(0xE2E69915, 0xB3FFF9F9), U64(0x16C90C8F, 0x323F516C), /* ~= 10^-277 */ + U64(0x8DD01FAD, 0x907FFC3B), U64(0xAE3DA7D9, 0x7F6792E3), /* ~= 10^-276 */ + U64(0xB1442798, 0xF49FFB4A), U64(0x99CD11CF, 0xDF41779C), /* ~= 10^-275 */ + U64(0xDD95317F, 0x31C7FA1D), U64(0x40405643, 0xD711D583), /* ~= 10^-274 */ + U64(0x8A7D3EEF, 0x7F1CFC52), U64(0x482835EA, 0x666B2572), /* ~= 10^-273 */ + U64(0xAD1C8EAB, 0x5EE43B66), U64(0xDA324365, 0x0005EECF), /* ~= 10^-272 */ + U64(0xD863B256, 0x369D4A40), U64(0x90BED43E, 0x40076A82), /* ~= 10^-271 */ + U64(0x873E4F75, 0xE2224E68), U64(0x5A7744A6, 0xE804A291), /* ~= 10^-270 */ + U64(0xA90DE353, 0x5AAAE202), U64(0x711515D0, 0xA205CB36), /* ~= 10^-269 */ + U64(0xD3515C28, 0x31559A83), U64(0x0D5A5B44, 0xCA873E03), /* ~= 10^-268 */ + U64(0x8412D999, 0x1ED58091), U64(0xE858790A, 0xFE9486C2), /* ~= 10^-267 */ + U64(0xA5178FFF, 0x668AE0B6), U64(0x626E974D, 0xBE39A872), /* ~= 10^-266 */ + U64(0xCE5D73FF, 0x402D98E3), U64(0xFB0A3D21, 0x2DC8128F), /* ~= 10^-265 */ + U64(0x80FA687F, 0x881C7F8E), U64(0x7CE66634, 0xBC9D0B99), /* ~= 10^-264 */ + U64(0xA139029F, 0x6A239F72), U64(0x1C1FFFC1, 0xEBC44E80), /* ~= 10^-263 */ + U64(0xC9874347, 0x44AC874E), U64(0xA327FFB2, 0x66B56220), /* ~= 10^-262 */ + U64(0xFBE91419, 0x15D7A922), U64(0x4BF1FF9F, 0x0062BAA8), /* ~= 10^-261 */ + U64(0x9D71AC8F, 0xADA6C9B5), U64(0x6F773FC3, 0x603DB4A9), /* ~= 10^-260 */ + U64(0xC4CE17B3, 0x99107C22), U64(0xCB550FB4, 0x384D21D3), /* ~= 10^-259 */ + U64(0xF6019DA0, 0x7F549B2B), U64(0x7E2A53A1, 0x46606A48), /* ~= 10^-258 */ + U64(0x99C10284, 0x4F94E0FB), U64(0x2EDA7444, 0xCBFC426D), /* ~= 10^-257 */ + U64(0xC0314325, 0x637A1939), U64(0xFA911155, 0xFEFB5308), /* ~= 10^-256 */ + U64(0xF03D93EE, 0xBC589F88), U64(0x793555AB, 0x7EBA27CA), /* ~= 10^-255 */ + U64(0x96267C75, 0x35B763B5), U64(0x4BC1558B, 0x2F3458DE), /* ~= 10^-254 */ + U64(0xBBB01B92, 0x83253CA2), U64(0x9EB1AAED, 0xFB016F16), /* ~= 10^-253 */ + U64(0xEA9C2277, 0x23EE8BCB), U64(0x465E15A9, 0x79C1CADC), /* ~= 10^-252 */ + U64(0x92A1958A, 0x7675175F), U64(0x0BFACD89, 0xEC191EC9), /* ~= 10^-251 */ + U64(0xB749FAED, 0x14125D36), U64(0xCEF980EC, 0x671F667B), /* ~= 10^-250 */ + U64(0xE51C79A8, 0x5916F484), U64(0x82B7E127, 0x80E7401A), /* ~= 10^-249 */ + U64(0x8F31CC09, 0x37AE58D2), U64(0xD1B2ECB8, 0xB0908810), /* ~= 10^-248 */ + U64(0xB2FE3F0B, 0x8599EF07), U64(0x861FA7E6, 0xDCB4AA15), /* ~= 10^-247 */ + U64(0xDFBDCECE, 0x67006AC9), U64(0x67A791E0, 0x93E1D49A), /* ~= 10^-246 */ + U64(0x8BD6A141, 0x006042BD), U64(0xE0C8BB2C, 0x5C6D24E0), /* ~= 10^-245 */ + U64(0xAECC4991, 0x4078536D), U64(0x58FAE9F7, 0x73886E18), /* ~= 10^-244 */ + U64(0xDA7F5BF5, 0x90966848), U64(0xAF39A475, 0x506A899E), /* ~= 10^-243 */ + U64(0x888F9979, 0x7A5E012D), U64(0x6D8406C9, 0x52429603), /* ~= 10^-242 */ + U64(0xAAB37FD7, 0xD8F58178), U64(0xC8E5087B, 0xA6D33B83), /* ~= 10^-241 */ + U64(0xD5605FCD, 0xCF32E1D6), U64(0xFB1E4A9A, 0x90880A64), /* ~= 10^-240 */ + U64(0x855C3BE0, 0xA17FCD26), U64(0x5CF2EEA0, 0x9A55067F), /* ~= 10^-239 */ + U64(0xA6B34AD8, 0xC9DFC06F), U64(0xF42FAA48, 0xC0EA481E), /* ~= 10^-238 */ + U64(0xD0601D8E, 0xFC57B08B), U64(0xF13B94DA, 0xF124DA26), /* ~= 10^-237 */ + U64(0x823C1279, 0x5DB6CE57), U64(0x76C53D08, 0xD6B70858), /* ~= 10^-236 */ + U64(0xA2CB1717, 0xB52481ED), U64(0x54768C4B, 0x0C64CA6E), /* ~= 10^-235 */ + U64(0xCB7DDCDD, 0xA26DA268), U64(0xA9942F5D, 0xCF7DFD09), /* ~= 10^-234 */ + U64(0xFE5D5415, 0x0B090B02), U64(0xD3F93B35, 0x435D7C4C), /* ~= 10^-233 */ + U64(0x9EFA548D, 0x26E5A6E1), U64(0xC47BC501, 0x4A1A6DAF), /* ~= 10^-232 */ + U64(0xC6B8E9B0, 0x709F109A), U64(0x359AB641, 0x9CA1091B), /* ~= 10^-231 */ + U64(0xF867241C, 0x8CC6D4C0), U64(0xC30163D2, 0x03C94B62), /* ~= 10^-230 */ + U64(0x9B407691, 0xD7FC44F8), U64(0x79E0DE63, 0x425DCF1D), /* ~= 10^-229 */ + U64(0xC2109436, 0x4DFB5636), U64(0x985915FC, 0x12F542E4), /* ~= 10^-228 */ + U64(0xF294B943, 0xE17A2BC4), U64(0x3E6F5B7B, 0x17B2939D), /* ~= 10^-227 */ + U64(0x979CF3CA, 0x6CEC5B5A), U64(0xA705992C, 0xEECF9C42), /* ~= 10^-226 */ + U64(0xBD8430BD, 0x08277231), U64(0x50C6FF78, 0x2A838353), /* ~= 10^-225 */ + U64(0xECE53CEC, 0x4A314EBD), U64(0xA4F8BF56, 0x35246428), /* ~= 10^-224 */ + U64(0x940F4613, 0xAE5ED136), U64(0x871B7795, 0xE136BE99), /* ~= 10^-223 */ + U64(0xB9131798, 0x99F68584), U64(0x28E2557B, 0x59846E3F), /* ~= 10^-222 */ + U64(0xE757DD7E, 0xC07426E5), U64(0x331AEADA, 0x2FE589CF), /* ~= 10^-221 */ + U64(0x9096EA6F, 0x3848984F), U64(0x3FF0D2C8, 0x5DEF7621), /* ~= 10^-220 */ + U64(0xB4BCA50B, 0x065ABE63), U64(0x0FED077A, 0x756B53A9), /* ~= 10^-219 */ + U64(0xE1EBCE4D, 0xC7F16DFB), U64(0xD3E84959, 0x12C62894), /* ~= 10^-218 */ + U64(0x8D3360F0, 0x9CF6E4BD), U64(0x64712DD7, 0xABBBD95C), /* ~= 10^-217 */ + U64(0xB080392C, 0xC4349DEC), U64(0xBD8D794D, 0x96AACFB3), /* ~= 10^-216 */ + U64(0xDCA04777, 0xF541C567), U64(0xECF0D7A0, 0xFC5583A0), /* ~= 10^-215 */ + U64(0x89E42CAA, 0xF9491B60), U64(0xF41686C4, 0x9DB57244), /* ~= 10^-214 */ + U64(0xAC5D37D5, 0xB79B6239), U64(0x311C2875, 0xC522CED5), /* ~= 10^-213 */ + U64(0xD77485CB, 0x25823AC7), U64(0x7D633293, 0x366B828B), /* ~= 10^-212 */ + U64(0x86A8D39E, 0xF77164BC), U64(0xAE5DFF9C, 0x02033197), /* ~= 10^-211 */ + U64(0xA8530886, 0xB54DBDEB), U64(0xD9F57F83, 0x0283FDFC), /* ~= 10^-210 */ + U64(0xD267CAA8, 0x62A12D66), U64(0xD072DF63, 0xC324FD7B), /* ~= 10^-209 */ + U64(0x8380DEA9, 0x3DA4BC60), U64(0x4247CB9E, 0x59F71E6D), /* ~= 10^-208 */ + U64(0xA4611653, 0x8D0DEB78), U64(0x52D9BE85, 0xF074E608), /* ~= 10^-207 */ + U64(0xCD795BE8, 0x70516656), U64(0x67902E27, 0x6C921F8B), /* ~= 10^-206 */ + U64(0x806BD971, 0x4632DFF6), U64(0x00BA1CD8, 0xA3DB53B6), /* ~= 10^-205 */ + U64(0xA086CFCD, 0x97BF97F3), U64(0x80E8A40E, 0xCCD228A4), /* ~= 10^-204 */ + U64(0xC8A883C0, 0xFDAF7DF0), U64(0x6122CD12, 0x8006B2CD), /* ~= 10^-203 */ + U64(0xFAD2A4B1, 0x3D1B5D6C), U64(0x796B8057, 0x20085F81), /* ~= 10^-202 */ + U64(0x9CC3A6EE, 0xC6311A63), U64(0xCBE33036, 0x74053BB0), /* ~= 10^-201 */ + U64(0xC3F490AA, 0x77BD60FC), U64(0xBEDBFC44, 0x11068A9C), /* ~= 10^-200 */ + U64(0xF4F1B4D5, 0x15ACB93B), U64(0xEE92FB55, 0x15482D44), /* ~= 10^-199 */ + U64(0x99171105, 0x2D8BF3C5), U64(0x751BDD15, 0x2D4D1C4A), /* ~= 10^-198 */ + U64(0xBF5CD546, 0x78EEF0B6), U64(0xD262D45A, 0x78A0635D), /* ~= 10^-197 */ + U64(0xEF340A98, 0x172AACE4), U64(0x86FB8971, 0x16C87C34), /* ~= 10^-196 */ + U64(0x9580869F, 0x0E7AAC0E), U64(0xD45D35E6, 0xAE3D4DA0), /* ~= 10^-195 */ + U64(0xBAE0A846, 0xD2195712), U64(0x89748360, 0x59CCA109), /* ~= 10^-194 */ + U64(0xE998D258, 0x869FACD7), U64(0x2BD1A438, 0x703FC94B), /* ~= 10^-193 */ + U64(0x91FF8377, 0x5423CC06), U64(0x7B6306A3, 0x4627DDCF), /* ~= 10^-192 */ + U64(0xB67F6455, 0x292CBF08), U64(0x1A3BC84C, 0x17B1D542), /* ~= 10^-191 */ + U64(0xE41F3D6A, 0x7377EECA), U64(0x20CABA5F, 0x1D9E4A93), /* ~= 10^-190 */ + U64(0x8E938662, 0x882AF53E), U64(0x547EB47B, 0x7282EE9C), /* ~= 10^-189 */ + U64(0xB23867FB, 0x2A35B28D), U64(0xE99E619A, 0x4F23AA43), /* ~= 10^-188 */ + U64(0xDEC681F9, 0xF4C31F31), U64(0x6405FA00, 0xE2EC94D4), /* ~= 10^-187 */ + U64(0x8B3C113C, 0x38F9F37E), U64(0xDE83BC40, 0x8DD3DD04), /* ~= 10^-186 */ + U64(0xAE0B158B, 0x4738705E), U64(0x9624AB50, 0xB148D445), /* ~= 10^-185 */ + U64(0xD98DDAEE, 0x19068C76), U64(0x3BADD624, 0xDD9B0957), /* ~= 10^-184 */ + U64(0x87F8A8D4, 0xCFA417C9), U64(0xE54CA5D7, 0x0A80E5D6), /* ~= 10^-183 */ + U64(0xA9F6D30A, 0x038D1DBC), U64(0x5E9FCF4C, 0xCD211F4C), /* ~= 10^-182 */ + U64(0xD47487CC, 0x8470652B), U64(0x7647C320, 0x0069671F), /* ~= 10^-181 */ + U64(0x84C8D4DF, 0xD2C63F3B), U64(0x29ECD9F4, 0x0041E073), /* ~= 10^-180 */ + U64(0xA5FB0A17, 0xC777CF09), U64(0xF4681071, 0x00525890), /* ~= 10^-179 */ + U64(0xCF79CC9D, 0xB955C2CC), U64(0x7182148D, 0x4066EEB4), /* ~= 10^-178 */ + U64(0x81AC1FE2, 0x93D599BF), U64(0xC6F14CD8, 0x48405530), /* ~= 10^-177 */ + U64(0xA21727DB, 0x38CB002F), U64(0xB8ADA00E, 0x5A506A7C), /* ~= 10^-176 */ + U64(0xCA9CF1D2, 0x06FDC03B), U64(0xA6D90811, 0xF0E4851C), /* ~= 10^-175 */ + U64(0xFD442E46, 0x88BD304A), U64(0x908F4A16, 0x6D1DA663), /* ~= 10^-174 */ + U64(0x9E4A9CEC, 0x15763E2E), U64(0x9A598E4E, 0x043287FE), /* ~= 10^-173 */ + U64(0xC5DD4427, 0x1AD3CDBA), U64(0x40EFF1E1, 0x853F29FD), /* ~= 10^-172 */ + U64(0xF7549530, 0xE188C128), U64(0xD12BEE59, 0xE68EF47C), /* ~= 10^-171 */ + U64(0x9A94DD3E, 0x8CF578B9), U64(0x82BB74F8, 0x301958CE), /* ~= 10^-170 */ + U64(0xC13A148E, 0x3032D6E7), U64(0xE36A5236, 0x3C1FAF01), /* ~= 10^-169 */ + U64(0xF18899B1, 0xBC3F8CA1), U64(0xDC44E6C3, 0xCB279AC1), /* ~= 10^-168 */ + U64(0x96F5600F, 0x15A7B7E5), U64(0x29AB103A, 0x5EF8C0B9), /* ~= 10^-167 */ + U64(0xBCB2B812, 0xDB11A5DE), U64(0x7415D448, 0xF6B6F0E7), /* ~= 10^-166 */ + U64(0xEBDF6617, 0x91D60F56), U64(0x111B495B, 0x3464AD21), /* ~= 10^-165 */ + U64(0x936B9FCE, 0xBB25C995), U64(0xCAB10DD9, 0x00BEEC34), /* ~= 10^-164 */ + U64(0xB84687C2, 0x69EF3BFB), U64(0x3D5D514F, 0x40EEA742), /* ~= 10^-163 */ + U64(0xE65829B3, 0x046B0AFA), U64(0x0CB4A5A3, 0x112A5112), /* ~= 10^-162 */ + U64(0x8FF71A0F, 0xE2C2E6DC), U64(0x47F0E785, 0xEABA72AB), /* ~= 10^-161 */ + U64(0xB3F4E093, 0xDB73A093), U64(0x59ED2167, 0x65690F56), /* ~= 10^-160 */ + U64(0xE0F218B8, 0xD25088B8), U64(0x306869C1, 0x3EC3532C), /* ~= 10^-159 */ + U64(0x8C974F73, 0x83725573), U64(0x1E414218, 0xC73A13FB), /* ~= 10^-158 */ + U64(0xAFBD2350, 0x644EEACF), U64(0xE5D1929E, 0xF90898FA), /* ~= 10^-157 */ + U64(0xDBAC6C24, 0x7D62A583), U64(0xDF45F746, 0xB74ABF39), /* ~= 10^-156 */ + U64(0x894BC396, 0xCE5DA772), U64(0x6B8BBA8C, 0x328EB783), /* ~= 10^-155 */ + U64(0xAB9EB47C, 0x81F5114F), U64(0x066EA92F, 0x3F326564), /* ~= 10^-154 */ + U64(0xD686619B, 0xA27255A2), U64(0xC80A537B, 0x0EFEFEBD), /* ~= 10^-153 */ + U64(0x8613FD01, 0x45877585), U64(0xBD06742C, 0xE95F5F36), /* ~= 10^-152 */ + U64(0xA798FC41, 0x96E952E7), U64(0x2C481138, 0x23B73704), /* ~= 10^-151 */ + U64(0xD17F3B51, 0xFCA3A7A0), U64(0xF75A1586, 0x2CA504C5), /* ~= 10^-150 */ + U64(0x82EF8513, 0x3DE648C4), U64(0x9A984D73, 0xDBE722FB), /* ~= 10^-149 */ + U64(0xA3AB6658, 0x0D5FDAF5), U64(0xC13E60D0, 0xD2E0EBBA), /* ~= 10^-148 */ + U64(0xCC963FEE, 0x10B7D1B3), U64(0x318DF905, 0x079926A8), /* ~= 10^-147 */ + U64(0xFFBBCFE9, 0x94E5C61F), U64(0xFDF17746, 0x497F7052), /* ~= 10^-146 */ + U64(0x9FD561F1, 0xFD0F9BD3), U64(0xFEB6EA8B, 0xEDEFA633), /* ~= 10^-145 */ + U64(0xC7CABA6E, 0x7C5382C8), U64(0xFE64A52E, 0xE96B8FC0), /* ~= 10^-144 */ + U64(0xF9BD690A, 0x1B68637B), U64(0x3DFDCE7A, 0xA3C673B0), /* ~= 10^-143 */ + U64(0x9C1661A6, 0x51213E2D), U64(0x06BEA10C, 0xA65C084E), /* ~= 10^-142 */ + U64(0xC31BFA0F, 0xE5698DB8), U64(0x486E494F, 0xCFF30A62), /* ~= 10^-141 */ + U64(0xF3E2F893, 0xDEC3F126), U64(0x5A89DBA3, 0xC3EFCCFA), /* ~= 10^-140 */ + U64(0x986DDB5C, 0x6B3A76B7), U64(0xF8962946, 0x5A75E01C), /* ~= 10^-139 */ + U64(0xBE895233, 0x86091465), U64(0xF6BBB397, 0xF1135823), /* ~= 10^-138 */ + U64(0xEE2BA6C0, 0x678B597F), U64(0x746AA07D, 0xED582E2C), /* ~= 10^-137 */ + U64(0x94DB4838, 0x40B717EF), U64(0xA8C2A44E, 0xB4571CDC), /* ~= 10^-136 */ + U64(0xBA121A46, 0x50E4DDEB), U64(0x92F34D62, 0x616CE413), /* ~= 10^-135 */ + U64(0xE896A0D7, 0xE51E1566), U64(0x77B020BA, 0xF9C81D17), /* ~= 10^-134 */ + U64(0x915E2486, 0xEF32CD60), U64(0x0ACE1474, 0xDC1D122E), /* ~= 10^-133 */ + U64(0xB5B5ADA8, 0xAAFF80B8), U64(0x0D819992, 0x132456BA), /* ~= 10^-132 */ + U64(0xE3231912, 0xD5BF60E6), U64(0x10E1FFF6, 0x97ED6C69), /* ~= 10^-131 */ + U64(0x8DF5EFAB, 0xC5979C8F), U64(0xCA8D3FFA, 0x1EF463C1), /* ~= 10^-130 */ + U64(0xB1736B96, 0xB6FD83B3), U64(0xBD308FF8, 0xA6B17CB2), /* ~= 10^-129 */ + U64(0xDDD0467C, 0x64BCE4A0), U64(0xAC7CB3F6, 0xD05DDBDE), /* ~= 10^-128 */ + U64(0x8AA22C0D, 0xBEF60EE4), U64(0x6BCDF07A, 0x423AA96B), /* ~= 10^-127 */ + U64(0xAD4AB711, 0x2EB3929D), U64(0x86C16C98, 0xD2C953C6), /* ~= 10^-126 */ + U64(0xD89D64D5, 0x7A607744), U64(0xE871C7BF, 0x077BA8B7), /* ~= 10^-125 */ + U64(0x87625F05, 0x6C7C4A8B), U64(0x11471CD7, 0x64AD4972), /* ~= 10^-124 */ + U64(0xA93AF6C6, 0xC79B5D2D), U64(0xD598E40D, 0x3DD89BCF), /* ~= 10^-123 */ + U64(0xD389B478, 0x79823479), U64(0x4AFF1D10, 0x8D4EC2C3), /* ~= 10^-122 */ + U64(0x843610CB, 0x4BF160CB), U64(0xCEDF722A, 0x585139BA), /* ~= 10^-121 */ + U64(0xA54394FE, 0x1EEDB8FE), U64(0xC2974EB4, 0xEE658828), /* ~= 10^-120 */ + U64(0xCE947A3D, 0xA6A9273E), U64(0x733D2262, 0x29FEEA32), /* ~= 10^-119 */ + U64(0x811CCC66, 0x8829B887), U64(0x0806357D, 0x5A3F525F), /* ~= 10^-118 */ + U64(0xA163FF80, 0x2A3426A8), U64(0xCA07C2DC, 0xB0CF26F7), /* ~= 10^-117 */ + U64(0xC9BCFF60, 0x34C13052), U64(0xFC89B393, 0xDD02F0B5), /* ~= 10^-116 */ + U64(0xFC2C3F38, 0x41F17C67), U64(0xBBAC2078, 0xD443ACE2), /* ~= 10^-115 */ + U64(0x9D9BA783, 0x2936EDC0), U64(0xD54B944B, 0x84AA4C0D), /* ~= 10^-114 */ + U64(0xC5029163, 0xF384A931), U64(0x0A9E795E, 0x65D4DF11), /* ~= 10^-113 */ + U64(0xF64335BC, 0xF065D37D), U64(0x4D4617B5, 0xFF4A16D5), /* ~= 10^-112 */ + U64(0x99EA0196, 0x163FA42E), U64(0x504BCED1, 0xBF8E4E45), /* ~= 10^-111 */ + U64(0xC06481FB, 0x9BCF8D39), U64(0xE45EC286, 0x2F71E1D6), /* ~= 10^-110 */ + U64(0xF07DA27A, 0x82C37088), U64(0x5D767327, 0xBB4E5A4C), /* ~= 10^-109 */ + U64(0x964E858C, 0x91BA2655), U64(0x3A6A07F8, 0xD510F86F), /* ~= 10^-108 */ + U64(0xBBE226EF, 0xB628AFEA), U64(0x890489F7, 0x0A55368B), /* ~= 10^-107 */ + U64(0xEADAB0AB, 0xA3B2DBE5), U64(0x2B45AC74, 0xCCEA842E), /* ~= 10^-106 */ + U64(0x92C8AE6B, 0x464FC96F), U64(0x3B0B8BC9, 0x0012929D), /* ~= 10^-105 */ + U64(0xB77ADA06, 0x17E3BBCB), U64(0x09CE6EBB, 0x40173744), /* ~= 10^-104 */ + U64(0xE5599087, 0x9DDCAABD), U64(0xCC420A6A, 0x101D0515), /* ~= 10^-103 */ + U64(0x8F57FA54, 0xC2A9EAB6), U64(0x9FA94682, 0x4A12232D), /* ~= 10^-102 */ + U64(0xB32DF8E9, 0xF3546564), U64(0x47939822, 0xDC96ABF9), /* ~= 10^-101 */ + U64(0xDFF97724, 0x70297EBD), U64(0x59787E2B, 0x93BC56F7), /* ~= 10^-100 */ + U64(0x8BFBEA76, 0xC619EF36), U64(0x57EB4EDB, 0x3C55B65A), /* ~= 10^-99 */ + U64(0xAEFAE514, 0x77A06B03), U64(0xEDE62292, 0x0B6B23F1), /* ~= 10^-98 */ + U64(0xDAB99E59, 0x958885C4), U64(0xE95FAB36, 0x8E45ECED), /* ~= 10^-97 */ + U64(0x88B402F7, 0xFD75539B), U64(0x11DBCB02, 0x18EBB414), /* ~= 10^-96 */ + U64(0xAAE103B5, 0xFCD2A881), U64(0xD652BDC2, 0x9F26A119), /* ~= 10^-95 */ + U64(0xD59944A3, 0x7C0752A2), U64(0x4BE76D33, 0x46F0495F), /* ~= 10^-94 */ + U64(0x857FCAE6, 0x2D8493A5), U64(0x6F70A440, 0x0C562DDB), /* ~= 10^-93 */ + U64(0xA6DFBD9F, 0xB8E5B88E), U64(0xCB4CCD50, 0x0F6BB952), /* ~= 10^-92 */ + U64(0xD097AD07, 0xA71F26B2), U64(0x7E2000A4, 0x1346A7A7), /* ~= 10^-91 */ + U64(0x825ECC24, 0xC873782F), U64(0x8ED40066, 0x8C0C28C8), /* ~= 10^-90 */ + U64(0xA2F67F2D, 0xFA90563B), U64(0x72890080, 0x2F0F32FA), /* ~= 10^-89 */ + U64(0xCBB41EF9, 0x79346BCA), U64(0x4F2B40A0, 0x3AD2FFB9), /* ~= 10^-88 */ + U64(0xFEA126B7, 0xD78186BC), U64(0xE2F610C8, 0x4987BFA8), /* ~= 10^-87 */ + U64(0x9F24B832, 0xE6B0F436), U64(0x0DD9CA7D, 0x2DF4D7C9), /* ~= 10^-86 */ + U64(0xC6EDE63F, 0xA05D3143), U64(0x91503D1C, 0x79720DBB), /* ~= 10^-85 */ + U64(0xF8A95FCF, 0x88747D94), U64(0x75A44C63, 0x97CE912A), /* ~= 10^-84 */ + U64(0x9B69DBE1, 0xB548CE7C), U64(0xC986AFBE, 0x3EE11ABA), /* ~= 10^-83 */ + U64(0xC24452DA, 0x229B021B), U64(0xFBE85BAD, 0xCE996168), /* ~= 10^-82 */ + U64(0xF2D56790, 0xAB41C2A2), U64(0xFAE27299, 0x423FB9C3), /* ~= 10^-81 */ + U64(0x97C560BA, 0x6B0919A5), U64(0xDCCD879F, 0xC967D41A), /* ~= 10^-80 */ + U64(0xBDB6B8E9, 0x05CB600F), U64(0x5400E987, 0xBBC1C920), /* ~= 10^-79 */ + U64(0xED246723, 0x473E3813), U64(0x290123E9, 0xAAB23B68), /* ~= 10^-78 */ + U64(0x9436C076, 0x0C86E30B), U64(0xF9A0B672, 0x0AAF6521), /* ~= 10^-77 */ + U64(0xB9447093, 0x8FA89BCE), U64(0xF808E40E, 0x8D5B3E69), /* ~= 10^-76 */ + U64(0xE7958CB8, 0x7392C2C2), U64(0xB60B1D12, 0x30B20E04), /* ~= 10^-75 */ + U64(0x90BD77F3, 0x483BB9B9), U64(0xB1C6F22B, 0x5E6F48C2), /* ~= 10^-74 */ + U64(0xB4ECD5F0, 0x1A4AA828), U64(0x1E38AEB6, 0x360B1AF3), /* ~= 10^-73 */ + U64(0xE2280B6C, 0x20DD5232), U64(0x25C6DA63, 0xC38DE1B0), /* ~= 10^-72 */ + U64(0x8D590723, 0x948A535F), U64(0x579C487E, 0x5A38AD0E), /* ~= 10^-71 */ + U64(0xB0AF48EC, 0x79ACE837), U64(0x2D835A9D, 0xF0C6D851), /* ~= 10^-70 */ + U64(0xDCDB1B27, 0x98182244), U64(0xF8E43145, 0x6CF88E65), /* ~= 10^-69 */ + U64(0x8A08F0F8, 0xBF0F156B), U64(0x1B8E9ECB, 0x641B58FF), /* ~= 10^-68 */ + U64(0xAC8B2D36, 0xEED2DAC5), U64(0xE272467E, 0x3D222F3F), /* ~= 10^-67 */ + U64(0xD7ADF884, 0xAA879177), U64(0x5B0ED81D, 0xCC6ABB0F), /* ~= 10^-66 */ + U64(0x86CCBB52, 0xEA94BAEA), U64(0x98E94712, 0x9FC2B4E9), /* ~= 10^-65 */ + U64(0xA87FEA27, 0xA539E9A5), U64(0x3F2398D7, 0x47B36224), /* ~= 10^-64 */ + U64(0xD29FE4B1, 0x8E88640E), U64(0x8EEC7F0D, 0x19A03AAD), /* ~= 10^-63 */ + U64(0x83A3EEEE, 0xF9153E89), U64(0x1953CF68, 0x300424AC), /* ~= 10^-62 */ + U64(0xA48CEAAA, 0xB75A8E2B), U64(0x5FA8C342, 0x3C052DD7), /* ~= 10^-61 */ + U64(0xCDB02555, 0x653131B6), U64(0x3792F412, 0xCB06794D), /* ~= 10^-60 */ + U64(0x808E1755, 0x5F3EBF11), U64(0xE2BBD88B, 0xBEE40BD0), /* ~= 10^-59 */ + U64(0xA0B19D2A, 0xB70E6ED6), U64(0x5B6ACEAE, 0xAE9D0EC4), /* ~= 10^-58 */ + U64(0xC8DE0475, 0x64D20A8B), U64(0xF245825A, 0x5A445275), /* ~= 10^-57 */ + U64(0xFB158592, 0xBE068D2E), U64(0xEED6E2F0, 0xF0D56712), /* ~= 10^-56 */ + U64(0x9CED737B, 0xB6C4183D), U64(0x55464DD6, 0x9685606B), /* ~= 10^-55 */ + U64(0xC428D05A, 0xA4751E4C), U64(0xAA97E14C, 0x3C26B886), /* ~= 10^-54 */ + U64(0xF5330471, 0x4D9265DF), U64(0xD53DD99F, 0x4B3066A8), /* ~= 10^-53 */ + U64(0x993FE2C6, 0xD07B7FAB), U64(0xE546A803, 0x8EFE4029), /* ~= 10^-52 */ + U64(0xBF8FDB78, 0x849A5F96), U64(0xDE985204, 0x72BDD033), /* ~= 10^-51 */ + U64(0xEF73D256, 0xA5C0F77C), U64(0x963E6685, 0x8F6D4440), /* ~= 10^-50 */ + U64(0x95A86376, 0x27989AAD), U64(0xDDE70013, 0x79A44AA8), /* ~= 10^-49 */ + U64(0xBB127C53, 0xB17EC159), U64(0x5560C018, 0x580D5D52), /* ~= 10^-48 */ + U64(0xE9D71B68, 0x9DDE71AF), U64(0xAAB8F01E, 0x6E10B4A6), /* ~= 10^-47 */ + U64(0x92267121, 0x62AB070D), U64(0xCAB39613, 0x04CA70E8), /* ~= 10^-46 */ + U64(0xB6B00D69, 0xBB55C8D1), U64(0x3D607B97, 0xC5FD0D22), /* ~= 10^-45 */ + U64(0xE45C10C4, 0x2A2B3B05), U64(0x8CB89A7D, 0xB77C506A), /* ~= 10^-44 */ + U64(0x8EB98A7A, 0x9A5B04E3), U64(0x77F3608E, 0x92ADB242), /* ~= 10^-43 */ + U64(0xB267ED19, 0x40F1C61C), U64(0x55F038B2, 0x37591ED3), /* ~= 10^-42 */ + U64(0xDF01E85F, 0x912E37A3), U64(0x6B6C46DE, 0xC52F6688), /* ~= 10^-41 */ + U64(0x8B61313B, 0xBABCE2C6), U64(0x2323AC4B, 0x3B3DA015), /* ~= 10^-40 */ + U64(0xAE397D8A, 0xA96C1B77), U64(0xABEC975E, 0x0A0D081A), /* ~= 10^-39 */ + U64(0xD9C7DCED, 0x53C72255), U64(0x96E7BD35, 0x8C904A21), /* ~= 10^-38 */ + U64(0x881CEA14, 0x545C7575), U64(0x7E50D641, 0x77DA2E54), /* ~= 10^-37 */ + U64(0xAA242499, 0x697392D2), U64(0xDDE50BD1, 0xD5D0B9E9), /* ~= 10^-36 */ + U64(0xD4AD2DBF, 0xC3D07787), U64(0x955E4EC6, 0x4B44E864), /* ~= 10^-35 */ + U64(0x84EC3C97, 0xDA624AB4), U64(0xBD5AF13B, 0xEF0B113E), /* ~= 10^-34 */ + U64(0xA6274BBD, 0xD0FADD61), U64(0xECB1AD8A, 0xEACDD58E), /* ~= 10^-33 */ + U64(0xCFB11EAD, 0x453994BA), U64(0x67DE18ED, 0xA5814AF2), /* ~= 10^-32 */ + U64(0x81CEB32C, 0x4B43FCF4), U64(0x80EACF94, 0x8770CED7), /* ~= 10^-31 */ + U64(0xA2425FF7, 0x5E14FC31), U64(0xA1258379, 0xA94D028D), /* ~= 10^-30 */ + U64(0xCAD2F7F5, 0x359A3B3E), U64(0x096EE458, 0x13A04330), /* ~= 10^-29 */ + U64(0xFD87B5F2, 0x8300CA0D), U64(0x8BCA9D6E, 0x188853FC), /* ~= 10^-28 */ + U64(0x9E74D1B7, 0x91E07E48), U64(0x775EA264, 0xCF55347D), /* ~= 10^-27 */ + U64(0xC6120625, 0x76589DDA), U64(0x95364AFE, 0x032A819D), /* ~= 10^-26 */ + U64(0xF79687AE, 0xD3EEC551), U64(0x3A83DDBD, 0x83F52204), /* ~= 10^-25 */ + U64(0x9ABE14CD, 0x44753B52), U64(0xC4926A96, 0x72793542), /* ~= 10^-24 */ + U64(0xC16D9A00, 0x95928A27), U64(0x75B7053C, 0x0F178293), /* ~= 10^-23 */ + U64(0xF1C90080, 0xBAF72CB1), U64(0x5324C68B, 0x12DD6338), /* ~= 10^-22 */ + U64(0x971DA050, 0x74DA7BEE), U64(0xD3F6FC16, 0xEBCA5E03), /* ~= 10^-21 */ + U64(0xBCE50864, 0x92111AEA), U64(0x88F4BB1C, 0xA6BCF584), /* ~= 10^-20 */ + U64(0xEC1E4A7D, 0xB69561A5), U64(0x2B31E9E3, 0xD06C32E5), /* ~= 10^-19 */ + U64(0x9392EE8E, 0x921D5D07), U64(0x3AFF322E, 0x62439FCF), /* ~= 10^-18 */ + U64(0xB877AA32, 0x36A4B449), U64(0x09BEFEB9, 0xFAD487C2), /* ~= 10^-17 */ + U64(0xE69594BE, 0xC44DE15B), U64(0x4C2EBE68, 0x7989A9B3), /* ~= 10^-16 */ + U64(0x901D7CF7, 0x3AB0ACD9), U64(0x0F9D3701, 0x4BF60A10), /* ~= 10^-15 */ + U64(0xB424DC35, 0x095CD80F), U64(0x538484C1, 0x9EF38C94), /* ~= 10^-14 */ + U64(0xE12E1342, 0x4BB40E13), U64(0x2865A5F2, 0x06B06FB9), /* ~= 10^-13 */ + U64(0x8CBCCC09, 0x6F5088CB), U64(0xF93F87B7, 0x442E45D3), /* ~= 10^-12 */ + U64(0xAFEBFF0B, 0xCB24AAFE), U64(0xF78F69A5, 0x1539D748), /* ~= 10^-11 */ + U64(0xDBE6FECE, 0xBDEDD5BE), U64(0xB573440E, 0x5A884D1B), /* ~= 10^-10 */ + U64(0x89705F41, 0x36B4A597), U64(0x31680A88, 0xF8953030), /* ~= 10^-9 */ + U64(0xABCC7711, 0x8461CEFC), U64(0xFDC20D2B, 0x36BA7C3D), /* ~= 10^-8 */ + U64(0xD6BF94D5, 0xE57A42BC), U64(0x3D329076, 0x04691B4C), /* ~= 10^-7 */ + U64(0x8637BD05, 0xAF6C69B5), U64(0xA63F9A49, 0xC2C1B10F), /* ~= 10^-6 */ + U64(0xA7C5AC47, 0x1B478423), U64(0x0FCF80DC, 0x33721D53), /* ~= 10^-5 */ + U64(0xD1B71758, 0xE219652B), U64(0xD3C36113, 0x404EA4A8), /* ~= 10^-4 */ + U64(0x83126E97, 0x8D4FDF3B), U64(0x645A1CAC, 0x083126E9), /* ~= 10^-3 */ + U64(0xA3D70A3D, 0x70A3D70A), U64(0x3D70A3D7, 0x0A3D70A3), /* ~= 10^-2 */ + U64(0xCCCCCCCC, 0xCCCCCCCC), U64(0xCCCCCCCC, 0xCCCCCCCC), /* ~= 10^-1 */ + U64(0x80000000, 0x00000000), U64(0x00000000, 0x00000000), /* == 10^0 */ + U64(0xA0000000, 0x00000000), U64(0x00000000, 0x00000000), /* == 10^1 */ + U64(0xC8000000, 0x00000000), U64(0x00000000, 0x00000000), /* == 10^2 */ + U64(0xFA000000, 0x00000000), U64(0x00000000, 0x00000000), /* == 10^3 */ + U64(0x9C400000, 0x00000000), U64(0x00000000, 0x00000000), /* == 10^4 */ + U64(0xC3500000, 0x00000000), U64(0x00000000, 0x00000000), /* == 10^5 */ + U64(0xF4240000, 0x00000000), U64(0x00000000, 0x00000000), /* == 10^6 */ + U64(0x98968000, 0x00000000), U64(0x00000000, 0x00000000), /* == 10^7 */ + U64(0xBEBC2000, 0x00000000), U64(0x00000000, 0x00000000), /* == 10^8 */ + U64(0xEE6B2800, 0x00000000), U64(0x00000000, 0x00000000), /* == 10^9 */ + U64(0x9502F900, 0x00000000), U64(0x00000000, 0x00000000), /* == 10^10 */ + U64(0xBA43B740, 0x00000000), U64(0x00000000, 0x00000000), /* == 10^11 */ + U64(0xE8D4A510, 0x00000000), U64(0x00000000, 0x00000000), /* == 10^12 */ + U64(0x9184E72A, 0x00000000), U64(0x00000000, 0x00000000), /* == 10^13 */ + U64(0xB5E620F4, 0x80000000), U64(0x00000000, 0x00000000), /* == 10^14 */ + U64(0xE35FA931, 0xA0000000), U64(0x00000000, 0x00000000), /* == 10^15 */ + U64(0x8E1BC9BF, 0x04000000), U64(0x00000000, 0x00000000), /* == 10^16 */ + U64(0xB1A2BC2E, 0xC5000000), U64(0x00000000, 0x00000000), /* == 10^17 */ + U64(0xDE0B6B3A, 0x76400000), U64(0x00000000, 0x00000000), /* == 10^18 */ + U64(0x8AC72304, 0x89E80000), U64(0x00000000, 0x00000000), /* == 10^19 */ + U64(0xAD78EBC5, 0xAC620000), U64(0x00000000, 0x00000000), /* == 10^20 */ + U64(0xD8D726B7, 0x177A8000), U64(0x00000000, 0x00000000), /* == 10^21 */ + U64(0x87867832, 0x6EAC9000), U64(0x00000000, 0x00000000), /* == 10^22 */ + U64(0xA968163F, 0x0A57B400), U64(0x00000000, 0x00000000), /* == 10^23 */ + U64(0xD3C21BCE, 0xCCEDA100), U64(0x00000000, 0x00000000), /* == 10^24 */ + U64(0x84595161, 0x401484A0), U64(0x00000000, 0x00000000), /* == 10^25 */ + U64(0xA56FA5B9, 0x9019A5C8), U64(0x00000000, 0x00000000), /* == 10^26 */ + U64(0xCECB8F27, 0xF4200F3A), U64(0x00000000, 0x00000000), /* == 10^27 */ + U64(0x813F3978, 0xF8940984), U64(0x40000000, 0x00000000), /* == 10^28 */ + U64(0xA18F07D7, 0x36B90BE5), U64(0x50000000, 0x00000000), /* == 10^29 */ + U64(0xC9F2C9CD, 0x04674EDE), U64(0xA4000000, 0x00000000), /* == 10^30 */ + U64(0xFC6F7C40, 0x45812296), U64(0x4D000000, 0x00000000), /* == 10^31 */ + U64(0x9DC5ADA8, 0x2B70B59D), U64(0xF0200000, 0x00000000), /* == 10^32 */ + U64(0xC5371912, 0x364CE305), U64(0x6C280000, 0x00000000), /* == 10^33 */ + U64(0xF684DF56, 0xC3E01BC6), U64(0xC7320000, 0x00000000), /* == 10^34 */ + U64(0x9A130B96, 0x3A6C115C), U64(0x3C7F4000, 0x00000000), /* == 10^35 */ + U64(0xC097CE7B, 0xC90715B3), U64(0x4B9F1000, 0x00000000), /* == 10^36 */ + U64(0xF0BDC21A, 0xBB48DB20), U64(0x1E86D400, 0x00000000), /* == 10^37 */ + U64(0x96769950, 0xB50D88F4), U64(0x13144480, 0x00000000), /* == 10^38 */ + U64(0xBC143FA4, 0xE250EB31), U64(0x17D955A0, 0x00000000), /* == 10^39 */ + U64(0xEB194F8E, 0x1AE525FD), U64(0x5DCFAB08, 0x00000000), /* == 10^40 */ + U64(0x92EFD1B8, 0xD0CF37BE), U64(0x5AA1CAE5, 0x00000000), /* == 10^41 */ + U64(0xB7ABC627, 0x050305AD), U64(0xF14A3D9E, 0x40000000), /* == 10^42 */ + U64(0xE596B7B0, 0xC643C719), U64(0x6D9CCD05, 0xD0000000), /* == 10^43 */ + U64(0x8F7E32CE, 0x7BEA5C6F), U64(0xE4820023, 0xA2000000), /* == 10^44 */ + U64(0xB35DBF82, 0x1AE4F38B), U64(0xDDA2802C, 0x8A800000), /* == 10^45 */ + U64(0xE0352F62, 0xA19E306E), U64(0xD50B2037, 0xAD200000), /* == 10^46 */ + U64(0x8C213D9D, 0xA502DE45), U64(0x4526F422, 0xCC340000), /* == 10^47 */ + U64(0xAF298D05, 0x0E4395D6), U64(0x9670B12B, 0x7F410000), /* == 10^48 */ + U64(0xDAF3F046, 0x51D47B4C), U64(0x3C0CDD76, 0x5F114000), /* == 10^49 */ + U64(0x88D8762B, 0xF324CD0F), U64(0xA5880A69, 0xFB6AC800), /* == 10^50 */ + U64(0xAB0E93B6, 0xEFEE0053), U64(0x8EEA0D04, 0x7A457A00), /* == 10^51 */ + U64(0xD5D238A4, 0xABE98068), U64(0x72A49045, 0x98D6D880), /* == 10^52 */ + U64(0x85A36366, 0xEB71F041), U64(0x47A6DA2B, 0x7F864750), /* == 10^53 */ + U64(0xA70C3C40, 0xA64E6C51), U64(0x999090B6, 0x5F67D924), /* == 10^54 */ + U64(0xD0CF4B50, 0xCFE20765), U64(0xFFF4B4E3, 0xF741CF6D), /* == 10^55 */ + U64(0x82818F12, 0x81ED449F), U64(0xBFF8F10E, 0x7A8921A4), /* ~= 10^56 */ + U64(0xA321F2D7, 0x226895C7), U64(0xAFF72D52, 0x192B6A0D), /* ~= 10^57 */ + U64(0xCBEA6F8C, 0xEB02BB39), U64(0x9BF4F8A6, 0x9F764490), /* ~= 10^58 */ + U64(0xFEE50B70, 0x25C36A08), U64(0x02F236D0, 0x4753D5B4), /* ~= 10^59 */ + U64(0x9F4F2726, 0x179A2245), U64(0x01D76242, 0x2C946590), /* ~= 10^60 */ + U64(0xC722F0EF, 0x9D80AAD6), U64(0x424D3AD2, 0xB7B97EF5), /* ~= 10^61 */ + U64(0xF8EBAD2B, 0x84E0D58B), U64(0xD2E08987, 0x65A7DEB2), /* ~= 10^62 */ + U64(0x9B934C3B, 0x330C8577), U64(0x63CC55F4, 0x9F88EB2F), /* ~= 10^63 */ + U64(0xC2781F49, 0xFFCFA6D5), U64(0x3CBF6B71, 0xC76B25FB), /* ~= 10^64 */ + U64(0xF316271C, 0x7FC3908A), U64(0x8BEF464E, 0x3945EF7A), /* ~= 10^65 */ + U64(0x97EDD871, 0xCFDA3A56), U64(0x97758BF0, 0xE3CBB5AC), /* ~= 10^66 */ + U64(0xBDE94E8E, 0x43D0C8EC), U64(0x3D52EEED, 0x1CBEA317), /* ~= 10^67 */ + U64(0xED63A231, 0xD4C4FB27), U64(0x4CA7AAA8, 0x63EE4BDD), /* ~= 10^68 */ + U64(0x945E455F, 0x24FB1CF8), U64(0x8FE8CAA9, 0x3E74EF6A), /* ~= 10^69 */ + U64(0xB975D6B6, 0xEE39E436), U64(0xB3E2FD53, 0x8E122B44), /* ~= 10^70 */ + U64(0xE7D34C64, 0xA9C85D44), U64(0x60DBBCA8, 0x7196B616), /* ~= 10^71 */ + U64(0x90E40FBE, 0xEA1D3A4A), U64(0xBC8955E9, 0x46FE31CD), /* ~= 10^72 */ + U64(0xB51D13AE, 0xA4A488DD), U64(0x6BABAB63, 0x98BDBE41), /* ~= 10^73 */ + U64(0xE264589A, 0x4DCDAB14), U64(0xC696963C, 0x7EED2DD1), /* ~= 10^74 */ + U64(0x8D7EB760, 0x70A08AEC), U64(0xFC1E1DE5, 0xCF543CA2), /* ~= 10^75 */ + U64(0xB0DE6538, 0x8CC8ADA8), U64(0x3B25A55F, 0x43294BCB), /* ~= 10^76 */ + U64(0xDD15FE86, 0xAFFAD912), U64(0x49EF0EB7, 0x13F39EBE), /* ~= 10^77 */ + U64(0x8A2DBF14, 0x2DFCC7AB), U64(0x6E356932, 0x6C784337), /* ~= 10^78 */ + U64(0xACB92ED9, 0x397BF996), U64(0x49C2C37F, 0x07965404), /* ~= 10^79 */ + U64(0xD7E77A8F, 0x87DAF7FB), U64(0xDC33745E, 0xC97BE906), /* ~= 10^80 */ + U64(0x86F0AC99, 0xB4E8DAFD), U64(0x69A028BB, 0x3DED71A3), /* ~= 10^81 */ + U64(0xA8ACD7C0, 0x222311BC), U64(0xC40832EA, 0x0D68CE0C), /* ~= 10^82 */ + U64(0xD2D80DB0, 0x2AABD62B), U64(0xF50A3FA4, 0x90C30190), /* ~= 10^83 */ + U64(0x83C7088E, 0x1AAB65DB), U64(0x792667C6, 0xDA79E0FA), /* ~= 10^84 */ + U64(0xA4B8CAB1, 0xA1563F52), U64(0x577001B8, 0x91185938), /* ~= 10^85 */ + U64(0xCDE6FD5E, 0x09ABCF26), U64(0xED4C0226, 0xB55E6F86), /* ~= 10^86 */ + U64(0x80B05E5A, 0xC60B6178), U64(0x544F8158, 0x315B05B4), /* ~= 10^87 */ + U64(0xA0DC75F1, 0x778E39D6), U64(0x696361AE, 0x3DB1C721), /* ~= 10^88 */ + U64(0xC913936D, 0xD571C84C), U64(0x03BC3A19, 0xCD1E38E9), /* ~= 10^89 */ + U64(0xFB587849, 0x4ACE3A5F), U64(0x04AB48A0, 0x4065C723), /* ~= 10^90 */ + U64(0x9D174B2D, 0xCEC0E47B), U64(0x62EB0D64, 0x283F9C76), /* ~= 10^91 */ + U64(0xC45D1DF9, 0x42711D9A), U64(0x3BA5D0BD, 0x324F8394), /* ~= 10^92 */ + U64(0xF5746577, 0x930D6500), U64(0xCA8F44EC, 0x7EE36479), /* ~= 10^93 */ + U64(0x9968BF6A, 0xBBE85F20), U64(0x7E998B13, 0xCF4E1ECB), /* ~= 10^94 */ + U64(0xBFC2EF45, 0x6AE276E8), U64(0x9E3FEDD8, 0xC321A67E), /* ~= 10^95 */ + U64(0xEFB3AB16, 0xC59B14A2), U64(0xC5CFE94E, 0xF3EA101E), /* ~= 10^96 */ + U64(0x95D04AEE, 0x3B80ECE5), U64(0xBBA1F1D1, 0x58724A12), /* ~= 10^97 */ + U64(0xBB445DA9, 0xCA61281F), U64(0x2A8A6E45, 0xAE8EDC97), /* ~= 10^98 */ + U64(0xEA157514, 0x3CF97226), U64(0xF52D09D7, 0x1A3293BD), /* ~= 10^99 */ + U64(0x924D692C, 0xA61BE758), U64(0x593C2626, 0x705F9C56), /* ~= 10^100 */ + U64(0xB6E0C377, 0xCFA2E12E), U64(0x6F8B2FB0, 0x0C77836C), /* ~= 10^101 */ + U64(0xE498F455, 0xC38B997A), U64(0x0B6DFB9C, 0x0F956447), /* ~= 10^102 */ + U64(0x8EDF98B5, 0x9A373FEC), U64(0x4724BD41, 0x89BD5EAC), /* ~= 10^103 */ + U64(0xB2977EE3, 0x00C50FE7), U64(0x58EDEC91, 0xEC2CB657), /* ~= 10^104 */ + U64(0xDF3D5E9B, 0xC0F653E1), U64(0x2F2967B6, 0x6737E3ED), /* ~= 10^105 */ + U64(0x8B865B21, 0x5899F46C), U64(0xBD79E0D2, 0x0082EE74), /* ~= 10^106 */ + U64(0xAE67F1E9, 0xAEC07187), U64(0xECD85906, 0x80A3AA11), /* ~= 10^107 */ + U64(0xDA01EE64, 0x1A708DE9), U64(0xE80E6F48, 0x20CC9495), /* ~= 10^108 */ + U64(0x884134FE, 0x908658B2), U64(0x3109058D, 0x147FDCDD), /* ~= 10^109 */ + U64(0xAA51823E, 0x34A7EEDE), U64(0xBD4B46F0, 0x599FD415), /* ~= 10^110 */ + U64(0xD4E5E2CD, 0xC1D1EA96), U64(0x6C9E18AC, 0x7007C91A), /* ~= 10^111 */ + U64(0x850FADC0, 0x9923329E), U64(0x03E2CF6B, 0xC604DDB0), /* ~= 10^112 */ + U64(0xA6539930, 0xBF6BFF45), U64(0x84DB8346, 0xB786151C), /* ~= 10^113 */ + U64(0xCFE87F7C, 0xEF46FF16), U64(0xE6126418, 0x65679A63), /* ~= 10^114 */ + U64(0x81F14FAE, 0x158C5F6E), U64(0x4FCB7E8F, 0x3F60C07E), /* ~= 10^115 */ + U64(0xA26DA399, 0x9AEF7749), U64(0xE3BE5E33, 0x0F38F09D), /* ~= 10^116 */ + U64(0xCB090C80, 0x01AB551C), U64(0x5CADF5BF, 0xD3072CC5), /* ~= 10^117 */ + U64(0xFDCB4FA0, 0x02162A63), U64(0x73D9732F, 0xC7C8F7F6), /* ~= 10^118 */ + U64(0x9E9F11C4, 0x014DDA7E), U64(0x2867E7FD, 0xDCDD9AFA), /* ~= 10^119 */ + U64(0xC646D635, 0x01A1511D), U64(0xB281E1FD, 0x541501B8), /* ~= 10^120 */ + U64(0xF7D88BC2, 0x4209A565), U64(0x1F225A7C, 0xA91A4226), /* ~= 10^121 */ + U64(0x9AE75759, 0x6946075F), U64(0x3375788D, 0xE9B06958), /* ~= 10^122 */ + U64(0xC1A12D2F, 0xC3978937), U64(0x0052D6B1, 0x641C83AE), /* ~= 10^123 */ + U64(0xF209787B, 0xB47D6B84), U64(0xC0678C5D, 0xBD23A49A), /* ~= 10^124 */ + U64(0x9745EB4D, 0x50CE6332), U64(0xF840B7BA, 0x963646E0), /* ~= 10^125 */ + U64(0xBD176620, 0xA501FBFF), U64(0xB650E5A9, 0x3BC3D898), /* ~= 10^126 */ + U64(0xEC5D3FA8, 0xCE427AFF), U64(0xA3E51F13, 0x8AB4CEBE), /* ~= 10^127 */ + U64(0x93BA47C9, 0x80E98CDF), U64(0xC66F336C, 0x36B10137), /* ~= 10^128 */ + U64(0xB8A8D9BB, 0xE123F017), U64(0xB80B0047, 0x445D4184), /* ~= 10^129 */ + U64(0xE6D3102A, 0xD96CEC1D), U64(0xA60DC059, 0x157491E5), /* ~= 10^130 */ + U64(0x9043EA1A, 0xC7E41392), U64(0x87C89837, 0xAD68DB2F), /* ~= 10^131 */ + U64(0xB454E4A1, 0x79DD1877), U64(0x29BABE45, 0x98C311FB), /* ~= 10^132 */ + U64(0xE16A1DC9, 0xD8545E94), U64(0xF4296DD6, 0xFEF3D67A), /* ~= 10^133 */ + U64(0x8CE2529E, 0x2734BB1D), U64(0x1899E4A6, 0x5F58660C), /* ~= 10^134 */ + U64(0xB01AE745, 0xB101E9E4), U64(0x5EC05DCF, 0xF72E7F8F), /* ~= 10^135 */ + U64(0xDC21A117, 0x1D42645D), U64(0x76707543, 0xF4FA1F73), /* ~= 10^136 */ + U64(0x899504AE, 0x72497EBA), U64(0x6A06494A, 0x791C53A8), /* ~= 10^137 */ + U64(0xABFA45DA, 0x0EDBDE69), U64(0x0487DB9D, 0x17636892), /* ~= 10^138 */ + U64(0xD6F8D750, 0x9292D603), U64(0x45A9D284, 0x5D3C42B6), /* ~= 10^139 */ + U64(0x865B8692, 0x5B9BC5C2), U64(0x0B8A2392, 0xBA45A9B2), /* ~= 10^140 */ + U64(0xA7F26836, 0xF282B732), U64(0x8E6CAC77, 0x68D7141E), /* ~= 10^141 */ + U64(0xD1EF0244, 0xAF2364FF), U64(0x3207D795, 0x430CD926), /* ~= 10^142 */ + U64(0x8335616A, 0xED761F1F), U64(0x7F44E6BD, 0x49E807B8), /* ~= 10^143 */ + U64(0xA402B9C5, 0xA8D3A6E7), U64(0x5F16206C, 0x9C6209A6), /* ~= 10^144 */ + U64(0xCD036837, 0x130890A1), U64(0x36DBA887, 0xC37A8C0F), /* ~= 10^145 */ + U64(0x80222122, 0x6BE55A64), U64(0xC2494954, 0xDA2C9789), /* ~= 10^146 */ + U64(0xA02AA96B, 0x06DEB0FD), U64(0xF2DB9BAA, 0x10B7BD6C), /* ~= 10^147 */ + U64(0xC83553C5, 0xC8965D3D), U64(0x6F928294, 0x94E5ACC7), /* ~= 10^148 */ + U64(0xFA42A8B7, 0x3ABBF48C), U64(0xCB772339, 0xBA1F17F9), /* ~= 10^149 */ + U64(0x9C69A972, 0x84B578D7), U64(0xFF2A7604, 0x14536EFB), /* ~= 10^150 */ + U64(0xC38413CF, 0x25E2D70D), U64(0xFEF51385, 0x19684ABA), /* ~= 10^151 */ + U64(0xF46518C2, 0xEF5B8CD1), U64(0x7EB25866, 0x5FC25D69), /* ~= 10^152 */ + U64(0x98BF2F79, 0xD5993802), U64(0xEF2F773F, 0xFBD97A61), /* ~= 10^153 */ + U64(0xBEEEFB58, 0x4AFF8603), U64(0xAAFB550F, 0xFACFD8FA), /* ~= 10^154 */ + U64(0xEEAABA2E, 0x5DBF6784), U64(0x95BA2A53, 0xF983CF38), /* ~= 10^155 */ + U64(0x952AB45C, 0xFA97A0B2), U64(0xDD945A74, 0x7BF26183), /* ~= 10^156 */ + U64(0xBA756174, 0x393D88DF), U64(0x94F97111, 0x9AEEF9E4), /* ~= 10^157 */ + U64(0xE912B9D1, 0x478CEB17), U64(0x7A37CD56, 0x01AAB85D), /* ~= 10^158 */ + U64(0x91ABB422, 0xCCB812EE), U64(0xAC62E055, 0xC10AB33A), /* ~= 10^159 */ + U64(0xB616A12B, 0x7FE617AA), U64(0x577B986B, 0x314D6009), /* ~= 10^160 */ + U64(0xE39C4976, 0x5FDF9D94), U64(0xED5A7E85, 0xFDA0B80B), /* ~= 10^161 */ + U64(0x8E41ADE9, 0xFBEBC27D), U64(0x14588F13, 0xBE847307), /* ~= 10^162 */ + U64(0xB1D21964, 0x7AE6B31C), U64(0x596EB2D8, 0xAE258FC8), /* ~= 10^163 */ + U64(0xDE469FBD, 0x99A05FE3), U64(0x6FCA5F8E, 0xD9AEF3BB), /* ~= 10^164 */ + U64(0x8AEC23D6, 0x80043BEE), U64(0x25DE7BB9, 0x480D5854), /* ~= 10^165 */ + U64(0xADA72CCC, 0x20054AE9), U64(0xAF561AA7, 0x9A10AE6A), /* ~= 10^166 */ + U64(0xD910F7FF, 0x28069DA4), U64(0x1B2BA151, 0x8094DA04), /* ~= 10^167 */ + U64(0x87AA9AFF, 0x79042286), U64(0x90FB44D2, 0xF05D0842), /* ~= 10^168 */ + U64(0xA99541BF, 0x57452B28), U64(0x353A1607, 0xAC744A53), /* ~= 10^169 */ + U64(0xD3FA922F, 0x2D1675F2), U64(0x42889B89, 0x97915CE8), /* ~= 10^170 */ + U64(0x847C9B5D, 0x7C2E09B7), U64(0x69956135, 0xFEBADA11), /* ~= 10^171 */ + U64(0xA59BC234, 0xDB398C25), U64(0x43FAB983, 0x7E699095), /* ~= 10^172 */ + U64(0xCF02B2C2, 0x1207EF2E), U64(0x94F967E4, 0x5E03F4BB), /* ~= 10^173 */ + U64(0x8161AFB9, 0x4B44F57D), U64(0x1D1BE0EE, 0xBAC278F5), /* ~= 10^174 */ + U64(0xA1BA1BA7, 0x9E1632DC), U64(0x6462D92A, 0x69731732), /* ~= 10^175 */ + U64(0xCA28A291, 0x859BBF93), U64(0x7D7B8F75, 0x03CFDCFE), /* ~= 10^176 */ + U64(0xFCB2CB35, 0xE702AF78), U64(0x5CDA7352, 0x44C3D43E), /* ~= 10^177 */ + U64(0x9DEFBF01, 0xB061ADAB), U64(0x3A088813, 0x6AFA64A7), /* ~= 10^178 */ + U64(0xC56BAEC2, 0x1C7A1916), U64(0x088AAA18, 0x45B8FDD0), /* ~= 10^179 */ + U64(0xF6C69A72, 0xA3989F5B), U64(0x8AAD549E, 0x57273D45), /* ~= 10^180 */ + U64(0x9A3C2087, 0xA63F6399), U64(0x36AC54E2, 0xF678864B), /* ~= 10^181 */ + U64(0xC0CB28A9, 0x8FCF3C7F), U64(0x84576A1B, 0xB416A7DD), /* ~= 10^182 */ + U64(0xF0FDF2D3, 0xF3C30B9F), U64(0x656D44A2, 0xA11C51D5), /* ~= 10^183 */ + U64(0x969EB7C4, 0x7859E743), U64(0x9F644AE5, 0xA4B1B325), /* ~= 10^184 */ + U64(0xBC4665B5, 0x96706114), U64(0x873D5D9F, 0x0DDE1FEE), /* ~= 10^185 */ + U64(0xEB57FF22, 0xFC0C7959), U64(0xA90CB506, 0xD155A7EA), /* ~= 10^186 */ + U64(0x9316FF75, 0xDD87CBD8), U64(0x09A7F124, 0x42D588F2), /* ~= 10^187 */ + U64(0xB7DCBF53, 0x54E9BECE), U64(0x0C11ED6D, 0x538AEB2F), /* ~= 10^188 */ + U64(0xE5D3EF28, 0x2A242E81), U64(0x8F1668C8, 0xA86DA5FA), /* ~= 10^189 */ + U64(0x8FA47579, 0x1A569D10), U64(0xF96E017D, 0x694487BC), /* ~= 10^190 */ + U64(0xB38D92D7, 0x60EC4455), U64(0x37C981DC, 0xC395A9AC), /* ~= 10^191 */ + U64(0xE070F78D, 0x3927556A), U64(0x85BBE253, 0xF47B1417), /* ~= 10^192 */ + U64(0x8C469AB8, 0x43B89562), U64(0x93956D74, 0x78CCEC8E), /* ~= 10^193 */ + U64(0xAF584166, 0x54A6BABB), U64(0x387AC8D1, 0x970027B2), /* ~= 10^194 */ + U64(0xDB2E51BF, 0xE9D0696A), U64(0x06997B05, 0xFCC0319E), /* ~= 10^195 */ + U64(0x88FCF317, 0xF22241E2), U64(0x441FECE3, 0xBDF81F03), /* ~= 10^196 */ + U64(0xAB3C2FDD, 0xEEAAD25A), U64(0xD527E81C, 0xAD7626C3), /* ~= 10^197 */ + U64(0xD60B3BD5, 0x6A5586F1), U64(0x8A71E223, 0xD8D3B074), /* ~= 10^198 */ + U64(0x85C70565, 0x62757456), U64(0xF6872D56, 0x67844E49), /* ~= 10^199 */ + U64(0xA738C6BE, 0xBB12D16C), U64(0xB428F8AC, 0x016561DB), /* ~= 10^200 */ + U64(0xD106F86E, 0x69D785C7), U64(0xE13336D7, 0x01BEBA52), /* ~= 10^201 */ + U64(0x82A45B45, 0x0226B39C), U64(0xECC00246, 0x61173473), /* ~= 10^202 */ + U64(0xA34D7216, 0x42B06084), U64(0x27F002D7, 0xF95D0190), /* ~= 10^203 */ + U64(0xCC20CE9B, 0xD35C78A5), U64(0x31EC038D, 0xF7B441F4), /* ~= 10^204 */ + U64(0xFF290242, 0xC83396CE), U64(0x7E670471, 0x75A15271), /* ~= 10^205 */ + U64(0x9F79A169, 0xBD203E41), U64(0x0F0062C6, 0xE984D386), /* ~= 10^206 */ + U64(0xC75809C4, 0x2C684DD1), U64(0x52C07B78, 0xA3E60868), /* ~= 10^207 */ + U64(0xF92E0C35, 0x37826145), U64(0xA7709A56, 0xCCDF8A82), /* ~= 10^208 */ + U64(0x9BBCC7A1, 0x42B17CCB), U64(0x88A66076, 0x400BB691), /* ~= 10^209 */ + U64(0xC2ABF989, 0x935DDBFE), U64(0x6ACFF893, 0xD00EA435), /* ~= 10^210 */ + U64(0xF356F7EB, 0xF83552FE), U64(0x0583F6B8, 0xC4124D43), /* ~= 10^211 */ + U64(0x98165AF3, 0x7B2153DE), U64(0xC3727A33, 0x7A8B704A), /* ~= 10^212 */ + U64(0xBE1BF1B0, 0x59E9A8D6), U64(0x744F18C0, 0x592E4C5C), /* ~= 10^213 */ + U64(0xEDA2EE1C, 0x7064130C), U64(0x1162DEF0, 0x6F79DF73), /* ~= 10^214 */ + U64(0x9485D4D1, 0xC63E8BE7), U64(0x8ADDCB56, 0x45AC2BA8), /* ~= 10^215 */ + U64(0xB9A74A06, 0x37CE2EE1), U64(0x6D953E2B, 0xD7173692), /* ~= 10^216 */ + U64(0xE8111C87, 0xC5C1BA99), U64(0xC8FA8DB6, 0xCCDD0437), /* ~= 10^217 */ + U64(0x910AB1D4, 0xDB9914A0), U64(0x1D9C9892, 0x400A22A2), /* ~= 10^218 */ + U64(0xB54D5E4A, 0x127F59C8), U64(0x2503BEB6, 0xD00CAB4B), /* ~= 10^219 */ + U64(0xE2A0B5DC, 0x971F303A), U64(0x2E44AE64, 0x840FD61D), /* ~= 10^220 */ + U64(0x8DA471A9, 0xDE737E24), U64(0x5CEAECFE, 0xD289E5D2), /* ~= 10^221 */ + U64(0xB10D8E14, 0x56105DAD), U64(0x7425A83E, 0x872C5F47), /* ~= 10^222 */ + U64(0xDD50F199, 0x6B947518), U64(0xD12F124E, 0x28F77719), /* ~= 10^223 */ + U64(0x8A5296FF, 0xE33CC92F), U64(0x82BD6B70, 0xD99AAA6F), /* ~= 10^224 */ + U64(0xACE73CBF, 0xDC0BFB7B), U64(0x636CC64D, 0x1001550B), /* ~= 10^225 */ + U64(0xD8210BEF, 0xD30EFA5A), U64(0x3C47F7E0, 0x5401AA4E), /* ~= 10^226 */ + U64(0x8714A775, 0xE3E95C78), U64(0x65ACFAEC, 0x34810A71), /* ~= 10^227 */ + U64(0xA8D9D153, 0x5CE3B396), U64(0x7F1839A7, 0x41A14D0D), /* ~= 10^228 */ + U64(0xD31045A8, 0x341CA07C), U64(0x1EDE4811, 0x1209A050), /* ~= 10^229 */ + U64(0x83EA2B89, 0x2091E44D), U64(0x934AED0A, 0xAB460432), /* ~= 10^230 */ + U64(0xA4E4B66B, 0x68B65D60), U64(0xF81DA84D, 0x5617853F), /* ~= 10^231 */ + U64(0xCE1DE406, 0x42E3F4B9), U64(0x36251260, 0xAB9D668E), /* ~= 10^232 */ + U64(0x80D2AE83, 0xE9CE78F3), U64(0xC1D72B7C, 0x6B426019), /* ~= 10^233 */ + U64(0xA1075A24, 0xE4421730), U64(0xB24CF65B, 0x8612F81F), /* ~= 10^234 */ + U64(0xC94930AE, 0x1D529CFC), U64(0xDEE033F2, 0x6797B627), /* ~= 10^235 */ + U64(0xFB9B7CD9, 0xA4A7443C), U64(0x169840EF, 0x017DA3B1), /* ~= 10^236 */ + U64(0x9D412E08, 0x06E88AA5), U64(0x8E1F2895, 0x60EE864E), /* ~= 10^237 */ + U64(0xC491798A, 0x08A2AD4E), U64(0xF1A6F2BA, 0xB92A27E2), /* ~= 10^238 */ + U64(0xF5B5D7EC, 0x8ACB58A2), U64(0xAE10AF69, 0x6774B1DB), /* ~= 10^239 */ + U64(0x9991A6F3, 0xD6BF1765), U64(0xACCA6DA1, 0xE0A8EF29), /* ~= 10^240 */ + U64(0xBFF610B0, 0xCC6EDD3F), U64(0x17FD090A, 0x58D32AF3), /* ~= 10^241 */ + U64(0xEFF394DC, 0xFF8A948E), U64(0xDDFC4B4C, 0xEF07F5B0), /* ~= 10^242 */ + U64(0x95F83D0A, 0x1FB69CD9), U64(0x4ABDAF10, 0x1564F98E), /* ~= 10^243 */ + U64(0xBB764C4C, 0xA7A4440F), U64(0x9D6D1AD4, 0x1ABE37F1), /* ~= 10^244 */ + U64(0xEA53DF5F, 0xD18D5513), U64(0x84C86189, 0x216DC5ED), /* ~= 10^245 */ + U64(0x92746B9B, 0xE2F8552C), U64(0x32FD3CF5, 0xB4E49BB4), /* ~= 10^246 */ + U64(0xB7118682, 0xDBB66A77), U64(0x3FBC8C33, 0x221DC2A1), /* ~= 10^247 */ + U64(0xE4D5E823, 0x92A40515), U64(0x0FABAF3F, 0xEAA5334A), /* ~= 10^248 */ + U64(0x8F05B116, 0x3BA6832D), U64(0x29CB4D87, 0xF2A7400E), /* ~= 10^249 */ + U64(0xB2C71D5B, 0xCA9023F8), U64(0x743E20E9, 0xEF511012), /* ~= 10^250 */ + U64(0xDF78E4B2, 0xBD342CF6), U64(0x914DA924, 0x6B255416), /* ~= 10^251 */ + U64(0x8BAB8EEF, 0xB6409C1A), U64(0x1AD089B6, 0xC2F7548E), /* ~= 10^252 */ + U64(0xAE9672AB, 0xA3D0C320), U64(0xA184AC24, 0x73B529B1), /* ~= 10^253 */ + U64(0xDA3C0F56, 0x8CC4F3E8), U64(0xC9E5D72D, 0x90A2741E), /* ~= 10^254 */ + U64(0x88658996, 0x17FB1871), U64(0x7E2FA67C, 0x7A658892), /* ~= 10^255 */ + U64(0xAA7EEBFB, 0x9DF9DE8D), U64(0xDDBB901B, 0x98FEEAB7), /* ~= 10^256 */ + U64(0xD51EA6FA, 0x85785631), U64(0x552A7422, 0x7F3EA565), /* ~= 10^257 */ + U64(0x8533285C, 0x936B35DE), U64(0xD53A8895, 0x8F87275F), /* ~= 10^258 */ + U64(0xA67FF273, 0xB8460356), U64(0x8A892ABA, 0xF368F137), /* ~= 10^259 */ + U64(0xD01FEF10, 0xA657842C), U64(0x2D2B7569, 0xB0432D85), /* ~= 10^260 */ + U64(0x8213F56A, 0x67F6B29B), U64(0x9C3B2962, 0x0E29FC73), /* ~= 10^261 */ + U64(0xA298F2C5, 0x01F45F42), U64(0x8349F3BA, 0x91B47B8F), /* ~= 10^262 */ + U64(0xCB3F2F76, 0x42717713), U64(0x241C70A9, 0x36219A73), /* ~= 10^263 */ + U64(0xFE0EFB53, 0xD30DD4D7), U64(0xED238CD3, 0x83AA0110), /* ~= 10^264 */ + U64(0x9EC95D14, 0x63E8A506), U64(0xF4363804, 0x324A40AA), /* ~= 10^265 */ + U64(0xC67BB459, 0x7CE2CE48), U64(0xB143C605, 0x3EDCD0D5), /* ~= 10^266 */ + U64(0xF81AA16F, 0xDC1B81DA), U64(0xDD94B786, 0x8E94050A), /* ~= 10^267 */ + U64(0x9B10A4E5, 0xE9913128), U64(0xCA7CF2B4, 0x191C8326), /* ~= 10^268 */ + U64(0xC1D4CE1F, 0x63F57D72), U64(0xFD1C2F61, 0x1F63A3F0), /* ~= 10^269 */ + U64(0xF24A01A7, 0x3CF2DCCF), U64(0xBC633B39, 0x673C8CEC), /* ~= 10^270 */ + U64(0x976E4108, 0x8617CA01), U64(0xD5BE0503, 0xE085D813), /* ~= 10^271 */ + U64(0xBD49D14A, 0xA79DBC82), U64(0x4B2D8644, 0xD8A74E18), /* ~= 10^272 */ + U64(0xEC9C459D, 0x51852BA2), U64(0xDDF8E7D6, 0x0ED1219E), /* ~= 10^273 */ + U64(0x93E1AB82, 0x52F33B45), U64(0xCABB90E5, 0xC942B503), /* ~= 10^274 */ + U64(0xB8DA1662, 0xE7B00A17), U64(0x3D6A751F, 0x3B936243), /* ~= 10^275 */ + U64(0xE7109BFB, 0xA19C0C9D), U64(0x0CC51267, 0x0A783AD4), /* ~= 10^276 */ + U64(0x906A617D, 0x450187E2), U64(0x27FB2B80, 0x668B24C5), /* ~= 10^277 */ + U64(0xB484F9DC, 0x9641E9DA), U64(0xB1F9F660, 0x802DEDF6), /* ~= 10^278 */ + U64(0xE1A63853, 0xBBD26451), U64(0x5E7873F8, 0xA0396973), /* ~= 10^279 */ + U64(0x8D07E334, 0x55637EB2), U64(0xDB0B487B, 0x6423E1E8), /* ~= 10^280 */ + U64(0xB049DC01, 0x6ABC5E5F), U64(0x91CE1A9A, 0x3D2CDA62), /* ~= 10^281 */ + U64(0xDC5C5301, 0xC56B75F7), U64(0x7641A140, 0xCC7810FB), /* ~= 10^282 */ + U64(0x89B9B3E1, 0x1B6329BA), U64(0xA9E904C8, 0x7FCB0A9D), /* ~= 10^283 */ + U64(0xAC2820D9, 0x623BF429), U64(0x546345FA, 0x9FBDCD44), /* ~= 10^284 */ + U64(0xD732290F, 0xBACAF133), U64(0xA97C1779, 0x47AD4095), /* ~= 10^285 */ + U64(0x867F59A9, 0xD4BED6C0), U64(0x49ED8EAB, 0xCCCC485D), /* ~= 10^286 */ + U64(0xA81F3014, 0x49EE8C70), U64(0x5C68F256, 0xBFFF5A74), /* ~= 10^287 */ + U64(0xD226FC19, 0x5C6A2F8C), U64(0x73832EEC, 0x6FFF3111), /* ~= 10^288 */ + U64(0x83585D8F, 0xD9C25DB7), U64(0xC831FD53, 0xC5FF7EAB), /* ~= 10^289 */ + U64(0xA42E74F3, 0xD032F525), U64(0xBA3E7CA8, 0xB77F5E55), /* ~= 10^290 */ + U64(0xCD3A1230, 0xC43FB26F), U64(0x28CE1BD2, 0xE55F35EB), /* ~= 10^291 */ + U64(0x80444B5E, 0x7AA7CF85), U64(0x7980D163, 0xCF5B81B3), /* ~= 10^292 */ + U64(0xA0555E36, 0x1951C366), U64(0xD7E105BC, 0xC332621F), /* ~= 10^293 */ + U64(0xC86AB5C3, 0x9FA63440), U64(0x8DD9472B, 0xF3FEFAA7), /* ~= 10^294 */ + U64(0xFA856334, 0x878FC150), U64(0xB14F98F6, 0xF0FEB951), /* ~= 10^295 */ + U64(0x9C935E00, 0xD4B9D8D2), U64(0x6ED1BF9A, 0x569F33D3), /* ~= 10^296 */ + U64(0xC3B83581, 0x09E84F07), U64(0x0A862F80, 0xEC4700C8), /* ~= 10^297 */ + U64(0xF4A642E1, 0x4C6262C8), U64(0xCD27BB61, 0x2758C0FA), /* ~= 10^298 */ + U64(0x98E7E9CC, 0xCFBD7DBD), U64(0x8038D51C, 0xB897789C), /* ~= 10^299 */ + U64(0xBF21E440, 0x03ACDD2C), U64(0xE0470A63, 0xE6BD56C3), /* ~= 10^300 */ + U64(0xEEEA5D50, 0x04981478), U64(0x1858CCFC, 0xE06CAC74), /* ~= 10^301 */ + U64(0x95527A52, 0x02DF0CCB), U64(0x0F37801E, 0x0C43EBC8), /* ~= 10^302 */ + U64(0xBAA718E6, 0x8396CFFD), U64(0xD3056025, 0x8F54E6BA), /* ~= 10^303 */ + U64(0xE950DF20, 0x247C83FD), U64(0x47C6B82E, 0xF32A2069), /* ~= 10^304 */ + U64(0x91D28B74, 0x16CDD27E), U64(0x4CDC331D, 0x57FA5441), /* ~= 10^305 */ + U64(0xB6472E51, 0x1C81471D), U64(0xE0133FE4, 0xADF8E952), /* ~= 10^306 */ + U64(0xE3D8F9E5, 0x63A198E5), U64(0x58180FDD, 0xD97723A6), /* ~= 10^307 */ + U64(0x8E679C2F, 0x5E44FF8F), U64(0x570F09EA, 0xA7EA7648), /* ~= 10^308 */ + U64(0xB201833B, 0x35D63F73), U64(0x2CD2CC65, 0x51E513DA), /* ~= 10^309 */ + U64(0xDE81E40A, 0x034BCF4F), U64(0xF8077F7E, 0xA65E58D1), /* ~= 10^310 */ + U64(0x8B112E86, 0x420F6191), U64(0xFB04AFAF, 0x27FAF782), /* ~= 10^311 */ + U64(0xADD57A27, 0xD29339F6), U64(0x79C5DB9A, 0xF1F9B563), /* ~= 10^312 */ + U64(0xD94AD8B1, 0xC7380874), U64(0x18375281, 0xAE7822BC), /* ~= 10^313 */ + U64(0x87CEC76F, 0x1C830548), U64(0x8F229391, 0x0D0B15B5), /* ~= 10^314 */ + U64(0xA9C2794A, 0xE3A3C69A), U64(0xB2EB3875, 0x504DDB22), /* ~= 10^315 */ + U64(0xD433179D, 0x9C8CB841), U64(0x5FA60692, 0xA46151EB), /* ~= 10^316 */ + U64(0x849FEEC2, 0x81D7F328), U64(0xDBC7C41B, 0xA6BCD333), /* ~= 10^317 */ + U64(0xA5C7EA73, 0x224DEFF3), U64(0x12B9B522, 0x906C0800), /* ~= 10^318 */ + U64(0xCF39E50F, 0xEAE16BEF), U64(0xD768226B, 0x34870A00), /* ~= 10^319 */ + U64(0x81842F29, 0xF2CCE375), U64(0xE6A11583, 0x00D46640), /* ~= 10^320 */ + U64(0xA1E53AF4, 0x6F801C53), U64(0x60495AE3, 0xC1097FD0), /* ~= 10^321 */ + U64(0xCA5E89B1, 0x8B602368), U64(0x385BB19C, 0xB14BDFC4), /* ~= 10^322 */ + U64(0xFCF62C1D, 0xEE382C42), U64(0x46729E03, 0xDD9ED7B5), /* ~= 10^323 */ + U64(0x9E19DB92, 0xB4E31BA9), U64(0x6C07A2C2, 0x6A8346D1) /* ~= 10^324 */ +}; + +/** + Get the cached pow10 value from `pow10_sig_table`. + @param exp10 The exponent of pow(10, e). This value must in range + `POW10_SIG_TABLE_MIN_EXP` to `POW10_SIG_TABLE_MAX_EXP`. + @param hi The highest 64 bits of pow(10, e). + @param lo The lower 64 bits after `hi`. + */ +static_inline void pow10_table_get_sig(i32 exp10, u64 *hi, u64 *lo) { + i32 idx = exp10 - (POW10_SIG_TABLE_MIN_EXP); + *hi = pow10_sig_table[idx * 2]; + *lo = pow10_sig_table[idx * 2 + 1]; +} + +/** + Get the exponent (base 2) for highest 64 bits significand in `pow10_sig_table`. + */ +static_inline void pow10_table_get_exp(i32 exp10, i32 *exp2) { + /* e2 = floor(log2(pow(10, e))) - 64 + 1 */ + /* = floor(e * log2(10) - 63) */ + *exp2 = (exp10 * 217706 - 4128768) >> 16; +} + +#endif + + + +/*============================================================================== + * MARK: - Number and Bit Utils (Private) + *============================================================================*/ + +/** Convert bits to double. */ +static_inline f64 f64_from_bits(u64 u) { + f64 f; + memcpy(&f, &u, sizeof(u)); + return f; +} + +/** Convert double to bits. */ +static_inline u64 f64_to_bits(f64 f) { + u64 u; + memcpy(&u, &f, sizeof(u)); + return u; +} + +/** Convert double to bits. */ +static_inline u32 f32_to_bits(f32 f) { + u32 u; + memcpy(&u, &f, sizeof(u)); + return u; +} + +/** Get 'infinity' bits with sign. */ +static_inline u64 f64_bits_inf(bool sign) { +#if YYJSON_HAS_IEEE_754 + return F64_BITS_INF | ((u64)sign << 63); +#elif defined(INFINITY) + return f64_to_bits(sign ? -INFINITY : INFINITY); +#else + return f64_to_bits(sign ? -HUGE_VAL : HUGE_VAL); +#endif +} + +/** Get 'nan' bits with sign. */ +static_inline u64 f64_bits_nan(bool sign) { +#if YYJSON_HAS_IEEE_754 + return F64_BITS_NAN | ((u64)sign << 63); +#elif defined(NAN) + return f64_to_bits(sign ? (f64)-NAN : (f64)NAN); +#else + return f64_to_bits((sign ? -0.0 : 0.0) / 0.0); +#endif +} + +/** Casting double to float, allow overflow. */ +#if yyjson_has_attribute(no_sanitize) +__attribute__((no_sanitize("undefined"))) +#elif yyjson_gcc_available(4, 9, 0) +__attribute__((__no_sanitize_undefined__)) +#endif +static_inline f32 f64_to_f32(f64 val) { + return (f32)val; +} + +/** Returns the number of leading 0-bits in value (input should not be 0). */ +static_inline u32 u64_lz_bits(u64 v) { +#if GCC_HAS_CLZLL + return (u32)__builtin_clzll(v); +#elif MSC_HAS_BIT_SCAN_64 + unsigned long r; + _BitScanReverse64(&r, v); + return (u32)63 - (u32)r; +#elif MSC_HAS_BIT_SCAN + unsigned long hi, lo; + bool hi_set = _BitScanReverse(&hi, (u32)(v >> 32)) != 0; + _BitScanReverse(&lo, (u32)v); + hi |= 32; + return (u32)63 - (u32)(hi_set ? hi : lo); +#else + /* branchless, use De Bruijn sequence */ + /* see: https://www.chessprogramming.org/BitScan */ + const u8 table[64] = { + 63, 16, 62, 7, 15, 36, 61, 3, 6, 14, 22, 26, 35, 47, 60, 2, + 9, 5, 28, 11, 13, 21, 42, 19, 25, 31, 34, 40, 46, 52, 59, 1, + 17, 8, 37, 4, 23, 27, 48, 10, 29, 12, 43, 20, 32, 41, 53, 18, + 38, 24, 49, 30, 44, 33, 54, 39, 50, 45, 55, 51, 56, 57, 58, 0 + }; + v |= v >> 1; + v |= v >> 2; + v |= v >> 4; + v |= v >> 8; + v |= v >> 16; + v |= v >> 32; + return table[(v * U64(0x03F79D71, 0xB4CB0A89)) >> 58]; +#endif +} + +/** Returns the number of trailing 0-bits in value (input should not be 0). */ +static_inline u32 u64_tz_bits(u64 v) { +#if GCC_HAS_CTZLL + return (u32)__builtin_ctzll(v); +#elif MSC_HAS_BIT_SCAN_64 + unsigned long r; + _BitScanForward64(&r, v); + return (u32)r; +#elif MSC_HAS_BIT_SCAN + unsigned long lo, hi; + bool lo_set = _BitScanForward(&lo, (u32)(v)) != 0; + _BitScanForward(&hi, (u32)(v >> 32)); + hi += 32; + return lo_set ? lo : hi; +#else + /* branchless, use De Bruijn sequence */ + /* see: https://www.chessprogramming.org/BitScan */ + const u8 table[64] = { + 0, 1, 2, 53, 3, 7, 54, 27, 4, 38, 41, 8, 34, 55, 48, 28, + 62, 5, 39, 46, 44, 42, 22, 9, 24, 35, 59, 56, 49, 18, 29, 11, + 63, 52, 6, 26, 37, 40, 33, 47, 61, 45, 43, 21, 23, 58, 17, 10, + 51, 25, 36, 32, 60, 20, 57, 16, 50, 31, 19, 15, 30, 14, 13, 12 + }; + return table[((v & (~v + 1)) * U64(0x022FDD63, 0xCC95386D)) >> 58]; +#endif +} + +/** Multiplies two 64-bit unsigned integers (a * b), + returns the 128-bit result as 'hi' and 'lo'. */ +static_inline void u128_mul(u64 a, u64 b, u64 *hi, u64 *lo) { +#if YYJSON_HAS_INT128 + u128 m = (u128)a * b; + *hi = (u64)(m >> 64); + *lo = (u64)(m); +#elif MSC_HAS_UMUL128 + *lo = _umul128(a, b, hi); +#else + u32 a0 = (u32)(a), a1 = (u32)(a >> 32); + u32 b0 = (u32)(b), b1 = (u32)(b >> 32); + u64 p00 = (u64)a0 * b0, p01 = (u64)a0 * b1; + u64 p10 = (u64)a1 * b0, p11 = (u64)a1 * b1; + u64 m0 = p01 + (p00 >> 32); + u32 m00 = (u32)(m0), m01 = (u32)(m0 >> 32); + u64 m1 = p10 + m00; + u32 m10 = (u32)(m1), m11 = (u32)(m1 >> 32); + *hi = p11 + m01 + m11; + *lo = ((u64)m10 << 32) | (u32)p00; +#endif +} + +/** Multiplies two 64-bit unsigned integers and add a value (a * b + c), + returns the 128-bit result as 'hi' and 'lo'. */ +static_inline void u128_mul_add(u64 a, u64 b, u64 c, u64 *hi, u64 *lo) { +#if YYJSON_HAS_INT128 + u128 m = (u128)a * b + c; + *hi = (u64)(m >> 64); + *lo = (u64)(m); +#else + u64 h, l, t; + u128_mul(a, b, &h, &l); + t = l + c; + h += (u64)(((t < l) | (t < c))); + *hi = h; + *lo = t; +#endif +} + + + +/*============================================================================== + * MARK: - File Utils (Private) + * These functions are used to read and write JSON files. + *============================================================================*/ + +#define YYJSON_FOPEN_E +#if !defined(_MSC_VER) && defined(__GLIBC__) && defined(__GLIBC_PREREQ) +# if __GLIBC_PREREQ(2, 7) +# undef YYJSON_FOPEN_E +# define YYJSON_FOPEN_E "e" /* glibc extension to enable O_CLOEXEC */ +# endif +#endif + +static_inline FILE *fopen_safe(const char *path, const char *mode) { +#if YYJSON_MSC_VER >= 1400 + FILE *file = NULL; + if (fopen_s(&file, path, mode) != 0) return NULL; + return file; +#else + return fopen(path, mode); +#endif +} + +static_inline FILE *fopen_readonly(const char *path) { + return fopen_safe(path, "rb" YYJSON_FOPEN_E); +} + +static_inline FILE *fopen_writeonly(const char *path) { + return fopen_safe(path, "wb" YYJSON_FOPEN_E); +} + +static_inline usize fread_safe(void *buf, usize size, FILE *file) { +#if YYJSON_MSC_VER >= 1400 + return fread_s(buf, size, 1, size, file); +#else + return fread(buf, 1, size, file); +#endif +} + + + +/*============================================================================== + * MARK: - Size Utils (Private) + * These functions are used for memory allocation. + *============================================================================*/ + +/** Returns whether the size is overflow after increment. */ +static_inline bool size_add_is_overflow(usize size, usize add) { + return size > (size + add); +} + +/** Returns whether the size is power of 2 (size should not be 0). */ +static_inline bool size_is_pow2(usize size) { + return (size & (size - 1)) == 0; +} + +/** Align size upwards (may overflow). */ +static_inline usize size_align_up(usize size, usize align) { + if (size_is_pow2(align)) { + return (size + (align - 1)) & ~(align - 1); + } else { + return size + align - (size + align - 1) % align - 1; + } +} + +/** Align size downwards. */ +static_inline usize size_align_down(usize size, usize align) { + if (size_is_pow2(align)) { + return size & ~(align - 1); + } else { + return size - (size % align); + } +} + +/** Align address upwards (may overflow). */ +static_inline void *mem_align_up(void *mem, usize align) { + usize size; + memcpy(&size, &mem, sizeof(usize)); + size = size_align_up(size, align); + memcpy(&mem, &size, sizeof(usize)); + return mem; +} + + + +/*============================================================================== + * MARK: - Default Memory Allocator (Private) + * This is a simple libc memory allocator wrapper. + *============================================================================*/ + +static void *default_malloc(void *ctx, usize size) { + return malloc(size); +} + +static void *default_realloc(void *ctx, void *ptr, usize old_size, usize size) { + return realloc(ptr, size); +} + +static void default_free(void *ctx, void *ptr) { + free(ptr); +} + +static const yyjson_alc YYJSON_DEFAULT_ALC = { + default_malloc, default_realloc, default_free, NULL +}; + + + +/*============================================================================== + * MARK: - Null Memory Allocator (Private) + * This allocator is just a placeholder to ensure that the internal + * malloc/realloc/free function pointers are not null. + *============================================================================*/ + +static void *null_malloc(void *ctx, usize size) { + return NULL; +} + +static void *null_realloc(void *ctx, void *ptr, usize old_size, usize size) { + return NULL; +} + +static void null_free(void *ctx, void *ptr) { + return; +} + +static const yyjson_alc YYJSON_NULL_ALC = { + null_malloc, null_realloc, null_free, NULL +}; + + + +/*============================================================================== + * MARK: - Pool Memory Allocator (Public) + * This allocator is initialized with a fixed-size buffer. + * The buffer is split into multiple memory chunks for memory allocation. + *============================================================================*/ + +/** memory chunk header */ +typedef struct pool_chunk { + usize size; /* chunk memory size, include chunk header */ + struct pool_chunk *next; /* linked list, nullable */ + /* char mem[]; flexible array member */ +} pool_chunk; + +/** allocator ctx header */ +typedef struct pool_ctx { + usize size; /* total memory size, include ctx header */ + pool_chunk *free_list; /* linked list, nullable */ + /* pool_chunk chunks[]; flexible array member */ +} pool_ctx; + +/** align up the input size to chunk size */ +static_inline void pool_size_align(usize *size) { + *size = size_align_up(*size, sizeof(pool_chunk)) + sizeof(pool_chunk); +} + +static void *pool_malloc(void *ctx_ptr, usize size) { + /* assert(size != 0) */ + pool_ctx *ctx = (pool_ctx *)ctx_ptr; + pool_chunk *next, *prev = NULL, *cur = ctx->free_list; + + if (unlikely(size >= ctx->size)) return NULL; + pool_size_align(&size); + + while (cur) { + if (cur->size < size) { + /* not enough space, try next chunk */ + prev = cur; + cur = cur->next; + continue; + } + if (cur->size >= size + sizeof(pool_chunk) * 2) { + /* too much space, split this chunk */ + next = (pool_chunk *)(void *)((u8 *)cur + size); + next->size = cur->size - size; + next->next = cur->next; + cur->size = size; + } else { + /* just enough space, use whole chunk */ + next = cur->next; + } + if (prev) prev->next = next; + else ctx->free_list = next; + return (void *)(cur + 1); + } + return NULL; +} + +static void pool_free(void *ctx_ptr, void *ptr) { + /* assert(ptr != NULL) */ + pool_ctx *ctx = (pool_ctx *)ctx_ptr; + pool_chunk *cur = ((pool_chunk *)ptr) - 1; + pool_chunk *prev = NULL, *next = ctx->free_list; + + while (next && next < cur) { + prev = next; + next = next->next; + } + if (prev) prev->next = cur; + else ctx->free_list = cur; + cur->next = next; + + if (next && ((u8 *)cur + cur->size) == (u8 *)next) { + /* merge cur to higher chunk */ + cur->size += next->size; + cur->next = next->next; + } + if (prev && ((u8 *)prev + prev->size) == (u8 *)cur) { + /* merge cur to lower chunk */ + prev->size += cur->size; + prev->next = cur->next; + } +} + +static void *pool_realloc(void *ctx_ptr, void *ptr, + usize old_size, usize size) { + /* assert(ptr != NULL && size != 0 && old_size < size) */ + pool_ctx *ctx = (pool_ctx *)ctx_ptr; + pool_chunk *cur = ((pool_chunk *)ptr) - 1, *prev, *next, *tmp; + + /* check size */ + if (unlikely(size >= ctx->size)) return NULL; + pool_size_align(&old_size); + pool_size_align(&size); + if (unlikely(old_size == size)) return ptr; + + /* find next and prev chunk */ + prev = NULL; + next = ctx->free_list; + while (next && next < cur) { + prev = next; + next = next->next; + } + + if ((u8 *)cur + cur->size == (u8 *)next && cur->size + next->size >= size) { + /* merge to higher chunk if they are contiguous */ + usize free_size = cur->size + next->size - size; + if (free_size > sizeof(pool_chunk) * 2) { + tmp = (pool_chunk *)(void *)((u8 *)cur + size); + if (prev) prev->next = tmp; + else ctx->free_list = tmp; + tmp->next = next->next; + tmp->size = free_size; + cur->size = size; + } else { + if (prev) prev->next = next->next; + else ctx->free_list = next->next; + cur->size += next->size; + } + return ptr; + } else { + /* fallback to malloc and memcpy */ + void *new_ptr = pool_malloc(ctx_ptr, size - sizeof(pool_chunk)); + if (new_ptr) { + memcpy(new_ptr, ptr, cur->size - sizeof(pool_chunk)); + pool_free(ctx_ptr, ptr); + } + return new_ptr; + } +} + +bool yyjson_alc_pool_init(yyjson_alc *alc, void *buf, usize size) { + pool_chunk *chunk; + pool_ctx *ctx; + + if (unlikely(!alc)) return false; + *alc = YYJSON_NULL_ALC; + if (size < sizeof(pool_ctx) * 4) return false; + ctx = (pool_ctx *)mem_align_up(buf, sizeof(pool_ctx)); + if (unlikely(!ctx)) return false; + size -= (usize)((u8 *)ctx - (u8 *)buf); + size = size_align_down(size, sizeof(pool_ctx)); + + chunk = (pool_chunk *)(ctx + 1); + chunk->size = size - sizeof(pool_ctx); + chunk->next = NULL; + ctx->size = size; + ctx->free_list = chunk; + + alc->malloc = pool_malloc; + alc->realloc = pool_realloc; + alc->free = pool_free; + alc->ctx = (void *)ctx; + return true; +} + + + +/*============================================================================== + * MARK: - Dynamic Memory Allocator (Public) + * This allocator allocates memory on demand and does not immediately release + * unused memory. Instead, it places the unused memory into a freelist for + * potential reuse in the future. It is only when the entire allocator is + * destroyed that all previously allocated memory is released at once. + *============================================================================*/ + +/** memory chunk header */ +typedef struct dyn_chunk { + usize size; /* chunk size, include header */ + struct dyn_chunk *next; + /* char mem[]; flexible array member */ +} dyn_chunk; + +/** allocator ctx header */ +typedef struct { + dyn_chunk free_list; /* dummy header, sorted from small to large */ + dyn_chunk used_list; /* dummy header */ +} dyn_ctx; + +/** align up the input size to chunk size */ +static_inline bool dyn_size_align(usize *size) { + usize alc_size = *size + sizeof(dyn_chunk); + alc_size = size_align_up(alc_size, YYJSON_ALC_DYN_MIN_SIZE); + if (unlikely(alc_size < *size)) return false; /* overflow */ + *size = alc_size; + return true; +} + +/** remove a chunk from list (the chunk must already be in the list) */ +static_inline void dyn_chunk_list_remove(dyn_chunk *list, dyn_chunk *chunk) { + dyn_chunk *prev = list, *cur; + for (cur = prev->next; cur; cur = cur->next) { + if (cur == chunk) { + prev->next = cur->next; + cur->next = NULL; + return; + } + prev = cur; + } +} + +/** add a chunk to list header (the chunk must not be in the list) */ +static_inline void dyn_chunk_list_add(dyn_chunk *list, dyn_chunk *chunk) { + chunk->next = list->next; + list->next = chunk; +} + +static void *dyn_malloc(void *ctx_ptr, usize size) { + /* assert(size != 0) */ + const yyjson_alc def = YYJSON_DEFAULT_ALC; + dyn_ctx *ctx = (dyn_ctx *)ctx_ptr; + dyn_chunk *chunk, *prev; + if (unlikely(!dyn_size_align(&size))) return NULL; + + /* freelist is empty, create new chunk */ + if (!ctx->free_list.next) { + chunk = (dyn_chunk *)def.malloc(def.ctx, size); + if (unlikely(!chunk)) return NULL; + chunk->size = size; + chunk->next = NULL; + dyn_chunk_list_add(&ctx->used_list, chunk); + return (void *)(chunk + 1); + } + + /* find a large enough chunk, or resize the largest chunk */ + prev = &ctx->free_list; + while (true) { + chunk = prev->next; + if (chunk->size >= size) { /* enough size, reuse this chunk */ + prev->next = chunk->next; + dyn_chunk_list_add(&ctx->used_list, chunk); + return (void *)(chunk + 1); + } + if (!chunk->next) { /* resize the largest chunk */ + chunk = (dyn_chunk *)def.realloc(def.ctx, chunk, chunk->size, size); + if (unlikely(!chunk)) return NULL; + prev->next = NULL; + chunk->size = size; + dyn_chunk_list_add(&ctx->used_list, chunk); + return (void *)(chunk + 1); + } + prev = chunk; + } +} + +static void *dyn_realloc(void *ctx_ptr, void *ptr, + usize old_size, usize size) { + /* assert(ptr != NULL && size != 0 && old_size < size) */ + const yyjson_alc def = YYJSON_DEFAULT_ALC; + dyn_ctx *ctx = (dyn_ctx *)ctx_ptr; + dyn_chunk *new_chunk, *chunk = (dyn_chunk *)ptr - 1; + if (unlikely(!dyn_size_align(&size))) return NULL; + if (chunk->size >= size) return ptr; + + dyn_chunk_list_remove(&ctx->used_list, chunk); + new_chunk = (dyn_chunk *)def.realloc(def.ctx, chunk, chunk->size, size); + if (likely(new_chunk)) { + new_chunk->size = size; + chunk = new_chunk; + } + dyn_chunk_list_add(&ctx->used_list, chunk); + return new_chunk ? (void *)(new_chunk + 1) : NULL; +} + +static void dyn_free(void *ctx_ptr, void *ptr) { + /* assert(ptr != NULL) */ + dyn_ctx *ctx = (dyn_ctx *)ctx_ptr; + dyn_chunk *chunk = (dyn_chunk *)ptr - 1, *prev; + + dyn_chunk_list_remove(&ctx->used_list, chunk); + for (prev = &ctx->free_list; prev; prev = prev->next) { + if (!prev->next || prev->next->size >= chunk->size) { + chunk->next = prev->next; + prev->next = chunk; + break; + } + } +} + +yyjson_alc *yyjson_alc_dyn_new(void) { + const yyjson_alc def = YYJSON_DEFAULT_ALC; + usize hdr_len = sizeof(yyjson_alc) + sizeof(dyn_ctx); + yyjson_alc *alc = (yyjson_alc *)def.malloc(def.ctx, hdr_len); + dyn_ctx *ctx = (dyn_ctx *)(void *)(alc + 1); + if (unlikely(!alc)) return NULL; + alc->malloc = dyn_malloc; + alc->realloc = dyn_realloc; + alc->free = dyn_free; + alc->ctx = alc + 1; + memset(ctx, 0, sizeof(*ctx)); + return alc; +} + +void yyjson_alc_dyn_free(yyjson_alc *alc) { + const yyjson_alc def = YYJSON_DEFAULT_ALC; + dyn_ctx *ctx = (dyn_ctx *)(void *)(alc + 1); + dyn_chunk *chunk, *next; + if (unlikely(!alc)) return; + for (chunk = ctx->free_list.next; chunk; chunk = next) { + next = chunk->next; + def.free(def.ctx, chunk); + } + for (chunk = ctx->used_list.next; chunk; chunk = next) { + next = chunk->next; + def.free(def.ctx, chunk); + } + def.free(def.ctx, alc); +} + + + +/*============================================================================== + * MARK: - JSON Struct Utils (Public) + * These functions are used for creating, copying, releasing, and comparing + * JSON documents and values. They are widely used throughout this library. + *============================================================================*/ + +static_inline void unsafe_yyjson_str_pool_release(yyjson_str_pool *pool, + yyjson_alc *alc) { + yyjson_str_chunk *chunk = pool->chunks, *next; + while (chunk) { + next = chunk->next; + alc->free(alc->ctx, chunk); + chunk = next; + } +} + +static_inline void unsafe_yyjson_val_pool_release(yyjson_val_pool *pool, + yyjson_alc *alc) { + yyjson_val_chunk *chunk = pool->chunks, *next; + while (chunk) { + next = chunk->next; + alc->free(alc->ctx, chunk); + chunk = next; + } +} + +bool unsafe_yyjson_str_pool_grow(yyjson_str_pool *pool, + const yyjson_alc *alc, usize len) { + yyjson_str_chunk *chunk; + usize size, max_len; + + /* create a new chunk */ + max_len = USIZE_MAX - sizeof(yyjson_str_chunk); + if (unlikely(len > max_len)) return false; + size = len + sizeof(yyjson_str_chunk); + size = yyjson_max(pool->chunk_size, size); + chunk = (yyjson_str_chunk *)alc->malloc(alc->ctx, size); + if (unlikely(!chunk)) return false; + + /* insert the new chunk as the head of the linked list */ + chunk->next = pool->chunks; + chunk->chunk_size = size; + pool->chunks = chunk; + pool->cur = (char *)chunk + sizeof(yyjson_str_chunk); + pool->end = (char *)chunk + size; + + /* the next chunk is twice the size of the current one */ + size = yyjson_min(pool->chunk_size * 2, pool->chunk_size_max); + if (size < pool->chunk_size) size = pool->chunk_size_max; /* overflow */ + pool->chunk_size = size; + return true; +} + +bool unsafe_yyjson_val_pool_grow(yyjson_val_pool *pool, + const yyjson_alc *alc, usize count) { + yyjson_val_chunk *chunk; + usize size, max_count; + + /* create a new chunk */ + max_count = USIZE_MAX / sizeof(yyjson_mut_val) - 1; + if (unlikely(count > max_count)) return false; + size = (count + 1) * sizeof(yyjson_mut_val); + size = yyjson_max(pool->chunk_size, size); + chunk = (yyjson_val_chunk *)alc->malloc(alc->ctx, size); + if (unlikely(!chunk)) return false; + + /* insert the new chunk as the head of the linked list */ + chunk->next = pool->chunks; + chunk->chunk_size = size; + pool->chunks = chunk; + pool->cur = (yyjson_mut_val *)(void *)((u8 *)chunk) + 1; + pool->end = (yyjson_mut_val *)(void *)((u8 *)chunk + size); + + /* the next chunk is twice the size of the current one */ + size = yyjson_min(pool->chunk_size * 2, pool->chunk_size_max); + if (size < pool->chunk_size) size = pool->chunk_size_max; /* overflow */ + pool->chunk_size = size; + return true; +} + +bool yyjson_mut_doc_set_str_pool_size(yyjson_mut_doc *doc, size_t len) { + usize max_size = USIZE_MAX - sizeof(yyjson_str_chunk); + if (!doc || !len || len > max_size) return false; + doc->str_pool.chunk_size = len + sizeof(yyjson_str_chunk); + return true; +} + +bool yyjson_mut_doc_set_val_pool_size(yyjson_mut_doc *doc, size_t count) { + usize max_count = USIZE_MAX / sizeof(yyjson_mut_val) - 1; + if (!doc || !count || count > max_count) return false; + doc->val_pool.chunk_size = (count + 1) * sizeof(yyjson_mut_val); + return true; +} + +void yyjson_mut_doc_free(yyjson_mut_doc *doc) { + if (doc) { + yyjson_alc alc = doc->alc; + memset(&doc->alc, 0, sizeof(alc)); + unsafe_yyjson_str_pool_release(&doc->str_pool, &alc); + unsafe_yyjson_val_pool_release(&doc->val_pool, &alc); + alc.free(alc.ctx, doc); + } +} + +yyjson_mut_doc *yyjson_mut_doc_new(const yyjson_alc *alc) { + yyjson_mut_doc *doc; + if (!alc) alc = &YYJSON_DEFAULT_ALC; + doc = (yyjson_mut_doc *)alc->malloc(alc->ctx, sizeof(yyjson_mut_doc)); + if (!doc) return NULL; + memset(doc, 0, sizeof(yyjson_mut_doc)); + + doc->alc = *alc; + doc->str_pool.chunk_size = YYJSON_MUT_DOC_STR_POOL_INIT_SIZE; + doc->str_pool.chunk_size_max = YYJSON_MUT_DOC_STR_POOL_MAX_SIZE; + doc->val_pool.chunk_size = YYJSON_MUT_DOC_VAL_POOL_INIT_SIZE; + doc->val_pool.chunk_size_max = YYJSON_MUT_DOC_VAL_POOL_MAX_SIZE; + return doc; +} + +yyjson_mut_doc *yyjson_doc_mut_copy(yyjson_doc *doc, const yyjson_alc *alc) { + yyjson_mut_doc *m_doc; + yyjson_mut_val *m_val; + + if (!doc || !doc->root) return NULL; + m_doc = yyjson_mut_doc_new(alc); + if (!m_doc) return NULL; + m_val = yyjson_val_mut_copy(m_doc, doc->root); + if (!m_val) { + yyjson_mut_doc_free(m_doc); + return NULL; + } + yyjson_mut_doc_set_root(m_doc, m_val); + return m_doc; +} + +yyjson_mut_doc *yyjson_mut_doc_mut_copy(yyjson_mut_doc *doc, + const yyjson_alc *alc) { + yyjson_mut_doc *m_doc; + yyjson_mut_val *m_val; + + if (!doc) return NULL; + if (!doc->root) return yyjson_mut_doc_new(alc); + + m_doc = yyjson_mut_doc_new(alc); + if (!m_doc) return NULL; + m_val = yyjson_mut_val_mut_copy(m_doc, doc->root); + if (!m_val) { + yyjson_mut_doc_free(m_doc); + return NULL; + } + yyjson_mut_doc_set_root(m_doc, m_val); + return m_doc; +} + +yyjson_mut_val *yyjson_val_mut_copy(yyjson_mut_doc *m_doc, + yyjson_val *i_vals) { + /* + The immutable object or array stores all sub-values in a contiguous memory, + We copy them to another contiguous memory as mutable values, + then reconnect the mutable values with the original relationship. + */ + usize i_vals_len; + yyjson_mut_val *m_vals, *m_val; + yyjson_val *i_val, *i_end; + + if (!m_doc || !i_vals) return NULL; + i_end = unsafe_yyjson_get_next(i_vals); + i_vals_len = (usize)(unsafe_yyjson_get_next(i_vals) - i_vals); + m_vals = unsafe_yyjson_mut_val(m_doc, i_vals_len); + if (!m_vals) return NULL; + i_val = i_vals; + m_val = m_vals; + + for (; i_val < i_end; i_val++, m_val++) { + yyjson_type type = unsafe_yyjson_get_type(i_val); + m_val->tag = i_val->tag; + m_val->uni.u64 = i_val->uni.u64; + if (type == YYJSON_TYPE_STR || type == YYJSON_TYPE_RAW) { + const char *str = i_val->uni.str; + usize str_len = unsafe_yyjson_get_len(i_val); + m_val->uni.str = unsafe_yyjson_mut_strncpy(m_doc, str, str_len); + if (!m_val->uni.str) return NULL; + } else if (type == YYJSON_TYPE_ARR) { + usize len = unsafe_yyjson_get_len(i_val); + if (len > 0) { + yyjson_val *ii_val = i_val + 1, *ii_next; + yyjson_mut_val *mm_val = m_val + 1, *mm_ctn = m_val, *mm_next; + while (len-- > 1) { + ii_next = unsafe_yyjson_get_next(ii_val); + mm_next = mm_val + (ii_next - ii_val); + mm_val->next = mm_next; + ii_val = ii_next; + mm_val = mm_next; + } + mm_val->next = mm_ctn + 1; + mm_ctn->uni.ptr = mm_val; + } + } else if (type == YYJSON_TYPE_OBJ) { + usize len = unsafe_yyjson_get_len(i_val); + if (len > 0) { + yyjson_val *ii_key = i_val + 1, *ii_nextkey; + yyjson_mut_val *mm_key = m_val + 1, *mm_ctn = m_val; + yyjson_mut_val *mm_nextkey; + while (len-- > 1) { + ii_nextkey = unsafe_yyjson_get_next(ii_key + 1); + mm_nextkey = mm_key + (ii_nextkey - ii_key); + mm_key->next = mm_key + 1; + mm_key->next->next = mm_nextkey; + ii_key = ii_nextkey; + mm_key = mm_nextkey; + } + mm_key->next = mm_key + 1; + mm_key->next->next = mm_ctn + 1; + mm_ctn->uni.ptr = mm_key; + } + } + } + return m_vals; +} + +static yyjson_mut_val *unsafe_yyjson_mut_val_mut_copy(yyjson_mut_doc *m_doc, + yyjson_mut_val *m_vals) { + /* + The mutable object or array stores all sub-values in a circular linked + list, so we can traverse them in the same loop. The traversal starts from + the last item, continues with the first item in a list, and ends with the + second to last item, which needs to be linked to the last item to close the + circle. + */ + yyjson_mut_val *m_val = unsafe_yyjson_mut_val(m_doc, 1); + if (unlikely(!m_val)) return NULL; + m_val->tag = m_vals->tag; + + switch (unsafe_yyjson_get_type(m_vals)) { + case YYJSON_TYPE_OBJ: + case YYJSON_TYPE_ARR: + if (unsafe_yyjson_get_len(m_vals) > 0) { + yyjson_mut_val *last = (yyjson_mut_val *)m_vals->uni.ptr; + yyjson_mut_val *next = last->next, *prev; + prev = unsafe_yyjson_mut_val_mut_copy(m_doc, last); + if (!prev) return NULL; + m_val->uni.ptr = (void *)prev; + while (next != last) { + prev->next = unsafe_yyjson_mut_val_mut_copy(m_doc, next); + if (!prev->next) return NULL; + prev = prev->next; + next = next->next; + } + prev->next = (yyjson_mut_val *)m_val->uni.ptr; + } + break; + case YYJSON_TYPE_RAW: + case YYJSON_TYPE_STR: { + const char *str = m_vals->uni.str; + usize str_len = unsafe_yyjson_get_len(m_vals); + m_val->uni.str = unsafe_yyjson_mut_strncpy(m_doc, str, str_len); + if (!m_val->uni.str) return NULL; + break; + } + default: + m_val->uni = m_vals->uni; + break; + } + return m_val; +} + +yyjson_mut_val *yyjson_mut_val_mut_copy(yyjson_mut_doc *doc, + yyjson_mut_val *val) { + if (doc && val) return unsafe_yyjson_mut_val_mut_copy(doc, val); + return NULL; +} + +/* Count the number of values and the total length of the strings. */ +static void yyjson_mut_stat(yyjson_mut_val *val, + usize *val_sum, usize *str_sum) { + yyjson_type type = unsafe_yyjson_get_type(val); + *val_sum += 1; + if (type == YYJSON_TYPE_ARR || type == YYJSON_TYPE_OBJ) { + yyjson_mut_val *child = (yyjson_mut_val *)val->uni.ptr; + usize len = unsafe_yyjson_get_len(val), i; + len <<= (u8)(type == YYJSON_TYPE_OBJ); + *val_sum += len; + for (i = 0; i < len; i++) { + yyjson_type stype = unsafe_yyjson_get_type(child); + if (stype == YYJSON_TYPE_STR || stype == YYJSON_TYPE_RAW) { + *str_sum += unsafe_yyjson_get_len(child) + 1; + } else if (stype == YYJSON_TYPE_ARR || stype == YYJSON_TYPE_OBJ) { + yyjson_mut_stat(child, val_sum, str_sum); + *val_sum -= 1; + } + child = child->next; + } + } else if (type == YYJSON_TYPE_STR || type == YYJSON_TYPE_RAW) { + *str_sum += unsafe_yyjson_get_len(val) + 1; + } +} + +/* Copy mutable values to immutable value pool. */ +static usize yyjson_imut_copy(yyjson_val **val_ptr, char **buf_ptr, + yyjson_mut_val *mval) { + yyjson_val *val = *val_ptr; + yyjson_type type = unsafe_yyjson_get_type(mval); + if (type == YYJSON_TYPE_ARR || type == YYJSON_TYPE_OBJ) { + yyjson_mut_val *child = (yyjson_mut_val *)mval->uni.ptr; + usize len = unsafe_yyjson_get_len(mval), i; + usize val_sum = 1; + if (type == YYJSON_TYPE_OBJ) { + if (len) child = child->next->next; + len <<= 1; + } else { + if (len) child = child->next; + } + *val_ptr = val + 1; + for (i = 0; i < len; i++) { + val_sum += yyjson_imut_copy(val_ptr, buf_ptr, child); + child = child->next; + } + val->tag = mval->tag; + val->uni.ofs = val_sum * sizeof(yyjson_val); + return val_sum; + } else if (type == YYJSON_TYPE_STR || type == YYJSON_TYPE_RAW) { + char *buf = *buf_ptr; + usize len = unsafe_yyjson_get_len(mval); + memcpy((void *)buf, (const void *)mval->uni.str, len); + buf[len] = '\0'; + val->tag = mval->tag; + val->uni.str = buf; + *val_ptr = val + 1; + *buf_ptr = buf + len + 1; + return 1; + } else { + val->tag = mval->tag; + val->uni = mval->uni; + *val_ptr = val + 1; + return 1; + } +} + +yyjson_doc *yyjson_mut_doc_imut_copy(yyjson_mut_doc *mdoc, + const yyjson_alc *alc) { + if (!mdoc) return NULL; + return yyjson_mut_val_imut_copy(mdoc->root, alc); +} + +yyjson_doc *yyjson_mut_val_imut_copy(yyjson_mut_val *mval, + const yyjson_alc *alc) { + usize val_num = 0, str_sum = 0, hdr_size, buf_size; + yyjson_doc *doc = NULL; + yyjson_val *val_hdr = NULL; + + /* This value should be NULL here. Setting a non-null value suppresses + warning from the clang analyzer. */ + char *str_hdr = (char *)(void *)&str_sum; + if (!mval) return NULL; + if (!alc) alc = &YYJSON_DEFAULT_ALC; + + /* traverse the input value to get pool size */ + yyjson_mut_stat(mval, &val_num, &str_sum); + + /* create doc and val pool */ + hdr_size = size_align_up(sizeof(yyjson_doc), sizeof(yyjson_val)); + buf_size = hdr_size + val_num * sizeof(yyjson_val); + doc = (yyjson_doc *)alc->malloc(alc->ctx, buf_size); + if (!doc) return NULL; + memset(doc, 0, sizeof(yyjson_doc)); + val_hdr = (yyjson_val *)(void *)((char *)(void *)doc + hdr_size); + doc->root = val_hdr; + doc->alc = *alc; + + /* create str pool */ + if (str_sum > 0) { + str_hdr = (char *)alc->malloc(alc->ctx, str_sum); + doc->str_pool = str_hdr; + if (!str_hdr) { + alc->free(alc->ctx, (void *)doc); + return NULL; + } + } + + /* copy vals and strs */ + doc->val_read = yyjson_imut_copy(&val_hdr, &str_hdr, mval); + doc->dat_read = str_sum + 1; + return doc; +} + +static_inline bool unsafe_yyjson_num_equals(void *lhs, void *rhs) { + yyjson_val_uni *luni = &((yyjson_val *)lhs)->uni; + yyjson_val_uni *runi = &((yyjson_val *)rhs)->uni; + yyjson_subtype lt = unsafe_yyjson_get_subtype(lhs); + yyjson_subtype rt = unsafe_yyjson_get_subtype(rhs); + if (lt == rt) return luni->u64 == runi->u64; + if (lt == YYJSON_SUBTYPE_SINT && rt == YYJSON_SUBTYPE_UINT) { + return luni->i64 >= 0 && luni->u64 == runi->u64; + } + if (lt == YYJSON_SUBTYPE_UINT && rt == YYJSON_SUBTYPE_SINT) { + return runi->i64 >= 0 && luni->u64 == runi->u64; + } + return false; +} + +static_inline bool unsafe_yyjson_str_equals(void *lhs, void *rhs) { + usize len = unsafe_yyjson_get_len(lhs); + if (len != unsafe_yyjson_get_len(rhs)) return false; + return !memcmp(unsafe_yyjson_get_str(lhs), + unsafe_yyjson_get_str(rhs), len); +} + +bool unsafe_yyjson_equals(yyjson_val *lhs, yyjson_val *rhs) { + yyjson_type type = unsafe_yyjson_get_type(lhs); + if (type != unsafe_yyjson_get_type(rhs)) return false; + + switch (type) { + case YYJSON_TYPE_OBJ: { + usize len = unsafe_yyjson_get_len(lhs); + if (len != unsafe_yyjson_get_len(rhs)) return false; + if (len > 0) { + yyjson_obj_iter iter; + yyjson_obj_iter_init(rhs, &iter); + lhs = unsafe_yyjson_get_first(lhs); + while (len-- > 0) { + rhs = yyjson_obj_iter_getn(&iter, lhs->uni.str, + unsafe_yyjson_get_len(lhs)); + if (!rhs) return false; + if (!unsafe_yyjson_equals(lhs + 1, rhs)) return false; + lhs = unsafe_yyjson_get_next(lhs + 1); + } + } + /* yyjson allows duplicate keys, so the check may be inaccurate */ + return true; + } + + case YYJSON_TYPE_ARR: { + usize len = unsafe_yyjson_get_len(lhs); + if (len != unsafe_yyjson_get_len(rhs)) return false; + if (len > 0) { + lhs = unsafe_yyjson_get_first(lhs); + rhs = unsafe_yyjson_get_first(rhs); + while (len-- > 0) { + if (!unsafe_yyjson_equals(lhs, rhs)) return false; + lhs = unsafe_yyjson_get_next(lhs); + rhs = unsafe_yyjson_get_next(rhs); + } + } + return true; + } + + case YYJSON_TYPE_NUM: + return unsafe_yyjson_num_equals(lhs, rhs); + + case YYJSON_TYPE_RAW: + case YYJSON_TYPE_STR: + return unsafe_yyjson_str_equals(lhs, rhs); + + case YYJSON_TYPE_NULL: + case YYJSON_TYPE_BOOL: + return lhs->tag == rhs->tag; + + default: + return false; + } +} + +bool unsafe_yyjson_mut_equals(yyjson_mut_val *lhs, yyjson_mut_val *rhs) { + yyjson_type type = unsafe_yyjson_get_type(lhs); + if (type != unsafe_yyjson_get_type(rhs)) return false; + + switch (type) { + case YYJSON_TYPE_OBJ: { + usize len = unsafe_yyjson_get_len(lhs); + if (len != unsafe_yyjson_get_len(rhs)) return false; + if (len > 0) { + yyjson_mut_obj_iter iter; + yyjson_mut_obj_iter_init(rhs, &iter); + lhs = (yyjson_mut_val *)lhs->uni.ptr; + while (len-- > 0) { + rhs = yyjson_mut_obj_iter_getn(&iter, lhs->uni.str, + unsafe_yyjson_get_len(lhs)); + if (!rhs) return false; + if (!unsafe_yyjson_mut_equals(lhs->next, rhs)) return false; + lhs = lhs->next->next; + } + } + /* yyjson allows duplicate keys, so the check may be inaccurate */ + return true; + } + + case YYJSON_TYPE_ARR: { + usize len = unsafe_yyjson_get_len(lhs); + if (len != unsafe_yyjson_get_len(rhs)) return false; + if (len > 0) { + lhs = (yyjson_mut_val *)lhs->uni.ptr; + rhs = (yyjson_mut_val *)rhs->uni.ptr; + while (len-- > 0) { + if (!unsafe_yyjson_mut_equals(lhs, rhs)) return false; + lhs = lhs->next; + rhs = rhs->next; + } + } + return true; + } + + case YYJSON_TYPE_NUM: + return unsafe_yyjson_num_equals(lhs, rhs); + + case YYJSON_TYPE_RAW: + case YYJSON_TYPE_STR: + return unsafe_yyjson_str_equals(lhs, rhs); + + case YYJSON_TYPE_NULL: + case YYJSON_TYPE_BOOL: + return lhs->tag == rhs->tag; + + default: + return false; + } +} + +bool yyjson_locate_pos(const char *str, size_t len, size_t pos, + size_t *line, size_t *col, size_t *chr) { + usize line_sum = 0, line_pos = 0, chr_sum = 0; + const u8 *cur = (const u8 *)str; + const u8 *end = cur + pos; + + if (!str || pos > len) { + if (line) *line = 0; + if (col) *col = 0; + if (chr) *chr = 0; + return false; + } + + if (pos >= 3 && is_utf8_bom(cur)) cur += 3; /* don't count BOM */ + while (cur < end) { + u8 c = *cur; + chr_sum += 1; + if (likely(c < 0x80)) { /* 0xxxxxxx (0x00-0x7F) ASCII */ + if (c == '\n') { + line_sum += 1; + line_pos = chr_sum; + } + cur += 1; + } + else if (c < 0xC0) cur += 1; /* 10xxxxxx (0x80-0xBF) Invalid */ + else if (c < 0xE0) cur += 2; /* 110xxxxx (0xC0-0xDF) 2-byte UTF-8 */ + else if (c < 0xF0) cur += 3; /* 1110xxxx (0xE0-0xEF) 3-byte UTF-8 */ + else if (c < 0xF8) cur += 4; /* 11110xxx (0xF0-0xF7) 4-byte UTF-8 */ + else cur += 1; /* 11111xxx (0xF8-0xFF) Invalid */ + } + if (line) *line = line_sum + 1; + if (col) *col = chr_sum - line_pos + 1; + if (chr) *chr = chr_sum; + return true; +} + + + +#if !YYJSON_DISABLE_READER /* reader begin */ + +/* Check read flag, avoids `always false` warning when disabled. */ +#define has_flg(_flg) unlikely(has_rflag(flg, YYJSON_READ_##_flg, 0)) +#define has_allow(_flg) unlikely(has_rflag(flg, YYJSON_READ_ALLOW_##_flg, 1)) +#define YYJSON_READ_ALLOW_TRIVIA (YYJSON_READ_ALLOW_COMMENTS | \ + YYJSON_READ_ALLOW_EXT_WHITESPACE) +static_inline bool has_rflag(yyjson_read_flag flg, yyjson_read_flag chk, + bool non_standard) { +#if YYJSON_DISABLE_NON_STANDARD + if (non_standard) return false; +#endif + return (flg & chk) != 0; +} + + + +/*============================================================================== + * MARK: - JSON Reader Utils (Private) + * These functions are used by JSON reader to read literals and comments. + *============================================================================*/ + +/** Read `true` literal, `*ptr[0]` should be `t`. */ +static_inline bool read_true(u8 **ptr, yyjson_val *val) { + u8 *cur = *ptr; + if (likely(byte_match_4(cur, "true"))) { + val->tag = YYJSON_TYPE_BOOL | YYJSON_SUBTYPE_TRUE; + *ptr = cur + 4; + return true; + } + return false; +} + +/** Read `false` literal, `*ptr[0]` should be `f`. */ +static_inline bool read_false(u8 **ptr, yyjson_val *val) { + u8 *cur = *ptr; + if (likely(byte_match_4(cur + 1, "alse"))) { + val->tag = YYJSON_TYPE_BOOL | YYJSON_SUBTYPE_FALSE; + *ptr = cur + 5; + return true; + } + return false; +} + +/** Read `null` literal, `*ptr[0]` should be `n`. */ +static_inline bool read_null(u8 **ptr, yyjson_val *val) { + u8 *cur = *ptr; + if (likely(byte_match_4(cur, "null"))) { + val->tag = YYJSON_TYPE_NULL; + *ptr = cur + 4; + return true; + } + return false; +} + +/** Read `Inf` or `Infinity` literal (ignoring case). */ +static_inline bool read_inf(u8 **ptr, u8 **pre, + yyjson_read_flag flg, yyjson_val *val) { + u8 *hdr = *ptr; + u8 *cur = *ptr; + u8 **end = ptr; + bool sign = (*cur == '-'); + if (*cur == '+' && !has_allow(EXT_NUMBER)) return false; + cur += char_is_sign(*cur); + if (char_to_lower(cur[0]) == 'i' && + char_to_lower(cur[1]) == 'n' && + char_to_lower(cur[2]) == 'f') { + if (char_to_lower(cur[3]) == 'i') { + if (char_to_lower(cur[4]) == 'n' && + char_to_lower(cur[5]) == 'i' && + char_to_lower(cur[6]) == 't' && + char_to_lower(cur[7]) == 'y') { + cur += 8; + } else { + return false; + } + } else { + cur += 3; + } + *end = cur; + if (has_flg(NUMBER_AS_RAW)) { + **pre = '\0'; /* add null-terminator for previous raw string */ + *pre = cur; /* save end position for current raw string */ + val->tag = ((u64)(cur - hdr) << YYJSON_TAG_BIT) | YYJSON_TYPE_RAW; + val->uni.str = (const char *)hdr; + } else { + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_REAL; + val->uni.u64 = f64_bits_inf(sign); + } + return true; + } + return false; +} + +/** Read `NaN` literal (ignoring case). */ +static_inline bool read_nan(u8 **ptr, u8 **pre, + yyjson_read_flag flg, yyjson_val *val) { + u8 *hdr = *ptr; + u8 *cur = *ptr; + u8 **end = ptr; + bool sign = (*cur == '-'); + if (*cur == '+' && !has_allow(EXT_NUMBER)) return false; + cur += char_is_sign(*cur); + if (char_to_lower(cur[0]) == 'n' && + char_to_lower(cur[1]) == 'a' && + char_to_lower(cur[2]) == 'n') { + cur += 3; + *end = cur; + if (has_flg(NUMBER_AS_RAW)) { + **pre = '\0'; /* add null-terminator for previous raw string */ + *pre = cur; /* save end position for current raw string */ + val->tag = ((u64)(cur - hdr) << YYJSON_TAG_BIT) | YYJSON_TYPE_RAW; + val->uni.str = (const char *)hdr; + } else { + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_REAL; + val->uni.u64 = f64_bits_nan(sign); + } + return true; + } + return false; +} + +/** Read `Inf`, `Infinity` or `NaN` literal (ignoring case). */ +static_inline bool read_inf_or_nan(u8 **ptr, u8 **pre, + yyjson_read_flag flg, yyjson_val *val) { + if (read_inf(ptr, pre, flg, val)) return true; + if (read_nan(ptr, pre, flg, val)) return true; + return false; +} + +/** Read a JSON number as raw string. */ +static_noinline bool read_num_raw(u8 **ptr, u8 **pre, yyjson_read_flag flg, + yyjson_val *val, const char **msg) { +#define return_err(_pos, _msg) do { \ + *msg = _msg; *end = _pos; return false; \ +} while (false) + +#define return_raw() do { \ + val->tag = ((u64)(cur - hdr) << YYJSON_TAG_BIT) | YYJSON_TYPE_RAW; \ + val->uni.str = (const char *)hdr; \ + **pre = '\0'; *pre = cur; *end = cur; return true; \ +} while (false) + + u8 *hdr = *ptr; + u8 *cur = *ptr; + u8 **end = ptr; + + /* skip sign */ + cur += (*cur == '-'); + + /* read first digit, check leading zero */ + while (unlikely(!char_is_digit(*cur))) { + if (has_allow(EXT_NUMBER)) { + if (*cur == '+' && cur == hdr) { /* leading `+` sign */ + cur++; + continue; + } + if (*cur == '.' && char_is_digit(cur[1])) { /* e.g. '.123' */ + goto read_double; + } + } + if (has_allow(INF_AND_NAN)) { + if (read_inf_or_nan(ptr, pre, flg, val)) return true; + } + return_err(cur, "no digit after sign"); + } + + /* read integral part */ + if (*cur == '0') { + cur++; + if (unlikely(char_is_digit(*cur))) { + return_err(cur - 1, "number with leading zero is not allowed"); + } + if (!char_is_fp(*cur)) { + if (has_allow(EXT_NUMBER) && char_to_lower(*cur) == 'x') { /* hex */ + if (!char_is_hex(*++cur)) return_err(cur, "invalid hex number"); + while(char_is_hex(*cur)) cur++; + } + return_raw(); + } + } else { + while (char_is_digit(*cur)) cur++; + if (!char_is_fp(*cur)) return_raw(); + } + +read_double: + /* read fraction part */ + if (*cur == '.') { + cur++; + if (!char_is_digit(*cur)) { + if (has_allow(EXT_NUMBER)) { + if (!char_is_exp(*cur)) return_raw(); + } else { + return_err(cur, "no digit after decimal point"); + } + } + while (char_is_digit(*cur)) cur++; + } + + /* read exponent part */ + if (char_is_exp(*cur)) { + cur += 1 + char_is_sign(cur[1]); + if (!char_is_digit(*cur++)) { + return_err(cur, "no digit after exponent sign"); + } + while (char_is_digit(*cur)) cur++; + } + + return_raw(); + +#undef return_err +#undef return_raw +} + +/** Read a hex number. */ +static_noinline bool read_num_hex(u8 **ptr, u8 **pre, yyjson_read_flag flg, + yyjson_val *val, const char **msg) { + u8 *hdr = *ptr; + u8 *cur = *ptr; + u8 **end = ptr; + u64 sig = 0, i = 0; + bool sign; + + /* skip sign and '0x' */ + sign = (*cur == '-'); + cur += (*cur == '-' || *cur == '+') + 2; + + /* read hex */ + for(; i < 16; i++) { + u8 c = hex_conv_table[cur[i]]; + if (c == 0xF0) break; + sig <<= 4; + sig |= c; + } + + /* check error */ + if (unlikely(i == 0)) { + *msg = "invalid hex number"; + return false; + } + + /* check overflow */ + if (unlikely(i == 16)) { + if (char_is_hex(cur[16]) || (sign && sig > ((u64)1 << 63))) { + if (!has_flg(BIGNUM_AS_RAW)) { + *msg = "hex number overflow"; + return false; + } + cur += 16; + while (char_is_hex(*cur)) cur++; + **pre = '\0'; + val->tag = ((u64)(cur - hdr) << YYJSON_TAG_BIT) | YYJSON_TYPE_RAW; + val->uni.str = (const char *)hdr; + *pre = cur; *end = cur; + return true; + } + } + + val->tag = YYJSON_TYPE_NUM | (u64)((u8)sign << 3); + val->uni.u64 = (u64)(sign ? (u64)(~(sig) + 1) : (u64)(sig)); + *end = cur + i; + return true; +} + +/** + Skip trivia (whitespace and comments). + This function should be used only when `char_is_trivia()` returns true. + @param ptr (inout) Input current position, output end position. + @param eof JSON end position. + @param flg JSON read flags. + @return true if at least one character was skipped. + false if no characters were skipped, + or if a multi-line comment is unterminated; + in the latter case, `ptr` will be set to `eof`. + */ +static_noinline bool skip_trivia(u8 **ptr, u8 *eof, yyjson_read_flag flg) { + u8 *hdr = *ptr, *cur = *ptr; + usize len; + + while (cur < eof) { + u8 *loop_begin = cur; + + /* skip standard whitespace */ + while(char_is_space(*cur)) cur++; + + /* skip extended whitespace */ + if (has_allow(EXT_WHITESPACE)) { + while (char_is_space_ext(*cur)) { + cur += (len = ext_space_len(cur)); + if (!len) break; + } + } + + /* skip comment, do not validate encoding */ + if (has_allow(COMMENTS) && cur[0] == '/') { + if (cur[1] == '/') { /* single-line comment */ + cur += 2; + if (has_allow(EXT_WHITESPACE)) { + while (cur < eof) { + if (char_is_eol_ext(*cur)) { + cur += (len = ext_eol_len(cur)); + if (len) break; + } + cur++; + } + } else { + while (cur < eof && !char_is_eol(*cur)) cur++; + } + } else if (cur[1] == '*') { /* multi-line comment */ + cur += 2; + while (!byte_match_2(cur, "*/") && cur < eof) cur++; + if (cur == eof) { + *ptr = eof; + return false; /* unclosed comment */ + } + cur += 2; + } + } + if (cur == loop_begin) break; + } + *ptr = cur; + return cur > hdr; +} + +/** + Check truncated UTF-8 character. + Return true if `cur` starts a valid UTF-8 sequence that is truncated. + */ +static bool is_truncated_utf8(u8 *cur, u8 *eof) { + u8 c0, c1, c2; + usize len = (usize)(eof - cur); + if (cur >= eof || len >= 4) return false; + c0 = cur[0]; c1 = cur[1]; c2 = cur[2]; + /* 1-byte UTF-8, not truncated */ + if (c0 < 0x80) return false; + if (len == 1) { + /* 2-byte UTF-8, truncated */ + if ((c0 & 0xE0) == 0xC0 && (c0 & 0x1E) != 0x00) return true; + /* 3-byte UTF-8, truncated */ + if ((c0 & 0xF0) == 0xE0) return true; + /* 4-byte UTF-8, truncated */ + if ((c0 & 0xF8) == 0xF0 && (c0 & 0x07) <= 0x04) return true; + } else if (len == 2) { + /* 3-byte UTF-8, truncated */ + if ((c0 & 0xF0) == 0xE0 && (c1 & 0xC0) == 0x80) { + u8 t = (u8)(((c0 & 0x0F) << 1) | ((c1 & 0x20) >> 5)); + return 0x01 <= t && t != 0x1B; + } + /* 4-byte UTF-8, truncated */ + if ((c0 & 0xF8) == 0xF0 && (c1 & 0xC0) == 0x80) { + u8 t = (u8)(((c0 & 0x07) << 2) | ((c1 & 0x30) >> 4)); + return 0x01 <= t && t <= 0x10; + } + } else if (len == 3) { + /* 4 bytes UTF-8, truncated */ + if ((c0 & 0xF8) == 0xF0 && (c1 & 0xC0) == 0x80 && (c2 & 0xC0) == 0x80) { + u8 t = (u8)(((c0 & 0x07) << 2) | ((c1 & 0x30) >> 4)); + return 0x01 <= t && t <= 0x10; + } + } + return false; +} + +/** + Check truncated string. + Returns true if `cur` match `str` but is truncated. + The `str` should be lowercase ASCII letters. + */ +static bool is_truncated_str(u8 *cur, u8 *eof, const char *str, + bool case_sensitive) { + usize len = strlen(str); + if (cur + len <= eof || eof <= cur) return false; + if (case_sensitive) { + return memcmp(cur, str, (usize)(eof - cur)) == 0; + } + for (; cur < eof; cur++, str++) { + if (char_to_lower(*cur) != *(const u8 *)str) return false; + } + return true; +} + +/** + Check truncated JSON on parsing errors. + Returns true if the input is valid but truncated. + */ +static_noinline bool is_truncated_end(u8 *hdr, u8 *cur, u8 *eof, + yyjson_read_code code, + yyjson_read_flag flg) { + if (cur >= eof) return true; + if (code == YYJSON_READ_ERROR_LITERAL) { + if (is_truncated_str(cur, eof, "true", true) || + is_truncated_str(cur, eof, "false", true) || + is_truncated_str(cur, eof, "null", true)) { + return true; + } + } + if (code == YYJSON_READ_ERROR_UNEXPECTED_CHARACTER || + code == YYJSON_READ_ERROR_INVALID_NUMBER || + code == YYJSON_READ_ERROR_LITERAL) { + if (has_allow(INF_AND_NAN)) { + if (*cur == '-') cur++; + if (is_truncated_str(cur, eof, "infinity", false) || + is_truncated_str(cur, eof, "nan", false)) { + return true; + } + } + } + if (code == YYJSON_READ_ERROR_UNEXPECTED_CONTENT) { + if (has_allow(INF_AND_NAN)) { + if (hdr + 3 <= cur && + is_truncated_str(cur - 3, eof, "infinity", false)) { + return true; /* e.g. infin would be read as inf + in */ + } + } + } + if (code == YYJSON_READ_ERROR_INVALID_STRING) { + usize len = (usize)(eof - cur); + + /* unicode escape sequence */ + if (*cur == '\\') { + if (len == 1) return true; + if (len <= 5) { + if (*++cur != 'u') return false; + for (++cur; cur < eof; cur++) { + if (!char_is_hex(*cur)) return false; + } + return true; + } else if (len <= 11) { + /* incomplete surrogate pair? */ + u16 hi; + if (*++cur != 'u') return false; + if (!hex_load_4(++cur, &hi)) return false; + if ((hi & 0xF800) != 0xD800) return false; + cur += 4; + if (cur >= eof) return true; + /* valid low surrogate is DC00...DFFF */ + if (*cur != '\\') return false; + if (++cur >= eof) return true; + if (*cur != 'u') return false; + if (++cur >= eof) return true; + if (*cur != 'd' && *cur != 'D') return false; + if (++cur >= eof) return true; + if ((*cur < 'c' || *cur > 'f') && (*cur < 'C' || *cur > 'F')) + return false; + if (++cur >= eof) return true; + if (!char_is_hex(*cur)) return false; + return true; + } + return false; + } + + /* 2 to 4 bytes UTF-8 */ + if (is_truncated_utf8(cur, eof)) { + return true; + } + } + if (has_allow(COMMENTS)) { + if (code == YYJSON_READ_ERROR_INVALID_COMMENT) { + /* unclosed multiline comment */ + return true; + } + if (code == YYJSON_READ_ERROR_UNEXPECTED_CHARACTER && + *cur == '/' && cur + 1 == eof) { + /* truncated beginning of comment */ + return true; + } + } + if (code == YYJSON_READ_ERROR_UNEXPECTED_CHARACTER && + has_allow(BOM)) { + /* truncated UTF-8 BOM */ + usize len = (usize)(eof - cur); + if (cur == hdr && len < 3 && !memcmp(hdr, "\xEF\xBB\xBF", len)) { + return true; + } + } + return false; +} + + + +#if !YYJSON_DISABLE_FAST_FP_CONV /* FP_READER */ + +/*============================================================================== + * MARK: - BigInt For Floating Point Number Reader (Private) + * + * The bigint algorithm is used by floating-point number reader to get correctly + * rounded result for numbers with lots of digits. This part of code is rarely + * used for common numbers. + *============================================================================*/ + +/** Unsigned arbitrarily large integer */ +typedef struct bigint { + u32 used; /* used chunks count, should not be 0 */ + u64 bits[64]; /* chunks (58 is enough here) */ +} bigint; + +/** + Evaluate 'big += val'. + @param big A big number (can be 0). + @param val An unsigned integer (can be 0). + */ +static_inline void bigint_add_u64(bigint *big, u64 val) { + u32 idx, max; + u64 num = big->bits[0]; + u64 add = num + val; + big->bits[0] = add; + if (likely((add >= num) || (add >= val))) return; + for ((void)(idx = 1), max = big->used; idx < max; idx++) { + if (likely(big->bits[idx] != U64_MAX)) { + big->bits[idx] += 1; + return; + } + big->bits[idx] = 0; + } + big->bits[big->used++] = 1; +} + +/** + Evaluate 'big *= val'. + @param big A big number (can be 0). + @param val An unsigned integer (cannot be 0). + */ +static_inline void bigint_mul_u64(bigint *big, u64 val) { + u32 idx = 0, max = big->used; + u64 hi, lo, carry = 0; + for (; idx < max; idx++) { + if (big->bits[idx]) break; + } + for (; idx < max; idx++) { + u128_mul_add(big->bits[idx], val, carry, &hi, &lo); + big->bits[idx] = lo; + carry = hi; + } + if (carry) big->bits[big->used++] = carry; +} + +/** + Evaluate 'big *= 2^exp'. + @param big A big number (can be 0). + @param exp An exponent integer (can be 0). + */ +static_inline void bigint_mul_pow2(bigint *big, u32 exp) { + u32 shft = exp % 64; + u32 move = exp / 64; + u32 idx = big->used; + if (unlikely(shft == 0)) { + for (; idx > 0; idx--) { + big->bits[idx + move - 1] = big->bits[idx - 1]; + } + big->used += move; + while (move) big->bits[--move] = 0; + } else { + big->bits[idx] = 0; + for (; idx > 0; idx--) { + u64 num = big->bits[idx] << shft; + num |= big->bits[idx - 1] >> (64 - shft); + big->bits[idx + move] = num; + } + big->bits[move] = big->bits[0] << shft; + big->used += move + (big->bits[big->used + move] > 0); + while (move) big->bits[--move] = 0; + } +} + +/** + Evaluate 'big *= 10^exp'. + @param big A big number (can be 0). + @param exp An exponent integer (cannot be 0). + */ +static_inline void bigint_mul_pow10(bigint *big, i32 exp) { + for (; exp >= U64_POW10_MAX_EXACT_EXP; exp -= U64_POW10_MAX_EXACT_EXP) { + bigint_mul_u64(big, u64_pow10_table[U64_POW10_MAX_EXACT_EXP]); + } + if (exp) { + bigint_mul_u64(big, u64_pow10_table[exp]); + } +} + +/** + Compare two bigint. + @return -1 if 'a < b', +1 if 'a > b', 0 if 'a == b'. + */ +static_inline i32 bigint_cmp(bigint *a, bigint *b) { + u32 idx = a->used; + if (a->used < b->used) return -1; + if (a->used > b->used) return +1; + while (idx-- > 0) { + u64 av = a->bits[idx]; + u64 bv = b->bits[idx]; + if (av < bv) return -1; + if (av > bv) return +1; + } + return 0; +} + +/** + Evaluate 'big = val'. + @param big A big number (can be 0). + @param val An unsigned integer (can be 0). + */ +static_inline void bigint_set_u64(bigint *big, u64 val) { + big->used = 1; + big->bits[0] = val; +} + +/** Set a bigint with floating point number string. */ +static_noinline void bigint_set_buf(bigint *big, u64 sig, i32 *exp, + u8 *sig_cut, u8 *sig_end, u8 *dot_pos) { + + if (unlikely(!sig_cut)) { + /* no digit cut, set significant part only */ + bigint_set_u64(big, sig); + return; + + } else { + /* some digits were cut, read them from 'sig_cut' to 'sig_end' */ + u8 *hdr = sig_cut; + u8 *cur = hdr; + u32 len = 0; + u64 val = 0; + bool dig_big_cut = false; + bool has_dot = (hdr < dot_pos) & (dot_pos < sig_end); + u32 dig_len_total = U64_SAFE_DIG + (u32)(sig_end - hdr) - has_dot; + + sig -= (*sig_cut >= '5'); /* sig was rounded before */ + if (dig_len_total > F64_MAX_DEC_DIG) { + dig_big_cut = true; + sig_end -= dig_len_total - (F64_MAX_DEC_DIG + 1); + sig_end -= (dot_pos + 1 == sig_end); + dig_len_total = (F64_MAX_DEC_DIG + 1); + } + *exp -= (i32)dig_len_total - U64_SAFE_DIG; + + big->used = 1; + big->bits[0] = sig; + while (cur < sig_end) { + if (likely(cur != dot_pos)) { + val = val * 10 + (u8)(*cur++ - '0'); + len++; + if (unlikely(cur == sig_end && dig_big_cut)) { + /* The last digit must be non-zero, */ + /* set it to '1' for correct rounding. */ + val = val - (val % 10) + 1; + } + if (len == U64_SAFE_DIG || cur == sig_end) { + bigint_mul_pow10(big, (i32)len); + bigint_add_u64(big, val); + val = 0; + len = 0; + } + } else { + cur++; + } + } + } +} + + + +/*============================================================================== + * MARK: - Diy Floating Point (Private) + *============================================================================*/ + +/** "Do It Yourself Floating Point" struct. */ +typedef struct diy_fp { + u64 sig; /* significand */ + i32 exp; /* exponent, base 2 */ + i32 pad; /* padding, useless */ +} diy_fp; + +/** Get cached rounded diy_fp with pow(10, e) The input value must in range + [POW10_SIG_TABLE_MIN_EXP, POW10_SIG_TABLE_MAX_EXP]. */ +static_inline diy_fp diy_fp_get_cached_pow10(i32 exp10) { + diy_fp fp; + u64 sig_ext; + pow10_table_get_sig(exp10, &fp.sig, &sig_ext); + pow10_table_get_exp(exp10, &fp.exp); + fp.sig += (sig_ext >> 63); + return fp; +} + +/** Returns fp * fp2. */ +static_inline diy_fp diy_fp_mul(diy_fp fp, diy_fp fp2) { + u64 hi, lo; + u128_mul(fp.sig, fp2.sig, &hi, &lo); + fp.sig = hi + (lo >> 63); + fp.exp += fp2.exp + 64; + return fp; +} + +/** Convert diy_fp to IEEE-754 raw value. */ +static_inline u64 diy_fp_to_ieee_raw(diy_fp fp) { + u64 sig = fp.sig; + i32 exp = fp.exp; + u32 lz_bits; + if (unlikely(fp.sig == 0)) return 0; + + lz_bits = u64_lz_bits(sig); + sig <<= lz_bits; + sig >>= F64_BITS - F64_SIG_FULL_BITS; + exp -= (i32)lz_bits; + exp += F64_BITS - F64_SIG_FULL_BITS; + exp += F64_SIG_BITS; + + if (unlikely(exp >= F64_MAX_BIN_EXP)) { + /* overflow */ + return F64_BITS_INF; + } else if (likely(exp >= F64_MIN_BIN_EXP - 1)) { + /* normal */ + exp += F64_EXP_BIAS; + return ((u64)exp << F64_SIG_BITS) | (sig & F64_SIG_MASK); + } else if (likely(exp >= F64_MIN_BIN_EXP - F64_SIG_FULL_BITS)) { + /* subnormal */ + return sig >> (F64_MIN_BIN_EXP - exp - 1); + } else { + /* underflow */ + return 0; + } +} + + + +/*============================================================================== + * MARK: - Number Reader (Private) + *============================================================================*/ + +/** + Read a JSON number. + + 1. This function assume that the floating-point number is in IEEE-754 format. + 2. This function support uint64/int64/double number. If an integer number + cannot fit in uint64/int64, it will returns as a double number. If a double + number is infinite, the return value is based on flag. + 3. This function (with inline attribute) may generate a lot of instructions. + */ +static_inline bool read_num(u8 **ptr, u8 **pre, yyjson_read_flag flg, + yyjson_val *val, const char **msg) { +#define return_err(_pos, _msg) do { \ + *msg = _msg; \ + *end = _pos; \ + return false; \ +} while (false) + +#define return_0() do { \ + val->tag = YYJSON_TYPE_NUM | (u8)((u8)sign << 3); \ + val->uni.u64 = 0; \ + *end = cur; return true; \ +} while (false) + +#define return_i64(_v) do { \ + val->tag = YYJSON_TYPE_NUM | (u8)((u8)sign << 3); \ + val->uni.u64 = (u64)(sign ? (u64)(~(_v) + 1) : (u64)(_v)); \ + *end = cur; return true; \ +} while (false) + +#define return_f64(_v) do { \ + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_REAL; \ + val->uni.f64 = sign ? -(f64)(_v) : (f64)(_v); \ + *end = cur; return true; \ +} while (false) + +#define return_f64_bin(_v) do { \ + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_REAL; \ + val->uni.u64 = ((u64)sign << 63) | (u64)(_v); \ + *end = cur; return true; \ +} while (false) + +#define return_inf() do { \ + if (has_flg(BIGNUM_AS_RAW)) return_raw(); \ + if (has_allow(INF_AND_NAN)) return_f64_bin(F64_BITS_INF); \ + else return_err(hdr, "number is infinity when parsed as double"); \ +} while (false) + +#define return_raw() do { \ + **pre = '\0'; /* add null-terminator for previous raw string */ \ + val->tag = ((u64)(cur - hdr) << YYJSON_TAG_BIT) | YYJSON_TYPE_RAW; \ + val->uni.str = (const char *)hdr; \ + *pre = cur; *end = cur; return true; \ +} while (false) + + u8 *sig_cut = NULL; /* significant part cutting position for long number */ + u8 *sig_end = NULL; /* significant part ending position */ + u8 *dot_pos = NULL; /* decimal point position */ + + u64 sig = 0; /* significant part of the number */ + i32 exp = 0; /* exponent part of the number */ + + bool exp_sign; /* temporary exponent sign from literal part */ + i64 exp_sig = 0; /* temporary exponent number from significant part */ + i64 exp_lit = 0; /* temporary exponent number from exponent literal part */ + u64 num; /* temporary number for reading */ + u8 *tmp; /* temporary cursor for reading */ + + u8 *hdr = *ptr; + u8 *cur = *ptr; + u8 **end = ptr; + bool sign; + + /* read number as raw string if has `YYJSON_READ_NUMBER_AS_RAW` flag */ + if (has_flg(NUMBER_AS_RAW)) { + return read_num_raw(ptr, pre, flg, val, msg); + } + + sign = (*hdr == '-'); + cur += sign; + + /* begin with a leading zero or non-digit */ + while (unlikely(!char_is_nonzero(*cur))) { /* 0 or non-digit char */ + if (unlikely(*cur != '0')) { /* non-digit char */ + if (has_allow(EXT_NUMBER)) { + if (*cur == '+' && cur == hdr) { /* leading `+` sign */ + cur++; + continue; + } + if (*cur == '.' && char_is_digit(cur[1])) { /* e.g. '.123' */ + goto leading_dot; + } + } + if (has_allow(INF_AND_NAN)) { + if (read_inf_or_nan(ptr, pre, flg, val)) return true; + } + return_err(cur, "no digit after sign"); + } + /* begin with 0 */ + if (likely(!char_is_digit_or_fp(*++cur))) { + if (has_allow(EXT_NUMBER) && char_to_lower(*cur) == 'x') { /* hex */ + return read_num_hex(ptr, pre, flg, val, msg); + } + return_0(); + } + if (likely(*cur == '.')) { +leading_dot: + dot_pos = cur++; + if (unlikely(!char_is_digit(*cur))) { + if (has_allow(EXT_NUMBER)) { + if (char_is_exp(*cur)) { + goto digi_exp_more; + } else { + return_f64_bin(0); + } + } + return_err(cur, "no digit after decimal point"); + } + while (unlikely(*cur == '0')) cur++; + if (likely(char_is_digit(*cur))) { + /* first non-zero digit after decimal point */ + sig = (u64)(*cur - '0'); /* read first digit */ + cur--; + goto digi_frac_1; /* continue read fraction part */ + } + } + if (unlikely(char_is_digit(*cur))) { + return_err(cur - 1, "number with leading zero is not allowed"); + } + if (unlikely(char_is_exp(*cur))) { /* 0 with any exponent is still 0 */ + cur += (usize)1 + char_is_sign(cur[1]); + if (unlikely(!char_is_digit(*cur))) { + return_err(cur, "no digit after exponent sign"); + } + while (char_is_digit(*++cur)); + } + return_f64_bin(0); + } + + /* begin with non-zero digit */ + sig = (u64)(*cur - '0'); + + /* + Read integral part, same as the following code. + + for (int i = 1; i <= 18; i++) { + num = cur[i] - '0'; + if (num <= 9) sig = num + sig * 10; + else goto digi_sepr_i; + } + */ +#define expr_intg(i) \ + if (likely((num = (u64)(cur[i] - (u8)'0')) <= 9)) sig = num + sig * 10; \ + else { goto digi_sepr_##i; } + repeat_in_1_18(expr_intg) +#undef expr_intg + + + cur += 19; /* skip continuous 19 digits */ + if (!char_is_digit_or_fp(*cur)) { + /* this number is an integer consisting of 19 digits */ + if (sign && (sig > ((u64)1 << 63))) { /* overflow */ + if (has_flg(BIGNUM_AS_RAW)) return_raw(); + return_f64(unsafe_yyjson_u64_to_f64(sig)); + } + return_i64(sig); + } + goto digi_intg_more; /* read more digits in integral part */ + + + /* process first non-digit character */ +#define expr_sepr(i) \ + digi_sepr_##i: \ + if (likely(!char_is_fp(cur[i]))) { cur += i; return_i64(sig); } \ + dot_pos = cur + i; \ + if (likely(cur[i] == '.')) goto digi_frac_##i; \ + cur += i; sig_end = cur; goto digi_exp_more; + repeat_in_1_18(expr_sepr) +#undef expr_sepr + + + /* read fraction part */ +#define expr_frac(i) \ + digi_frac_##i: \ + if (likely((num = (u64)(cur[i + 1] - (u8)'0')) <= 9)) \ + sig = num + sig * 10; \ + else { goto digi_stop_##i; } + repeat_in_1_18(expr_frac) +#undef expr_frac + + cur += 20; /* skip 19 digits and 1 decimal point */ + if (!char_is_digit(*cur)) goto digi_frac_end; /* fraction part end */ + goto digi_frac_more; /* read more digits in fraction part */ + + + /* significant part end */ +#define expr_stop(i) \ + digi_stop_##i: \ + cur += i + 1; \ + goto digi_frac_end; + repeat_in_1_18(expr_stop) +#undef expr_stop + + + /* read more digits in integral part */ +digi_intg_more: + if (char_is_digit(*cur)) { + if (!char_is_digit_or_fp(cur[1])) { + /* this number is an integer consisting of 20 digits */ + num = (u64)(*cur - '0'); + if ((sig < (U64_MAX / 10)) || + (sig == (U64_MAX / 10) && num <= (U64_MAX % 10))) { + sig = num + sig * 10; + cur++; + /* convert to double if overflow */ + if (sign) { + if (has_flg(BIGNUM_AS_RAW)) return_raw(); + return_f64(unsafe_yyjson_u64_to_f64(sig)); + } + return_i64(sig); + } + } + } + + if (char_is_exp(*cur)) { + dot_pos = cur; + goto digi_exp_more; + } + + if (*cur == '.') { + dot_pos = cur++; + if (unlikely(!char_is_digit(*cur))) { + if (has_allow(EXT_NUMBER)) { + goto digi_frac_end; + } + return_err(cur, "no digit after decimal point"); + } + } + + + /* read more digits in fraction part */ +digi_frac_more: + sig_cut = cur; /* too large to fit in u64, excess digits need to be cut */ + sig += (*cur >= '5'); /* round */ + while (char_is_digit(*++cur)); + if (!dot_pos) { + if (!char_is_fp(*cur) && has_flg(BIGNUM_AS_RAW)) { + return_raw(); /* it's a large integer */ + } + dot_pos = cur; + if (*cur == '.') { + if (unlikely(!char_is_digit(*++cur))) { + if (!has_allow(EXT_NUMBER)) { + return_err(cur, "no digit after decimal point"); + } + } + while (char_is_digit(*cur)) cur++; + } + } + exp_sig = (i64)(dot_pos - sig_cut); + exp_sig += (dot_pos < sig_cut); + + /* ignore trailing zeros */ + tmp = cur - 1; + while ((*tmp == '0' || *tmp == '.') && tmp > hdr) tmp--; + if (tmp < sig_cut) { + sig_cut = NULL; + } else { + sig_end = cur; + } + + if (char_is_exp(*cur)) goto digi_exp_more; + goto digi_exp_finish; + + + /* fraction part end */ +digi_frac_end: + if (unlikely(dot_pos + 1 == cur)) { + if (!has_allow(EXT_NUMBER)) { + return_err(cur, "no digit after decimal point"); + } + } + sig_end = cur; + exp_sig = -(i64)((u64)(cur - dot_pos) - 1); + if (likely(!char_is_exp(*cur))) { + if (unlikely(exp_sig < F64_MIN_DEC_EXP - 19)) { + return_f64_bin(0); /* underflow */ + } + exp = (i32)exp_sig; + goto digi_finish; + } else { + goto digi_exp_more; + } + + + /* read exponent part */ +digi_exp_more: + exp_sign = (*++cur == '-'); + cur += char_is_sign(*cur); + if (unlikely(!char_is_digit(*cur))) { + return_err(cur, "no digit after exponent sign"); + } + while (*cur == '0') cur++; + + /* read exponent literal */ + tmp = cur; + while (char_is_digit(*cur)) { + exp_lit = (i64)((u8)(*cur++ - '0') + (u64)exp_lit * 10); + } + if (unlikely(cur - tmp >= U64_SAFE_DIG)) { + if (exp_sign) { + return_f64_bin(0); /* underflow */ + } else { + return_inf(); /* overflow */ + } + } + exp_sig += exp_sign ? -exp_lit : exp_lit; + + + /* validate exponent value */ +digi_exp_finish: + if (unlikely(exp_sig < F64_MIN_DEC_EXP - 19)) { + return_f64_bin(0); /* underflow */ + } + if (unlikely(exp_sig > F64_MAX_DEC_EXP)) { + return_inf(); /* overflow */ + } + exp = (i32)exp_sig; + + + /* all digit read finished */ +digi_finish: + + /* + Fast path 1: + + 1. The floating-point number calculation should be accurate, see the + comments of macro `YYJSON_DOUBLE_MATH_CORRECT`. + 2. Correct rounding should be performed (fegetround() == FE_TONEAREST). + 3. The input of floating point number calculation does not lose precision, + which means: 64 - leading_zero(input) - trailing_zero(input) < 53. + + We don't check all available inputs here, because that would make the code + more complicated, and not friendly to branch predictor. + */ +#if YYJSON_DOUBLE_MATH_CORRECT + if (sig < ((u64)1 << 53) && + exp >= -F64_POW10_MAX_EXACT_EXP && + exp <= +F64_POW10_MAX_EXACT_EXP) { + f64 dbl = (f64)sig; + if (exp < 0) { + dbl /= f64_pow10_table[-exp]; + } else { + dbl *= f64_pow10_table[+exp]; + } + return_f64(dbl); + } +#endif + + /* + Fast path 2: + + To keep it simple, we only accept normal number here, + let the slow path to handle subnormal and infinity number. + */ + if (likely(!sig_cut && + exp > -F64_MAX_DEC_EXP + 1 && + exp < +F64_MAX_DEC_EXP - 20)) { + /* + The result value is exactly equal to (sig * 10^exp), + the exponent part (10^exp) can be converted to (sig2 * 2^exp2). + + The sig2 can be an infinite length number, only the highest 128 bits + is cached in the pow10_sig_table. + + Now we have these bits: + sig1 (normalized 64bit) : aaaaaaaa + sig2 (higher 64bit) : bbbbbbbb + sig2_ext (lower 64bit) : cccccccc + sig2_cut (extra unknown bits) : dddddddddddd.... + + And the calculation process is: + ---------------------------------------- + aaaaaaaa * + bbbbbbbbccccccccdddddddddddd.... + ---------------------------------------- + abababababababab + + acacacacacacacac + + adadadadadadadadadad.... + ---------------------------------------- + [hi____][lo____] + + [hi2___][lo2___] + + [unknown___________....] + ---------------------------------------- + + The addition with carry may affect higher bits, but if there is a 0 + in higher bits, the bits higher than 0 will not be affected. + + `lo2` + `unknown` may get a carry bit and may affect `hi2`, the max + value of `hi2` is 0xFFFFFFFFFFFFFFFE, so `hi2` will not overflow. + + `lo` + `hi2` may also get a carry bit and may affect `hi`, but only + the highest significant 53 bits of `hi` is needed. If there is a 0 + in the lower bits of `hi`, then all the following bits can be dropped. + + To convert the result to IEEE-754 double number, we need to perform + correct rounding: + 1. if bit 54 is 0, round down, + 2. if bit 54 is 1 and any bit beyond bit 54 is 1, round up, + 3. if bit 54 is 1 and all bits beyond bit 54 are 0, round to even, + as the extra bits is unknown, this case will not be handled here. + */ + + u64 raw; + u64 sig1, sig2, sig2_ext, hi, lo, hi2, lo2, add, bits; + i32 exp2; + u32 lz; + bool exact = false, carry, round_up; + + /* convert (10^exp) to (sig2 * 2^exp2) */ + pow10_table_get_sig(exp, &sig2, &sig2_ext); + pow10_table_get_exp(exp, &exp2); + + /* normalize and multiply */ + lz = u64_lz_bits(sig); + sig1 = sig << lz; + exp2 -= (i32)lz; + u128_mul(sig1, sig2, &hi, &lo); + + /* + The `hi` is in range [0x4000000000000000, 0xFFFFFFFFFFFFFFFE], + To get normalized value, `hi` should be shifted to the left by 0 or 1. + + The highest significant 53 bits is used by IEEE-754 double number, + and the bit 54 is used to detect rounding direction. + + The lowest (64 - 54 - 1) bits is used to check whether it contains 0. + */ + bits = hi & (((u64)1 << (64 - 54 - 1)) - 1); + if (bits - 1 < (((u64)1 << (64 - 54 - 1)) - 2)) { + /* + (bits != 0 && bits != 0x1FF) => (bits - 1 < 0x1FF - 1) + The `bits` is not zero, so we don't need to check `round to even` + case. The `bits` contains bit `0`, so we can drop the extra bits + after `0`. + */ + exact = true; + + } else { + /* + (bits == 0 || bits == 0x1FF) + The `bits` is filled with all `0` or all `1`, so we need to check + lower bits with another 64-bit multiplication. + */ + u128_mul(sig1, sig2_ext, &hi2, &lo2); + + add = lo + hi2; + if (add + 1 > (u64)1) { + /* + (add != 0 && add != U64_MAX) => (add + 1 > 1) + The `add` is not zero, so we don't need to check `round to + even` case. The `add` contains bit `0`, so we can drop the + extra bits after `0`. The `hi` cannot be U64_MAX, so it will + not overflow. + */ + carry = add < lo || add < hi2; + hi += carry; + exact = true; + } + } + + if (exact) { + /* normalize */ + lz = hi < ((u64)1 << 63); + hi <<= lz; + exp2 -= (i32)lz; + exp2 += 64; + + /* test the bit 54 and get rounding direction */ + round_up = (hi & ((u64)1 << (64 - 54))) > (u64)0; + hi += (round_up ? ((u64)1 << (64 - 54)) : (u64)0); + + /* test overflow */ + if (hi < ((u64)1 << (64 - 54))) { + hi = ((u64)1 << 63); + exp2 += 1; + } + + /* This is a normal number, convert it to IEEE-754 format. */ + hi >>= F64_BITS - F64_SIG_FULL_BITS; + exp2 += F64_BITS - F64_SIG_FULL_BITS + F64_SIG_BITS; + exp2 += F64_EXP_BIAS; + raw = ((u64)exp2 << F64_SIG_BITS) | (hi & F64_SIG_MASK); + return_f64_bin(raw); + } + } + + /* + Slow path: read double number exactly with diyfp. + 1. Use cached diyfp to get an approximation value. + 2. Use bigcomp to check the approximation value if needed. + + This algorithm refers to google's double-conversion project: + https://github.com/google/double-conversion + */ + { + const i32 ERR_ULP_LOG = 3; + const i32 ERR_ULP = 1 << ERR_ULP_LOG; + const i32 ERR_CACHED_POW = ERR_ULP / 2; + const i32 ERR_MUL_FIXED = ERR_ULP / 2; + const i32 DIY_SIG_BITS = 64; + const i32 EXP_BIAS = F64_EXP_BIAS + F64_SIG_BITS; + const i32 EXP_SUBNORMAL = -EXP_BIAS + 1; + + u64 fp_err; + u32 bits; + i32 order_of_magnitude; + i32 effective_significand_size; + i32 precision_digits_count; + u64 precision_bits; + u64 half_way; + + u64 raw; + diy_fp fp, fp_upper; + bigint big_full, big_comp; + i32 cmp; + + fp.sig = sig; + fp.exp = 0; + fp_err = sig_cut ? (u64)(ERR_ULP / 2) : (u64)0; + + /* normalize */ + bits = u64_lz_bits(fp.sig); + fp.sig <<= bits; + fp.exp -= (i32)bits; + fp_err <<= bits; + + /* multiply and add error */ + fp = diy_fp_mul(fp, diy_fp_get_cached_pow10(exp)); + fp_err += (u64)ERR_CACHED_POW + (fp_err != 0) + (u64)ERR_MUL_FIXED; + + /* normalize */ + bits = u64_lz_bits(fp.sig); + fp.sig <<= bits; + fp.exp -= (i32)bits; + fp_err <<= bits; + + /* effective significand */ + order_of_magnitude = DIY_SIG_BITS + fp.exp; + if (likely(order_of_magnitude >= EXP_SUBNORMAL + F64_SIG_FULL_BITS)) { + effective_significand_size = F64_SIG_FULL_BITS; + } else if (order_of_magnitude <= EXP_SUBNORMAL) { + effective_significand_size = 0; + } else { + effective_significand_size = order_of_magnitude - EXP_SUBNORMAL; + } + + /* precision digits count */ + precision_digits_count = DIY_SIG_BITS - effective_significand_size; + if (unlikely(precision_digits_count + ERR_ULP_LOG >= DIY_SIG_BITS)) { + i32 shr = (precision_digits_count + ERR_ULP_LOG) - DIY_SIG_BITS + 1; + fp.sig >>= shr; + fp.exp += shr; + fp_err = (fp_err >> shr) + 1 + (u32)ERR_ULP; + precision_digits_count -= shr; + } + + /* half way */ + precision_bits = fp.sig & (((u64)1 << precision_digits_count) - 1); + precision_bits *= (u32)ERR_ULP; + half_way = (u64)1 << (precision_digits_count - 1); + half_way *= (u32)ERR_ULP; + + /* rounding */ + fp.sig >>= precision_digits_count; + fp.sig += (precision_bits >= half_way + fp_err); + fp.exp += precision_digits_count; + + /* get IEEE double raw value */ + raw = diy_fp_to_ieee_raw(fp); + if (unlikely(raw == F64_BITS_INF)) return_inf(); + if (likely(precision_bits <= half_way - fp_err || + precision_bits >= half_way + fp_err)) { + return_f64_bin(raw); /* number is accurate */ + } + /* now the number is the correct value, or the next lower value */ + + /* upper boundary */ + if (raw & F64_EXP_MASK) { + fp_upper.sig = (raw & F64_SIG_MASK) + ((u64)1 << F64_SIG_BITS); + fp_upper.exp = (i32)((raw & F64_EXP_MASK) >> F64_SIG_BITS); + } else { + fp_upper.sig = (raw & F64_SIG_MASK); + fp_upper.exp = 1; + } + fp_upper.exp -= F64_EXP_BIAS + F64_SIG_BITS; + fp_upper.sig <<= 1; + fp_upper.exp -= 1; + fp_upper.sig += 1; /* add half ulp */ + + /* compare with bigint */ + bigint_set_buf(&big_full, sig, &exp, sig_cut, sig_end, dot_pos); + bigint_set_u64(&big_comp, fp_upper.sig); + if (exp >= 0) { + bigint_mul_pow10(&big_full, +exp); + } else { + bigint_mul_pow10(&big_comp, -exp); + } + if (fp_upper.exp > 0) { + bigint_mul_pow2(&big_comp, (u32)+fp_upper.exp); + } else { + bigint_mul_pow2(&big_full, (u32)-fp_upper.exp); + } + cmp = bigint_cmp(&big_full, &big_comp); + if (likely(cmp != 0)) { + /* round down or round up */ + raw += (cmp > 0); + } else { + /* falls midway, round to even */ + raw += (raw & 1); + } + + if (unlikely(raw == F64_BITS_INF)) return_inf(); + return_f64_bin(raw); + } + +#undef return_err +#undef return_inf +#undef return_0 +#undef return_i64 +#undef return_f64 +#undef return_f64_bin +#undef return_raw +} + + + +#else /* FP_READER */ + +/** + Read a JSON number. + This is a fallback function if the custom number reader is disabled. + This function use libc's strtod() to read floating-point number. + */ +static_inline bool read_num(u8 **ptr, u8 **pre, yyjson_read_flag flg, + yyjson_val *val, const char **msg) { +#define return_err(_pos, _msg) do { \ + *msg = _msg; \ + *end = _pos; \ + return false; \ +} while (false) + +#define return_0() do { \ + val->tag = YYJSON_TYPE_NUM | (u64)((u8)sign << 3); \ + val->uni.u64 = 0; \ + *end = cur; return true; \ +} while (false) + +#define return_i64(_v) do { \ + val->tag = YYJSON_TYPE_NUM | (u64)((u8)sign << 3); \ + val->uni.u64 = (u64)(sign ? (u64)(~(_v) + 1) : (u64)(_v)); \ + *end = cur; return true; \ +} while (false) + +#define return_f64(_v) do { \ + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_REAL; \ + val->uni.f64 = sign ? -(f64)(_v) : (f64)(_v); \ + *end = cur; return true; \ +} while (false) + +#define return_f64_bin(_v) do { \ + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_REAL; \ + val->uni.u64 = ((u64)sign << 63) | (u64)(_v); \ + *end = cur; return true; \ +} while (false) + +#define return_inf() do { \ + if (has_flg(BIGNUM_AS_RAW)) return_raw(); \ + if (has_allow(INF_AND_NAN)) return_f64_bin(F64_BITS_INF); \ + else return_err(hdr, "number is infinity when parsed as double"); \ +} while (false) + +#define return_raw() do { \ + val->tag = ((u64)(cur - hdr) << YYJSON_TAG_BIT) | YYJSON_TYPE_RAW; \ + val->uni.str = (const char *)hdr; \ + **pre = '\0'; *pre = cur; *end = cur; return true; \ +} while (false) + + u64 sig, num; + u8 *hdr = *ptr; + u8 *cur = *ptr; + u8 **end = ptr; + u8 *dot = NULL; + u8 *f64_end = NULL; + bool sign; + + /* read number as raw string if has `YYJSON_READ_NUMBER_AS_RAW` flag */ + if (has_flg(NUMBER_AS_RAW)) { + return read_num_raw(ptr, pre, flg, val, msg); + } + + sign = (*hdr == '-'); + cur += sign; + sig = (u8)(*cur - '0'); + + /* read first digit, check leading zero */ + while (unlikely(!char_is_digit(*cur))) { + if (has_allow(EXT_NUMBER)) { + if (*cur == '+' && cur == hdr) { /* leading `+` sign */ + cur++; + sig = (u8)(*cur - '0'); + continue; + } + if (*cur == '.' && char_is_num(cur[1])) { /* no integer part */ + goto read_double; /* e.g. '.123' */ + } + } + if (has_allow(INF_AND_NAN)) { + if (read_inf_or_nan(ptr, pre, flg, val)) return true; + } + return_err(cur, "no digit after sign"); + } + if (*cur == '0') { + cur++; + if (unlikely(char_is_digit(*cur))) { + return_err(cur - 1, "number with leading zero is not allowed"); + } + if (!char_is_fp(*cur)) { + if (has_allow(EXT_NUMBER) && + (*cur == 'x' || *cur == 'X')) { /* hex integer */ + return read_num_hex(ptr, pre, flg, val, msg); + } + return_0(); + } + goto read_double; + } + + /* read continuous digits, up to 19 characters */ +#define expr_intg(i) \ + if (likely((num = (u64)(cur[i] - (u8)'0')) <= 9)) sig = num + sig * 10; \ + else { cur += i; goto intg_end; } + repeat_in_1_18(expr_intg) +#undef expr_intg + + /* here are 19 continuous digits, skip them */ + cur += 19; + if (char_is_digit(cur[0]) && !char_is_digit_or_fp(cur[1])) { + /* this number is an integer consisting of 20 digits */ + num = (u8)(*cur - '0'); + if ((sig < (U64_MAX / 10)) || + (sig == (U64_MAX / 10) && num <= (U64_MAX % 10))) { + sig = num + sig * 10; + cur++; + if (sign) { + if (has_flg(BIGNUM_AS_RAW)) return_raw(); + return_f64(unsafe_yyjson_u64_to_f64(sig)); + } + return_i64(sig); + } + } + +intg_end: + /* continuous digits ended */ + if (!char_is_digit_or_fp(*cur)) { + /* this number is an integer consisting of 1 to 19 digits */ + if (sign && (sig > ((u64)1 << 63))) { + if (has_flg(BIGNUM_AS_RAW)) return_raw(); + return_f64(unsafe_yyjson_u64_to_f64(sig)); + } + return_i64(sig); + } + +read_double: + /* this number should be read as double */ + while (char_is_digit(*cur)) cur++; + if (!char_is_fp(*cur) && has_flg(BIGNUM_AS_RAW)) { + return_raw(); /* it's a large integer */ + } + while (*cur == '.') { + /* skip fraction part */ + dot = cur; + cur++; + if (!char_is_digit(*cur)) { + if (has_allow(EXT_NUMBER)) { + break; + } else { + return_err(cur, "no digit after decimal point"); + } + } + cur++; + while (char_is_digit(*cur)) cur++; + break; + } + if (char_is_exp(*cur)) { + /* skip exponent part */ + cur += 1 + char_is_sign(cur[1]); + if (!char_is_digit(*cur)) { + return_err(cur, "no digit after exponent sign"); + } + cur++; + while (char_is_digit(*cur)) cur++; + } + + /* + libc's strtod() is used to parse the floating-point number. + + Note that the decimal point character used by strtod() is locale-dependent, + and the rounding direction may affected by fesetround(). + + For currently known locales, (en, zh, ja, ko, am, he, hi) use '.' as the + decimal point, while other locales use ',' as the decimal point. + + Here strtod() is called twice for different locales, but if another thread + happens calls setlocale() between two strtod(), parsing may still fail. + */ + val->uni.f64 = strtod((const char *)hdr, (char **)&f64_end); + if (unlikely(f64_end != cur)) { + /* replace '.' with ',' for locale */ + bool cut = (*cur == ','); + if (cut) *cur = ' '; + if (dot) *dot = ','; + val->uni.f64 = strtod((const char *)hdr, (char **)&f64_end); + /* restore ',' to '.' */ + if (cut) *cur = ','; + if (dot) *dot = '.'; + if (unlikely(f64_end != cur)) { + return_err(hdr, "strtod() failed to parse the number"); + } + } + if (unlikely(val->uni.f64 >= HUGE_VAL || val->uni.f64 <= -HUGE_VAL)) { + return_inf(); + } + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_REAL; + *end = cur; + return true; + +#undef return_err +#undef return_0 +#undef return_i64 +#undef return_f64 +#undef return_f64_bin +#undef return_inf +#undef return_raw +} + +#endif /* FP_READER */ + + + +/*============================================================================== + * MARK: - String Reader (Private) + *============================================================================*/ + +/** Read unicode escape sequence. */ +static_inline bool read_uni_esc(u8 **src_ptr, u8 **dst_ptr, + const char **msg, yyjson_read_flag flg, + bool *unierr) { +#define return_err(_end, _msg) *msg = _msg; *src_ptr = _end; return false + + u8 *src = *src_ptr; + u8 *dst = *dst_ptr; + u16 hi, lo; + u32 uni; + + src += 2; /* skip `\u` */ + if (unlikely(!hex_load_4(src, &hi))) { + if (has_rflag(flg, YYJSON_READ_REPLACE_INVALID_UNICODE, 1)) { + usize cnt = 0, i; + u8 ch; + while (cnt < 4 && char_is_hex(src[cnt])) cnt++; + ch = src[cnt]; + dst[0] = '\\'; + dst[1] = 'u'; + for (i = 0; i < cnt; i++) dst[2 + i] = src[i]; + dst += 2 + cnt; + src += cnt; + if (ch && ch != '"' && ch != '\'') src++; + *src_ptr = src; + *dst_ptr = dst; + if (unierr) *unierr = true; + return true; + } + return_err(src - 2, "invalid escaped sequence in string"); + } + src += 4; /* skip hex */ + if (likely((hi & 0xF800) != 0xD800)) { + /* a BMP character */ + if (hi >= 0x800) { + *dst++ = (u8)(0xE0 | (hi >> 12)); + *dst++ = (u8)(0x80 | ((hi >> 6) & 0x3F)); + *dst++ = (u8)(0x80 | (hi & 0x3F)); + } else if (hi >= 0x80) { + *dst++ = (u8)(0xC0 | (hi >> 6)); + *dst++ = (u8)(0x80 | (hi & 0x3F)); + } else { + *dst++ = (u8)hi; + } + } else if ((hi & 0xFC00) == 0xD800) { + /* a non-BMP character, represented as a surrogate pair */ + if (unlikely(!byte_match_2(src, "\\u"))) { + if (has_rflag(flg, YYJSON_READ_REPLACE_INVALID_UNICODE, 1)) { + *dst++ = 0xEF; *dst++ = 0xBF; *dst++ = 0xBD; + *src_ptr = src; + *dst_ptr = dst; + if (unierr) *unierr = true; + return true; + } + if (has_allow(INVALID_SURROGATE)) { + if (hi >= 0x800) { + *dst++ = (u8)(0xE0 | (hi >> 12)); + *dst++ = (u8)(0x80 | ((hi >> 6) & 0x3F)); + *dst++ = (u8)(0x80 | (hi & 0x3F)); + } else if (hi >= 0x80) { + *dst++ = (u8)(0xC0 | (hi >> 6)); + *dst++ = (u8)(0x80 | (hi & 0x3F)); + } else { + *dst++ = (u8)hi; + } + *src_ptr = src; + *dst_ptr = dst; + if (unierr) *unierr = true; + return true; + } + return_err(src - 6, "no low surrogate in string"); + } + if (unlikely(!hex_load_4(src + 2, &lo))) { + if (has_rflag(flg, YYJSON_READ_REPLACE_INVALID_UNICODE, 1)) { + usize cnt = 0; + src += 2; /* skip \u */ + while (cnt < 4 && char_is_hex(src[cnt])) cnt++; + src += cnt; + *dst++ = 0xEF; *dst++ = 0xBF; *dst++ = 0xBD; + *src_ptr = src; + *dst_ptr = dst; + if (unierr) *unierr = true; + return true; + } + if (has_allow(INVALID_SURROGATE)) { + if (hi >= 0x800) { + *dst++ = (u8)(0xE0 | (hi >> 12)); + *dst++ = (u8)(0x80 | ((hi >> 6) & 0x3F)); + *dst++ = (u8)(0x80 | (hi & 0x3F)); + } else if (hi >= 0x80) { + *dst++ = (u8)(0xC0 | (hi >> 6)); + *dst++ = (u8)(0x80 | (hi & 0x3F)); + } else { + *dst++ = (u8)hi; + } + *src_ptr = src; + *dst_ptr = dst; + if (unierr) *unierr = true; + return true; + } + return_err(src - 6, "invalid escape in string"); + } + if (unlikely((lo & 0xFC00) != 0xDC00)) { + if (has_rflag(flg, YYJSON_READ_REPLACE_INVALID_UNICODE, 1)) { + src += 6; + *dst++ = 0xEF; *dst++ = 0xBF; *dst++ = 0xBD; + *src_ptr = src; + *dst_ptr = dst; + if (unierr) *unierr = true; + return true; + } + if (has_allow(INVALID_SURROGATE)) { + if (hi >= 0x800) { + *dst++ = (u8)(0xE0 | (hi >> 12)); + *dst++ = (u8)(0x80 | ((hi >> 6) & 0x3F)); + *dst++ = (u8)(0x80 | (hi & 0x3F)); + } else if (hi >= 0x80) { + *dst++ = (u8)(0xC0 | (hi >> 6)); + *dst++ = (u8)(0x80 | (hi & 0x3F)); + } else { + *dst++ = (u8)hi; + } + *src_ptr = src; + *dst_ptr = dst; + if (unierr) *unierr = true; + return true; + } + return_err(src - 6, "invalid low surrogate in string"); + } + uni = ((((u32)hi - 0xD800) << 10) | + ((u32)lo - 0xDC00)) + 0x10000; + *dst++ = (u8)(0xF0 | (uni >> 18)); + *dst++ = (u8)(0x80 | ((uni >> 12) & 0x3F)); + *dst++ = (u8)(0x80 | ((uni >> 6) & 0x3F)); + *dst++ = (u8)(0x80 | (uni & 0x3F)); + src += 6; + } else { /* low surrogate without preceding high surrogate */ + if (has_rflag(flg, YYJSON_READ_REPLACE_INVALID_UNICODE, 1)) { + *dst++ = 0xEF; *dst++ = 0xBF; *dst++ = 0xBD; + *src_ptr = src; + *dst_ptr = dst; + if (unierr) *unierr = true; + return true; + } + if (!has_allow(INVALID_SURROGATE)) { + return_err(src - 6, "invalid low surrogate in string"); + } + if (hi >= 0x800) { + *dst++ = (u8)(0xE0 | (hi >> 12)); + *dst++ = (u8)(0x80 | ((hi >> 6) & 0x3F)); + *dst++ = (u8)(0x80 | (hi & 0x3F)); + } else if (hi >= 0x80) { + *dst++ = (u8)(0xC0 | (hi >> 6)); + *dst++ = (u8)(0x80 | (hi & 0x3F)); + } else { + *dst++ = (u8)hi; + } + if (unierr) *unierr = true; + } + *src_ptr = src; + *dst_ptr = dst; + return true; +#undef return_err +} + +/** + Read a JSON string. + @param quo The quote character (single quote or double quote). + @param ptr The head pointer of string before quote (inout). + @param eof JSON end position. + @param flg JSON read flag. + @param val The string value to be written. + @param msg The error message pointer. + @param con Continuation for incremental parsing. + @return Whether success. + */ +static_inline bool read_str_opt(u8 quo, u8 **ptr, u8 *eof, yyjson_read_flag flg, + yyjson_val *val, const char **msg, u8 *con[2]) { + /* + GCC may sometimes load variables into registers too early, causing + unnecessary instructions and performance degradation. This inline assembly + serves as a hint to GCC: 'This variable will be modified, so avoid loading + it too early.' Other compilers like MSVC, Clang, and ICC can generate the + expected instructions without needing this hint. + + Check out this example: https://godbolt.org/z/YG6a5W5Ec + */ +#define return_err(_end, _msg) do { \ + *msg = _msg; \ + *end = _end; \ + if (con) { con[0] = _end; con[1] = dst; } \ + return false; \ +} while (false) + + u8 *hdr = *ptr + 1; + u8 **end = ptr; + u8 *src = hdr, *dst = NULL, *pos; + u16 hi, lo; + u32 uni, tmp; + bool unierr = false; + + /* Resume incremental parsing. */ + if (con && unlikely(con[0])) { + src = con[0]; + dst = con[1]; + if (dst) goto copy_ascii; + } + +skip_ascii: + /* + Most strings have no escaped characters, so we can jump them quickly. + + We want to make loop unrolling, as shown in the following code. Some + compiler may not generate instructions as expected, so we rewrite it with + explicit goto statements. We hope the compiler can generate instructions + like this: https://godbolt.org/z/8vjsYq + + while (true) repeat16({ + if (likely((char_is_ascii_skip(*src)))) src++; + else break; + }) + */ + if (quo == '"') { +#define expr_jump(i) \ + if (likely(char_is_ascii_skip(src[i]))) {} \ + else goto skip_ascii_stop##i; + +#define expr_stop(i) \ + skip_ascii_stop##i: \ + src += i; \ + goto skip_ascii_end; + + repeat16_incr(expr_jump) + src += 16; + goto skip_ascii; + repeat16_incr(expr_stop) + +#undef expr_jump +#undef expr_stop + } else { +#define expr_jump(i) \ + if (likely(char_is_ascii_skip_sq(src[i]))) {} \ + else goto skip_ascii_stop_sq##i; + +#define expr_stop(i) \ + skip_ascii_stop_sq##i: \ + src += i; \ + goto skip_ascii_end; + + repeat16_incr(expr_jump) + src += 16; + goto skip_ascii; + repeat16_incr(expr_stop) + +#undef expr_jump +#undef expr_stop + } + +skip_ascii_end: + gcc_store_barrier(*src); + if (likely(*src == quo)) { + val->tag = ((u64)(src - hdr) << YYJSON_TAG_BIT) | YYJSON_TYPE_STR | + (unierr ? YYJSON_SUBTYPE_UNIERR : + (quo == '"' ? YYJSON_SUBTYPE_NOESC : 0)); + val->uni.str = (const char *)hdr; + *src = '\0'; + *end = src + 1; + if (con) con[0] = con[1] = NULL; + return true; + } + +skip_utf8: + if (*src & 0x80) { /* non-ASCII character */ + /* + Non-ASCII character appears here, which means that the text is likely + to be written in non-English or emoticons. According to some common + data set statistics, byte sequences of the same length may appear + consecutively. We process the byte sequences of the same length in each + loop, which is more friendly to branch prediction. + */ + pos = src; +#if YYJSON_DISABLE_UTF8_VALIDATION + while (true) repeat8({ + if (likely((*src & 0xF0) == 0xE0)) src += 3; + else break; + }) + if (*src < 0x80) goto skip_ascii; + while (true) repeat8({ + if (likely((*src & 0xE0) == 0xC0)) src += 2; + else break; + }) + while (true) repeat8({ + if (likely((*src & 0xF8) == 0xF0)) src += 4; + else break; + }) +#else + uni = byte_load_4(src); + while (is_utf8_seq3(uni)) { + src += 3; + uni = byte_load_4(src); + } + if (is_utf8_seq1(uni)) goto skip_ascii; + while (is_utf8_seq2(uni)) { + src += 2; + uni = byte_load_4(src); + } + while (is_utf8_seq4(uni)) { + src += 4; + uni = byte_load_4(src); + } +#endif + if (unlikely(pos == src)) { + if (!has_allow(INVALID_UNICODE) && + !has_rflag(flg, YYJSON_READ_REPLACE_INVALID_UNICODE, 1)) + return_err(src, "invalid UTF-8 encoding in string"); + dst = src; + *dst++ = *src++; + unierr = true; + goto copy_utf8; + } + goto skip_ascii; + } + + /* The escape character appears, we need to copy it. */ + dst = src; +copy_escape: + if (likely(*src == '\\')) { + switch (*++src) { + case '"': *dst++ = '"'; src++; break; + case '\\': *dst++ = '\\'; src++; break; + case '/': *dst++ = '/'; src++; break; + case 'b': *dst++ = '\b'; src++; break; + case 'f': *dst++ = '\f'; src++; break; + case 'n': *dst++ = '\n'; src++; break; + case 'r': *dst++ = '\r'; src++; break; + case 't': *dst++ = '\t'; src++; break; + case 'u': + src--; + if (!read_uni_esc(&src, &dst, msg, flg, &unierr)) return_err(src, *msg); + break; + default: { + if (has_allow(EXT_ESCAPE)) { + /* read extended escape (non-standard) */ + switch (*src) { + case '\'': *dst++ = '\''; src++; break; + case 'a': *dst++ = '\a'; src++; break; + case 'v': *dst++ = '\v'; src++; break; + case '?': *dst++ = '\?'; src++; break; + case 'e': *dst++ = 0x1B; src++; break; + case '0': + if (!char_is_digit(src[1])) { + *dst++ = '\0'; src++; break; + } + return_err(src - 1, "octal escape is not allowed"); + case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + return_err(src - 1, "invalid number escape"); + case 'x': { + u8 c; + if (hex_load_2(src + 1, &c)) { + src += 3; + if (c <= 0x7F) { /* 1-byte ASCII */ + *dst++ = c; + } else { /* 2-byte UTF-8 */ + *dst++ = (u8)(0xC0 | (c >> 6)); + *dst++ = (u8)(0x80 | (c & 0x3F)); + } + break; + } + return_err(src - 1, "invalid hex escape"); + } + case '\n': src++; break; + case '\r': src++; src += (*src == '\n'); break; + case 0xE2: /* Line terminator: U+2028, U+2029 */ + if ((src[1] == 0x80 && src[2] == 0xA8) || + (src[1] == 0x80 && src[2] == 0xA9)) { + src += 3; + } + break; + default: + break; /* skip */ + } + } else if (quo == '\'' && *src == '\'') { + *dst++ = '\''; src++; break; + } else { + return_err(src - 1, "invalid escaped sequence in string"); + } + } + } + } else if (likely(*src == quo)) { + val->tag = ((u64)(dst - hdr) << YYJSON_TAG_BIT) | YYJSON_TYPE_STR | + (unierr ? YYJSON_SUBTYPE_UNIERR : 0); + val->uni.str = (const char *)hdr; + *dst = '\0'; + *end = src + 1; + if (con) con[0] = con[1] = NULL; + return true; + } else { + if (!has_allow(INVALID_UNICODE) && + !has_rflag(flg, YYJSON_READ_REPLACE_INVALID_UNICODE, 1)) { + return_err(src, "unexpected control character in string"); + } + if (src >= eof) return_err(src, "unclosed string"); + *dst++ = *src++; + unierr = true; + } + +copy_ascii: + /* + Copy continuous ASCII, loop unrolling, same as the following code: + + while (true) repeat16({ + if (char_is_ascii_skip(*src)) *dst++ = *src++; + else break; + }) + */ + if (quo == '"') { +#define expr_jump(i) \ + if (likely((char_is_ascii_skip(src[i])))) {} \ + else { gcc_store_barrier(src[i]); goto copy_ascii_stop_##i; } + repeat16_incr(expr_jump) +#undef expr_jump + } else { +#define expr_jump(i) \ + if (likely((char_is_ascii_skip_sq(src[i])))) {} \ + else { gcc_store_barrier(src[i]); goto copy_ascii_stop_##i; } + repeat16_incr(expr_jump) +#undef expr_jump + } + + byte_move_16(dst, src); + dst += 16; src += 16; + goto copy_ascii; + + /* + The memory is copied forward since `dst < src`. + So it's safe to move one extra byte to reduce instruction count. + */ +#define expr_jump(i) \ + copy_ascii_stop_##i: \ + byte_move_forward(dst, src, i); \ + dst += i; src += i; \ + goto copy_utf8; + repeat16_incr(expr_jump) +#undef expr_jump + +copy_utf8: + if (*src & 0x80) { /* non-ASCII character */ + pos = src; + uni = byte_load_4(src); +#if YYJSON_DISABLE_UTF8_VALIDATION + while (true) repeat4({ + if ((uni & utf8_seq(b3_mask)) == utf8_seq(b3_patt)) { + byte_copy_4(dst, &uni); + dst += 3; src += 3; + uni = byte_load_4(src); + } else break; + }) + if ((uni & utf8_seq(b1_mask)) == utf8_seq(b1_patt)) goto copy_ascii; + while (true) repeat4({ + if ((uni & utf8_seq(b2_mask)) == utf8_seq(b2_patt)) { + byte_copy_2(dst, &uni); + dst += 2; src += 2; + uni = byte_load_4(src); + } else break; + }) + while (true) repeat4({ + if ((uni & utf8_seq(b4_mask)) == utf8_seq(b4_patt)) { + byte_copy_4(dst, &uni); + dst += 4; src += 4; + uni = byte_load_4(src); + } else break; + }) +#else + while (is_utf8_seq3(uni)) { + byte_copy_4(dst, &uni); + dst += 3; src += 3; + uni = byte_load_4(src); + } + if (is_utf8_seq1(uni)) goto copy_ascii; + while (is_utf8_seq2(uni)) { + byte_copy_2(dst, &uni); + dst += 2; src += 2; + uni = byte_load_4(src); + } + while (is_utf8_seq4(uni)) { + byte_copy_4(dst, &uni); + dst += 4; src += 4; + uni = byte_load_4(src); + } +#endif + if (unlikely(pos == src)) { + if (!has_allow(INVALID_UNICODE) && + !has_rflag(flg, YYJSON_READ_REPLACE_INVALID_UNICODE, 1)) + return_err(src, MSG_ERR_UTF8); + *dst++ = *src++; + unierr = true; + goto copy_utf8; + } + goto copy_ascii; + } + goto copy_escape; + +#undef return_err +} + +static_inline bool read_str(u8 **ptr, u8 *eof, yyjson_read_flag flg, + yyjson_val *val, const char **msg) { + return read_str_opt('\"', ptr, eof, flg, val, msg, NULL); +} + +static_inline bool read_str_con(u8 **ptr, u8 *eof, yyjson_read_flag flg, + yyjson_val *val, const char **msg, u8 **con) { + return read_str_opt('\"', ptr, eof, flg, val, msg, con); +} + +static_noinline bool read_str_sq(u8 **ptr, u8 *eof, yyjson_read_flag flg, + yyjson_val *val, const char **msg) { + return read_str_opt('\'', ptr, eof, flg, val, msg, NULL); +} + +/** Read unquoted key (identifier name). */ +static_noinline bool read_str_id(u8 **ptr, u8 *eof, yyjson_read_flag flg, + u8 **pre, yyjson_val *val, const char **msg) { +#define return_err(_end, _msg) do { \ + *msg = _msg; \ + *end = _end; \ + return false; \ +} while (false) + +#define return_suc(_str_end, _cur_end) do { \ + val->tag = ((u64)(_str_end - hdr) << YYJSON_TAG_BIT) | \ + (u64)(YYJSON_TYPE_STR | (unierr ? YYJSON_SUBTYPE_UNIERR : 0)); \ + val->uni.str = (const char *)hdr; \ + *pre = _str_end; *end = _cur_end; \ + return true; \ +} while (false) + + u8 *hdr = *ptr; + u8 **end = ptr; + u8 *src = hdr, *dst = NULL; + u16 hi, lo; + u32 uni, tmp; + bool unierr = false; + + /* add null-terminator for previous raw string */ + **pre = '\0'; + +skip_ascii: +#define expr_jump(i) \ + if (likely(char_is_id_ascii(src[i]))) {} \ + else goto skip_ascii_stop##i; + +#define expr_stop(i) \ + skip_ascii_stop##i: \ + src += i; \ + goto skip_ascii_end; + + repeat16_incr(expr_jump) + src += 16; + goto skip_ascii; + repeat16_incr(expr_stop) + +#undef expr_jump +#undef expr_stop + +skip_ascii_end: + gcc_store_barrier(*src); + if (likely(!char_is_id_next(*src))) { + return_suc(src, src); + } + +skip_utf8: + while (*src >= 0x80) { + if (has_allow(EXT_WHITESPACE)) { + if (char_is_space_ext(*src) && ext_space_len(src)) { + return_suc(src, src); + } + } + uni = byte_load_4(src); + if (is_utf8_seq2(uni)) { + src += 2; + } else if (is_utf8_seq3(uni)) { + src += 3; + } else if (is_utf8_seq4(uni)) { + src += 4; + } else { +#if !YYJSON_DISABLE_UTF8_VALIDATION + if (!has_allow(INVALID_UNICODE) && + !has_rflag(flg, YYJSON_READ_REPLACE_INVALID_UNICODE, 1)) + return_err(src, MSG_ERR_UTF8); +#endif + dst = src; + *dst++ = *src++; + unierr = true; + goto copy_utf8; + } + } + if (char_is_id_ascii(*src)) goto skip_ascii; + + /* The escape character appears, we need to copy it. */ + dst = src; +copy_escape: + if (byte_match_2(src, "\\u")) { + if (!read_uni_esc(&src, &dst, msg, flg, &unierr)) return_err(src, *msg); + } else { + if (!char_is_id_next(*src)) return_suc(dst, src); + return_err(src, "unexpected character in key"); + } + +copy_ascii: + /* + Copy continuous ASCII, loop unrolling, same as the following code: + + while (true) repeat16({ + if (char_is_ascii_skip(*src)) *dst++ = *src++; + else break; + }) + */ +#define expr_jump(i) \ + if (likely((char_is_id_ascii(src[i])))) {} \ + else { gcc_store_barrier(src[i]); goto copy_ascii_stop_##i; } + repeat16_incr(expr_jump) +#undef expr_jump + + byte_move_16(dst, src); + dst += 16; src += 16; + goto copy_ascii; + +#define expr_jump(i) \ + copy_ascii_stop_##i: \ + byte_move_forward(dst, src, i); \ + dst += i; src += i; \ + goto copy_utf8; + repeat16_incr(expr_jump) +#undef expr_jump + +copy_utf8: + while (*src >= 0x80) { /* non-ASCII character */ + if (has_allow(EXT_WHITESPACE)) { + if (char_is_space_ext(*src) && ext_space_len(src)) { + return_suc(dst, src); + } + } + uni = byte_load_4(src); + if (is_utf8_seq2(uni)) { + byte_copy_2(dst, &uni); + dst += 2; src += 2; + } else if (is_utf8_seq3(uni)) { + byte_copy_4(dst, &uni); + dst += 3; src += 3; + } else if (is_utf8_seq4(uni)) { + byte_copy_4(dst, &uni); + dst += 4; src += 4; + } else { +#if !YYJSON_DISABLE_UTF8_VALIDATION + if (!has_allow(INVALID_UNICODE) && + !has_rflag(flg, YYJSON_READ_REPLACE_INVALID_UNICODE, 1)) + return_err(src, MSG_ERR_UTF8); +#endif + *dst++ = *src++; + unierr = true; + } + } + if (char_is_id_ascii(*src)) goto copy_ascii; + goto copy_escape; + +#undef return_err +#undef return_suc +} + + + +/*============================================================================== + * MARK: - JSON Reader Implementation (Private) + * + * We use goto statements to build the finite state machine (FSM). + * The FSM's state was held by program counter (PC) and the 'goto' make the + * state transitions. + *============================================================================*/ + +/** Read single value JSON document. */ +static_noinline yyjson_doc *read_root_single(u8 *hdr, u8 *cur, u8 *eof, + yyjson_alc alc, + yyjson_read_flag flg, + yyjson_read_err *err) { +#define return_err(_pos, _code, _msg) do { \ + if (is_truncated_end(hdr, _pos, eof, YYJSON_READ_ERROR_##_code, flg)) { \ + err->pos = (usize)(eof - hdr); \ + err->code = YYJSON_READ_ERROR_UNEXPECTED_END; \ + err->msg = MSG_NOT_END; \ + } else { \ + err->pos = (usize)(_pos - hdr); \ + err->code = YYJSON_READ_ERROR_##_code; \ + err->msg = _msg; \ + } \ + if (val_hdr) alc.free(alc.ctx, val_hdr); \ + return NULL; \ +} while (false) + + usize hdr_len; /* value count used by doc */ + usize alc_num; /* value count capacity */ + yyjson_val *val_hdr; /* the head of allocated values */ + yyjson_val *val; /* current value */ + yyjson_doc *doc; /* the JSON document, equals to val_hdr */ + const char *msg; /* error message */ + + u8 raw_end[1]; /* raw end for null-terminator */ + u8 *raw_ptr = raw_end; + u8 **pre = &raw_ptr; /* previous raw end pointer */ + + hdr_len = sizeof(yyjson_doc) / sizeof(yyjson_val); + hdr_len += (sizeof(yyjson_doc) % sizeof(yyjson_val)) > 0; + alc_num = hdr_len + 1; /* single value */ + + val_hdr = (yyjson_val *)alc.malloc(alc.ctx, alc_num * sizeof(yyjson_val)); + if (unlikely(!val_hdr)) goto fail_alloc; + val = val_hdr + hdr_len; + + if (char_is_num(*cur)) { + if (likely(read_num(&cur, pre, flg, val, &msg))) goto doc_end; + goto fail_number; + } + if (*cur == '"') { + if (likely(read_str(&cur, eof, flg, val, &msg))) goto doc_end; + goto fail_string; + } + if (*cur == 't') { + if (likely(read_true(&cur, val))) goto doc_end; + goto fail_literal_true; + } + if (*cur == 'f') { + if (likely(read_false(&cur, val))) goto doc_end; + goto fail_literal_false; + } + if (*cur == 'n') { + if (likely(read_null(&cur, val))) goto doc_end; + if (has_allow(INF_AND_NAN)) { + if (read_nan(&cur, pre, flg, val)) goto doc_end; + } + goto fail_literal_null; + } + if (has_allow(INF_AND_NAN)) { + if (read_inf_or_nan(&cur, pre, flg, val)) goto doc_end; + } + if (has_allow(SINGLE_QUOTED_STR) && *cur == '\'') { + if (likely(read_str_sq(&cur, eof, flg, val, &msg))) goto doc_end; + goto fail_string; + } + goto fail_character; + +doc_end: + /* check invalid contents after json document */ + if (unlikely(cur < eof) && !has_flg(STOP_WHEN_DONE)) { + while (char_is_space(*cur)) cur++; + if (has_allow(TRIVIA) && char_is_trivia(*cur)) { + if (!skip_trivia(&cur, eof, flg) && cur == eof) { + goto fail_comment; + } + } + if (unlikely(cur < eof)) goto fail_garbage; + } + + **pre = '\0'; + doc = (yyjson_doc *)val_hdr; + doc->root = val_hdr + hdr_len; + doc->alc = alc; + doc->dat_read = (usize)(cur - hdr); + doc->val_read = 1; + doc->str_pool = has_flg(INSITU) ? NULL : (char *)hdr; + return doc; + +fail_string: return_err(cur, INVALID_STRING, msg); +fail_number: return_err(cur, INVALID_NUMBER, msg); +fail_alloc: return_err(cur, MEMORY_ALLOCATION, MSG_MALLOC); +fail_literal_true: return_err(cur, LITERAL, MSG_CHAR_T); +fail_literal_false: return_err(cur, LITERAL, MSG_CHAR_F); +fail_literal_null: return_err(cur, LITERAL, MSG_CHAR_N); +fail_character: return_err(cur, UNEXPECTED_CHARACTER, MSG_CHAR); +fail_comment: return_err(cur, INVALID_COMMENT, MSG_COMMENT); +fail_garbage: return_err(cur, UNEXPECTED_CONTENT, MSG_GARBAGE); + +#undef return_err +} + +/** Read JSON document (accept all style, but optimized for minify). */ +static_inline yyjson_doc *read_root_minify(u8 *hdr, u8 *cur, u8 *eof, + yyjson_alc alc, + yyjson_read_flag flg, + yyjson_read_err *err) { +#define return_err(_pos, _code, _msg) do { \ + if (is_truncated_end(hdr, _pos, eof, YYJSON_READ_ERROR_##_code, flg)) { \ + err->pos = (usize)(eof - hdr); \ + err->code = YYJSON_READ_ERROR_UNEXPECTED_END; \ + err->msg = MSG_NOT_END; \ + } else { \ + err->pos = (usize)(_pos - hdr); \ + err->code = YYJSON_READ_ERROR_##_code; \ + err->msg = _msg; \ + } \ + if (val_hdr) alc.free(alc.ctx, val_hdr); \ + return NULL; \ +} while (false) + +#define val_incr() do { \ + val++; \ + if (unlikely(val >= val_end)) { \ + usize alc_old = alc_len; \ + usize val_ofs = (usize)(val - val_hdr); \ + usize ctn_ofs = (usize)(ctn - val_hdr); \ + alc_len += alc_len / 2; \ + if ((sizeof(usize) < 8) && (alc_len >= alc_max)) goto fail_alloc; \ + val_tmp = (yyjson_val *)alc.realloc(alc.ctx, (void *)val_hdr, \ + alc_old * sizeof(yyjson_val), \ + alc_len * sizeof(yyjson_val)); \ + if ((!val_tmp)) goto fail_alloc; \ + val = val_tmp + val_ofs; \ + ctn = val_tmp + ctn_ofs; \ + val_hdr = val_tmp; \ + val_end = val_tmp + (alc_len - 2); \ + } \ +} while (false) + + usize dat_len; /* data length in bytes, hint for allocator */ + usize hdr_len; /* value count used by yyjson_doc */ + usize alc_len; /* value count allocated */ + usize alc_max; /* maximum value count for allocator */ + usize ctn_len; /* the number of elements in current container */ + yyjson_val *val_hdr; /* the head of allocated values */ + yyjson_val *val_end; /* the end of allocated values */ + yyjson_val *val_tmp; /* temporary pointer for realloc */ + yyjson_val *val; /* current JSON value */ + yyjson_val *ctn; /* current container */ + yyjson_val *ctn_parent; /* parent of current container */ + yyjson_doc *doc; /* the JSON document, equals to val_hdr */ + const char *msg; /* error message */ + + u8 raw_end[1]; /* raw end for null-terminator */ + u8 *raw_ptr = raw_end; + u8 **pre = &raw_ptr; /* previous raw end pointer */ + + dat_len = has_flg(STOP_WHEN_DONE) ? 256 : (usize)(eof - cur); + hdr_len = sizeof(yyjson_doc) / sizeof(yyjson_val); + hdr_len += (sizeof(yyjson_doc) % sizeof(yyjson_val)) > 0; + alc_max = USIZE_MAX / sizeof(yyjson_val); + alc_len = hdr_len + (dat_len / YYJSON_READER_ESTIMATED_MINIFY_RATIO) + 4; + alc_len = yyjson_min(alc_len, alc_max); + + val_hdr = (yyjson_val *)alc.malloc(alc.ctx, alc_len * sizeof(yyjson_val)); + if (unlikely(!val_hdr)) goto fail_alloc; + val_end = val_hdr + (alc_len - 2); /* padding for key-value pair reading */ + val = val_hdr + hdr_len; + ctn = val; + ctn_len = 0; + + if (*cur++ == '{') { + ctn->tag = YYJSON_TYPE_OBJ; + ctn->uni.ofs = 0; + goto obj_key_begin; + } else { + ctn->tag = YYJSON_TYPE_ARR; + ctn->uni.ofs = 0; + goto arr_val_begin; + } + +arr_begin: + /* save current container */ + ctn->tag = (((u64)ctn_len + 1) << YYJSON_TAG_BIT) | + (ctn->tag & YYJSON_TAG_MASK); + + /* create a new array value, save parent container offset */ + val_incr(); + val->tag = YYJSON_TYPE_ARR; + val->uni.ofs = (usize)((u8 *)val - (u8 *)ctn); + + /* push the new array value as current container */ + ctn = val; + ctn_len = 0; + +arr_val_begin: + if (*cur == '{') { + cur++; + goto obj_begin; + } + if (*cur == '[') { + cur++; + goto arr_begin; + } + if (char_is_num(*cur)) { + val_incr(); + ctn_len++; + if (likely(read_num(&cur, pre, flg, val, &msg))) goto arr_val_end; + goto fail_number; + } + if (*cur == '"') { + val_incr(); + ctn_len++; + if (likely(read_str(&cur, eof, flg, val, &msg))) goto arr_val_end; + goto fail_string; + } + if (*cur == 't') { + val_incr(); + ctn_len++; + if (likely(read_true(&cur, val))) goto arr_val_end; + goto fail_literal_true; + } + if (*cur == 'f') { + val_incr(); + ctn_len++; + if (likely(read_false(&cur, val))) goto arr_val_end; + goto fail_literal_false; + } + if (*cur == 'n') { + val_incr(); + ctn_len++; + if (likely(read_null(&cur, val))) goto arr_val_end; + if (has_allow(INF_AND_NAN)) { + if (read_nan(&cur, pre, flg, val)) goto arr_val_end; + } + goto fail_literal_null; + } + if (*cur == ']') { + cur++; + if (likely(ctn_len == 0)) goto arr_end; + if (has_allow(TRAILING_COMMAS)) goto arr_end; + while (*cur != ',') cur--; + goto fail_trailing_comma; + } + if (char_is_space(*cur)) { + while (char_is_space(*++cur)); + goto arr_val_begin; + } + if (has_allow(INF_AND_NAN) && + (*cur == 'i' || *cur == 'I' || *cur == 'N')) { + val_incr(); + ctn_len++; + if (read_inf_or_nan(&cur, pre, flg, val)) goto arr_val_end; + goto fail_character_val; + } + if (has_allow(SINGLE_QUOTED_STR) && *cur == '\'') { + val_incr(); + ctn_len++; + if (likely(read_str_sq(&cur, eof, flg, val, &msg))) goto arr_val_end; + goto fail_string; + } + if (has_allow(TRIVIA) && char_is_trivia(*cur)) { + if (skip_trivia(&cur, eof, flg)) goto arr_val_begin; + if (cur == eof) goto fail_comment; + } + goto fail_character_val; + +arr_val_end: + if (*cur == ',') { + cur++; + goto arr_val_begin; + } + if (*cur == ']') { + cur++; + goto arr_end; + } + if (char_is_space(*cur)) { + while (char_is_space(*++cur)); + goto arr_val_end; + } + if (has_allow(TRIVIA) && char_is_trivia(*cur)) { + if (skip_trivia(&cur, eof, flg)) goto arr_val_end; + if (cur == eof) goto fail_comment; + } + goto fail_character_arr_end; + +arr_end: + /* get parent container */ + ctn_parent = (yyjson_val *)(void *)((u8 *)ctn - ctn->uni.ofs); + + /* save the next sibling value offset */ + ctn->uni.ofs = (usize)((u8 *)val - (u8 *)ctn) + sizeof(yyjson_val); + ctn->tag = ((ctn_len) << YYJSON_TAG_BIT) | YYJSON_TYPE_ARR; + if (unlikely(ctn == ctn_parent)) goto doc_end; + + /* pop parent as current container */ + ctn = ctn_parent; + ctn_len = (usize)(ctn->tag >> YYJSON_TAG_BIT); + if ((ctn->tag & YYJSON_TYPE_MASK) == YYJSON_TYPE_OBJ) { + goto obj_val_end; + } else { + goto arr_val_end; + } + +obj_begin: + /* push container */ + ctn->tag = (((u64)ctn_len + 1) << YYJSON_TAG_BIT) | + (ctn->tag & YYJSON_TAG_MASK); + val_incr(); + val->tag = YYJSON_TYPE_OBJ; + /* offset to the parent */ + val->uni.ofs = (usize)((u8 *)val - (u8 *)ctn); + ctn = val; + ctn_len = 0; + +obj_key_begin: + if (likely(*cur == '"')) { + val_incr(); + ctn_len++; + if (likely(read_str(&cur, eof, flg, val, &msg))) goto obj_key_end; + goto fail_string; + } + if (likely(*cur == '}')) { + cur++; + if (likely(ctn_len == 0)) goto obj_end; + if (has_allow(TRAILING_COMMAS)) goto obj_end; + while (*cur != ',') cur--; + goto fail_trailing_comma; + } + if (char_is_space(*cur)) { + while (char_is_space(*++cur)); + goto obj_key_begin; + } + if (has_allow(SINGLE_QUOTED_STR) && *cur == '\'') { + val_incr(); + ctn_len++; + if (likely(read_str_sq(&cur, eof, flg, val, &msg))) goto obj_key_end; + goto fail_string; + } + if (has_allow(UNQUOTED_KEY) && char_is_id_start(*cur)) { + val_incr(); + ctn_len++; + if (read_str_id(&cur, eof, flg, pre, val, &msg)) goto obj_key_end; + goto fail_string; + } + if (has_allow(TRIVIA) && char_is_trivia(*cur)) { + if (skip_trivia(&cur, eof, flg)) goto obj_key_begin; + if (cur == eof) goto fail_comment; + } + goto fail_character_obj_key; + +obj_key_end: + if (*cur == ':') { + cur++; + goto obj_val_begin; + } + if (char_is_space(*cur)) { + while (char_is_space(*++cur)); + goto obj_key_end; + } + if (has_allow(TRIVIA) && char_is_trivia(*cur)) { + if (skip_trivia(&cur, eof, flg)) goto obj_key_end; + if (cur == eof) goto fail_comment; + } + goto fail_character_obj_sep; + +obj_val_begin: + if (*cur == '"') { + val++; + ctn_len++; + if (likely(read_str(&cur, eof, flg, val, &msg))) goto obj_val_end; + goto fail_string; + } + if (char_is_num(*cur)) { + val++; + ctn_len++; + if (likely(read_num(&cur, pre, flg, val, &msg))) goto obj_val_end; + goto fail_number; + } + if (*cur == '{') { + cur++; + goto obj_begin; + } + if (*cur == '[') { + cur++; + goto arr_begin; + } + if (*cur == 't') { + val++; + ctn_len++; + if (likely(read_true(&cur, val))) goto obj_val_end; + goto fail_literal_true; + } + if (*cur == 'f') { + val++; + ctn_len++; + if (likely(read_false(&cur, val))) goto obj_val_end; + goto fail_literal_false; + } + if (*cur == 'n') { + val++; + ctn_len++; + if (likely(read_null(&cur, val))) goto obj_val_end; + if (has_allow(INF_AND_NAN)) { + if (read_nan(&cur, pre, flg, val)) goto obj_val_end; + } + goto fail_literal_null; + } + if (char_is_space(*cur)) { + while (char_is_space(*++cur)); + goto obj_val_begin; + } + if (has_allow(INF_AND_NAN) && + (*cur == 'i' || *cur == 'I' || *cur == 'N')) { + val++; + ctn_len++; + if (read_inf_or_nan(&cur, pre, flg, val)) goto obj_val_end; + goto fail_character_val; + } + if (has_allow(SINGLE_QUOTED_STR) && *cur == '\'') { + val++; + ctn_len++; + if (likely(read_str_sq(&cur, eof, flg, val, &msg))) goto obj_val_end; + goto fail_string; + } + if (has_allow(TRIVIA) && char_is_trivia(*cur)) { + if (skip_trivia(&cur, eof, flg)) goto obj_val_begin; + if (cur == eof) goto fail_comment; + } + goto fail_character_val; + +obj_val_end: + if (likely(*cur == ',')) { + cur++; + goto obj_key_begin; + } + if (likely(*cur == '}')) { + cur++; + goto obj_end; + } + if (char_is_space(*cur)) { + while (char_is_space(*++cur)); + goto obj_val_end; + } + if (has_allow(TRIVIA) && char_is_trivia(*cur)) { + if (skip_trivia(&cur, eof, flg)) goto obj_val_end; + if (cur == eof) goto fail_comment; + } + goto fail_character_obj_end; + +obj_end: + /* pop container */ + ctn_parent = (yyjson_val *)(void *)((u8 *)ctn - ctn->uni.ofs); + /* point to the next value */ + ctn->uni.ofs = (usize)((u8 *)val - (u8 *)ctn) + sizeof(yyjson_val); + ctn->tag = (ctn_len << (YYJSON_TAG_BIT - 1)) | YYJSON_TYPE_OBJ; + if (unlikely(ctn == ctn_parent)) goto doc_end; + ctn = ctn_parent; + ctn_len = (usize)(ctn->tag >> YYJSON_TAG_BIT); + if ((ctn->tag & YYJSON_TYPE_MASK) == YYJSON_TYPE_OBJ) { + goto obj_val_end; + } else { + goto arr_val_end; + } + +doc_end: + /* check invalid contents after json document */ + if (unlikely(cur < eof) && !has_flg(STOP_WHEN_DONE)) { + while (char_is_space(*cur)) cur++; + if (has_allow(TRIVIA) && char_is_trivia(*cur)) { + if (!skip_trivia(&cur, eof, flg) && cur == eof) { + goto fail_comment; + } + } + if (unlikely(cur < eof)) goto fail_garbage; + } + + **pre = '\0'; + doc = (yyjson_doc *)val_hdr; + doc->root = val_hdr + hdr_len; + doc->alc = alc; + doc->dat_read = (usize)(cur - hdr); + doc->val_read = (usize)((val - doc->root) + 1); + doc->str_pool = has_flg(INSITU) ? NULL : (char *)hdr; + return doc; + +fail_string: return_err(cur, INVALID_STRING, msg); +fail_number: return_err(cur, INVALID_NUMBER, msg); +fail_alloc: return_err(cur, MEMORY_ALLOCATION, MSG_MALLOC); +fail_trailing_comma: return_err(cur, JSON_STRUCTURE, MSG_COMMA); +fail_literal_true: return_err(cur, LITERAL, MSG_CHAR_T); +fail_literal_false: return_err(cur, LITERAL, MSG_CHAR_F); +fail_literal_null: return_err(cur, LITERAL, MSG_CHAR_N); +fail_character_val: return_err(cur, UNEXPECTED_CHARACTER, MSG_CHAR); +fail_character_arr_end: return_err(cur, UNEXPECTED_CHARACTER, MSG_ARR_END); +fail_character_obj_key: return_err(cur, UNEXPECTED_CHARACTER, MSG_OBJ_KEY); +fail_character_obj_sep: return_err(cur, UNEXPECTED_CHARACTER, MSG_OBJ_SEP); +fail_character_obj_end: return_err(cur, UNEXPECTED_CHARACTER, MSG_OBJ_END); +fail_comment: return_err(cur, INVALID_COMMENT, MSG_COMMENT); +fail_garbage: return_err(cur, UNEXPECTED_CONTENT, MSG_GARBAGE); + +#undef val_incr +#undef return_err +} + +/** Read JSON document (accept all style, but optimized for pretty). */ +static_inline yyjson_doc *read_root_pretty(u8 *hdr, u8 *cur, u8 *eof, + yyjson_alc alc, + yyjson_read_flag flg, + yyjson_read_err *err) { +#define return_err(_pos, _code, _msg) do { \ + if (is_truncated_end(hdr, _pos, eof, YYJSON_READ_ERROR_##_code, flg)) { \ + err->pos = (usize)(eof - hdr); \ + err->code = YYJSON_READ_ERROR_UNEXPECTED_END; \ + err->msg = MSG_NOT_END; \ + } else { \ + err->pos = (usize)(_pos - hdr); \ + err->code = YYJSON_READ_ERROR_##_code; \ + err->msg = _msg; \ + } \ + if (val_hdr) alc.free(alc.ctx, val_hdr); \ + return NULL; \ +} while (false) + +#define val_incr() do { \ + val++; \ + if (unlikely(val >= val_end)) { \ + usize alc_old = alc_len; \ + usize val_ofs = (usize)(val - val_hdr); \ + usize ctn_ofs = (usize)(ctn - val_hdr); \ + alc_len += alc_len / 2; \ + if ((sizeof(usize) < 8) && (alc_len >= alc_max)) goto fail_alloc; \ + val_tmp = (yyjson_val *)alc.realloc(alc.ctx, (void *)val_hdr, \ + alc_old * sizeof(yyjson_val), \ + alc_len * sizeof(yyjson_val)); \ + if ((!val_tmp)) goto fail_alloc; \ + val = val_tmp + val_ofs; \ + ctn = val_tmp + ctn_ofs; \ + val_hdr = val_tmp; \ + val_end = val_tmp + (alc_len - 2); \ + } \ +} while (false) + + usize dat_len; /* data length in bytes, hint for allocator */ + usize hdr_len; /* value count used by yyjson_doc */ + usize alc_len; /* value count allocated */ + usize alc_max; /* maximum value count for allocator */ + usize ctn_len; /* the number of elements in current container */ + yyjson_val *val_hdr; /* the head of allocated values */ + yyjson_val *val_end; /* the end of allocated values */ + yyjson_val *val_tmp; /* temporary pointer for realloc */ + yyjson_val *val; /* current JSON value */ + yyjson_val *ctn; /* current container */ + yyjson_val *ctn_parent; /* parent of current container */ + yyjson_doc *doc; /* the JSON document, equals to val_hdr */ + const char *msg; /* error message */ + + u8 raw_end[1]; /* raw end for null-terminator */ + u8 *raw_ptr = raw_end; + u8 **pre = &raw_ptr; /* previous raw end pointer */ + + dat_len = has_flg(STOP_WHEN_DONE) ? 256 : (usize)(eof - cur); + hdr_len = sizeof(yyjson_doc) / sizeof(yyjson_val); + hdr_len += (sizeof(yyjson_doc) % sizeof(yyjson_val)) > 0; + alc_max = USIZE_MAX / sizeof(yyjson_val); + alc_len = hdr_len + (dat_len / YYJSON_READER_ESTIMATED_PRETTY_RATIO) + 4; + alc_len = yyjson_min(alc_len, alc_max); + + val_hdr = (yyjson_val *)alc.malloc(alc.ctx, alc_len * sizeof(yyjson_val)); + if (unlikely(!val_hdr)) goto fail_alloc; + val_end = val_hdr + (alc_len - 2); /* padding for key-value pair reading */ + val = val_hdr + hdr_len; + ctn = val; + ctn_len = 0; + + if (*cur++ == '{') { + ctn->tag = YYJSON_TYPE_OBJ; + ctn->uni.ofs = 0; + if (*cur == '\n') cur++; + goto obj_key_begin; + } else { + ctn->tag = YYJSON_TYPE_ARR; + ctn->uni.ofs = 0; + if (*cur == '\n') cur++; + goto arr_val_begin; + } + +arr_begin: + /* save current container */ + ctn->tag = (((u64)ctn_len + 1) << YYJSON_TAG_BIT) | + (ctn->tag & YYJSON_TAG_MASK); + + /* create a new array value, save parent container offset */ + val_incr(); + val->tag = YYJSON_TYPE_ARR; + val->uni.ofs = (usize)((u8 *)val - (u8 *)ctn); + + /* push the new array value as current container */ + ctn = val; + ctn_len = 0; + if (*cur == '\n') cur++; + +arr_val_begin: +#if YYJSON_IS_REAL_GCC + while (true) repeat16({ + if (byte_match_2(cur, " ")) cur += 2; + else break; + }) +#else + while (true) repeat16({ + if (likely(byte_match_2(cur, " "))) cur += 2; + else break; + }) +#endif + + if (*cur == '{') { + cur++; + goto obj_begin; + } + if (*cur == '[') { + cur++; + goto arr_begin; + } + if (char_is_num(*cur)) { + val_incr(); + ctn_len++; + if (likely(read_num(&cur, pre, flg, val, &msg))) goto arr_val_end; + goto fail_number; + } + if (*cur == '"') { + val_incr(); + ctn_len++; + if (likely(read_str(&cur, eof, flg, val, &msg))) goto arr_val_end; + goto fail_string; + } + if (*cur == 't') { + val_incr(); + ctn_len++; + if (likely(read_true(&cur, val))) goto arr_val_end; + goto fail_literal_true; + } + if (*cur == 'f') { + val_incr(); + ctn_len++; + if (likely(read_false(&cur, val))) goto arr_val_end; + goto fail_literal_false; + } + if (*cur == 'n') { + val_incr(); + ctn_len++; + if (likely(read_null(&cur, val))) goto arr_val_end; + if (has_allow(INF_AND_NAN)) { + if (read_nan(&cur, pre, flg, val)) goto arr_val_end; + } + goto fail_literal_null; + } + if (*cur == ']') { + cur++; + if (likely(ctn_len == 0)) goto arr_end; + if (has_allow(TRAILING_COMMAS)) goto arr_end; + while (*cur != ',') cur--; + goto fail_trailing_comma; + } + if (char_is_space(*cur)) { + while (char_is_space(*++cur)); + goto arr_val_begin; + } + if (has_allow(INF_AND_NAN) && + (*cur == 'i' || *cur == 'I' || *cur == 'N')) { + val_incr(); + ctn_len++; + if (read_inf_or_nan(&cur, pre, flg, val)) goto arr_val_end; + goto fail_character_val; + } + if (has_allow(SINGLE_QUOTED_STR) && *cur == '\'') { + val_incr(); + ctn_len++; + if (likely(read_str_sq(&cur, eof, flg, val, &msg))) goto arr_val_end; + goto fail_string; + } + if (has_allow(TRIVIA) && char_is_trivia(*cur)) { + if (skip_trivia(&cur, eof, flg)) goto arr_val_begin; + if (cur == eof) goto fail_comment; + } + goto fail_character_val; + +arr_val_end: + if (byte_match_2(cur, ",\n")) { + cur += 2; + goto arr_val_begin; + } + if (*cur == ',') { + cur++; + goto arr_val_begin; + } + if (*cur == ']') { + cur++; + goto arr_end; + } + if (char_is_space(*cur)) { + while (char_is_space(*++cur)); + goto arr_val_end; + } + if (has_allow(TRIVIA) && char_is_trivia(*cur)) { + if (skip_trivia(&cur, eof, flg)) goto arr_val_end; + if (cur == eof) goto fail_comment; + } + goto fail_character_arr_end; + +arr_end: + /* get parent container */ + ctn_parent = (yyjson_val *)(void *)((u8 *)ctn - ctn->uni.ofs); + + /* save the next sibling value offset */ + ctn->uni.ofs = (usize)((u8 *)val - (u8 *)ctn) + sizeof(yyjson_val); + ctn->tag = ((ctn_len) << YYJSON_TAG_BIT) | YYJSON_TYPE_ARR; + if (unlikely(ctn == ctn_parent)) goto doc_end; + + /* pop parent as current container */ + ctn = ctn_parent; + ctn_len = (usize)(ctn->tag >> YYJSON_TAG_BIT); + if (*cur == '\n') cur++; + if ((ctn->tag & YYJSON_TYPE_MASK) == YYJSON_TYPE_OBJ) { + goto obj_val_end; + } else { + goto arr_val_end; + } + +obj_begin: + /* push container */ + ctn->tag = (((u64)ctn_len + 1) << YYJSON_TAG_BIT) | + (ctn->tag & YYJSON_TAG_MASK); + val_incr(); + val->tag = YYJSON_TYPE_OBJ; + /* offset to the parent */ + val->uni.ofs = (usize)((u8 *)val - (u8 *)ctn); + ctn = val; + ctn_len = 0; + if (*cur == '\n') cur++; + +obj_key_begin: +#if YYJSON_IS_REAL_GCC + while (true) repeat16({ + if (byte_match_2(cur, " ")) cur += 2; + else break; + }) +#else + while (true) repeat16({ + if (likely(byte_match_2(cur, " "))) cur += 2; + else break; + }) +#endif + if (likely(*cur == '"')) { + val_incr(); + ctn_len++; + if (likely(read_str(&cur, eof, flg, val, &msg))) goto obj_key_end; + goto fail_string; + } + if (likely(*cur == '}')) { + cur++; + if (likely(ctn_len == 0)) goto obj_end; + if (has_allow(TRAILING_COMMAS)) goto obj_end; + while (*cur != ',') cur--; + goto fail_trailing_comma; + } + if (char_is_space(*cur)) { + while (char_is_space(*++cur)); + goto obj_key_begin; + } + if (has_allow(SINGLE_QUOTED_STR) && *cur == '\'') { + val_incr(); + ctn_len++; + if (likely(read_str_sq(&cur, eof, flg, val, &msg))) goto obj_key_end; + goto fail_string; + } + if (has_allow(UNQUOTED_KEY) && char_is_id_start(*cur)) { + val_incr(); + ctn_len++; + if (read_str_id(&cur, eof, flg, pre, val, &msg)) goto obj_key_end; + goto fail_string; + } + if (has_allow(TRIVIA) && char_is_trivia(*cur)) { + if (skip_trivia(&cur, eof, flg)) goto obj_key_begin; + if (cur == eof) goto fail_comment; + } + goto fail_character_obj_key; + +obj_key_end: + if (byte_match_2(cur, ": ")) { + cur += 2; + goto obj_val_begin; + } + if (*cur == ':') { + cur++; + goto obj_val_begin; + } + if (char_is_space(*cur)) { + while (char_is_space(*++cur)); + goto obj_key_end; + } + if (has_allow(TRIVIA) && char_is_trivia(*cur)) { + if (skip_trivia(&cur, eof, flg)) goto obj_key_end; + if (cur == eof) goto fail_comment; + } + goto fail_character_obj_sep; + +obj_val_begin: + if (*cur == '"') { + val++; + ctn_len++; + if (likely(read_str(&cur, eof, flg, val, &msg))) goto obj_val_end; + goto fail_string; + } + if (char_is_num(*cur)) { + val++; + ctn_len++; + if (likely(read_num(&cur, pre, flg, val, &msg))) goto obj_val_end; + goto fail_number; + } + if (*cur == '{') { + cur++; + goto obj_begin; + } + if (*cur == '[') { + cur++; + goto arr_begin; + } + if (*cur == 't') { + val++; + ctn_len++; + if (likely(read_true(&cur, val))) goto obj_val_end; + goto fail_literal_true; + } + if (*cur == 'f') { + val++; + ctn_len++; + if (likely(read_false(&cur, val))) goto obj_val_end; + goto fail_literal_false; + } + if (*cur == 'n') { + val++; + ctn_len++; + if (likely(read_null(&cur, val))) goto obj_val_end; + if (has_allow(INF_AND_NAN)) { + if (read_nan(&cur, pre, flg, val)) goto obj_val_end; + } + goto fail_literal_null; + } + if (char_is_space(*cur)) { + while (char_is_space(*++cur)); + goto obj_val_begin; + } + if (has_allow(INF_AND_NAN) && + (*cur == 'i' || *cur == 'I' || *cur == 'N')) { + val++; + ctn_len++; + if (read_inf_or_nan(&cur, pre, flg, val)) goto obj_val_end; + goto fail_character_val; + } + if (has_allow(SINGLE_QUOTED_STR) && *cur == '\'') { + val++; + ctn_len++; + if (likely(read_str_sq(&cur, eof, flg, val, &msg))) goto obj_val_end; + goto fail_string; + } + if (has_allow(TRIVIA) && char_is_trivia(*cur)) { + if (skip_trivia(&cur, eof, flg)) goto obj_val_begin; + if (cur == eof) goto fail_comment; + } + goto fail_character_val; + +obj_val_end: + if (byte_match_2(cur, ",\n")) { + cur += 2; + goto obj_key_begin; + } + if (likely(*cur == ',')) { + cur++; + goto obj_key_begin; + } + if (likely(*cur == '}')) { + cur++; + goto obj_end; + } + if (char_is_space(*cur)) { + while (char_is_space(*++cur)); + goto obj_val_end; + } + if (has_allow(TRIVIA) && char_is_trivia(*cur)) { + if (skip_trivia(&cur, eof, flg)) goto obj_val_end; + if (cur == eof) goto fail_comment; + } + goto fail_character_obj_end; + +obj_end: + /* pop container */ + ctn_parent = (yyjson_val *)(void *)((u8 *)ctn - ctn->uni.ofs); + /* point to the next value */ + ctn->uni.ofs = (usize)((u8 *)val - (u8 *)ctn) + sizeof(yyjson_val); + ctn->tag = (ctn_len << (YYJSON_TAG_BIT - 1)) | YYJSON_TYPE_OBJ; + if (unlikely(ctn == ctn_parent)) goto doc_end; + ctn = ctn_parent; + ctn_len = (usize)(ctn->tag >> YYJSON_TAG_BIT); + if (*cur == '\n') cur++; + if ((ctn->tag & YYJSON_TYPE_MASK) == YYJSON_TYPE_OBJ) { + goto obj_val_end; + } else { + goto arr_val_end; + } + +doc_end: + /* check invalid contents after json document */ + if (unlikely(cur < eof) && !has_flg(STOP_WHEN_DONE)) { + while (char_is_space(*cur)) cur++; + if (has_allow(TRIVIA) && char_is_trivia(*cur)) { + if (!skip_trivia(&cur, eof, flg) && cur == eof) { + goto fail_comment; + } + } + if (unlikely(cur < eof)) goto fail_garbage; + } + + **pre = '\0'; + doc = (yyjson_doc *)val_hdr; + doc->root = val_hdr + hdr_len; + doc->alc = alc; + doc->dat_read = (usize)(cur - hdr); + doc->val_read = (usize)((val - doc->root) + 1); + doc->str_pool = has_flg(INSITU) ? NULL : (char *)hdr; + return doc; + +fail_string: return_err(cur, INVALID_STRING, msg); +fail_number: return_err(cur, INVALID_NUMBER, msg); +fail_alloc: return_err(cur, MEMORY_ALLOCATION, MSG_MALLOC); +fail_trailing_comma: return_err(cur, JSON_STRUCTURE, MSG_COMMA); +fail_literal_true: return_err(cur, LITERAL, MSG_CHAR_T); +fail_literal_false: return_err(cur, LITERAL, MSG_CHAR_F); +fail_literal_null: return_err(cur, LITERAL, MSG_CHAR_N); +fail_character_val: return_err(cur, UNEXPECTED_CHARACTER, MSG_CHAR); +fail_character_arr_end: return_err(cur, UNEXPECTED_CHARACTER, MSG_ARR_END); +fail_character_obj_key: return_err(cur, UNEXPECTED_CHARACTER, MSG_OBJ_KEY); +fail_character_obj_sep: return_err(cur, UNEXPECTED_CHARACTER, MSG_OBJ_SEP); +fail_character_obj_end: return_err(cur, UNEXPECTED_CHARACTER, MSG_OBJ_END); +fail_comment: return_err(cur, INVALID_COMMENT, MSG_COMMENT); +fail_garbage: return_err(cur, UNEXPECTED_CONTENT, MSG_GARBAGE); + +#undef val_incr +#undef return_err +} + + + +/*============================================================================== + * MARK: - JSON Reader (Public) + *============================================================================*/ + +yyjson_doc *yyjson_read_opts(char *dat, usize len, + yyjson_read_flag flg, + const yyjson_alc *alc_ptr, + yyjson_read_err *err) { +#define return_err(_pos, _code, _msg) do { \ + err->pos = (usize)(_pos); \ + err->msg = _msg; \ + err->code = YYJSON_READ_ERROR_##_code; \ + if (!has_flg(INSITU) && hdr) alc.free(alc.ctx, (void *)hdr); \ + return NULL; \ +} while (false) + + yyjson_read_err tmp_err; + yyjson_alc alc = alc_ptr ? *alc_ptr : YYJSON_DEFAULT_ALC; + yyjson_doc *doc; + u8 *hdr = NULL, *eof, *cur; + + /* validate input parameters */ + if (!err) err = &tmp_err; + if (unlikely(!dat)) return_err(0, INVALID_PARAMETER, "input data is NULL"); + if (unlikely(!len)) return_err(0, INVALID_PARAMETER, "input length is 0"); + + /* add 4-byte zero padding for input data if necessary */ + if (has_flg(INSITU)) { + hdr = (u8 *)dat; + eof = (u8 *)dat + len; + cur = (u8 *)dat; + } else { + if (unlikely(len >= USIZE_MAX - YYJSON_PADDING_SIZE)) { + return_err(0, MEMORY_ALLOCATION, MSG_MALLOC); + } + hdr = (u8 *)alc.malloc(alc.ctx, len + YYJSON_PADDING_SIZE); + if (unlikely(!hdr)) { + return_err(0, MEMORY_ALLOCATION, MSG_MALLOC); + } + eof = hdr + len; + cur = hdr; + memcpy(hdr, dat, len); + } + memset(eof, 0, YYJSON_PADDING_SIZE); + + /* replacement has highest precedence: tolerate and replace all invalid + sequences so that the final output is always valid UTF-8 */ + if (has_rflag(flg, YYJSON_READ_REPLACE_INVALID_UNICODE, 1)) { + flg |= YYJSON_READ_ALLOW_INVALID_UNICODE; + flg |= YYJSON_READ_ALLOW_INVALID_SURROGATE; + } + + if (has_allow(BOM)) { + if (len >= 3 && is_utf8_bom(cur)) cur += 3; + } + + /* skip empty contents before json document */ + if (unlikely(!char_is_ctn(*cur))) { + while (char_is_space(*cur)) cur++; + if (unlikely(!char_is_ctn(*cur))) { + if (has_allow(TRIVIA) && char_is_trivia(*cur)) { + if (!skip_trivia(&cur, eof, flg) && cur == eof) { + return_err(cur - hdr, INVALID_COMMENT, MSG_COMMENT); + } + } + } + if (unlikely(cur >= eof)) { + return_err(0, EMPTY_CONTENT, "input data is empty"); + } + } + + /* read json document */ + if (likely(char_is_ctn(*cur))) { + if (char_is_space(cur[1]) && char_is_space(cur[2])) { + doc = read_root_pretty(hdr, cur, eof, alc, flg, err); + } else { + doc = read_root_minify(hdr, cur, eof, alc, flg, err); + } + } else { + doc = read_root_single(hdr, cur, eof, alc, flg, err); + } + + /* check result */ + if (likely(doc)) { + memset(err, 0, sizeof(yyjson_read_err)); + } else { + /* RFC 8259: JSON text MUST be encoded using UTF-8 */ + if (err->pos == 0 && err->code != YYJSON_READ_ERROR_MEMORY_ALLOCATION) { + if (is_utf8_bom(hdr)) err->msg = MSG_ERR_BOM; + else if (len >= 4 && is_utf32_bom(hdr)) err->msg = MSG_ERR_UTF32; + else if (len >= 2 && is_utf16_bom(hdr)) err->msg = MSG_ERR_UTF16; + } + if (!has_flg(INSITU)) alc.free(alc.ctx, hdr); + } + return doc; + +#undef return_err +} + +yyjson_doc *yyjson_read_file(const char *path, + yyjson_read_flag flg, + const yyjson_alc *alc_ptr, + yyjson_read_err *err) { +#define return_err(_code, _msg) do { \ + err->pos = 0; \ + err->msg = _msg; \ + err->code = YYJSON_READ_ERROR_##_code; \ + return NULL; \ +} while (false) + + yyjson_read_err tmp_err; + yyjson_doc *doc; + FILE *file; + + if (!err) err = &tmp_err; + if (unlikely(!path)) return_err(INVALID_PARAMETER, "input path is NULL"); + + file = fopen_readonly(path); + if (unlikely(!file)) return_err(FILE_OPEN, MSG_FREAD); + + doc = yyjson_read_fp(file, flg, alc_ptr, err); + fclose(file); + return doc; + +#undef return_err +} + +yyjson_doc *yyjson_read_fp(FILE *file, + yyjson_read_flag flg, + const yyjson_alc *alc_ptr, + yyjson_read_err *err) { +#define return_err(_code, _msg) do { \ + err->pos = 0; \ + err->msg = _msg; \ + err->code = YYJSON_READ_ERROR_##_code; \ + if (buf) alc.free(alc.ctx, buf); \ + return NULL; \ +} while (false) + + yyjson_read_err tmp_err; + yyjson_alc alc = alc_ptr ? *alc_ptr : YYJSON_DEFAULT_ALC; + yyjson_doc *doc; + + long file_size = 0, file_pos; + void *buf = NULL; + usize buf_size = 0; + + /* validate input parameters */ + if (!err) err = &tmp_err; + if (unlikely(!file)) return_err(INVALID_PARAMETER, "input file is NULL"); + + /* get current position */ + file_pos = ftell(file); + if (file_pos != -1) { + /* get total file size, may fail */ + if (fseek(file, 0, SEEK_END) == 0) file_size = ftell(file); + /* reset to original position, may fail */ + if (fseek(file, file_pos, SEEK_SET) != 0) file_size = 0; + /* get file size from current postion to end */ + if (file_size > 0) file_size -= file_pos; + } + + /* read file */ + if (file_size > 0) { + /* read the entire file in one call */ + buf_size = (usize)file_size + YYJSON_PADDING_SIZE; + buf = alc.malloc(alc.ctx, buf_size); + if (buf == NULL) { + return_err(MEMORY_ALLOCATION, MSG_MALLOC); + } + if (fread_safe(buf, (usize)file_size, file) != (usize)file_size) { + return_err(FILE_READ, MSG_FREAD); + } + } else { + /* failed to get file size, read it as a stream */ + usize chunk_min = (usize)64; + usize chunk_max = (usize)512 * 1024 * 1024; + usize chunk_now = chunk_min; + usize read_size; + void *tmp; + + buf_size = YYJSON_PADDING_SIZE; + while (true) { + if (buf_size + chunk_now < buf_size) { /* overflow */ + return_err(MEMORY_ALLOCATION, MSG_MALLOC); + } + buf_size += chunk_now; + if (!buf) { + buf = alc.malloc(alc.ctx, buf_size); + if (!buf) return_err(MEMORY_ALLOCATION, MSG_MALLOC); + } else { + tmp = alc.realloc(alc.ctx, buf, buf_size - chunk_now, buf_size); + if (!tmp) return_err(MEMORY_ALLOCATION, MSG_MALLOC); + buf = tmp; + } + tmp = ((u8 *)buf) + buf_size - YYJSON_PADDING_SIZE - chunk_now; + read_size = fread_safe(tmp, chunk_now, file); + file_size += (long)read_size; + if (read_size != chunk_now) break; + + chunk_now *= 2; + if (chunk_now > chunk_max) chunk_now = chunk_max; + } + } + + /* read JSON */ + memset((u8 *)buf + file_size, 0, YYJSON_PADDING_SIZE); + flg |= YYJSON_READ_INSITU; + doc = yyjson_read_opts((char *)buf, (usize)file_size, flg, &alc, err); + if (doc) { + doc->str_pool = (char *)buf; + return doc; + } else { + alc.free(alc.ctx, buf); + return NULL; + } + +#undef return_err +} + +const char *yyjson_read_number(const char *dat, + yyjson_val *val, + yyjson_read_flag flg, + const yyjson_alc *alc, + yyjson_read_err *err) { +#define return_err(_pos, _code, _msg) do { \ + err->pos = _pos > hdr ? (usize)(_pos - hdr) : 0; \ + err->msg = _msg; \ + err->code = YYJSON_READ_ERROR_##_code; \ + return NULL; \ +} while (false) + + u8 *hdr = constcast(u8 *)dat, *cur = hdr; + u8 raw_end[1]; /* raw end for null-terminator */ + u8 *raw_ptr = raw_end; + u8 **pre = &raw_ptr; /* previous raw end pointer */ + const char *msg; + yyjson_read_err tmp_err; + +#if YYJSON_DISABLE_FAST_FP_CONV + u8 buf[128]; + usize dat_len; +#endif + + if (!err) err = &tmp_err; + if (unlikely(!dat)) { + return_err(cur, INVALID_PARAMETER, "input data is NULL"); + } + if (unlikely(!val)) { + return_err(cur, INVALID_PARAMETER, "output value is NULL"); + } + +#if YYJSON_DISABLE_FAST_FP_CONV + if (!alc) alc = &YYJSON_DEFAULT_ALC; + dat_len = strlen(dat); + if (dat_len < sizeof(buf)) { + memcpy(buf, dat, dat_len + 1); + hdr = buf; + cur = hdr; + } else { + hdr = (u8 *)alc->malloc(alc->ctx, dat_len + 1); + cur = hdr; + if (unlikely(!hdr)) { + return_err(cur, MEMORY_ALLOCATION, MSG_MALLOC); + } + memcpy(hdr, dat, dat_len + 1); + } + hdr[dat_len] = 0; +#endif + +#if YYJSON_DISABLE_FAST_FP_CONV + if (!read_num(&cur, pre, flg, val, &msg)) { + if (dat_len >= sizeof(buf)) alc->free(alc->ctx, hdr); + return_err(cur, INVALID_NUMBER, msg); + } + if (dat_len >= sizeof(buf)) alc->free(alc->ctx, hdr); + if (yyjson_is_raw(val)) val->uni.str = dat; + return dat + (cur - hdr); +#else + if (!read_num(&cur, pre, flg, val, &msg)) { + return_err(cur, INVALID_NUMBER, msg); + } + return (const char *)cur; +#endif + +#undef return_err +} + + + +/*============================================================================== + * MARK: - Incremental JSON Reader (Public) + *============================================================================*/ + +#if !YYJSON_DISABLE_INCR_READER + +/* labels within yyjson_incr_read() to resume incremental parsing */ +#define LABEL_doc_begin 0 +#define LABEL_arr_val_begin 1 +#define LABEL_arr_val_end 2 +#define LABEL_obj_key_begin 3 +#define LABEL_obj_key_end 4 +#define LABEL_obj_val_begin 5 +#define LABEL_obj_val_end 6 +#define LABEL_doc_end 7 + +/** State for incremental JSON reader, opaque in the API. */ +struct yyjson_incr_state { + u32 label; /* current parser goto label */ + yyjson_alc alc; /* allocator */ + yyjson_read_flag flg; /* read flags */ + u8 *hdr; /* JSON data header */ + u8 *cur; /* current position in JSON data */ + usize buf_len; /* total buffer length (without padding) */ + usize hdr_len; /* value count used by yyjson_doc */ + usize alc_len; /* value count allocated */ + usize ctn_len; /* the number of elements in current container */ + yyjson_val *val_hdr; /* the head of allocated values */ + yyjson_val *val_end; /* the end of allocated values */ + yyjson_val *val; /* current JSON value */ + yyjson_val *ctn; /* current container */ + u8 *str_con[2]; /* string parser incremental state */ +}; + +yyjson_incr_state *yyjson_incr_new(char *buf, size_t buf_len, + yyjson_read_flag flg, + const yyjson_alc *alc_ptr) { + yyjson_incr_state *state = NULL; + yyjson_alc alc = alc_ptr ? *alc_ptr : YYJSON_DEFAULT_ALC; + + /* remove non-standard flags */ + flg &= ~YYJSON_READ_JSON5; + flg &= ~YYJSON_READ_ALLOW_BOM; + flg &= ~YYJSON_READ_ALLOW_INVALID_UNICODE; + flg &= ~YYJSON_READ_ALLOW_INVALID_SURROGATE; + flg &= ~YYJSON_READ_REPLACE_INVALID_UNICODE; + + if (unlikely(!buf)) return NULL; + if (unlikely(buf_len >= USIZE_MAX - YYJSON_PADDING_SIZE)) return NULL; + state = (yyjson_incr_state *)alc.malloc(alc.ctx, sizeof(*state)); + if (!state) return NULL; + memset(state, 0, sizeof(yyjson_incr_state)); + state->alc = alc; + state->flg = flg; + state->buf_len = buf_len; + + /* add 4-byte zero padding for input data if necessary */ + if (has_flg(INSITU)) { + state->hdr = (u8 *)buf; + } else { + state->hdr = (u8 *)alc.malloc(alc.ctx, buf_len + YYJSON_PADDING_SIZE); + if (unlikely(!state->hdr)) { + alc.free(alc.ctx, state); + return NULL; + } + memcpy(state->hdr, buf, buf_len); + } + memset(state->hdr + buf_len, 0, YYJSON_PADDING_SIZE); + state->cur = state->hdr; + state->label = LABEL_doc_begin; + return state; +} + +void yyjson_incr_free(yyjson_incr_state *state) { + if (state) { + yyjson_alc alc = state->alc; + memset(&state->alc, 0, sizeof(alc)); + if (state->val_hdr) { + alc.free(alc.ctx, (void *)state->val_hdr); + } + if (state->hdr && !(state->flg & YYJSON_READ_INSITU)) { + alc.free(alc.ctx, state->hdr); + } + alc.free(alc.ctx, state); + } +} + +yyjson_doc *yyjson_incr_read(yyjson_incr_state *state, size_t len, + yyjson_read_err *err) { +#define return_err_inv_param(_msg) do { \ + err->pos = 0; \ + err->msg = _msg; \ + err->code = YYJSON_READ_ERROR_INVALID_PARAMETER; \ + return NULL; \ +} while (false) + +#define return_err(_pos, _code, _msg) do { \ + if (is_truncated_end(hdr, _pos, end, YYJSON_READ_ERROR_##_code, flg)) { \ + goto unexpected_end; \ + } else { \ + err->pos = (usize)(_pos - hdr); \ + err->code = YYJSON_READ_ERROR_##_code; \ + err->msg = _msg; \ + } \ + return NULL; \ +} while (false) + +#define val_incr() do { \ + val++; \ + if (unlikely(val >= val_end)) { \ + usize alc_old = alc_len; \ + alc_len += alc_len / 2; \ + if ((sizeof(usize) < 8) && (alc_len >= alc_max)) goto fail_alloc; \ + val_tmp = (yyjson_val *)alc.realloc(alc.ctx, (void *)val_hdr, \ + alc_old * sizeof(yyjson_val), \ + alc_len * sizeof(yyjson_val)); \ + if ((!val_tmp)) goto fail_alloc; \ + val = val_tmp + (usize)(val - val_hdr); \ + ctn = val_tmp + (usize)(ctn - val_hdr); \ + state->val = val_tmp + (usize)(state->val - val_hdr); \ + state->val_hdr = val_hdr = val_tmp; \ + val_end = val_tmp + (alc_len - 2); \ + state->val_end = val_end; \ + } \ +} while (false) + + /* save position where it's possible to resume incremental parsing */ +#define save_incr_state(_label) do { \ + state->label = LABEL_##_label; \ + state->cur = cur; \ + state->val = val; \ + state->ctn_len = ctn_len; \ + state->hdr_len = hdr_len; \ + if (unlikely(cur >= end)) goto unexpected_end; \ +} while (false) + +#define check_maybe_truncated_number() do { \ + if (unlikely(cur >= end)) { \ + if (unlikely(cur > state->cur + INCR_NUM_MAX_LEN)) { \ + msg = "number too long"; \ + goto fail_number; \ + } \ + goto unexpected_end; \ + } \ +} while (false) + + u8 *hdr = NULL, *end = NULL, *cur = NULL; + yyjson_read_flag flg; + yyjson_alc alc; + usize dat_len; /* data length in bytes, hint for allocator */ + usize hdr_len; /* value count used by yyjson_doc */ + usize alc_len; /* value count allocated */ + usize alc_max; /* maximum value count for allocator */ + usize ctn_len; /* the number of elements in current container */ + yyjson_val *val_hdr; /* the head of allocated values */ + yyjson_val *val_end; /* the end of allocated values */ + yyjson_val *val_tmp; /* temporary pointer for realloc */ + yyjson_val *val; /* current JSON value */ + yyjson_val *ctn; /* current container */ + yyjson_val *ctn_parent; /* parent of current container */ + yyjson_doc *doc; /* the JSON document, equals to val_hdr */ + const char *msg; /* error message */ + + yyjson_read_err tmp_err; + u8 raw_end[1]; /* raw end for null-terminator */ + u8 *raw_ptr = raw_end; + u8 **pre = &raw_ptr; /* previous raw end pointer */ + u8 **con = NULL; /* for incremental string parsing */ + u8 saved_end = '\0'; /* saved end char */ + + /* validate input parameters */ + if (!err) err = &tmp_err; + if (unlikely(!state)) { + return_err_inv_param("input state is NULL"); + } + if (unlikely(!len)) { + return_err_inv_param("input length is 0"); + } + if (unlikely(len > state->buf_len)) { + return_err_inv_param("length is greater than total input length"); + } + + /* restore state saved from the previous call */ + hdr = state->hdr; + end = state->hdr + len; + cur = state->cur; + flg = state->flg; + alc = state->alc; + ctn_len = state->ctn_len; + hdr_len = state->hdr_len; + alc_len = state->alc_len; + val = state->val; + val_hdr = state->val_hdr; + val_end = state->val_end; + ctn = state->ctn; + con = state->str_con; + alc_max = USIZE_MAX / sizeof(yyjson_val); + + /* insert null terminator to make us stop at the specified end, even if + the data contains more valid JSON */ + saved_end = *end; + *end = '\0'; + + /* resume parsing from the last save point */ + switch (state->label) { + case LABEL_doc_begin: goto doc_begin; + case LABEL_arr_val_begin: goto arr_val_begin; + case LABEL_arr_val_end: goto arr_val_end; + case LABEL_obj_key_begin: goto obj_key_begin; + case LABEL_obj_key_end: goto obj_key_end; + case LABEL_obj_val_begin: goto obj_val_begin; + case LABEL_obj_val_end: goto obj_val_end; + case LABEL_doc_end: goto doc_end; + default: return_err_inv_param("invalid incremental state"); + } + +doc_begin: + /* skip empty contents before json document */ + if (unlikely(!char_is_ctn(*cur))) { + while (char_is_space(*cur)) cur++; + if (unlikely(cur >= end)) goto unexpected_end; /* input data is empty */ + } + + /* allocate memory for document */ + if (!val_hdr) { + hdr_len = sizeof(yyjson_doc) / sizeof(yyjson_val); + hdr_len += (sizeof(yyjson_doc) % sizeof(yyjson_val)) > 0; + if (likely(char_is_ctn(*cur))) { + dat_len = has_flg(STOP_WHEN_DONE) ? 256 : state->buf_len; + alc_len = hdr_len + + (dat_len / YYJSON_READER_ESTIMATED_MINIFY_RATIO) + 4; + alc_len = yyjson_min(alc_len, alc_max); + } else { + alc_len = hdr_len + 1; /* single value */ + } + val_hdr = (yyjson_val *)alc.malloc(alc.ctx, + alc_len * sizeof(yyjson_val)); + if (unlikely(!val_hdr)) goto fail_alloc; + val_end = val_hdr + (alc_len - 2); /* padding for kv pair reading */ + val = val_hdr + hdr_len; + ctn = val; + ctn_len = 0; + state->val_hdr = val_hdr; + state->val_end = val_end; + save_incr_state(doc_begin); + } + + /* read json document */ + if (*cur == '{') { + cur++; + ctn->tag = YYJSON_TYPE_OBJ; + ctn->uni.ofs = 0; + goto obj_key_begin; + } + if (*cur == '[') { + cur++; + ctn->tag = YYJSON_TYPE_ARR; + ctn->uni.ofs = 0; + goto arr_val_begin; + } + if (char_is_num(*cur)) { + if (likely(read_num(&cur, pre, flg, val, &msg))) goto doc_end; + goto fail_number; + } + if (*cur == '"') { + if (likely(read_str_con(&cur, end, flg, val, &msg, con))) goto doc_end; + goto fail_string; + } + if (*cur == 't') { + if (likely(read_true(&cur, val))) goto doc_end; + goto fail_literal_true; + } + if (*cur == 'f') { + if (likely(read_false(&cur, val))) goto doc_end; + goto fail_literal_false; + } + if (*cur == 'n') { + if (likely(read_null(&cur, val))) goto doc_end; + goto fail_literal_null; + } + + msg = "unexpected character, expected a valid root value"; + if (cur == hdr) { + /* RFC 8259: JSON text MUST be encoded using UTF-8 */ + if (is_utf8_bom(hdr)) msg = MSG_ERR_BOM; + else if (len >= 4 && is_utf32_bom(hdr)) msg = MSG_ERR_UTF32; + else if (len >= 2 && is_utf16_bom(hdr)) msg = MSG_ERR_UTF16; + } + return_err(cur, UNEXPECTED_CHARACTER, msg); + +arr_begin: + /* save current container */ + ctn->tag = (((u64)ctn_len + 1) << YYJSON_TAG_BIT) | + (ctn->tag & YYJSON_TAG_MASK); + + /* create a new array value, save parent container offset */ + val_incr(); + val->tag = YYJSON_TYPE_ARR; + val->uni.ofs = (usize)((u8 *)val - (u8 *)ctn); + + /* push the new array value as current container */ + ctn = val; + ctn_len = 0; + +arr_val_begin: + save_incr_state(arr_val_begin); +arr_val_continue: + if (*cur == '{') { + cur++; + goto obj_begin; + } + if (*cur == '[') { + cur++; + goto arr_begin; + } + if (char_is_num(*cur)) { + val_incr(); + ctn_len++; + if (likely(read_num(&cur, pre, flg, val, &msg))) goto arr_val_maybe_end; + goto fail_number; + } + if (*cur == '"') { + val_incr(); + ctn_len++; + if (likely(read_str_con(&cur, end, flg, val, &msg, con))) + goto arr_val_end; + goto fail_string; + } + if (*cur == 't') { + val_incr(); + ctn_len++; + if (likely(read_true(&cur, val))) goto arr_val_end; + goto fail_literal_true; + } + if (*cur == 'f') { + val_incr(); + ctn_len++; + if (likely(read_false(&cur, val))) goto arr_val_end; + goto fail_literal_false; + } + if (*cur == 'n') { + val_incr(); + ctn_len++; + if (likely(read_null(&cur, val))) goto arr_val_end; + goto fail_literal_null; + } + if (*cur == ']') { + cur++; + if (likely(ctn_len == 0)) goto arr_end; + while (*cur != ',') cur--; + goto fail_trailing_comma; + } + if (char_is_space(*cur)) { + while (char_is_space(*++cur)); + goto arr_val_continue; + } + goto fail_character_val; + +arr_val_maybe_end: + /* if incremental parsing stops in the middle of a number, it may continue + with more digits, so arr val maybe didn't end yet */ + check_maybe_truncated_number(); + +arr_val_end: + save_incr_state(arr_val_end); + if (*cur == ',') { + cur++; + goto arr_val_begin; + } + if (*cur == ']') { + cur++; + goto arr_end; + } + if (char_is_space(*cur)) { + while (char_is_space(*++cur)); + goto arr_val_end; + } + goto fail_character_arr_end; + +arr_end: + /* get parent container */ + ctn_parent = (yyjson_val *)(void *)((u8 *)ctn - ctn->uni.ofs); + + /* save the next sibling value offset */ + ctn->uni.ofs = (usize)((u8 *)val - (u8 *)ctn) + sizeof(yyjson_val); + ctn->tag = ((ctn_len) << YYJSON_TAG_BIT) | YYJSON_TYPE_ARR; + if (unlikely(ctn == ctn_parent)) goto doc_end; + + /* pop parent as current container */ + ctn = ctn_parent; + ctn_len = (usize)(ctn->tag >> YYJSON_TAG_BIT); + if ((ctn->tag & YYJSON_TYPE_MASK) == YYJSON_TYPE_OBJ) { + goto obj_val_end; + } else { + goto arr_val_end; + } + +obj_begin: + /* push container */ + ctn->tag = (((u64)ctn_len + 1) << YYJSON_TAG_BIT) | + (ctn->tag & YYJSON_TAG_MASK); + val_incr(); + val->tag = YYJSON_TYPE_OBJ; + /* offset to the parent */ + val->uni.ofs = (usize)((u8 *)val - (u8 *)ctn); + ctn = val; + ctn_len = 0; + +obj_key_begin: + save_incr_state(obj_key_begin); +obj_key_continue: + if (likely(*cur == '"')) { + val_incr(); + ctn_len++; + if (likely(read_str_con(&cur, end, flg, val, &msg, con))) + goto obj_key_end; + goto fail_string; + } + if (likely(*cur == '}')) { + cur++; + if (likely(ctn_len == 0)) goto obj_end; + while (*cur != ',') cur--; + goto fail_trailing_comma; + } + if (char_is_space(*cur)) { + while (char_is_space(*++cur)); + goto obj_key_continue; + } + goto fail_character_obj_key; + +obj_key_end: + save_incr_state(obj_key_end); + if (*cur == ':') { + cur++; + goto obj_val_begin; + } + if (char_is_space(*cur)) { + while (char_is_space(*++cur)); + goto obj_key_end; + } + goto fail_character_obj_sep; + +obj_val_begin: + save_incr_state(obj_val_begin); +obj_val_continue: + if (*cur == '"') { + val++; + ctn_len++; + if (likely(read_str_con(&cur, end, flg, val, &msg, con))) + goto obj_val_end; + goto fail_string; + } + if (char_is_num(*cur)) { + val++; + ctn_len++; + if (likely(read_num(&cur, pre, flg, val, &msg))) goto obj_val_maybe_end; + goto fail_number; + } + if (*cur == '{') { + cur++; + goto obj_begin; + } + if (*cur == '[') { + cur++; + goto arr_begin; + } + if (*cur == 't') { + val++; + ctn_len++; + if (likely(read_true(&cur, val))) goto obj_val_end; + goto fail_literal_true; + } + if (*cur == 'f') { + val++; + ctn_len++; + if (likely(read_false(&cur, val))) goto obj_val_end; + goto fail_literal_false; + } + if (*cur == 'n') { + val++; + ctn_len++; + if (likely(read_null(&cur, val))) goto obj_val_end; + goto fail_literal_null; + } + if (char_is_space(*cur)) { + while (char_is_space(*++cur)); + goto obj_val_continue; + } + goto fail_character_val; + +obj_val_maybe_end: + /* if incremental parsing stops in the middle of a number, it may continue + with more digits, so obj val maybe didn't end yet */ + check_maybe_truncated_number(); + +obj_val_end: + save_incr_state(obj_val_end); + if (likely(*cur == ',')) { + cur++; + goto obj_key_begin; + } + if (likely(*cur == '}')) { + cur++; + goto obj_end; + } + if (char_is_space(*cur)) { + while (char_is_space(*++cur)); + goto obj_val_end; + } + goto fail_character_obj_end; + +obj_end: + /* pop container */ + ctn_parent = (yyjson_val *)(void *)((u8 *)ctn - ctn->uni.ofs); + /* point to the next value */ + ctn->uni.ofs = (usize)((u8 *)val - (u8 *)ctn) + sizeof(yyjson_val); + ctn->tag = (ctn_len << (YYJSON_TAG_BIT - 1)) | YYJSON_TYPE_OBJ; + if (unlikely(ctn == ctn_parent)) goto doc_end; + ctn = ctn_parent; + ctn_len = (usize)(ctn->tag >> YYJSON_TAG_BIT); + if ((ctn->tag & YYJSON_TYPE_MASK) == YYJSON_TYPE_OBJ) { + goto obj_val_end; + } else { + goto arr_val_end; + } + +doc_end: + /* check invalid contents after json document */ + if (unlikely(cur < end) && !has_flg(STOP_WHEN_DONE)) { + save_incr_state(doc_end); + while (char_is_space(*cur)) cur++; + if (unlikely(cur < end)) goto fail_garbage; + } + + **pre = '\0'; + doc = (yyjson_doc *)val_hdr; + doc->root = val_hdr + hdr_len; + doc->alc = alc; + doc->dat_read = (usize)(cur - hdr); + doc->val_read = (usize)((val - doc->root) + 1); + doc->str_pool = has_flg(INSITU) ? NULL : (char *)hdr; + state->hdr = NULL; + state->val_hdr = NULL; + memset(err, 0, sizeof(yyjson_read_err)); + return doc; + +unexpected_end: + err->pos = len; + /* if no nore data, stop the incr read */ + if (unlikely(len >= state->buf_len)) { + err->code = YYJSON_READ_ERROR_UNEXPECTED_END; + err->msg = MSG_NOT_END; + return NULL; + } + /* save parser state in extended error struct, in addition to what was + * stored in the last save_incr_state */ + err->code = YYJSON_READ_ERROR_MORE; + err->msg = "need more data"; + state->val_end = val_end; + state->ctn = ctn; + state->alc_len = alc_len; + /* restore the end where we've inserted a null terminator */ + *end = saved_end; + return NULL; + +fail_string: return_err(cur, INVALID_STRING, msg); +fail_number: return_err(cur, INVALID_NUMBER, msg); +fail_alloc: return_err(cur, MEMORY_ALLOCATION, MSG_MALLOC); +fail_trailing_comma: return_err(cur, JSON_STRUCTURE, MSG_COMMA); +fail_literal_true: return_err(cur, LITERAL, MSG_CHAR_T); +fail_literal_false: return_err(cur, LITERAL, MSG_CHAR_F); +fail_literal_null: return_err(cur, LITERAL, MSG_CHAR_N); +fail_character_val: return_err(cur, UNEXPECTED_CHARACTER, MSG_CHAR); +fail_character_arr_end: return_err(cur, UNEXPECTED_CHARACTER, MSG_ARR_END); +fail_character_obj_key: return_err(cur, UNEXPECTED_CHARACTER, MSG_OBJ_KEY); +fail_character_obj_sep: return_err(cur, UNEXPECTED_CHARACTER, MSG_OBJ_SEP); +fail_character_obj_end: return_err(cur, UNEXPECTED_CHARACTER, MSG_OBJ_END); +fail_garbage: return_err(cur, UNEXPECTED_CONTENT, MSG_GARBAGE); + +#undef val_incr +#undef return_err +#undef return_err_inv_param +#undef save_incr_state +#undef check_maybe_truncated_number +} + +#endif /* YYJSON_DISABLE_INCR_READER */ + +#undef has_flg +#undef has_allow +#endif /* YYJSON_DISABLE_READER */ + + + +#if !YYJSON_DISABLE_WRITER /* writer begin */ + +/* Check write flag, avoids `always false` warning when disabled. */ +#define has_flg(_flg) unlikely(has_wflag(flg, YYJSON_WRITE_##_flg, 0)) +#define has_allow(_flg) unlikely(has_wflag(flg, YYJSON_WRITE_ALLOW_##_flg, 1)) +static_inline bool has_wflag(yyjson_write_flag flg, yyjson_write_flag chk, + bool non_standard) { +#if YYJSON_DISABLE_NON_STANDARD + if (non_standard) return false; +#endif + return (flg & chk) != 0; +} + +/*============================================================================== + * MARK: - Integer Writer (Private) + * + * The maximum value of uint32_t is 4294967295 (10 digits), + * these digits are named as 'aabbccddee' here. + * + * Although most compilers may convert the "division by constant value" into + * "multiply and shift", manual conversion can still help some compilers + * generate fewer and better instructions. + * + * Reference: + * Division by Invariant Integers using Multiplication, 1994. + * https://gmplib.org/~tege/divcnst-pldi94.pdf + * Improved division by invariant integers, 2011. + * https://gmplib.org/~tege/division-paper.pdf + *============================================================================*/ + +/** Digit table from 00 to 99. */ +yyjson_align(2) +static const char digit_table[200] = { + '0', '0', '0', '1', '0', '2', '0', '3', '0', '4', + '0', '5', '0', '6', '0', '7', '0', '8', '0', '9', + '1', '0', '1', '1', '1', '2', '1', '3', '1', '4', + '1', '5', '1', '6', '1', '7', '1', '8', '1', '9', + '2', '0', '2', '1', '2', '2', '2', '3', '2', '4', + '2', '5', '2', '6', '2', '7', '2', '8', '2', '9', + '3', '0', '3', '1', '3', '2', '3', '3', '3', '4', + '3', '5', '3', '6', '3', '7', '3', '8', '3', '9', + '4', '0', '4', '1', '4', '2', '4', '3', '4', '4', + '4', '5', '4', '6', '4', '7', '4', '8', '4', '9', + '5', '0', '5', '1', '5', '2', '5', '3', '5', '4', + '5', '5', '5', '6', '5', '7', '5', '8', '5', '9', + '6', '0', '6', '1', '6', '2', '6', '3', '6', '4', + '6', '5', '6', '6', '6', '7', '6', '8', '6', '9', + '7', '0', '7', '1', '7', '2', '7', '3', '7', '4', + '7', '5', '7', '6', '7', '7', '7', '8', '7', '9', + '8', '0', '8', '1', '8', '2', '8', '3', '8', '4', + '8', '5', '8', '6', '8', '7', '8', '8', '8', '9', + '9', '0', '9', '1', '9', '2', '9', '3', '9', '4', + '9', '5', '9', '6', '9', '7', '9', '8', '9', '9' +}; + +static_inline u8 *write_u32_len_8(u32 val, u8 *buf) { + u32 aa, bb, cc, dd, aabb, ccdd; /* 8 digits: aabbccdd */ + aabb = (u32)(((u64)val * 109951163) >> 40); /* (val / 10000) */ + ccdd = val - aabb * 10000; /* (val % 10000) */ + aa = (aabb * 5243) >> 19; /* (aabb / 100) */ + cc = (ccdd * 5243) >> 19; /* (ccdd / 100) */ + bb = aabb - aa * 100; /* (aabb % 100) */ + dd = ccdd - cc * 100; /* (ccdd % 100) */ + byte_copy_2(buf + 0, digit_table + aa * 2); + byte_copy_2(buf + 2, digit_table + bb * 2); + byte_copy_2(buf + 4, digit_table + cc * 2); + byte_copy_2(buf + 6, digit_table + dd * 2); + return buf + 8; +} + +static_inline u8 *write_u32_len_4(u32 val, u8 *buf) { + u32 aa, bb; /* 4 digits: aabb */ + aa = (val * 5243) >> 19; /* (val / 100) */ + bb = val - aa * 100; /* (val % 100) */ + byte_copy_2(buf + 0, digit_table + aa * 2); + byte_copy_2(buf + 2, digit_table + bb * 2); + return buf + 4; +} + +static_inline u8 *write_u32_len_1_to_8(u32 val, u8 *buf) { + u32 aa, bb, cc, dd, aabb, bbcc, ccdd, lz; + + if (val < 100) { /* 1-2 digits: aa */ + lz = val < 10; /* leading zero: 0 or 1 */ + byte_copy_2(buf + 0, digit_table + val * 2 + lz); + buf -= lz; + return buf + 2; + + } else if (val < 10000) { /* 3-4 digits: aabb */ + aa = (val * 5243) >> 19; /* (val / 100) */ + bb = val - aa * 100; /* (val % 100) */ + lz = aa < 10; /* leading zero: 0 or 1 */ + byte_copy_2(buf + 0, digit_table + aa * 2 + lz); + buf -= lz; + byte_copy_2(buf + 2, digit_table + bb * 2); + return buf + 4; + + } else if (val < 1000000) { /* 5-6 digits: aabbcc */ + aa = (u32)(((u64)val * 429497) >> 32); /* (val / 10000) */ + bbcc = val - aa * 10000; /* (val % 10000) */ + bb = (bbcc * 5243) >> 19; /* (bbcc / 100) */ + cc = bbcc - bb * 100; /* (bbcc % 100) */ + lz = aa < 10; /* leading zero: 0 or 1 */ + byte_copy_2(buf + 0, digit_table + aa * 2 + lz); + buf -= lz; + byte_copy_2(buf + 2, digit_table + bb * 2); + byte_copy_2(buf + 4, digit_table + cc * 2); + return buf + 6; + + } else { /* 7-8 digits: aabbccdd */ + aabb = (u32)(((u64)val * 109951163) >> 40); /* (val / 10000) */ + ccdd = val - aabb * 10000; /* (val % 10000) */ + aa = (aabb * 5243) >> 19; /* (aabb / 100) */ + cc = (ccdd * 5243) >> 19; /* (ccdd / 100) */ + bb = aabb - aa * 100; /* (aabb % 100) */ + dd = ccdd - cc * 100; /* (ccdd % 100) */ + lz = aa < 10; /* leading zero: 0 or 1 */ + byte_copy_2(buf + 0, digit_table + aa * 2 + lz); + buf -= lz; + byte_copy_2(buf + 2, digit_table + bb * 2); + byte_copy_2(buf + 4, digit_table + cc * 2); + byte_copy_2(buf + 6, digit_table + dd * 2); + return buf + 8; + } +} + +static_inline u8 *write_u32_len_5_to_8(u32 val, u8 *buf) { + u32 aa, bb, cc, dd, aabb, bbcc, ccdd, lz; + + if (val < 1000000) { /* 5-6 digits: aabbcc */ + aa = (u32)(((u64)val * 429497) >> 32); /* (val / 10000) */ + bbcc = val - aa * 10000; /* (val % 10000) */ + bb = (bbcc * 5243) >> 19; /* (bbcc / 100) */ + cc = bbcc - bb * 100; /* (bbcc % 100) */ + lz = aa < 10; /* leading zero: 0 or 1 */ + byte_copy_2(buf + 0, digit_table + aa * 2 + lz); + buf -= lz; + byte_copy_2(buf + 2, digit_table + bb * 2); + byte_copy_2(buf + 4, digit_table + cc * 2); + return buf + 6; + + } else { /* 7-8 digits: aabbccdd */ + aabb = (u32)(((u64)val * 109951163) >> 40); /* (val / 10000) */ + ccdd = val - aabb * 10000; /* (val % 10000) */ + aa = (aabb * 5243) >> 19; /* (aabb / 100) */ + cc = (ccdd * 5243) >> 19; /* (ccdd / 100) */ + bb = aabb - aa * 100; /* (aabb % 100) */ + dd = ccdd - cc * 100; /* (ccdd % 100) */ + lz = aa < 10; /* leading zero: 0 or 1 */ + byte_copy_2(buf + 0, digit_table + aa * 2 + lz); + buf -= lz; + byte_copy_2(buf + 2, digit_table + bb * 2); + byte_copy_2(buf + 4, digit_table + cc * 2); + byte_copy_2(buf + 6, digit_table + dd * 2); + return buf + 8; + } +} + +static_inline u8 *write_u64(u64 val, u8 *buf) { + u64 tmp, hgh; + u32 mid, low; + + if (val < 100000000) { /* 1-8 digits */ + buf = write_u32_len_1_to_8((u32)val, buf); + return buf; + + } else if (val < (u64)100000000 * 100000000) { /* 9-16 digits */ + hgh = val / 100000000; /* (val / 100000000) */ + low = (u32)(val - hgh * 100000000); /* (val % 100000000) */ + buf = write_u32_len_1_to_8((u32)hgh, buf); + buf = write_u32_len_8(low, buf); + return buf; + + } else { /* 17-20 digits */ + tmp = val / 100000000; /* (val / 100000000) */ + low = (u32)(val - tmp * 100000000); /* (val % 100000000) */ + hgh = (u32)(tmp / 10000); /* (tmp / 10000) */ + mid = (u32)(tmp - hgh * 10000); /* (tmp % 10000) */ + buf = write_u32_len_5_to_8((u32)hgh, buf); + buf = write_u32_len_4(mid, buf); + buf = write_u32_len_8(low, buf); + return buf; + } +} + + + +/*============================================================================== + * MARK: - Number Writer (Private) + *============================================================================*/ + +#if !YYJSON_DISABLE_FAST_FP_CONV /* FP_WRITER */ + +/** Trailing zero count table for number 0 to 99. + (generate with misc/make_tables.c) */ +static const u8 dec_trailing_zero_table[] = { + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +static_inline u8 *write_u64_len_1_to_16(u64 val, u8 *buf) { + u64 hgh; + u32 low; + if (val < 100000000) { /* 1-8 digits */ + buf = write_u32_len_1_to_8((u32)val, buf); + return buf; + } else { /* 9-16 digits */ + hgh = val / 100000000; /* (val / 100000000) */ + low = (u32)(val - hgh * 100000000); /* (val % 100000000) */ + buf = write_u32_len_1_to_8((u32)hgh, buf); + buf = write_u32_len_8(low, buf); + return buf; + } +} + +static_inline u8 *write_u64_len_1_to_17(u64 val, u8 *buf) { + u64 hgh; + u32 mid, low, one; + if (val >= (u64)100000000 * 10000000) { /* len: 16 to 17 */ + hgh = val / 100000000; /* (val / 100000000) */ + low = (u32)(val - hgh * 100000000); /* (val % 100000000) */ + one = (u32)(hgh / 100000000); /* (hgh / 100000000) */ + mid = (u32)(hgh - (u64)one * 100000000); /* (hgh % 100000000) */ + *buf = (u8)((u8)one + (u8)'0'); + buf += one > 0; + buf = write_u32_len_8(mid, buf); + buf = write_u32_len_8(low, buf); + return buf; + } else if (val >= (u64)100000000){ /* len: 9 to 15 */ + hgh = val / 100000000; /* (val / 100000000) */ + low = (u32)(val - hgh * 100000000); /* (val % 100000000) */ + buf = write_u32_len_1_to_8((u32)hgh, buf); + buf = write_u32_len_8(low, buf); + return buf; + } else { /* len: 1 to 8 */ + buf = write_u32_len_1_to_8((u32)val, buf); + return buf; + } +} + +/** + Write an unsigned integer with a length of 7 to 9 with trailing zero trimmed. + These digits are named as "abbccddee" here. + For example, input 123456000, output "123456". + */ +static_inline u8 *write_u32_len_7_to_9_trim(u32 val, u8 *buf) { + bool lz; + u32 tz, tz1, tz2; + + u32 abbcc = val / 10000; /* (abbccddee / 10000) */ + u32 ddee = val - abbcc * 10000; /* (abbccddee % 10000) */ + u32 abb = (u32)(((u64)abbcc * 167773) >> 24); /* (abbcc / 100) */ + u32 a = (abb * 41) >> 12; /* (abb / 100) */ + u32 bb = abb - a * 100; /* (abb % 100) */ + u32 cc = abbcc - abb * 100; /* (abbcc % 100) */ + + /* write abbcc */ + buf[0] = (u8)(a + '0'); + buf += a > 0; + lz = bb < 10 && a == 0; + byte_copy_2(buf + 0, digit_table + bb * 2 + lz); + buf -= lz; + byte_copy_2(buf + 2, digit_table + cc * 2); + + if (ddee) { + u32 dd = (ddee * 5243) >> 19; /* (ddee / 100) */ + u32 ee = ddee - dd * 100; /* (ddee % 100) */ + byte_copy_2(buf + 4, digit_table + dd * 2); + byte_copy_2(buf + 6, digit_table + ee * 2); + tz1 = dec_trailing_zero_table[dd]; + tz2 = dec_trailing_zero_table[ee]; + tz = ee ? tz2 : (tz1 + 2); + buf += 8 - tz; + return buf; + } else { + tz1 = dec_trailing_zero_table[bb]; + tz2 = dec_trailing_zero_table[cc]; + tz = cc ? tz2 : (tz1 + tz2); + buf += 4 - tz; + return buf; + } +} + +/** + Write an unsigned integer with a length of 16 or 17 with trailing zero trimmed. + These digits are named as "abbccddeeffgghhii" here. + For example, input 1234567890123000, output "1234567890123". + */ +static_inline u8 *write_u64_len_16_to_17_trim(u64 val, u8 *buf) { + u32 tz, tz1, tz2; + + u32 abbccddee = (u32)(val / 100000000); + u32 ffgghhii = (u32)(val - (u64)abbccddee * 100000000); + u32 abbcc = abbccddee / 10000; + u32 ddee = abbccddee - abbcc * 10000; + u32 abb = (u32)(((u64)abbcc * 167773) >> 24); /* (abbcc / 100) */ + u32 a = (abb * 41) >> 12; /* (abb / 100) */ + u32 bb = abb - a * 100; /* (abb % 100) */ + u32 cc = abbcc - abb * 100; /* (abbcc % 100) */ + buf[0] = (u8)(a + '0'); + buf += a > 0; + byte_copy_2(buf + 0, digit_table + bb * 2); + byte_copy_2(buf + 2, digit_table + cc * 2); + + if (ffgghhii) { + u32 dd = (ddee * 5243) >> 19; /* (ddee / 100) */ + u32 ee = ddee - dd * 100; /* (ddee % 100) */ + u32 ffgg = (u32)(((u64)ffgghhii * 109951163) >> 40); /* (val / 10000) */ + u32 hhii = ffgghhii - ffgg * 10000; /* (val % 10000) */ + u32 ff = (ffgg * 5243) >> 19; /* (aabb / 100) */ + u32 gg = ffgg - ff * 100; /* (aabb % 100) */ + byte_copy_2(buf + 4, digit_table + dd * 2); + byte_copy_2(buf + 6, digit_table + ee * 2); + byte_copy_2(buf + 8, digit_table + ff * 2); + byte_copy_2(buf + 10, digit_table + gg * 2); + if (hhii) { + u32 hh = (hhii * 5243) >> 19; /* (ccdd / 100) */ + u32 ii = hhii - hh * 100; /* (ccdd % 100) */ + byte_copy_2(buf + 12, digit_table + hh * 2); + byte_copy_2(buf + 14, digit_table + ii * 2); + tz1 = dec_trailing_zero_table[hh]; + tz2 = dec_trailing_zero_table[ii]; + tz = ii ? tz2 : (tz1 + 2); + return buf + 16 - tz; + } else { + tz1 = dec_trailing_zero_table[ff]; + tz2 = dec_trailing_zero_table[gg]; + tz = gg ? tz2 : (tz1 + 2); + return buf + 12 - tz; + } + } else { + if (ddee) { + u32 dd = (ddee * 5243) >> 19; /* (ddee / 100) */ + u32 ee = ddee - dd * 100; /* (ddee % 100) */ + byte_copy_2(buf + 4, digit_table + dd * 2); + byte_copy_2(buf + 6, digit_table + ee * 2); + tz1 = dec_trailing_zero_table[dd]; + tz2 = dec_trailing_zero_table[ee]; + tz = ee ? tz2 : (tz1 + 2); + return buf + 8 - tz; + } else { + tz1 = dec_trailing_zero_table[bb]; + tz2 = dec_trailing_zero_table[cc]; + tz = cc ? tz2 : (tz1 + tz2); + return buf + 4 - tz; + } + } +} + +/** Write exponent part in range `e-45` to `e38`. */ +static_inline u8 *write_f32_exp(i32 exp, u8 *buf) { + bool lz; + byte_copy_2(buf, "e-"); + buf += 2 - (exp >= 0); + exp = exp < 0 ? -exp : exp; + lz = exp < 10; + byte_copy_2(buf + 0, digit_table + (u32)exp * 2 + lz); + return buf + 2 - lz; +} + +/** Write exponent part in range `e-324` to `e308`. */ +static_inline u8 *write_f64_exp(i32 exp, u8 *buf) { + byte_copy_2(buf, "e-"); + buf += 2 - (exp >= 0); + exp = exp < 0 ? -exp : exp; + if (exp < 100) { + bool lz = exp < 10; + byte_copy_2(buf + 0, digit_table + (u32)exp * 2 + lz); + return buf + 2 - lz; + } else { + u32 hi = ((u32)exp * 656) >> 16; /* exp / 100 */ + u32 lo = (u32)exp - hi * 100; /* exp % 100 */ + buf[0] = (u8)((u8)hi + (u8)'0'); + byte_copy_2(buf + 1, digit_table + lo * 2); + return buf + 3; + } +} + +/** Magic number for fast `divide by power of 10`. */ +typedef struct { + u64 p10, mul; + u32 shr1, shr2; +} div_pow10_magic; + +/** Generated with llvm, see https://github.com/llvm/llvm-project/ + blob/main/llvm/lib/Support/DivisionByConstantInfo.cpp */ +static const div_pow10_magic div_pow10_table[] = { + { U64(0x00000000, 0x00000001), U64(0x00000000, 0x00000000), 0, 0 }, + { U64(0x00000000, 0x0000000A), U64(0xCCCCCCCC, 0xCCCCCCCD), 0, 3 }, + { U64(0x00000000, 0x00000064), U64(0x28F5C28F, 0x5C28F5C3), 2, 2 }, + { U64(0x00000000, 0x000003E8), U64(0x20C49BA5, 0xE353F7CF), 3, 4 }, + { U64(0x00000000, 0x00002710), U64(0x346DC5D6, 0x3886594B), 0, 11 }, + { U64(0x00000000, 0x000186A0), U64(0x0A7C5AC4, 0x71B47843), 5, 7 }, + { U64(0x00000000, 0x000F4240), U64(0x431BDE82, 0xD7B634DB), 0, 18 }, + { U64(0x00000000, 0x00989680), U64(0xD6BF94D5, 0xE57A42BD), 0, 23 }, + { U64(0x00000000, 0x05F5E100), U64(0xABCC7711, 0x8461CEFD), 0, 26 }, + { U64(0x00000000, 0x3B9ACA00), U64(0x0044B82F, 0xA09B5A53), 9, 11 }, + { U64(0x00000002, 0x540BE400), U64(0xDBE6FECE, 0xBDEDD5BF), 0, 33 }, + { U64(0x00000017, 0x4876E800), U64(0xAFEBFF0B, 0xCB24AAFF), 0, 36 }, + { U64(0x000000E8, 0xD4A51000), U64(0x232F3302, 0x5BD42233), 0, 37 }, + { U64(0x00000918, 0x4E72A000), U64(0x384B84D0, 0x92ED0385), 0, 41 }, + { U64(0x00005AF3, 0x107A4000), U64(0x0B424DC3, 0x5095CD81), 0, 42 }, + { U64(0x00038D7E, 0xA4C68000), U64(0x00024075, 0xF3DCEAC3), 15, 20 }, + { U64(0x002386F2, 0x6FC10000), U64(0x39A5652F, 0xB1137857), 0, 51 }, + { U64(0x01634578, 0x5D8A0000), U64(0x00005C3B, 0xD5191B53), 17, 22 }, + { U64(0x0DE0B6B3, 0xA7640000), U64(0x000049C9, 0x7747490F), 18, 24 }, + { U64(0x8AC72304, 0x89E80000), U64(0x760F253E, 0xDB4AB0d3), 0, 62 }, +}; + +/** Divide a number by power of 10. */ +static_inline void div_pow10(u64 num, u32 exp, u64 *div, u64 *mod, u64 *p10) { + u64 hi, lo; + div_pow10_magic m = div_pow10_table[exp]; + u128_mul(num >> m.shr1, m.mul, &hi, &lo); + *div = hi >> m.shr2; + *mod = num - (*div * m.p10); + *p10 = m.p10; +} + +/** Multiplies 64-bit integer and returns highest 64-bit rounded value. */ +static_inline u32 u64_round_to_odd(u64 u, u32 cp) { + u64 hi, lo; + u32 y_hi, y_lo; + u128_mul(cp, u, &hi, &lo); + y_hi = (u32)hi; + y_lo = (u32)(lo >> 32); + return y_hi | (y_lo > 1); +} + +/** Multiplies 128-bit integer and returns highest 64-bit rounded value. */ +static_inline u64 u128_round_to_odd(u64 hi, u64 lo, u64 cp) { + u64 x_hi, x_lo, y_hi, y_lo; + u128_mul(cp, lo, &x_hi, &x_lo); + u128_mul_add(cp, hi, x_hi, &y_hi, &y_lo); + return y_hi | (y_lo > 1); +} + +/** Convert f32 from binary to decimal (shortest but may have trailing zeros). + The input should not be 0, inf or nan. */ +static_inline void f32_bin_to_dec(u32 sig_raw, u32 exp_raw, + u32 sig_bin, i32 exp_bin, + u32 *sig_dec, i32 *exp_dec) { + + bool is_even, irregular, round_up, trim; + bool u0_inside, u1_inside, w0_inside, w1_inside; + u64 p10_hi, p10_lo, hi, lo; + u32 s, sp, cb, cbl, cbr, vb, vbl, vbr, upper, lower, mid; + i32 k, h; + + /* Fast path, see f64_bin_to_dec(). */ + while (likely(sig_raw)) { + u32 mod, dec, add_1, add_10, s_hi, s_lo; + u32 c, half_ulp, t0, t1; + + /* k = floor(exp_bin * log10(2)); */ + /* h = exp_bin + floor(log2(10) * -k); (h = 0/1/2/3) */ + k = (i32)(exp_bin * 315653) >> 20; + h = exp_bin + ((-k * 217707) >> 16); + pow10_table_get_sig(-k, &p10_hi, &p10_lo); + + /* sig_bin << (1/2/3/4) */ + cb = sig_bin << (h + 1); + u128_mul(cb, p10_hi, &hi, &lo); + s_hi = (u32)(hi); + s_lo = (u32)(lo >> 32); + mod = s_hi % 10; + dec = s_hi - mod; + + /* right shift 4 to fit in u32 */ + c = (mod << (32 - 4)) | (s_lo >> 4); + half_ulp = (u32)(p10_hi >> (32 + 4 - h)); + + /* check w1, u0, w0 range */ + w1_inside = (s_lo >= ((u32)1 << 31)); + if (unlikely(s_lo == ((u32)1 << 31))) break; + u0_inside = (half_ulp >= c); + if (unlikely(half_ulp == c)) break; + t0 = (u32)10 << (32 - 4); + t1 = c + half_ulp; + w0_inside = (t1 >= t0); + if (unlikely(t0 - t1 <= (u32)1)) break; + + trim = (u0_inside | w0_inside); + add_10 = (w0_inside ? 10 : 0); + add_1 = mod + w1_inside; + *sig_dec = dec + (trim ? add_10 : add_1); + *exp_dec = k; + return; + } + + /* Schubfach algorithm, see f64_bin_to_dec(). */ + irregular = (sig_raw == 0 && exp_raw > 1); + is_even = !(sig_bin & 1); + cbl = 4 * sig_bin - 2 + irregular; + cb = 4 * sig_bin; + cbr = 4 * sig_bin + 2; + + /* k = floor(exp_bin * log10(2) + (irregular ? log10(3.0 / 4.0) : 0)); */ + /* h = exp_bin + floor(log2(10) * -k) + 1; (h = 1/2/3/4) */ + k = (i32)(exp_bin * 315653 - (irregular ? 131237 : 0)) >> 20; + h = exp_bin + ((-k * 217707) >> 16) + 1; + pow10_table_get_sig(-k, &p10_hi, &p10_lo); + p10_hi += 1; + + vbl = u64_round_to_odd(p10_hi, cbl << h); + vb = u64_round_to_odd(p10_hi, cb << h); + vbr = u64_round_to_odd(p10_hi, cbr << h); + lower = vbl + !is_even; + upper = vbr - !is_even; + + s = vb / 4; + if (s >= 10) { + sp = s / 10; + u0_inside = (lower <= 40 * sp); + w0_inside = (upper >= 40 * sp + 40); + if (u0_inside != w0_inside) { + *sig_dec = sp * 10 + (w0_inside ? 10 : 0); + *exp_dec = k; + return; + } + } + u1_inside = (lower <= 4 * s); + w1_inside = (upper >= 4 * s + 4); + mid = 4 * s + 2; + round_up = (vb > mid) || (vb == mid && (s & 1) != 0); + *sig_dec = s + ((u1_inside != w1_inside) ? w1_inside : round_up); + *exp_dec = k; +} + +/** Convert f64 from binary to decimal (shortest but may have trailing zeros). + The input should not be 0, inf or nan. */ +static_inline void f64_bin_to_dec(u64 sig_raw, u32 exp_raw, + u64 sig_bin, i32 exp_bin, + u64 *sig_dec, i32 *exp_dec) { + + bool is_even, irregular, round_up, trim; + bool u0_inside, u1_inside, w0_inside, w1_inside; + u64 s, sp, cb, cbl, cbr, vb, vbl, vbr, p10_hi, p10_lo, upper, lower, mid; + i32 k, h; + + /* + Fast path: + For regular spacing significand 'c', there are 4 candidates: + + u0 u1 c w1 w0 + ----|----|----|----|----|-*--|----|----|----|----|----|----|----|---- + 9 0 1 2 3 4 5 6 7 8 9 0 1 + |___________________|___________________| + 1ulp + + The `1ulp` is in the range [1.0, 10.0). + If (c - 0.5ulp < u0), trim the last digit and round down. + If (c + 0.5ulp > w0), trim the last digit and round up. + If (c - 0.5ulp < u1), round down. + If (c + 0.5ulp > w1), round up. + */ + while (likely(sig_raw)) { + u64 mod, dec, add_1, add_10, s_hi, s_lo; + u64 c, half_ulp, t0, t1; + + /* k = floor(exp_bin * log10(2)); */ + /* h = exp_bin + floor(log2(10) * -k); (h = 0/1/2/3) */ + k = (i32)(exp_bin * 315653) >> 20; + h = exp_bin + ((-k * 217707) >> 16); + pow10_table_get_sig(-k, &p10_hi, &p10_lo); + + /* sig_bin << (1/2/3/4) */ + cb = sig_bin << (h + 1); + u128_mul(cb, p10_lo, &s_hi, &s_lo); + u128_mul_add(cb, p10_hi, s_hi, &s_hi, &s_lo); + mod = s_hi % 10; + dec = s_hi - mod; + + /* right shift 4 to fit in u64 */ + c = (mod << (64 - 4)) | (s_lo >> 4); + half_ulp = p10_hi >> (4 - h); + + /* check w1, u0, w0 range */ + w1_inside = (s_lo >= ((u64)1 << 63)); + if (unlikely(s_lo == ((u64)1 << 63))) break; + u0_inside = (half_ulp >= c); + if (unlikely(half_ulp == c)) break; + t0 = ((u64)10 << (64 - 4)); + t1 = c + half_ulp; + w0_inside = (t1 >= t0); + if (unlikely(t0 - t1 <= (u64)1)) break; + + trim = (u0_inside | w0_inside); + add_10 = (w0_inside ? 10 : 0); + add_1 = mod + w1_inside; + *sig_dec = dec + (trim ? add_10 : add_1); + *exp_dec = k; + return; + } + + /* + Schubfach algorithm: + Raffaello Giulietti, The Schubfach way to render doubles, 2022. + https://drive.google.com/file/d/1gp5xv4CAa78SVgCeWfGqqI4FfYYYuNFb (Paper) + https://github.com/openjdk/jdk/pull/3402 (Java implementation) + https://github.com/abolz/Drachennest (C++ implementation) + */ + irregular = (sig_raw == 0 && exp_raw > 1); + is_even = !(sig_bin & 1); + cbl = 4 * sig_bin - 2 + irregular; + cb = 4 * sig_bin; + cbr = 4 * sig_bin + 2; + + /* k = floor(exp_bin * log10(2) + (irregular ? log10(3.0 / 4.0) : 0)); */ + /* h = exp_bin + floor(log2(10) * -k) + 1; (h = 1/2/3/4) */ + k = (i32)(exp_bin * 315653 - (irregular ? 131237 : 0)) >> 20; + h = exp_bin + ((-k * 217707) >> 16) + 1; + pow10_table_get_sig(-k, &p10_hi, &p10_lo); + p10_lo += 1; + + vbl = u128_round_to_odd(p10_hi, p10_lo, cbl << h); + vb = u128_round_to_odd(p10_hi, p10_lo, cb << h); + vbr = u128_round_to_odd(p10_hi, p10_lo, cbr << h); + lower = vbl + !is_even; + upper = vbr - !is_even; + + s = vb / 4; + if (s >= 10) { + sp = s / 10; + u0_inside = (lower <= 40 * sp); + w0_inside = (upper >= 40 * sp + 40); + if (u0_inside != w0_inside) { + *sig_dec = sp * 10 + (w0_inside ? 10 : 0); + *exp_dec = k; + return; + } + } + u1_inside = (lower <= 4 * s); + w1_inside = (upper >= 4 * s + 4); + mid = 4 * s + 2; + round_up = (vb > mid) || (vb == mid && (s & 1) != 0); + *sig_dec = s + ((u1_inside != w1_inside) ? w1_inside : round_up); + *exp_dec = k; +} + +/** Convert f64 from binary to decimal (fast but not the shortest). + The input should not be 0, inf, nan. */ +static_inline void f64_bin_to_dec_fast(u64 sig_raw, u32 exp_raw, + u64 sig_bin, i32 exp_bin, + u64 *sig_dec, i32 *exp_dec, + bool *round_up) { + u64 cb, p10_hi, p10_lo, s_hi, s_lo; + i32 k, h; + bool irregular, u; + + irregular = (sig_raw == 0 && exp_raw > 1); + + /* k = floor(exp_bin * log10(2) + (irregular ? log10(3.0 / 4.0) : 0)); */ + /* h = exp_bin + floor(log2(10) * -k) + 1; (h = 1/2/3/4) */ + k = (i32)(exp_bin * 315653 - (irregular ? 131237 : 0)) >> 20; + h = exp_bin + ((-k * 217707) >> 16); + pow10_table_get_sig(-k, &p10_hi, &p10_lo); + + /* sig_bin << (1/2/3/4) */ + cb = sig_bin << (h + 1); + u128_mul(cb, p10_lo, &s_hi, &s_lo); + u128_mul_add(cb, p10_hi, s_hi, &s_hi, &s_lo); + + /* round up */ + u = s_lo >= (irregular ? U64(0x55555555, 0x55555555) : ((u64)1 << 63)); + + *sig_dec = s_hi + u; + *exp_dec = k; + *round_up = u; + return; +} + +/** Write inf/nan if allowed. */ +static_inline u8 *write_inf_or_nan(u8 *buf, yyjson_write_flag flg, + u64 sig_raw, bool sign) { + if (has_flg(INF_AND_NAN_AS_NULL)) { + byte_copy_4(buf, "null"); + return buf + 4; + } + if (has_allow(INF_AND_NAN)) { + if (sig_raw == 0) { + buf[0] = '-'; + buf += sign; + byte_copy_8(buf, "Infinity"); + return buf + 8; + } else { + byte_copy_4(buf, "NaN"); + return buf + 3; + } + } + return NULL; +} + +/** + Write a float number (requires 40 bytes buffer). + We follow the ECMAScript specification for printing floating-point numbers, + similar to `Number.prototype.toString()`, but with the following changes: + 1. Keep the negative sign of `-0.0` to preserve input information. + 2. Keep decimal point to indicate the number is floating point. + 3. Remove positive sign in the exponent part. + */ +static_noinline u8 *write_f32_raw(u8 *buf, u64 raw_f64, + yyjson_write_flag flg) { + u32 sig_bin, sig_dec, sig_raw; + i32 exp_bin, exp_dec, sig_len, dot_ofs; + u32 exp_raw, raw; + u8 *end; + bool sign; + + /* cast double to float */ + raw = f32_to_bits(f64_to_f32(f64_from_bits(raw_f64))); + + /* decode raw bytes from IEEE-754 double format. */ + sign = (bool)(raw >> (F32_BITS - 1)); + sig_raw = raw & F32_SIG_MASK; + exp_raw = (raw & F32_EXP_MASK) >> F32_SIG_BITS; + + /* return inf or nan */ + if (unlikely(exp_raw == ((u32)1 << F32_EXP_BITS) - 1)) { + return write_inf_or_nan(buf, flg, sig_raw, sign); + } + + /* add sign for all finite number */ + buf[0] = '-'; + buf += sign; + + /* return zero */ + if ((raw << 1) == 0) { + byte_copy_4(buf, "0.0"); + return buf + 3; + } + + if (likely(exp_raw != 0)) { + /* normal number */ + sig_bin = sig_raw | ((u32)1 << F32_SIG_BITS); + exp_bin = (i32)exp_raw - F32_EXP_BIAS - F32_SIG_BITS; + + /* fast path for small integer number without fraction */ + if ((-F32_SIG_BITS <= exp_bin && exp_bin <= 0) && + (u64_tz_bits(sig_bin) >= (u32)-exp_bin)) { + sig_dec = sig_bin >> -exp_bin; /* range: [1, 0xFFFFFF] */ + buf = write_u32_len_1_to_8(sig_dec, buf); + byte_copy_2(buf, ".0"); + return buf + 2; + } + + /* binary to decimal */ + f32_bin_to_dec(sig_raw, exp_raw, sig_bin, exp_bin, &sig_dec, &exp_dec); + + /* the sig length is 7 or 9 */ + sig_len = 7 + (sig_dec >= (u32)10000000) + (sig_dec >= (u32)100000000); + + /* the decimal point offset relative to the first digit */ + dot_ofs = sig_len + exp_dec; + + if (-6 < dot_ofs && dot_ofs <= 21) { + i32 num_sep_pos, dot_set_pos, pre_ofs; + u8 *num_hdr, *num_end, *num_sep, *dot_end; + bool no_pre_zero; + + /* fill zeros */ + memset(buf, '0', 32); + + /* not prefixed with zero, e.g. 1.234, 1234.0 */ + no_pre_zero = (dot_ofs > 0); + + /* write the number as digits */ + pre_ofs = no_pre_zero ? 0 : (2 - dot_ofs); + num_hdr = buf + pre_ofs; + num_end = write_u32_len_7_to_9_trim(sig_dec, num_hdr); + + /* seperate these digits to leave a space for dot */ + num_sep_pos = no_pre_zero ? dot_ofs : 0; + num_sep = num_hdr + num_sep_pos; + byte_move_8(num_sep + no_pre_zero, num_sep); + num_end += no_pre_zero; + + /* write the dot */ + dot_set_pos = yyjson_max(dot_ofs, 1); + buf[dot_set_pos] = '.'; + + /* return the ending */ + dot_end = buf + dot_ofs + 2; + return yyjson_max(dot_end, num_end); + + } else { + /* write with scientific notation, e.g. 1.234e56 */ + end = write_u32_len_7_to_9_trim(sig_dec, buf + 1); + end -= (end == buf + 2); /* remove '.0', e.g. 2.0e34 -> 2e34 */ + exp_dec += sig_len - 1; + buf[0] = buf[1]; + buf[1] = '.'; + return write_f32_exp(exp_dec, end); + } + + } else { + /* subnormal number */ + sig_bin = sig_raw; + exp_bin = 1 - F32_EXP_BIAS - F32_SIG_BITS; + + /* binary to decimal */ + f32_bin_to_dec(sig_raw, exp_raw, sig_bin, exp_bin, &sig_dec, &exp_dec); + + /* write significand part */ + end = write_u32_len_1_to_8(sig_dec, buf + 1); + buf[0] = buf[1]; + buf[1] = '.'; + exp_dec += (i32)(end - buf) - 2; + + /* trim trailing zeros */ + end -= *(end - 1) == '0'; /* branchless for last zero */ + end -= *(end - 1) == '0'; /* branchless for second last zero */ + while (*(end - 1) == '0') end--; /* for unlikely more zeros */ + end -= *(end - 1) == '.'; /* remove dot, e.g. 2.e-321 -> 2e-321 */ + + /* write exponent part */ + return write_f32_exp(exp_dec, end); + } +} + +/** + Write a double number (requires 40 bytes buffer). + We follow the ECMAScript specification for printing floating-point numbers, + similar to `Number.prototype.toString()`, but with the following changes: + 1. Keep the negative sign of `-0.0` to preserve input information. + 2. Keep decimal point to indicate the number is floating point. + 3. Remove positive sign in the exponent part. + */ +static_noinline u8 *write_f64_raw(u8 *buf, u64 raw, yyjson_write_flag flg) { + u64 sig_bin, sig_dec, sig_raw; + i32 exp_bin, exp_dec, sig_len, dot_ofs; + u32 exp_raw; + u8 *end; + bool sign; + + /* decode raw bytes from IEEE-754 double format. */ + sign = (bool)(raw >> (F64_BITS - 1)); + sig_raw = raw & F64_SIG_MASK; + exp_raw = (u32)((raw & F64_EXP_MASK) >> F64_SIG_BITS); + + /* return inf or nan */ + if (unlikely(exp_raw == ((u32)1 << F64_EXP_BITS) - 1)) { + return write_inf_or_nan(buf, flg, sig_raw, sign); + } + + /* add sign for all finite number */ + buf[0] = '-'; + buf += sign; + + /* return zero */ + if ((raw << 1) == 0) { + byte_copy_4(buf, "0.0"); + return buf + 3; + } + + if (likely(exp_raw != 0)) { + /* normal number */ + sig_bin = sig_raw | ((u64)1 << F64_SIG_BITS); + exp_bin = (i32)exp_raw - F64_EXP_BIAS - F64_SIG_BITS; + + /* fast path for small integer number without fraction */ + if ((-F64_SIG_BITS <= exp_bin && exp_bin <= 0) && + (u64_tz_bits(sig_bin) >= (u32)-exp_bin)) { + sig_dec = sig_bin >> -exp_bin; /* range: [1, 0x1FFFFFFFFFFFFF] */ + buf = write_u64_len_1_to_16(sig_dec, buf); + byte_copy_2(buf, ".0"); + return buf + 2; + } + + /* binary to decimal */ + f64_bin_to_dec(sig_raw, exp_raw, sig_bin, exp_bin, &sig_dec, &exp_dec); + + /* the sig length is 16 or 17 */ + sig_len = 16 + (sig_dec >= (u64)100000000 * 100000000); + + /* the decimal point offset relative to the first digit */ + dot_ofs = sig_len + exp_dec; + + if (-6 < dot_ofs && dot_ofs <= 21) { + i32 num_sep_pos, dot_set_pos, pre_ofs; + u8 *num_hdr, *num_end, *num_sep, *dot_end; + bool no_pre_zero; + + /* fill zeros */ + memset(buf, '0', 32); + + /* not prefixed with zero, e.g. 1.234, 1234.0 */ + no_pre_zero = (dot_ofs > 0); + + /* write the number as digits */ + pre_ofs = no_pre_zero ? 0 : (2 - dot_ofs); + num_hdr = buf + pre_ofs; + num_end = write_u64_len_16_to_17_trim(sig_dec, num_hdr); + + /* seperate these digits to leave a space for dot */ + num_sep_pos = no_pre_zero ? dot_ofs : 0; + num_sep = num_hdr + num_sep_pos; + byte_move_16(num_sep + no_pre_zero, num_sep); + num_end += no_pre_zero; + + /* write the dot */ + dot_set_pos = yyjson_max(dot_ofs, 1); + buf[dot_set_pos] = '.'; + + /* return the ending */ + dot_end = buf + dot_ofs + 2; + return yyjson_max(dot_end, num_end); + + } else { + /* write with scientific notation, e.g. 1.234e56 */ + end = write_u64_len_16_to_17_trim(sig_dec, buf + 1); + end -= (end == buf + 2); /* remove '.0', e.g. 2.0e34 -> 2e34 */ + exp_dec += sig_len - 1; + buf[0] = buf[1]; + buf[1] = '.'; + return write_f64_exp(exp_dec, end); + } + + } else { + /* subnormal number */ + sig_bin = sig_raw; + exp_bin = 1 - F64_EXP_BIAS - F64_SIG_BITS; + + /* binary to decimal */ + f64_bin_to_dec(sig_raw, exp_raw, sig_bin, exp_bin, &sig_dec, &exp_dec); + + /* write significand part */ + end = write_u64_len_1_to_17(sig_dec, buf + 1); + buf[0] = buf[1]; + buf[1] = '.'; + exp_dec += (i32)(end - buf) - 2; + + /* trim trailing zeros */ + end -= *(end - 1) == '0'; /* branchless for last zero */ + end -= *(end - 1) == '0'; /* branchless for second last zero */ + while (*(end - 1) == '0') end--; /* for unlikely more zeros */ + end -= *(end - 1) == '.'; /* remove dot, e.g. 2.e-321 -> 2e-321 */ + + /* write exponent part */ + return write_f64_exp(exp_dec, end); + } +} + +/** + Write a double number using fixed-point notation (requires 40 bytes buffer). + + We follow the ECMAScript specification for printing floating-point numbers, + similar to `Number.prototype.toFixed(prec)`, but with the following changes: + 1. Keep the negative sign of `-0.0` to preserve input information. + 2. Keep decimal point to indicate the number is floating point. + 3. Remove positive sign in the exponent part. + 4. Remove trailing zeros and reduce unnecessary precision. + */ +static_noinline u8 *write_f64_raw_fixed(u8 *buf, u64 raw, yyjson_write_flag flg, + u32 prec) { + u64 sig_bin, sig_dec, sig_raw; + i32 exp_bin, exp_dec, sig_len, dot_ofs; + u32 exp_raw; + u8 *end; + bool sign; + + /* decode raw bytes from IEEE-754 double format. */ + sign = (bool)(raw >> (F64_BITS - 1)); + sig_raw = raw & F64_SIG_MASK; + exp_raw = (u32)((raw & F64_EXP_MASK) >> F64_SIG_BITS); + + /* return inf or nan */ + if (unlikely(exp_raw == ((u32)1 << F64_EXP_BITS) - 1)) { + return write_inf_or_nan(buf, flg, sig_raw, sign); + } + + /* add sign for all finite number */ + buf[0] = '-'; + buf += sign; + + /* return zero */ + if ((raw << 1) == 0) { + byte_copy_4(buf, "0.0"); + return buf + 3; + } + + if (likely(exp_raw != 0)) { + /* normal number */ + sig_bin = sig_raw | ((u64)1 << F64_SIG_BITS); + exp_bin = (i32)exp_raw - F64_EXP_BIAS - F64_SIG_BITS; + + /* fast path for small integer number without fraction */ + if ((-F64_SIG_BITS <= exp_bin && exp_bin <= 0) && + (u64_tz_bits(sig_bin) >= (u32)-exp_bin)) { + sig_dec = sig_bin >> -exp_bin; /* range: [1, 0x1FFFFFFFFFFFFF] */ + buf = write_u64_len_1_to_16(sig_dec, buf); + byte_copy_2(buf, ".0"); + return buf + 2; + } + + /* only `fabs(num) < 1e21` are processed here. */ + if ((raw << 1) < (U64(0x444B1AE4, 0xD6E2EF50) << 1)) { + i32 num_sep_pos, dot_set_pos, pre_ofs; + u8 *num_hdr, *num_end, *num_sep; + bool round_up, no_pre_zero; + + /* binary to decimal */ + f64_bin_to_dec_fast(sig_raw, exp_raw, sig_bin, exp_bin, + &sig_dec, &exp_dec, &round_up); + + /* the sig length is 16 or 17 */ + sig_len = 16 + (sig_dec >= (u64)100000000 * 100000000); + + /* limit the length of digits after the decimal point */ + if (exp_dec < -1) { + i32 sig_len_cut = -exp_dec - (i32)prec; + if (sig_len_cut > sig_len) { + byte_copy_4(buf, "0.0"); + return buf + 3; + } + if (sig_len_cut > 0) { + u64 div, mod, p10; + + /* remove round up */ + sig_dec -= round_up; + sig_len = 16 + (sig_dec >= (u64)100000000 * 100000000); + + /* cut off some digits */ + div_pow10(sig_dec, (u32)sig_len_cut, &div, &mod, &p10); + + /* add round up */ + sig_dec = div + (mod >= p10 / 2); + + /* update exp and sig length */ + exp_dec += sig_len_cut; + sig_len -= sig_len_cut; + sig_len += (sig_len >= 0) && + (sig_dec >= div_pow10_table[sig_len].p10); + } + if (sig_len <= 0) { + byte_copy_4(buf, "0.0"); + return buf + 3; + } + } + + /* fill zeros */ + memset(buf, '0', 32); + + /* the decimal point offset relative to the first digit */ + dot_ofs = sig_len + exp_dec; + + /* not prefixed with zero, e.g. 1.234, 1234.0 */ + no_pre_zero = (dot_ofs > 0); + + /* write the number as digits */ + pre_ofs = no_pre_zero ? 0 : (1 - dot_ofs); + num_hdr = buf + pre_ofs; + num_end = write_u64_len_1_to_17(sig_dec, num_hdr); + + /* seperate these digits to leave a space for dot */ + num_sep_pos = no_pre_zero ? dot_ofs : -dot_ofs; + num_sep = buf + num_sep_pos; + byte_move_16(num_sep + 1, num_sep); + num_end += (exp_dec < 0); + + /* write the dot */ + dot_set_pos = yyjson_max(dot_ofs, 1); + buf[dot_set_pos] = '.'; + + /* remove trailing zeros */ + buf += dot_set_pos + 2; + buf = yyjson_max(buf, num_end); + buf -= *(buf - 1) == '0'; /* branchless for last zero */ + buf -= *(buf - 1) == '0'; /* branchless for second last zero */ + while (*(buf - 1) == '0') buf--; /* for unlikely more zeros */ + buf += *(buf - 1) == '.'; /* keep a zero after dot */ + return buf; + + } else { + /* binary to decimal */ + f64_bin_to_dec(sig_raw, exp_raw, sig_bin, exp_bin, + &sig_dec, &exp_dec); + + /* the sig length is 16 or 17 */ + sig_len = 16 + (sig_dec >= (u64)100000000 * 100000000); + + /* write with scientific notation, e.g. 1.234e56 */ + end = write_u64_len_16_to_17_trim(sig_dec, buf + 1); + end -= (end == buf + 2); /* remove '.0', e.g. 2.0e34 -> 2e34 */ + exp_dec += sig_len - 1; + buf[0] = buf[1]; + buf[1] = '.'; + return write_f64_exp(exp_dec, end); + } + } else { + /* subnormal number */ + byte_copy_4(buf, "0.0"); + return buf + 3; + } +} + +#else /* FP_WRITER */ + +#if YYJSON_MSC_VER >= 1400 +#define snprintf_num(buf, len, fmt, dig, val) \ + sprintf_s((char *)buf, len, fmt, dig, val) +#elif defined(snprintf) || (YYJSON_STDC_VER >= 199901L) +#define snprintf_num(buf, len, fmt, dig, val) \ + snprintf((char *)buf, len, fmt, dig, val) +#else +#define snprintf_num(buf, len, fmt, dig, val) \ + sprintf((char *)buf, fmt, dig, val) +#endif + +static_noinline u8 *write_fp_reformat(u8 *buf, int len, + yyjson_write_flag flg, bool fixed) { + u8 *cur = buf; + if (unlikely(len < 1)) return NULL; + cur += (*cur == '-'); + if (unlikely(!char_is_digit(*cur))) { + /* nan, inf, or bad output */ + if (has_flg(INF_AND_NAN_AS_NULL)) { + byte_copy_4(buf, "null"); + return buf + 4; + } else if (has_allow(INF_AND_NAN)) { + if (*cur == 'i') { + byte_copy_8(cur, "Infinity"); + return cur + 8; + } else if (*cur == 'n') { + byte_copy_4(buf, "NaN"); + return buf + 3; + } + } + return NULL; + } else { + /* finite number */ + u8 *end = buf + len, *dot = NULL, *exp = NULL; + + /* + The snprintf() function is locale-dependent. For currently known + locales, (en, zh, ja, ko, am, he, hi) use '.' as the decimal point, + while other locales use ',' as the decimal point. we need to replace + ',' with '.' to avoid the locale setting. + */ + for (; cur < end; cur++) { + switch (*cur) { + case ',': *cur = '.'; /* fallthrough */ + case '.': dot = cur; break; + case 'e': exp = cur; break; + default: break; + } + } + if (fixed) { + /* remove trailing zeros */ + while (*(end - 1) == '0') end--; + end += *(end - 1) == '.'; + } else { + if (!dot && !exp) { + /* add decimal point, e.g. 123 -> 123.0 */ + byte_copy_2(end, ".0"); + end += 2; + } else if (exp) { + cur = exp + 1; + /* remove positive sign in the exponent part */ + if (*cur == '+') { + memmove(cur, cur + 1, (usize)(end - cur - 1)); + end--; + } + cur += (*cur == '-'); + /* remove leading zeros in the exponent part */ + if (*cur == '0') { + u8 *hdr = cur++; + while (*cur == '0') cur++; + memmove(hdr, cur, (usize)(end - cur)); + end -= (usize)(cur - hdr); + } + } + } + return end; + } +} + +/** Write a double number (requires 40 bytes buffer). */ +static_noinline u8 *write_f64_raw(u8 *buf, u64 raw, yyjson_write_flag flg) { +#if defined(DBL_DECIMAL_DIG) && DBL_DECIMAL_DIG < F64_DEC_DIG + int dig = DBL_DECIMAL_DIG; +#else + int dig = F64_DEC_DIG; +#endif + f64 val = f64_from_bits(raw); + int len = snprintf_num(buf, FP_BUF_LEN, "%.*g", dig, val); + return write_fp_reformat(buf, len, flg, false); +} + +/** Write a double number (requires 40 bytes buffer). */ +static_noinline u8 *write_f32_raw(u8 *buf, u64 raw, yyjson_write_flag flg) { +#if defined(FLT_DECIMAL_DIG) && FLT_DECIMAL_DIG < F32_DEC_DIG + int dig = FLT_DECIMAL_DIG; +#else + int dig = F32_DEC_DIG; +#endif + f64 val = (f64)f64_to_f32(f64_from_bits(raw)); + int len = snprintf_num(buf, FP_BUF_LEN, "%.*g", dig, val); + return write_fp_reformat(buf, len, flg, false); +} + +/** Write a double number (requires 40 bytes buffer). */ +static_noinline u8 *write_f64_raw_fixed(u8 *buf, u64 raw, + yyjson_write_flag flg, u32 prec) { + f64 val = (f64)f64_from_bits(raw); + if (-1e21 < val && val < 1e21) { + int len = snprintf_num(buf, FP_BUF_LEN, "%.*f", (int)prec, val); + return write_fp_reformat(buf, len, flg, true); + } else { + return write_f64_raw(buf, raw, flg); + } +} + +#endif /* FP_WRITER */ + +/** Write a JSON number (requires 40 bytes buffer). */ +static_inline u8 *write_num(u8 *cur, yyjson_val *val, yyjson_write_flag flg) { + if (!(val->tag & YYJSON_SUBTYPE_REAL)) { + u64 pos = val->uni.u64; + u64 neg = ~pos + 1; + usize sign = ((val->tag & YYJSON_SUBTYPE_SINT) > 0) & ((i64)pos < 0); + *cur = '-'; + return write_u64(sign ? neg : pos, cur + sign); + } else { + u64 raw = val->uni.u64; + u32 val_fmt = (u32)(val->tag >> 32); + u32 all_fmt = flg; + u32 fmt = val_fmt | all_fmt; + if (likely(!(fmt >> (32 - YYJSON_WRITE_FP_FLAG_BITS)))) { + /* double to shortest */ + return write_f64_raw(cur, raw, flg); + } else if (fmt >> (32 - YYJSON_WRITE_FP_PREC_BITS)) { + /* double to fixed */ + u32 val_prec = val_fmt >> (32 - YYJSON_WRITE_FP_PREC_BITS); + u32 all_prec = all_fmt >> (32 - YYJSON_WRITE_FP_PREC_BITS); + u32 prec = val_prec ? val_prec : all_prec; + return write_f64_raw_fixed(cur, raw, flg, prec); + } else { + if (fmt & YYJSON_WRITE_FP_TO_FLOAT) { + /* float to shortest */ + return write_f32_raw(cur, raw, flg); + } else { + /* double to shortest */ + return write_f64_raw(cur, raw, flg); + } + } + } +} + +char *yyjson_write_number(const yyjson_val *val, char *buf) { + if (unlikely(!val || !buf)) return NULL; + switch (val->tag & YYJSON_TAG_MASK) { + case YYJSON_TYPE_NUM | YYJSON_SUBTYPE_UINT: { + buf = (char *)write_u64(val->uni.u64, (u8 *)buf); + *buf = '\0'; + return buf; + } + case YYJSON_TYPE_NUM | YYJSON_SUBTYPE_SINT: { + u64 pos = val->uni.u64; + u64 neg = ~pos + 1; + usize sign = ((i64)pos < 0); + *buf = '-'; + buf = (char *)write_u64(sign ? neg : pos, (u8 *)buf + sign); + *buf = '\0'; + return buf; + } + case YYJSON_TYPE_NUM | YYJSON_SUBTYPE_REAL: { + u64 raw = val->uni.u64; + u32 fmt = (u32)(val->tag >> 32); + u32 flg = YYJSON_WRITE_ALLOW_INF_AND_NAN; + if (likely(!(fmt >> (32 - YYJSON_WRITE_FP_FLAG_BITS)))) { + buf = (char *)write_f64_raw((u8 *)buf, raw, flg); + } else if (fmt >> (32 - YYJSON_WRITE_FP_PREC_BITS)) { + u32 prec = fmt >> (32 - YYJSON_WRITE_FP_PREC_BITS); + buf = (char *)write_f64_raw_fixed((u8 *)buf, raw, flg, prec); + } else { + if (fmt & YYJSON_WRITE_FP_TO_FLOAT) { + buf = (char *)write_f32_raw((u8 *)buf, raw, flg); + } else { + buf = (char *)write_f64_raw((u8 *)buf, raw, flg); + } + } + if (buf) *buf = '\0'; + return buf; + } + default: return NULL; + } +} + + + +/*============================================================================== + * MARK: - String Writer (Private) + *============================================================================*/ + +/** Character encode type, if (type > CHAR_ENC_ERR_1) bytes = type / 2; */ +typedef u8 char_enc_type; +#define CHAR_ENC_CPY_1 0 /* 1-byte UTF-8, copy. */ +#define CHAR_ENC_ERR_1 1 /* 1-byte UTF-8, error. */ +#define CHAR_ENC_ESC_A 2 /* 1-byte ASCII, escaped as '\x'. */ +#define CHAR_ENC_ESC_1 3 /* 1-byte UTF-8, escaped as '\uXXXX'. */ +#define CHAR_ENC_CPY_2 4 /* 2-byte UTF-8, copy. */ +#define CHAR_ENC_ESC_2 5 /* 2-byte UTF-8, escaped as '\uXXXX'. */ +#define CHAR_ENC_CPY_3 6 /* 3-byte UTF-8, copy. */ +#define CHAR_ENC_ESC_3 7 /* 3-byte UTF-8, escaped as '\uXXXX'. */ +#define CHAR_ENC_CPY_4 8 /* 4-byte UTF-8, copy. */ +#define CHAR_ENC_ESC_4 9 /* 4-byte UTF-8, escaped as '\uXXXX\uXXXX'. */ + +/** Character encode type table: don't escape unicode, don't escape '/'. + (generate with misc/make_tables.c) */ +static const char_enc_type enc_table_cpy[256] = { + 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 3, 2, 2, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 8, 8, 8, 8, 8, 8, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1 +}; + +/** Character encode type table: don't escape unicode, escape '/'. + (generate with misc/make_tables.c) */ +static const char_enc_type enc_table_cpy_slash[256] = { + 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 3, 2, 2, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 8, 8, 8, 8, 8, 8, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1 +}; + +/** Character encode type table: escape unicode, don't escape '/'. + (generate with misc/make_tables.c) */ +static const char_enc_type enc_table_esc[256] = { + 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 3, 2, 2, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1 +}; + +/** Character encode type table: escape unicode, escape '/'. + (generate with misc/make_tables.c) */ +static const char_enc_type enc_table_esc_slash[256] = { + 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 3, 2, 2, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1 +}; + +/** Escaped hex character table: ["00" "01" "02" ... "FD" "FE" "FF"]. + (generate with misc/make_tables.c) */ +yyjson_align(2) +static const u8 esc_hex_char_table[512] = { + '0', '0', '0', '1', '0', '2', '0', '3', + '0', '4', '0', '5', '0', '6', '0', '7', + '0', '8', '0', '9', '0', 'A', '0', 'B', + '0', 'C', '0', 'D', '0', 'E', '0', 'F', + '1', '0', '1', '1', '1', '2', '1', '3', + '1', '4', '1', '5', '1', '6', '1', '7', + '1', '8', '1', '9', '1', 'A', '1', 'B', + '1', 'C', '1', 'D', '1', 'E', '1', 'F', + '2', '0', '2', '1', '2', '2', '2', '3', + '2', '4', '2', '5', '2', '6', '2', '7', + '2', '8', '2', '9', '2', 'A', '2', 'B', + '2', 'C', '2', 'D', '2', 'E', '2', 'F', + '3', '0', '3', '1', '3', '2', '3', '3', + '3', '4', '3', '5', '3', '6', '3', '7', + '3', '8', '3', '9', '3', 'A', '3', 'B', + '3', 'C', '3', 'D', '3', 'E', '3', 'F', + '4', '0', '4', '1', '4', '2', '4', '3', + '4', '4', '4', '5', '4', '6', '4', '7', + '4', '8', '4', '9', '4', 'A', '4', 'B', + '4', 'C', '4', 'D', '4', 'E', '4', 'F', + '5', '0', '5', '1', '5', '2', '5', '3', + '5', '4', '5', '5', '5', '6', '5', '7', + '5', '8', '5', '9', '5', 'A', '5', 'B', + '5', 'C', '5', 'D', '5', 'E', '5', 'F', + '6', '0', '6', '1', '6', '2', '6', '3', + '6', '4', '6', '5', '6', '6', '6', '7', + '6', '8', '6', '9', '6', 'A', '6', 'B', + '6', 'C', '6', 'D', '6', 'E', '6', 'F', + '7', '0', '7', '1', '7', '2', '7', '3', + '7', '4', '7', '5', '7', '6', '7', '7', + '7', '8', '7', '9', '7', 'A', '7', 'B', + '7', 'C', '7', 'D', '7', 'E', '7', 'F', + '8', '0', '8', '1', '8', '2', '8', '3', + '8', '4', '8', '5', '8', '6', '8', '7', + '8', '8', '8', '9', '8', 'A', '8', 'B', + '8', 'C', '8', 'D', '8', 'E', '8', 'F', + '9', '0', '9', '1', '9', '2', '9', '3', + '9', '4', '9', '5', '9', '6', '9', '7', + '9', '8', '9', '9', '9', 'A', '9', 'B', + '9', 'C', '9', 'D', '9', 'E', '9', 'F', + 'A', '0', 'A', '1', 'A', '2', 'A', '3', + 'A', '4', 'A', '5', 'A', '6', 'A', '7', + 'A', '8', 'A', '9', 'A', 'A', 'A', 'B', + 'A', 'C', 'A', 'D', 'A', 'E', 'A', 'F', + 'B', '0', 'B', '1', 'B', '2', 'B', '3', + 'B', '4', 'B', '5', 'B', '6', 'B', '7', + 'B', '8', 'B', '9', 'B', 'A', 'B', 'B', + 'B', 'C', 'B', 'D', 'B', 'E', 'B', 'F', + 'C', '0', 'C', '1', 'C', '2', 'C', '3', + 'C', '4', 'C', '5', 'C', '6', 'C', '7', + 'C', '8', 'C', '9', 'C', 'A', 'C', 'B', + 'C', 'C', 'C', 'D', 'C', 'E', 'C', 'F', + 'D', '0', 'D', '1', 'D', '2', 'D', '3', + 'D', '4', 'D', '5', 'D', '6', 'D', '7', + 'D', '8', 'D', '9', 'D', 'A', 'D', 'B', + 'D', 'C', 'D', 'D', 'D', 'E', 'D', 'F', + 'E', '0', 'E', '1', 'E', '2', 'E', '3', + 'E', '4', 'E', '5', 'E', '6', 'E', '7', + 'E', '8', 'E', '9', 'E', 'A', 'E', 'B', + 'E', 'C', 'E', 'D', 'E', 'E', 'E', 'F', + 'F', '0', 'F', '1', 'F', '2', 'F', '3', + 'F', '4', 'F', '5', 'F', '6', 'F', '7', + 'F', '8', 'F', '9', 'F', 'A', 'F', 'B', + 'F', 'C', 'F', 'D', 'F', 'E', 'F', 'F' +}; + +/** Escaped single character table. (generate with misc/make_tables.c) */ +yyjson_align(2) +static const u8 esc_single_char_table[512] = { + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + '\\', 'b', '\\', 't', '\\', 'n', ' ', ' ', + '\\', 'f', '\\', 'r', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', '\\', '"', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', '\\', '/', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + '\\', '\\', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' +}; + +/** Returns the encode table with options. */ +static_inline const char_enc_type *get_enc_table_with_flag( + yyjson_write_flag flg) { + if (has_flg(ESCAPE_UNICODE)) { + if (has_flg(ESCAPE_SLASHES)) { + return enc_table_esc_slash; + } else { + return enc_table_esc; + } + } else { + if (has_flg(ESCAPE_SLASHES)) { + return enc_table_cpy_slash; + } else { + return enc_table_cpy; + } + } +} + +/** Write raw string. */ +static_inline u8 *write_raw(u8 *cur, const u8 *raw, usize raw_len) { + memcpy(cur, raw, raw_len); + return cur + raw_len; +} + +/** + Write string no-escape. + @param cur Buffer cursor. + @param str A UTF-8 string, null-terminator is not required. + @param str_len Length of string in bytes. + @return The buffer cursor after string. + */ +static_inline u8 *write_str_noesc(u8 *cur, const u8 *str, usize str_len) { + *cur++ = '"'; + while (str_len >= 16) { + byte_copy_16(cur, str); + cur += 16; + str += 16; + str_len -= 16; + } + while (str_len >= 4) { + byte_copy_4(cur, str); + cur += 4; + str += 4; + str_len -= 4; + } + while (str_len) { + *cur++ = *str++; + str_len -= 1; + } + *cur++ = '"'; + return cur; +} + +/** + Write UTF-8 string (requires len * 6 + 2 bytes buffer). + @param cur Buffer cursor. + @param esc Escape unicode. + @param inv Allow invalid unicode. + @param str A UTF-8 string, null-terminator is not required. + @param str_len Length of string in bytes. + @param enc_table Encode type table for character. + @return The buffer cursor after string, or NULL on invalid unicode. + */ +static_inline u8 *write_str(u8 *cur, bool esc, bool inv, + const u8 *str, usize str_len, + const char_enc_type *enc_table) { + /* The replacement character U+FFFD, used to indicate invalid character. */ + const v32 rep = {{ 'F', 'F', 'F', 'D' }}; + const v32 pre = {{ '\\', 'u', '0', '0' }}; + + const u8 *src = str; + const u8 *end = str + str_len; + *cur++ = '"'; + +copy_ascii: + /* + Copy continuous ASCII, loop unrolling, same as the following code: + + while (end > src) ( + if (unlikely(enc_table[*src])) break; + *cur++ = *src++; + ); + */ +#define expr_jump(i) \ + if (unlikely(enc_table[src[i]])) goto stop_char_##i; + +#define expr_stop(i) \ + stop_char_##i: \ + memcpy(cur, src, i); \ + cur += i; src += i; goto copy_utf8; + + while (end - src >= 16) { + repeat16_incr(expr_jump) + byte_copy_16(cur, src); + cur += 16; src += 16; + } + + while (end - src >= 4) { + repeat4_incr(expr_jump) + byte_copy_4(cur, src); + cur += 4; src += 4; + } + + while (end > src) { + expr_jump(0) + *cur++ = *src++; + } + + *cur++ = '"'; + return cur; + + repeat16_incr(expr_stop) + +#undef expr_jump +#undef expr_stop + +copy_utf8: + if (unlikely(src + 4 > end)) { + if (end == src) goto copy_end; + if (end - src < enc_table[*src] / 2) goto err_one; + } + switch (enc_table[*src]) { + case CHAR_ENC_CPY_1: { + *cur++ = *src++; + goto copy_ascii; + } + case CHAR_ENC_CPY_2: { +#if YYJSON_DISABLE_UTF8_VALIDATION + byte_copy_2(cur, src); +#else + u32 uni = 0; + byte_copy_2(&uni, src); + if (unlikely(!is_utf8_seq2(uni))) goto err_cpy; + byte_copy_2(cur, &uni); +#endif + cur += 2; + src += 2; + goto copy_utf8; + } + case CHAR_ENC_CPY_3: { +#if YYJSON_DISABLE_UTF8_VALIDATION + if (likely(src + 4 <= end)) { + byte_copy_4(cur, src); + } else { + byte_copy_2(cur, src); + cur[2] = src[2]; + } +#else + u32 uni, tmp; + if (likely(src + 4 <= end)) { + uni = byte_load_4(src); + if (unlikely(!is_utf8_seq3(uni))) goto err_cpy; + byte_copy_4(cur, src); + } else { + uni = byte_load_3(src); + if (unlikely(!is_utf8_seq3(uni))) goto err_cpy; + byte_copy_4(cur, &uni); + } +#endif + cur += 3; + src += 3; + goto copy_utf8; + } + case CHAR_ENC_CPY_4: { +#if YYJSON_DISABLE_UTF8_VALIDATION + byte_copy_4(cur, src); +#else + u32 uni, tmp; + uni = byte_load_4(src); + if (unlikely(!is_utf8_seq4(uni))) goto err_cpy; + byte_copy_4(cur, src); +#endif + cur += 4; + src += 4; + goto copy_utf8; + } + case CHAR_ENC_ESC_A: { + byte_copy_2(cur, &esc_single_char_table[*src * 2]); + cur += 2; + src += 1; + goto copy_utf8; + } + case CHAR_ENC_ESC_1: { + byte_copy_4(cur + 0, &pre); + byte_copy_2(cur + 4, &esc_hex_char_table[*src * 2]); + cur += 6; + src += 1; + goto copy_utf8; + } + case CHAR_ENC_ESC_2: { + u16 u; +#if !YYJSON_DISABLE_UTF8_VALIDATION + u32 v4 = 0; + u16 v2 = byte_load_2(src); + byte_copy_2(&v4, &v2); + if (unlikely(!is_utf8_seq2(v4))) goto err_esc; +#endif + u = (u16)(((u16)(src[0] & 0x1F) << 6) | + ((u16)(src[1] & 0x3F) << 0)); + byte_copy_2(cur + 0, &pre); + byte_copy_2(cur + 2, &esc_hex_char_table[(u >> 8) * 2]); + byte_copy_2(cur + 4, &esc_hex_char_table[(u & 0xFF) * 2]); + cur += 6; + src += 2; + goto copy_utf8; + } + case CHAR_ENC_ESC_3: { + u16 u; + u32 v, tmp; +#if !YYJSON_DISABLE_UTF8_VALIDATION + v = byte_load_3(src); + if (unlikely(!is_utf8_seq3(v))) goto err_esc; +#endif + u = (u16)(((u16)(src[0] & 0x0F) << 12) | + ((u16)(src[1] & 0x3F) << 6) | + ((u16)(src[2] & 0x3F) << 0)); + byte_copy_2(cur + 0, &pre); + byte_copy_2(cur + 2, &esc_hex_char_table[(u >> 8) * 2]); + byte_copy_2(cur + 4, &esc_hex_char_table[(u & 0xFF) * 2]); + cur += 6; + src += 3; + goto copy_utf8; + } + case CHAR_ENC_ESC_4: { + u32 hi, lo, u, v, tmp; +#if !YYJSON_DISABLE_UTF8_VALIDATION + v = byte_load_4(src); + if (unlikely(!is_utf8_seq4(v))) goto err_esc; +#endif + u = ((u32)(src[0] & 0x07) << 18) | + ((u32)(src[1] & 0x3F) << 12) | + ((u32)(src[2] & 0x3F) << 6) | + ((u32)(src[3] & 0x3F) << 0); + u -= 0x10000; + hi = (u >> 10) + 0xD800; + lo = (u & 0x3FF) + 0xDC00; + byte_copy_2(cur + 0, &pre); + byte_copy_2(cur + 2, &esc_hex_char_table[(hi >> 8) * 2]); + byte_copy_2(cur + 4, &esc_hex_char_table[(hi & 0xFF) * 2]); + byte_copy_2(cur + 6, &pre); + byte_copy_2(cur + 8, &esc_hex_char_table[(lo >> 8) * 2]); + byte_copy_2(cur + 10, &esc_hex_char_table[(lo & 0xFF) * 2]); + cur += 12; + src += 4; + goto copy_utf8; + } + case CHAR_ENC_ERR_1: { + goto err_one; + } + default: break; /* unreachable */ + } + +copy_end: + *cur++ = '"'; + return cur; + +err_one: + if (esc) goto err_esc; + else goto err_cpy; + +err_cpy: + if (!inv) return NULL; + *cur++ = *src++; + goto copy_utf8; + +err_esc: + if (!inv) return NULL; + byte_copy_2(cur + 0, &pre); + byte_copy_4(cur + 2, &rep); + cur += 6; + src += 1; + goto copy_utf8; +} + + + +/*============================================================================== + * MARK: - JSON Writer Utilities (Private) + *============================================================================*/ + +/** Write null (requires 8 bytes buffer). */ +static_inline u8 *write_null(u8 *cur) { + v64 v = {{ 'n', 'u', 'l', 'l', ',', '\n', 0, 0 }}; + byte_copy_8(cur, &v); + return cur + 4; +} + +/** Write bool (requires 8 bytes buffer). */ +static_inline u8 *write_bool(u8 *cur, bool val) { + v64 v0 = {{ 'f', 'a', 'l', 's', 'e', ',', '\n', 0 }}; + v64 v1 = {{ 't', 'r', 'u', 'e', ',', '\n', 0, 0 }}; + if (val) { + byte_copy_8(cur, &v1); + } else { + byte_copy_8(cur, &v0); + } + return cur + 5 - val; +} + +/** Write indent (requires level x 4 bytes buffer). + Param spaces should not larger than 4. */ +static_inline u8 *write_indent(u8 *cur, usize level, usize spaces) { + while (level-- > 0) { + byte_copy_4(cur, " "); + cur += spaces; + } + return cur; +} + +/** Write data to file pointer. */ +static bool write_dat_to_fp(FILE *fp, u8 *dat, usize len, + yyjson_write_err *err) { + if (fwrite(dat, len, 1, fp) != 1) { + err->msg = "file writing failed"; + err->code = YYJSON_WRITE_ERROR_FILE_WRITE; + return false; + } + return true; +} + +/** Write data to file. */ +static bool write_dat_to_file(const char *path, u8 *dat, usize len, + yyjson_write_err *err) { +#define return_err(_code, _msg) do { \ + err->msg = _msg; \ + err->code = YYJSON_WRITE_ERROR_##_code; \ + if (file) fclose(file); \ + return false; \ +} while (false) + + FILE *file = fopen_writeonly(path); + if (file == NULL) { + return_err(FILE_OPEN, MSG_FOPEN); + } + if (fwrite(dat, len, 1, file) != 1) { + return_err(FILE_WRITE, MSG_FWRITE); + } + if (fclose(file) != 0) { + file = NULL; + return_err(FILE_WRITE, MSG_FCLOSE); + } + return true; + +#undef return_err +} + + + +/*============================================================================== + * MARK: - JSON Writer Implementation (Private) + *============================================================================*/ + +typedef struct yyjson_write_ctx { + usize tag; +} yyjson_write_ctx; + +static_inline void yyjson_write_ctx_set(yyjson_write_ctx *ctx, + usize size, bool is_obj) { + ctx->tag = (size << 1) | (usize)is_obj; +} + +static_inline void yyjson_write_ctx_get(yyjson_write_ctx *ctx, + usize *size, bool *is_obj) { + usize tag = ctx->tag; + *size = tag >> 1; + *is_obj = (bool)(tag & 1); +} + +/** Write single JSON value. */ +static_inline u8 *yyjson_write_single(yyjson_val *val, + yyjson_write_flag flg, + yyjson_alc alc, + usize *dat_len, + yyjson_write_err *err) { +#define return_err(_code, _msg) do { \ + if (hdr) alc.free(alc.ctx, (void *)hdr); \ + *dat_len = 0; \ + err->code = YYJSON_WRITE_ERROR_##_code; \ + err->msg = _msg; \ + return NULL; \ +} while (false) + +#define incr_len(_len) do { \ + hdr = (u8 *)alc.malloc(alc.ctx, _len); \ + if (!hdr) goto fail_alloc; \ + cur = hdr; \ +} while (false) + +#define check_str_len(_len) do { \ + if ((sizeof(usize) < 8) && (_len >= (USIZE_MAX - 16) / 6)) \ + goto fail_alloc; \ +} while (false) + + u8 *hdr = NULL, *cur; + usize str_len; + const u8 *str_ptr; + const char_enc_type *enc_table = get_enc_table_with_flag(flg); + bool cpy = (enc_table == enc_table_cpy); + bool esc = has_flg(ESCAPE_UNICODE) != 0; + bool inv = has_allow(INVALID_UNICODE) != 0; + bool newline = has_flg(NEWLINE_AT_END) != 0; + const usize end_len = 2; /* '\n' and '\0' */ + + switch (unsafe_yyjson_get_type(val)) { + case YYJSON_TYPE_RAW: + str_len = unsafe_yyjson_get_len(val); + str_ptr = (const u8 *)unsafe_yyjson_get_str(val); + check_str_len(str_len); + incr_len(str_len + end_len); + cur = write_raw(cur, str_ptr, str_len); + break; + + case YYJSON_TYPE_STR: + str_len = unsafe_yyjson_get_len(val); + str_ptr = (const u8 *)unsafe_yyjson_get_str(val); + check_str_len(str_len); + incr_len(str_len * 6 + 2 + end_len); + do { + yyjson_subtype st = unsafe_yyjson_get_subtype(val); + if (likely(cpy) && st == YYJSON_SUBTYPE_NOESC) { + cur = write_str_noesc(cur, str_ptr, str_len); + } else { + bool inv2 = inv || (st == YYJSON_SUBTYPE_UNIERR); + cur = write_str(cur, esc, inv2, str_ptr, str_len, enc_table); + if (unlikely(!cur)) goto fail_str; + } + } while (0); + break; + + case YYJSON_TYPE_NUM: + incr_len(FP_BUF_LEN + end_len); + cur = write_num(cur, val, flg); + if (unlikely(!cur)) goto fail_num; + break; + + case YYJSON_TYPE_BOOL: + incr_len(8); + cur = write_bool(cur, unsafe_yyjson_get_bool(val)); + break; + + case YYJSON_TYPE_NULL: + incr_len(8); + cur = write_null(cur); + break; + + case YYJSON_TYPE_ARR: + incr_len(2 + end_len); + byte_copy_2(cur, "[]"); + cur += 2; + break; + + case YYJSON_TYPE_OBJ: + incr_len(2 + end_len); + byte_copy_2(cur, "{}"); + cur += 2; + break; + + default: + goto fail_type; + } + + if (newline) *cur++ = '\n'; + *cur = '\0'; + *dat_len = (usize)(cur - hdr); + memset(err, 0, sizeof(yyjson_write_err)); + return hdr; + +fail_alloc: return_err(MEMORY_ALLOCATION, MSG_MALLOC); +fail_type: return_err(INVALID_VALUE_TYPE, MSG_ERR_TYPE); +fail_num: return_err(NAN_OR_INF, MSG_NAN_INF); +fail_str: return_err(INVALID_STRING, MSG_ERR_UTF8); + +#undef return_err +#undef check_str_len +#undef incr_len +} + +/** Write JSON document minify. + The root of this document should be a non-empty container. */ +static_inline u8 *yyjson_write_minify(const yyjson_val *root, + const yyjson_write_flag flg, + const yyjson_alc alc, + usize *dat_len, + yyjson_write_err *err) { +#define return_err(_code, _msg) do { \ + *dat_len = 0; \ + err->code = YYJSON_WRITE_ERROR_##_code; \ + err->msg = _msg; \ + if (hdr) alc.free(alc.ctx, hdr); \ + return NULL; \ +} while (false) + +#define incr_len(_len) do { \ + ext_len = (usize)(_len); \ + if (unlikely((u8 *)(cur + ext_len) >= (u8 *)ctx)) { \ + usize ctx_pos = (usize)((u8 *)ctx - hdr); \ + usize cur_pos = (usize)(cur - hdr); \ + ctx_len = (usize)(end - (u8 *)ctx); \ + alc_inc = yyjson_max(alc_len / 2, ext_len); \ + alc_inc = size_align_up(alc_inc, sizeof(yyjson_write_ctx)); \ + if ((sizeof(usize) < 8) && size_add_is_overflow(alc_len, alc_inc)) \ + goto fail_alloc; \ + alc_len += alc_inc; \ + tmp = (u8 *)alc.realloc(alc.ctx, hdr, alc_len - alc_inc, alc_len); \ + if (unlikely(!tmp)) goto fail_alloc; \ + ctx_tmp = (yyjson_write_ctx *)(void *)(tmp + (alc_len - ctx_len)); \ + memmove((void *)ctx_tmp, (void *)(tmp + ctx_pos), ctx_len); \ + ctx = ctx_tmp; \ + cur = tmp + cur_pos; \ + end = tmp + alc_len; \ + hdr = tmp; \ + } \ +} while (false) + +#define check_str_len(_len) do { \ + if ((sizeof(usize) < 8) && (_len >= (USIZE_MAX - 16) / 6)) \ + goto fail_alloc; \ +} while (false) + + yyjson_val *val; + yyjson_type val_type; + usize ctn_len, ctn_len_tmp; + bool ctn_obj, ctn_obj_tmp, is_key; + u8 *hdr, *cur, *end, *tmp; + yyjson_write_ctx *ctx, *ctx_tmp; + usize alc_len, alc_inc, ctx_len, ext_len, str_len; + const u8 *str_ptr; + const char_enc_type *enc_table = get_enc_table_with_flag(flg); + bool cpy = (enc_table == enc_table_cpy); + bool esc = has_flg(ESCAPE_UNICODE) != 0; + bool inv = has_allow(INVALID_UNICODE) != 0; + bool newline = has_flg(NEWLINE_AT_END) != 0; + + alc_len = root->uni.ofs / sizeof(yyjson_val); + alc_len = alc_len * YYJSON_WRITER_ESTIMATED_MINIFY_RATIO + 64; + alc_len = size_align_up(alc_len, sizeof(yyjson_write_ctx)); + hdr = (u8 *)alc.malloc(alc.ctx, alc_len); + if (!hdr) goto fail_alloc; + cur = hdr; + end = hdr + alc_len; + ctx = (yyjson_write_ctx *)(void *)end; + +doc_begin: + val = constcast(yyjson_val *)root; + val_type = unsafe_yyjson_get_type(val); + ctn_obj = (val_type == YYJSON_TYPE_OBJ); + ctn_len = unsafe_yyjson_get_len(val) << (u8)ctn_obj; + *cur++ = (u8)('[' | ((u8)ctn_obj << 5)); + val++; + +val_begin: + val_type = unsafe_yyjson_get_type(val); + if (val_type == YYJSON_TYPE_STR) { + is_key = ((u8)ctn_obj & (u8)~ctn_len); + str_len = unsafe_yyjson_get_len(val); + str_ptr = (const u8 *)unsafe_yyjson_get_str(val); + check_str_len(str_len); + incr_len(str_len * 6 + 16); + do { + yyjson_subtype st = unsafe_yyjson_get_subtype(val); + if (likely(cpy) && st == YYJSON_SUBTYPE_NOESC) { + cur = write_str_noesc(cur, str_ptr, str_len); + } else { + bool inv2 = inv || (st == YYJSON_SUBTYPE_UNIERR); + cur = write_str(cur, esc, inv2, str_ptr, str_len, enc_table); + if (unlikely(!cur)) goto fail_str; + } + } while (0); + *cur++ = is_key ? ':' : ','; + goto val_end; + } + if (val_type == YYJSON_TYPE_NUM) { + incr_len(FP_BUF_LEN); + cur = write_num(cur, val, flg); + if (unlikely(!cur)) goto fail_num; + *cur++ = ','; + goto val_end; + } + if ((val_type & (YYJSON_TYPE_ARR & YYJSON_TYPE_OBJ)) == + (YYJSON_TYPE_ARR & YYJSON_TYPE_OBJ)) { + ctn_len_tmp = unsafe_yyjson_get_len(val); + ctn_obj_tmp = (val_type == YYJSON_TYPE_OBJ); + incr_len(16); + if (unlikely(ctn_len_tmp == 0)) { + /* write empty container */ + *cur++ = (u8)('[' | ((u8)ctn_obj_tmp << 5)); + *cur++ = (u8)(']' | ((u8)ctn_obj_tmp << 5)); + *cur++ = ','; + goto val_end; + } else { + /* push context, setup new container */ + yyjson_write_ctx_set(--ctx, ctn_len, ctn_obj); + ctn_len = ctn_len_tmp << (u8)ctn_obj_tmp; + ctn_obj = ctn_obj_tmp; + *cur++ = (u8)('[' | ((u8)ctn_obj << 5)); + val++; + goto val_begin; + } + } + if (val_type == YYJSON_TYPE_BOOL) { + incr_len(16); + cur = write_bool(cur, unsafe_yyjson_get_bool(val)); + cur++; + goto val_end; + } + if (val_type == YYJSON_TYPE_NULL) { + incr_len(16); + cur = write_null(cur); + cur++; + goto val_end; + } + if (val_type == YYJSON_TYPE_RAW) { + str_len = unsafe_yyjson_get_len(val); + str_ptr = (const u8 *)unsafe_yyjson_get_str(val); + check_str_len(str_len); + incr_len(str_len + 2); + cur = write_raw(cur, str_ptr, str_len); + *cur++ = ','; + goto val_end; + } + goto fail_type; + +val_end: + val++; + ctn_len--; + if (unlikely(ctn_len == 0)) goto ctn_end; + goto val_begin; + +ctn_end: + cur--; + *cur++ = (u8)(']' | ((u8)ctn_obj << 5)); + *cur++ = ','; + if (unlikely((u8 *)ctx >= end)) goto doc_end; + yyjson_write_ctx_get(ctx++, &ctn_len, &ctn_obj); + ctn_len--; + if (likely(ctn_len > 0)) { + goto val_begin; + } else { + goto ctn_end; + } + +doc_end: + if (newline) { + incr_len(2); + *(cur - 1) = '\n'; + cur++; + } + *--cur = '\0'; + *dat_len = (usize)(cur - hdr); + memset(err, 0, sizeof(yyjson_write_err)); + return hdr; + +fail_alloc: return_err(MEMORY_ALLOCATION, MSG_MALLOC); +fail_type: return_err(INVALID_VALUE_TYPE, MSG_ERR_TYPE); +fail_num: return_err(NAN_OR_INF, MSG_NAN_INF); +fail_str: return_err(INVALID_STRING, MSG_ERR_UTF8); + +#undef return_err +#undef incr_len +#undef check_str_len +} + +/** Write JSON document pretty. + The root of this document should be a non-empty container. */ +static_inline u8 *yyjson_write_pretty(const yyjson_val *root, + const yyjson_write_flag flg, + const yyjson_alc alc, + usize *dat_len, + yyjson_write_err *err) { +#define return_err(_code, _msg) do { \ + *dat_len = 0; \ + err->code = YYJSON_WRITE_ERROR_##_code; \ + err->msg = _msg; \ + if (hdr) alc.free(alc.ctx, hdr); \ + return NULL; \ +} while (false) + +#define incr_len(_len) do { \ + ext_len = (usize)(_len); \ + if (unlikely((u8 *)(cur + ext_len) >= (u8 *)ctx)) { \ + usize ctx_pos = (usize)((u8 *)ctx - hdr); \ + usize cur_pos = (usize)(cur - hdr); \ + ctx_len = (usize)(end - (u8 *)ctx); \ + alc_inc = yyjson_max(alc_len / 2, ext_len); \ + alc_inc = size_align_up(alc_inc, sizeof(yyjson_write_ctx)); \ + if ((sizeof(usize) < 8) && size_add_is_overflow(alc_len, alc_inc)) \ + goto fail_alloc; \ + alc_len += alc_inc; \ + tmp = (u8 *)alc.realloc(alc.ctx, hdr, alc_len - alc_inc, alc_len); \ + if (unlikely(!tmp)) goto fail_alloc; \ + ctx_tmp = (yyjson_write_ctx *)(void *)(tmp + (alc_len - ctx_len)); \ + memmove((void *)ctx_tmp, (void *)(tmp + ctx_pos), ctx_len); \ + ctx = ctx_tmp; \ + cur = tmp + cur_pos; \ + end = tmp + alc_len; \ + hdr = tmp; \ + } \ +} while (false) + +#define check_str_len(_len) do { \ + if ((sizeof(usize) < 8) && (_len >= (USIZE_MAX - 16) / 6)) \ + goto fail_alloc; \ +} while (false) + + yyjson_val *val; + yyjson_type val_type; + usize ctn_len, ctn_len_tmp; + bool ctn_obj, ctn_obj_tmp, is_key, no_indent; + u8 *hdr, *cur, *end, *tmp; + yyjson_write_ctx *ctx, *ctx_tmp; + usize alc_len, alc_inc, ctx_len, ext_len, str_len, level; + const u8 *str_ptr; + const char_enc_type *enc_table = get_enc_table_with_flag(flg); + bool cpy = (enc_table == enc_table_cpy); + bool esc = has_flg(ESCAPE_UNICODE) != 0; + bool inv = has_allow(INVALID_UNICODE) != 0; + usize spaces = has_flg(PRETTY_TWO_SPACES) ? 2 : 4; + bool newline = has_flg(NEWLINE_AT_END) != 0; + + alc_len = root->uni.ofs / sizeof(yyjson_val); + alc_len = alc_len * YYJSON_WRITER_ESTIMATED_PRETTY_RATIO + 64; + alc_len = size_align_up(alc_len, sizeof(yyjson_write_ctx)); + hdr = (u8 *)alc.malloc(alc.ctx, alc_len); + if (!hdr) goto fail_alloc; + cur = hdr; + end = hdr + alc_len; + ctx = (yyjson_write_ctx *)(void *)end; + +doc_begin: + val = constcast(yyjson_val *)root; + val_type = unsafe_yyjson_get_type(val); + ctn_obj = (val_type == YYJSON_TYPE_OBJ); + ctn_len = unsafe_yyjson_get_len(val) << (u8)ctn_obj; + *cur++ = (u8)('[' | ((u8)ctn_obj << 5)); + *cur++ = '\n'; + val++; + level = 1; + +val_begin: + val_type = unsafe_yyjson_get_type(val); + if (val_type == YYJSON_TYPE_STR) { + is_key = (bool)((u8)ctn_obj & (u8)~ctn_len); + no_indent = (bool)((u8)ctn_obj & (u8)ctn_len); + str_len = unsafe_yyjson_get_len(val); + str_ptr = (const u8 *)unsafe_yyjson_get_str(val); + check_str_len(str_len); + incr_len(str_len * 6 + 16 + (no_indent ? 0 : level * 4)); + cur = write_indent(cur, no_indent ? 0 : level, spaces); + do { + yyjson_subtype st = unsafe_yyjson_get_subtype(val); + if (likely(cpy) && st == YYJSON_SUBTYPE_NOESC) { + cur = write_str_noesc(cur, str_ptr, str_len); + } else { + bool inv2 = inv || (st == YYJSON_SUBTYPE_UNIERR); + cur = write_str(cur, esc, inv2, str_ptr, str_len, enc_table); + if (unlikely(!cur)) goto fail_str; + } + } while (0); + *cur++ = is_key ? ':' : ','; + *cur++ = is_key ? ' ' : '\n'; + goto val_end; + } + if (val_type == YYJSON_TYPE_NUM) { + no_indent = (bool)((u8)ctn_obj & (u8)ctn_len); + incr_len(FP_BUF_LEN + (no_indent ? 0 : level * 4)); + cur = write_indent(cur, no_indent ? 0 : level, spaces); + cur = write_num(cur, val, flg); + if (unlikely(!cur)) goto fail_num; + *cur++ = ','; + *cur++ = '\n'; + goto val_end; + } + if ((val_type & (YYJSON_TYPE_ARR & YYJSON_TYPE_OBJ)) == + (YYJSON_TYPE_ARR & YYJSON_TYPE_OBJ)) { + no_indent = (bool)((u8)ctn_obj & (u8)ctn_len); + ctn_len_tmp = unsafe_yyjson_get_len(val); + ctn_obj_tmp = (val_type == YYJSON_TYPE_OBJ); + if (unlikely(ctn_len_tmp == 0)) { + /* write empty container */ + incr_len(16 + (no_indent ? 0 : level * 4)); + cur = write_indent(cur, no_indent ? 0 : level, spaces); + *cur++ = (u8)('[' | ((u8)ctn_obj_tmp << 5)); + *cur++ = (u8)(']' | ((u8)ctn_obj_tmp << 5)); + *cur++ = ','; + *cur++ = '\n'; + goto val_end; + } else { + /* push context, setup new container */ + incr_len(32 + (no_indent ? 0 : level * 4)); + yyjson_write_ctx_set(--ctx, ctn_len, ctn_obj); + ctn_len = ctn_len_tmp << (u8)ctn_obj_tmp; + ctn_obj = ctn_obj_tmp; + cur = write_indent(cur, no_indent ? 0 : level, spaces); + level++; + *cur++ = (u8)('[' | ((u8)ctn_obj << 5)); + *cur++ = '\n'; + val++; + goto val_begin; + } + } + if (val_type == YYJSON_TYPE_BOOL) { + no_indent = (bool)((u8)ctn_obj & (u8)ctn_len); + incr_len(16 + (no_indent ? 0 : level * 4)); + cur = write_indent(cur, no_indent ? 0 : level, spaces); + cur = write_bool(cur, unsafe_yyjson_get_bool(val)); + cur += 2; + goto val_end; + } + if (val_type == YYJSON_TYPE_NULL) { + no_indent = (bool)((u8)ctn_obj & (u8)ctn_len); + incr_len(16 + (no_indent ? 0 : level * 4)); + cur = write_indent(cur, no_indent ? 0 : level, spaces); + cur = write_null(cur); + cur += 2; + goto val_end; + } + if (val_type == YYJSON_TYPE_RAW) { + no_indent = (bool)((u8)ctn_obj & (u8)ctn_len); + str_len = unsafe_yyjson_get_len(val); + str_ptr = (const u8 *)unsafe_yyjson_get_str(val); + check_str_len(str_len); + incr_len(str_len + 3 + (no_indent ? 0 : level * 4)); + cur = write_indent(cur, no_indent ? 0 : level, spaces); + cur = write_raw(cur, str_ptr, str_len); + *cur++ = ','; + *cur++ = '\n'; + goto val_end; + } + goto fail_type; + +val_end: + val++; + ctn_len--; + if (unlikely(ctn_len == 0)) goto ctn_end; + goto val_begin; + +ctn_end: + cur -= 2; + *cur++ = '\n'; + incr_len(level * 4); + cur = write_indent(cur, --level, spaces); + *cur++ = (u8)(']' | ((u8)ctn_obj << 5)); + if (unlikely((u8 *)ctx >= end)) goto doc_end; + yyjson_write_ctx_get(ctx++, &ctn_len, &ctn_obj); + ctn_len--; + *cur++ = ','; + *cur++ = '\n'; + if (likely(ctn_len > 0)) { + goto val_begin; + } else { + goto ctn_end; + } + +doc_end: + if (newline) { + incr_len(2); + *cur++ = '\n'; + } + *cur = '\0'; + *dat_len = (usize)(cur - hdr); + memset(err, 0, sizeof(yyjson_write_err)); + return hdr; + +fail_alloc: return_err(MEMORY_ALLOCATION, MSG_MALLOC); +fail_type: return_err(INVALID_VALUE_TYPE, MSG_ERR_TYPE); +fail_num: return_err(NAN_OR_INF, MSG_NAN_INF); +fail_str: return_err(INVALID_STRING, MSG_ERR_UTF8); + +#undef return_err +#undef incr_len +#undef check_str_len +} + + + +/*============================================================================== + * MARK: - JSON Writer (Public) + *============================================================================*/ + +char *yyjson_val_write_opts(const yyjson_val *val, + yyjson_write_flag flg, + const yyjson_alc *alc_ptr, + usize *dat_len, + yyjson_write_err *err) { + yyjson_write_err tmp_err; + usize tmp_dat_len; + yyjson_alc alc = alc_ptr ? *alc_ptr : YYJSON_DEFAULT_ALC; + yyjson_val *root = constcast(yyjson_val *)val; + + if (!err) err = &tmp_err; + if (!dat_len) dat_len = &tmp_dat_len; + + if (unlikely(!root)) { + *dat_len = 0; + err->msg = "input JSON is NULL"; + err->code = YYJSON_READ_ERROR_INVALID_PARAMETER; + return NULL; + } + + if (!unsafe_yyjson_is_ctn(root) || unsafe_yyjson_get_len(root) == 0) { + return (char *)yyjson_write_single(root, flg, alc, dat_len, err); + } else if (flg & (YYJSON_WRITE_PRETTY | YYJSON_WRITE_PRETTY_TWO_SPACES)) { + return (char *)yyjson_write_pretty(root, flg, alc, dat_len, err); + } else { + return (char *)yyjson_write_minify(root, flg, alc, dat_len, err); + } +} + +char *yyjson_write_opts(const yyjson_doc *doc, + yyjson_write_flag flg, + const yyjson_alc *alc_ptr, + usize *dat_len, + yyjson_write_err *err) { + yyjson_val *root = doc ? doc->root : NULL; + return yyjson_val_write_opts(root, flg, alc_ptr, dat_len, err); +} + +bool yyjson_val_write_file(const char *path, + const yyjson_val *val, + yyjson_write_flag flg, + const yyjson_alc *alc_ptr, + yyjson_write_err *err) { + yyjson_write_err tmp_err; + yyjson_alc alc = alc_ptr ? *alc_ptr : YYJSON_DEFAULT_ALC; + u8 *dat; + usize dat_len = 0; + yyjson_val *root = constcast(yyjson_val *)val; + bool suc; + + if (!err) err = &tmp_err; + if (unlikely(!path || !*path)) { + err->msg = "input path is invalid"; + err->code = YYJSON_READ_ERROR_INVALID_PARAMETER; + return false; + } + + dat = (u8 *)yyjson_val_write_opts(root, flg, &alc, &dat_len, err); + if (unlikely(!dat)) return false; + suc = write_dat_to_file(path, dat, dat_len, err); + alc.free(alc.ctx, dat); + return suc; +} + +bool yyjson_val_write_fp(FILE *fp, + const yyjson_val *val, + yyjson_write_flag flg, + const yyjson_alc *alc_ptr, + yyjson_write_err *err) { + yyjson_write_err tmp_err; + yyjson_alc alc = alc_ptr ? *alc_ptr : YYJSON_DEFAULT_ALC; + u8 *dat; + usize dat_len = 0; + yyjson_val *root = constcast(yyjson_val *)val; + bool suc; + + if (!err) err = &tmp_err; + if (unlikely(!fp)) { + err->msg = "input fp is invalid"; + err->code = YYJSON_READ_ERROR_INVALID_PARAMETER; + return false; + } + + dat = (u8 *)yyjson_val_write_opts(root, flg, &alc, &dat_len, err); + if (unlikely(!dat)) return false; + suc = write_dat_to_fp(fp, dat, dat_len, err); + alc.free(alc.ctx, dat); + return suc; +} + +bool yyjson_write_file(const char *path, + const yyjson_doc *doc, + yyjson_write_flag flg, + const yyjson_alc *alc_ptr, + yyjson_write_err *err) { + yyjson_val *root = doc ? doc->root : NULL; + return yyjson_val_write_file(path, root, flg, alc_ptr, err); +} + +bool yyjson_write_fp(FILE *fp, + const yyjson_doc *doc, + yyjson_write_flag flg, + const yyjson_alc *alc_ptr, + yyjson_write_err *err) { + yyjson_val *root = doc ? doc->root : NULL; + return yyjson_val_write_fp(fp, root, flg, alc_ptr, err); +} + + + +/*============================================================================== + * MARK: - Mutable JSON Writer Implementation (Private) + *============================================================================*/ + +typedef struct yyjson_mut_write_ctx { + usize tag; + yyjson_mut_val *ctn; +} yyjson_mut_write_ctx; + +static_inline void yyjson_mut_write_ctx_set(yyjson_mut_write_ctx *ctx, + yyjson_mut_val *ctn, + usize size, bool is_obj) { + ctx->tag = (size << 1) | (usize)is_obj; + ctx->ctn = ctn; +} + +static_inline void yyjson_mut_write_ctx_get(yyjson_mut_write_ctx *ctx, + yyjson_mut_val **ctn, + usize *size, bool *is_obj) { + usize tag = ctx->tag; + *size = tag >> 1; + *is_obj = (bool)(tag & 1); + *ctn = ctx->ctn; +} + +/** Get the estimated number of values for the mutable JSON document. */ +static_inline usize yyjson_mut_doc_estimated_val_num( + const yyjson_mut_doc *doc) { + usize sum = 0; + yyjson_val_chunk *chunk = doc->val_pool.chunks; + while (chunk) { + sum += chunk->chunk_size / sizeof(yyjson_mut_val) - 1; + if (chunk == doc->val_pool.chunks) { + sum -= (usize)(doc->val_pool.end - doc->val_pool.cur); + } + chunk = chunk->next; + } + return sum; +} + +/** Write single JSON value. */ +static_inline u8 *yyjson_mut_write_single(yyjson_mut_val *val, + yyjson_write_flag flg, + yyjson_alc alc, + usize *dat_len, + yyjson_write_err *err) { + return yyjson_write_single((yyjson_val *)val, flg, alc, dat_len, err); +} + +/** Write JSON document minify. + The root of this document should be a non-empty container. */ +static_inline u8 *yyjson_mut_write_minify(const yyjson_mut_val *root, + usize estimated_val_num, + yyjson_write_flag flg, + yyjson_alc alc, + usize *dat_len, + yyjson_write_err *err) { +#define return_err(_code, _msg) do { \ + *dat_len = 0; \ + err->code = YYJSON_WRITE_ERROR_##_code; \ + err->msg = _msg; \ + if (hdr) alc.free(alc.ctx, hdr); \ + return NULL; \ +} while (false) + +#define incr_len(_len) do { \ + ext_len = (usize)(_len); \ + if (unlikely((u8 *)(cur + ext_len) >= (u8 *)ctx)) { \ + usize ctx_pos = (usize)((u8 *)ctx - hdr); \ + usize cur_pos = (usize)(cur - hdr); \ + ctx_len = (usize)(end - (u8 *)ctx); \ + alc_inc = yyjson_max(alc_len / 2, ext_len); \ + alc_inc = size_align_up(alc_inc, sizeof(yyjson_mut_write_ctx)); \ + if ((sizeof(usize) < 8) && size_add_is_overflow(alc_len, alc_inc)) \ + goto fail_alloc; \ + alc_len += alc_inc; \ + tmp = (u8 *)alc.realloc(alc.ctx, hdr, alc_len - alc_inc, alc_len); \ + if (unlikely(!tmp)) goto fail_alloc; \ + ctx_tmp = (yyjson_mut_write_ctx *)(void *)(tmp + (alc_len - ctx_len)); \ + memmove((void *)ctx_tmp, (void *)(tmp + ctx_pos), ctx_len); \ + ctx = ctx_tmp; \ + cur = tmp + cur_pos; \ + end = tmp + alc_len; \ + hdr = tmp; \ + } \ +} while (false) + +#define check_str_len(_len) do { \ + if ((sizeof(usize) < 8) && (_len >= (USIZE_MAX - 16) / 6)) \ + goto fail_alloc; \ +} while (false) + + yyjson_mut_val *val, *ctn; + yyjson_type val_type; + usize ctn_len, ctn_len_tmp; + bool ctn_obj, ctn_obj_tmp, is_key; + u8 *hdr, *cur, *end, *tmp; + yyjson_mut_write_ctx *ctx, *ctx_tmp; + usize alc_len, alc_inc, ctx_len, ext_len, str_len; + const u8 *str_ptr; + const char_enc_type *enc_table = get_enc_table_with_flag(flg); + bool cpy = (enc_table == enc_table_cpy); + bool esc = has_flg(ESCAPE_UNICODE) != 0; + bool inv = has_allow(INVALID_UNICODE) != 0; + bool newline = has_flg(NEWLINE_AT_END) != 0; + + alc_len = estimated_val_num * YYJSON_WRITER_ESTIMATED_MINIFY_RATIO + 64; + alc_len = size_align_up(alc_len, sizeof(yyjson_mut_write_ctx)); + hdr = (u8 *)alc.malloc(alc.ctx, alc_len); + if (!hdr) goto fail_alloc; + cur = hdr; + end = hdr + alc_len; + ctx = (yyjson_mut_write_ctx *)(void *)end; + +doc_begin: + val = constcast(yyjson_mut_val *)root; + val_type = unsafe_yyjson_get_type(val); + ctn_obj = (val_type == YYJSON_TYPE_OBJ); + ctn_len = unsafe_yyjson_get_len(val) << (u8)ctn_obj; + *cur++ = (u8)('[' | ((u8)ctn_obj << 5)); + ctn = val; + val = (yyjson_mut_val *)val->uni.ptr; /* tail */ + val = ctn_obj ? val->next->next : val->next; + +val_begin: + val_type = unsafe_yyjson_get_type(val); + if (val_type == YYJSON_TYPE_STR) { + is_key = ((u8)ctn_obj & (u8)~ctn_len); + str_len = unsafe_yyjson_get_len(val); + str_ptr = (const u8 *)unsafe_yyjson_get_str(val); + check_str_len(str_len); + incr_len(str_len * 6 + 16); + do { + yyjson_subtype st = unsafe_yyjson_get_subtype(val); + if (likely(cpy) && st == YYJSON_SUBTYPE_NOESC) { + cur = write_str_noesc(cur, str_ptr, str_len); + } else { + bool inv2 = inv || (st == YYJSON_SUBTYPE_UNIERR); + cur = write_str(cur, esc, inv2, str_ptr, str_len, enc_table); + if (unlikely(!cur)) goto fail_str; + } + } while (0); + *cur++ = is_key ? ':' : ','; + goto val_end; + } + if (val_type == YYJSON_TYPE_NUM) { + incr_len(FP_BUF_LEN); + cur = write_num(cur, (yyjson_val *)val, flg); + if (unlikely(!cur)) goto fail_num; + *cur++ = ','; + goto val_end; + } + if ((val_type & (YYJSON_TYPE_ARR & YYJSON_TYPE_OBJ)) == + (YYJSON_TYPE_ARR & YYJSON_TYPE_OBJ)) { + ctn_len_tmp = unsafe_yyjson_get_len(val); + ctn_obj_tmp = (val_type == YYJSON_TYPE_OBJ); + incr_len(16); + if (unlikely(ctn_len_tmp == 0)) { + /* write empty container */ + *cur++ = (u8)('[' | ((u8)ctn_obj_tmp << 5)); + *cur++ = (u8)(']' | ((u8)ctn_obj_tmp << 5)); + *cur++ = ','; + goto val_end; + } else { + /* push context, setup new container */ + yyjson_mut_write_ctx_set(--ctx, ctn, ctn_len, ctn_obj); + ctn_len = ctn_len_tmp << (u8)ctn_obj_tmp; + ctn_obj = ctn_obj_tmp; + *cur++ = (u8)('[' | ((u8)ctn_obj << 5)); + ctn = val; + val = (yyjson_mut_val *)ctn->uni.ptr; /* tail */ + val = ctn_obj ? val->next->next : val->next; + goto val_begin; + } + } + if (val_type == YYJSON_TYPE_BOOL) { + incr_len(16); + cur = write_bool(cur, unsafe_yyjson_get_bool(val)); + cur++; + goto val_end; + } + if (val_type == YYJSON_TYPE_NULL) { + incr_len(16); + cur = write_null(cur); + cur++; + goto val_end; + } + if (val_type == YYJSON_TYPE_RAW) { + str_len = unsafe_yyjson_get_len(val); + str_ptr = (const u8 *)unsafe_yyjson_get_str(val); + check_str_len(str_len); + incr_len(str_len + 2); + cur = write_raw(cur, str_ptr, str_len); + *cur++ = ','; + goto val_end; + } + goto fail_type; + +val_end: + ctn_len--; + if (unlikely(ctn_len == 0)) goto ctn_end; + val = val->next; + goto val_begin; + +ctn_end: + cur--; + *cur++ = (u8)(']' | ((u8)ctn_obj << 5)); + *cur++ = ','; + if (unlikely((u8 *)ctx >= end)) goto doc_end; + val = ctn->next; + yyjson_mut_write_ctx_get(ctx++, &ctn, &ctn_len, &ctn_obj); + ctn_len--; + if (likely(ctn_len > 0)) { + goto val_begin; + } else { + goto ctn_end; + } + +doc_end: + if (newline) { + incr_len(2); + *(cur - 1) = '\n'; + cur++; + } + *--cur = '\0'; + *dat_len = (usize)(cur - hdr); + err->code = YYJSON_WRITE_SUCCESS; + err->msg = NULL; + return hdr; + +fail_alloc: return_err(MEMORY_ALLOCATION, MSG_MALLOC); +fail_type: return_err(INVALID_VALUE_TYPE, MSG_ERR_TYPE); +fail_num: return_err(NAN_OR_INF, MSG_NAN_INF); +fail_str: return_err(INVALID_STRING, MSG_ERR_UTF8); + +#undef return_err +#undef incr_len +#undef check_str_len +} + +/** Write JSON document pretty. + The root of this document should be a non-empty container. */ +static_inline u8 *yyjson_mut_write_pretty(const yyjson_mut_val *root, + usize estimated_val_num, + yyjson_write_flag flg, + yyjson_alc alc, + usize *dat_len, + yyjson_write_err *err) { +#define return_err(_code, _msg) do { \ + *dat_len = 0; \ + err->code = YYJSON_WRITE_ERROR_##_code; \ + err->msg = _msg; \ + if (hdr) alc.free(alc.ctx, hdr); \ + return NULL; \ +} while (false) + +#define incr_len(_len) do { \ + ext_len = (usize)(_len); \ + if (unlikely((u8 *)(cur + ext_len) >= (u8 *)ctx)) { \ + usize ctx_pos = (usize)((u8 *)ctx - hdr); \ + usize cur_pos = (usize)(cur - hdr); \ + ctx_len = (usize)(end - (u8 *)ctx); \ + alc_inc = yyjson_max(alc_len / 2, ext_len); \ + alc_inc = size_align_up(alc_inc, sizeof(yyjson_mut_write_ctx)); \ + if ((sizeof(usize) < 8) && size_add_is_overflow(alc_len, alc_inc)) \ + goto fail_alloc; \ + alc_len += alc_inc; \ + tmp = (u8 *)alc.realloc(alc.ctx, hdr, alc_len - alc_inc, alc_len); \ + if (unlikely(!tmp)) goto fail_alloc; \ + ctx_tmp = (yyjson_mut_write_ctx *)(void *)(tmp + (alc_len - ctx_len)); \ + memmove((void *)ctx_tmp, (void *)(tmp + ctx_pos), ctx_len); \ + ctx = ctx_tmp; \ + cur = tmp + cur_pos; \ + end = tmp + alc_len; \ + hdr = tmp; \ + } \ +} while (false) + +#define check_str_len(_len) do { \ + if ((sizeof(usize) < 8) && (_len >= (USIZE_MAX - 16) / 6)) \ + goto fail_alloc; \ +} while (false) + + yyjson_mut_val *val, *ctn; + yyjson_type val_type; + usize ctn_len, ctn_len_tmp; + bool ctn_obj, ctn_obj_tmp, is_key, no_indent; + u8 *hdr, *cur, *end, *tmp; + yyjson_mut_write_ctx *ctx, *ctx_tmp; + usize alc_len, alc_inc, ctx_len, ext_len, str_len, level; + const u8 *str_ptr; + const char_enc_type *enc_table = get_enc_table_with_flag(flg); + bool cpy = (enc_table == enc_table_cpy); + bool esc = has_flg(ESCAPE_UNICODE) != 0; + bool inv = has_allow(INVALID_UNICODE) != 0; + usize spaces = has_flg(PRETTY_TWO_SPACES) ? 2 : 4; + bool newline = has_flg(NEWLINE_AT_END) != 0; + + alc_len = estimated_val_num * YYJSON_WRITER_ESTIMATED_PRETTY_RATIO + 64; + alc_len = size_align_up(alc_len, sizeof(yyjson_mut_write_ctx)); + hdr = (u8 *)alc.malloc(alc.ctx, alc_len); + if (!hdr) goto fail_alloc; + cur = hdr; + end = hdr + alc_len; + ctx = (yyjson_mut_write_ctx *)(void *)end; + +doc_begin: + val = constcast(yyjson_mut_val *)root; + val_type = unsafe_yyjson_get_type(val); + ctn_obj = (val_type == YYJSON_TYPE_OBJ); + ctn_len = unsafe_yyjson_get_len(val) << (u8)ctn_obj; + *cur++ = (u8)('[' | ((u8)ctn_obj << 5)); + *cur++ = '\n'; + ctn = val; + val = (yyjson_mut_val *)val->uni.ptr; /* tail */ + val = ctn_obj ? val->next->next : val->next; + level = 1; + +val_begin: + val_type = unsafe_yyjson_get_type(val); + if (val_type == YYJSON_TYPE_STR) { + is_key = (bool)((u8)ctn_obj & (u8)~ctn_len); + no_indent = (bool)((u8)ctn_obj & (u8)ctn_len); + str_len = unsafe_yyjson_get_len(val); + str_ptr = (const u8 *)unsafe_yyjson_get_str(val); + check_str_len(str_len); + incr_len(str_len * 6 + 16 + (no_indent ? 0 : level * 4)); + cur = write_indent(cur, no_indent ? 0 : level, spaces); + do { + yyjson_subtype st = unsafe_yyjson_get_subtype(val); + if (likely(cpy) && st == YYJSON_SUBTYPE_NOESC) { + cur = write_str_noesc(cur, str_ptr, str_len); + } else { + bool inv2 = inv || (st == YYJSON_SUBTYPE_UNIERR); + cur = write_str(cur, esc, inv2, str_ptr, str_len, enc_table); + if (unlikely(!cur)) goto fail_str; + } + } while (0); + *cur++ = is_key ? ':' : ','; + *cur++ = is_key ? ' ' : '\n'; + goto val_end; + } + if (val_type == YYJSON_TYPE_NUM) { + no_indent = (bool)((u8)ctn_obj & (u8)ctn_len); + incr_len(FP_BUF_LEN + (no_indent ? 0 : level * 4)); + cur = write_indent(cur, no_indent ? 0 : level, spaces); + cur = write_num(cur, (yyjson_val *)val, flg); + if (unlikely(!cur)) goto fail_num; + *cur++ = ','; + *cur++ = '\n'; + goto val_end; + } + if ((val_type & (YYJSON_TYPE_ARR & YYJSON_TYPE_OBJ)) == + (YYJSON_TYPE_ARR & YYJSON_TYPE_OBJ)) { + no_indent = (bool)((u8)ctn_obj & (u8)ctn_len); + ctn_len_tmp = unsafe_yyjson_get_len(val); + ctn_obj_tmp = (val_type == YYJSON_TYPE_OBJ); + if (unlikely(ctn_len_tmp == 0)) { + /* write empty container */ + incr_len(16 + (no_indent ? 0 : level * 4)); + cur = write_indent(cur, no_indent ? 0 : level, spaces); + *cur++ = (u8)('[' | ((u8)ctn_obj_tmp << 5)); + *cur++ = (u8)(']' | ((u8)ctn_obj_tmp << 5)); + *cur++ = ','; + *cur++ = '\n'; + goto val_end; + } else { + /* push context, setup new container */ + incr_len(32 + (no_indent ? 0 : level * 4)); + yyjson_mut_write_ctx_set(--ctx, ctn, ctn_len, ctn_obj); + ctn_len = ctn_len_tmp << (u8)ctn_obj_tmp; + ctn_obj = ctn_obj_tmp; + cur = write_indent(cur, no_indent ? 0 : level, spaces); + level++; + *cur++ = (u8)('[' | ((u8)ctn_obj << 5)); + *cur++ = '\n'; + ctn = val; + val = (yyjson_mut_val *)ctn->uni.ptr; /* tail */ + val = ctn_obj ? val->next->next : val->next; + goto val_begin; + } + } + if (val_type == YYJSON_TYPE_BOOL) { + no_indent = (bool)((u8)ctn_obj & (u8)ctn_len); + incr_len(16 + (no_indent ? 0 : level * 4)); + cur = write_indent(cur, no_indent ? 0 : level, spaces); + cur = write_bool(cur, unsafe_yyjson_get_bool(val)); + cur += 2; + goto val_end; + } + if (val_type == YYJSON_TYPE_NULL) { + no_indent = (bool)((u8)ctn_obj & (u8)ctn_len); + incr_len(16 + (no_indent ? 0 : level * 4)); + cur = write_indent(cur, no_indent ? 0 : level, spaces); + cur = write_null(cur); + cur += 2; + goto val_end; + } + if (val_type == YYJSON_TYPE_RAW) { + no_indent = (bool)((u8)ctn_obj & (u8)ctn_len); + str_len = unsafe_yyjson_get_len(val); + str_ptr = (const u8 *)unsafe_yyjson_get_str(val); + check_str_len(str_len); + incr_len(str_len + 3 + (no_indent ? 0 : level * 4)); + cur = write_indent(cur, no_indent ? 0 : level, spaces); + cur = write_raw(cur, str_ptr, str_len); + *cur++ = ','; + *cur++ = '\n'; + goto val_end; + } + goto fail_type; + +val_end: + ctn_len--; + if (unlikely(ctn_len == 0)) goto ctn_end; + val = val->next; + goto val_begin; + +ctn_end: + cur -= 2; + *cur++ = '\n'; + incr_len(level * 4); + cur = write_indent(cur, --level, spaces); + *cur++ = (u8)(']' | ((u8)ctn_obj << 5)); + if (unlikely((u8 *)ctx >= end)) goto doc_end; + val = ctn->next; + yyjson_mut_write_ctx_get(ctx++, &ctn, &ctn_len, &ctn_obj); + ctn_len--; + *cur++ = ','; + *cur++ = '\n'; + if (likely(ctn_len > 0)) { + goto val_begin; + } else { + goto ctn_end; + } + +doc_end: + if (newline) { + incr_len(2); + *cur++ = '\n'; + } + *cur = '\0'; + *dat_len = (usize)(cur - hdr); + err->code = YYJSON_WRITE_SUCCESS; + err->msg = NULL; + return hdr; + +fail_alloc: return_err(MEMORY_ALLOCATION, MSG_MALLOC); +fail_type: return_err(INVALID_VALUE_TYPE, MSG_ERR_TYPE); +fail_num: return_err(NAN_OR_INF, MSG_NAN_INF); +fail_str: return_err(INVALID_STRING, MSG_ERR_UTF8); + +#undef return_err +#undef incr_len +#undef check_str_len +} + +static char *yyjson_mut_write_opts_impl(const yyjson_mut_val *val, + usize estimated_val_num, + yyjson_write_flag flg, + const yyjson_alc *alc_ptr, + usize *dat_len, + yyjson_write_err *err) { + yyjson_write_err tmp_err; + usize tmp_dat_len; + yyjson_alc alc = alc_ptr ? *alc_ptr : YYJSON_DEFAULT_ALC; + yyjson_mut_val *root = constcast(yyjson_mut_val *)val; + + if (!err) err = &tmp_err; + if (!dat_len) dat_len = &tmp_dat_len; + + if (unlikely(!root)) { + *dat_len = 0; + err->msg = "input JSON is NULL"; + err->code = YYJSON_WRITE_ERROR_INVALID_PARAMETER; + return NULL; + } + + if (!unsafe_yyjson_is_ctn(root) || unsafe_yyjson_get_len(root) == 0) { + return (char *)yyjson_mut_write_single(root, flg, alc, dat_len, err); + } else if (flg & (YYJSON_WRITE_PRETTY | YYJSON_WRITE_PRETTY_TWO_SPACES)) { + return (char *)yyjson_mut_write_pretty(root, estimated_val_num, + flg, alc, dat_len, err); + } else { + return (char *)yyjson_mut_write_minify(root, estimated_val_num, + flg, alc, dat_len, err); + } +} + + + +/*============================================================================== + * MARK: - Mutable JSON Writer (Public) + *============================================================================*/ + +char *yyjson_mut_val_write_opts(const yyjson_mut_val *val, + yyjson_write_flag flg, + const yyjson_alc *alc_ptr, + usize *dat_len, + yyjson_write_err *err) { + return yyjson_mut_write_opts_impl(val, 0, flg, alc_ptr, dat_len, err); +} + +char *yyjson_mut_write_opts(const yyjson_mut_doc *doc, + yyjson_write_flag flg, + const yyjson_alc *alc_ptr, + usize *dat_len, + yyjson_write_err *err) { + yyjson_mut_val *root; + usize estimated_val_num; + if (likely(doc)) { + root = doc->root; + estimated_val_num = yyjson_mut_doc_estimated_val_num(doc); + } else { + root = NULL; + estimated_val_num = 0; + } + return yyjson_mut_write_opts_impl(root, estimated_val_num, + flg, alc_ptr, dat_len, err); +} + +bool yyjson_mut_val_write_file(const char *path, + const yyjson_mut_val *val, + yyjson_write_flag flg, + const yyjson_alc *alc_ptr, + yyjson_write_err *err) { + yyjson_write_err tmp_err; + yyjson_alc alc = alc_ptr ? *alc_ptr : YYJSON_DEFAULT_ALC; + u8 *dat; + usize dat_len = 0; + yyjson_mut_val *root = constcast(yyjson_mut_val *)val; + bool suc; + + if (!err) err = &tmp_err; + if (unlikely(!path || !*path)) { + err->msg = "input path is invalid"; + err->code = YYJSON_WRITE_ERROR_INVALID_PARAMETER; + return false; + } + + dat = (u8 *)yyjson_mut_val_write_opts(root, flg, &alc, &dat_len, err); + if (unlikely(!dat)) return false; + suc = write_dat_to_file(path, dat, dat_len, err); + alc.free(alc.ctx, dat); + return suc; +} + +bool yyjson_mut_val_write_fp(FILE *fp, + const yyjson_mut_val *val, + yyjson_write_flag flg, + const yyjson_alc *alc_ptr, + yyjson_write_err *err) { + yyjson_write_err tmp_err; + yyjson_alc alc = alc_ptr ? *alc_ptr : YYJSON_DEFAULT_ALC; + u8 *dat; + usize dat_len = 0; + yyjson_mut_val *root = constcast(yyjson_mut_val *)val; + bool suc; + + if (!err) err = &tmp_err; + if (unlikely(!fp)) { + err->msg = "input fp is invalid"; + err->code = YYJSON_WRITE_ERROR_INVALID_PARAMETER; + return false; + } + + dat = (u8 *)yyjson_mut_val_write_opts(root, flg, &alc, &dat_len, err); + if (unlikely(!dat)) return false; + suc = write_dat_to_fp(fp, dat, dat_len, err); + alc.free(alc.ctx, dat); + return suc; +} + +bool yyjson_mut_write_file(const char *path, + const yyjson_mut_doc *doc, + yyjson_write_flag flg, + const yyjson_alc *alc_ptr, + yyjson_write_err *err) { + yyjson_mut_val *root = doc ? doc->root : NULL; + return yyjson_mut_val_write_file(path, root, flg, alc_ptr, err); +} + +bool yyjson_mut_write_fp(FILE *fp, + const yyjson_mut_doc *doc, + yyjson_write_flag flg, + const yyjson_alc *alc_ptr, + yyjson_write_err *err) { + yyjson_mut_val *root = doc ? doc->root : NULL; + return yyjson_mut_val_write_fp(fp, root, flg, alc_ptr, err); +} + +#undef has_flg +#undef has_allow +#endif /* YYJSON_DISABLE_WRITER */ + + + +#if !YYJSON_DISABLE_UTILS + +/*============================================================================== + * MARK: - JSON Pointer API (RFC 6901) (Public) + *============================================================================*/ + +/** + Get a token from JSON pointer string. + @param ptr [in] string that points to current token prefix `/` + [out] string that points to next token prefix `/`, or string end + @param end [in] end of the entire JSON Pointer string + @param len [out] unescaped token length + @param esc [out] number of escaped characters in this token + @return head of the token, or NULL if syntax error + */ +static_inline const char *ptr_next_token(const char **ptr, const char *end, + usize *len, usize *esc) { + const char *hdr = *ptr + 1; + const char *cur = hdr; + /* skip unescaped characters */ + while (cur < end && *cur != '/' && *cur != '~') cur++; + if (likely(cur == end || *cur != '~')) { + /* no escaped characters, return */ + *ptr = cur; + *len = (usize)(cur - hdr); + *esc = 0; + return hdr; + } else { + /* handle escaped characters */ + usize esc_num = 0; + while (cur < end && *cur != '/') { + if (*cur++ == '~') { + if (cur == end || (*cur != '0' && *cur != '1')) { + *ptr = cur - 1; + return NULL; + } + esc_num++; + } + } + *ptr = cur; + *len = (usize)(cur - hdr) - esc_num; + *esc = esc_num; + return hdr; + } +} + +/** + Convert token string to index. + @param cur [in] token head + @param len [in] token length + @param idx [out] the index number, or USIZE_MAX if token is '-' + @return true if token is a valid array index + */ +static_inline bool ptr_token_to_idx(const char *cur, usize len, usize *idx) { + const char *end = cur + len; + usize num = 0, add; + if (unlikely(len == 0 || len > USIZE_SAFE_DIG)) return false; + if (*cur == '0') { + if (unlikely(len > 1)) return false; + *idx = 0; + return true; + } + if (*cur == '-') { + if (unlikely(len > 1)) return false; + *idx = USIZE_MAX; + return true; + } + for (; cur < end && (add = (usize)((u8)*cur - (u8)'0')) <= 9; cur++) { + num = num * 10 + add; + } + if (unlikely(num == 0 || cur < end)) return false; + *idx = num; + return true; +} + +/** + Compare JSON key with token. + @param key a string key (yyjson_val or yyjson_mut_val) + @param token a JSON pointer token + @param len unescaped token length + @param esc number of escaped characters in this token + @return true if `str` is equals to `token` + */ +static_inline bool ptr_token_eq(void *key, + const char *token, usize len, usize esc) { + yyjson_val *val = (yyjson_val *)key; + if (unsafe_yyjson_get_len(val) != len) return false; + if (likely(!esc)) { + return memcmp(val->uni.str, token, len) == 0; + } else { + const char *str = val->uni.str; + for (; len-- > 0; token++, str++) { + if (*token == '~') { + if (*str != (*++token == '0' ? '~' : '/')) return false; + } else { + if (*str != *token) return false; + } + } + return true; + } +} + +/** + Get a value from array by token. + @param arr an array, should not be NULL or non-array type + @param token a JSON pointer token + @param len unescaped token length + @param esc number of escaped characters in this token + @return value at index, or NULL if token is not index or index is out of range + */ +static_inline yyjson_val *ptr_arr_get(yyjson_val *arr, const char *token, + usize len, usize esc) { + yyjson_val *val = unsafe_yyjson_get_first(arr); + usize num = unsafe_yyjson_get_len(arr), idx = 0; + if (unlikely(num == 0)) return NULL; + if (unlikely(!ptr_token_to_idx(token, len, &idx))) return NULL; + if (unlikely(idx >= num)) return NULL; + if (unsafe_yyjson_arr_is_flat(arr)) { + return val + idx; + } else { + while (idx-- > 0) val = unsafe_yyjson_get_next(val); + return val; + } +} + +/** + Get a value from object by token. + @param obj [in] an object, should not be NULL or non-object type + @param token [in] a JSON pointer token + @param len [in] unescaped token length + @param esc [in] number of escaped characters in this token + @return value associated with the token, or NULL if no value + */ +static_inline yyjson_val *ptr_obj_get(yyjson_val *obj, const char *token, + usize len, usize esc) { + yyjson_val *key = unsafe_yyjson_get_first(obj); + usize num = unsafe_yyjson_get_len(obj); + if (unlikely(num == 0)) return NULL; + for (; num > 0; num--, key = unsafe_yyjson_get_next(key + 1)) { + if (ptr_token_eq(key, token, len, esc)) return key + 1; + } + return NULL; +} + +/** + Get a value from array by token. + @param arr [in] an array, should not be NULL or non-array type + @param token [in] a JSON pointer token + @param len [in] unescaped token length + @param esc [in] number of escaped characters in this token + @param pre [out] previous (sibling) value of the returned value + @param last [out] whether index is last + @return value at index, or NULL if token is not index or index is out of range + */ +static_inline yyjson_mut_val *ptr_mut_arr_get(yyjson_mut_val *arr, + const char *token, + usize len, usize esc, + yyjson_mut_val **pre, + bool *last) { + yyjson_mut_val *val = (yyjson_mut_val *)arr->uni.ptr; /* last (tail) */ + usize num = unsafe_yyjson_get_len(arr), idx; + if (last) *last = false; + if (pre) *pre = NULL; + if (unlikely(num == 0)) { + if (last && len == 1 && (*token == '0' || *token == '-')) *last = true; + return NULL; + } + if (unlikely(!ptr_token_to_idx(token, len, &idx))) return NULL; + if (last) *last = (idx == num || idx == USIZE_MAX); + if (unlikely(idx >= num)) return NULL; + while (idx-- > 0) val = val->next; + if (pre) *pre = val; + return val->next; +} + +/** + Get a value from object by token. + @param obj [in] an object, should not be NULL or non-object type + @param token [in] a JSON pointer token + @param len [in] unescaped token length + @param esc [in] number of escaped characters in this token + @param pre [out] previous (sibling) key of the returned value's key + @return value associated with the token, or NULL if no value + */ +static_inline yyjson_mut_val *ptr_mut_obj_get(yyjson_mut_val *obj, + const char *token, + usize len, usize esc, + yyjson_mut_val **pre) { + yyjson_mut_val *pre_key = (yyjson_mut_val *)obj->uni.ptr, *key; + usize num = unsafe_yyjson_get_len(obj); + if (pre) *pre = NULL; + if (unlikely(num == 0)) return NULL; + for (; num > 0; num--, pre_key = key) { + key = pre_key->next->next; + if (ptr_token_eq(key, token, len, esc)) { + if (pre) *pre = pre_key; + return key->next; + } + } + return NULL; +} + +/** + Create a string value with JSON pointer token. + @param token [in] a JSON pointer token + @param len [in] unescaped token length + @param esc [in] number of escaped characters in this token + @param doc [in] used for memory allocation when creating value + @return new string value, or NULL if memory allocation failed + */ +static_inline yyjson_mut_val *ptr_new_key(const char *token, + usize len, usize esc, + yyjson_mut_doc *doc) { + const char *src = token; + if (likely(!esc)) { + return yyjson_mut_strncpy(doc, src, len); + } else { + const char *end = src + len + esc; + char *dst = unsafe_yyjson_mut_str_alc(doc, len + esc); + char *str = dst; + if (unlikely(!dst)) return NULL; + for (; src < end; src++, dst++) { + if (*src != '~') *dst = *src; + else *dst = (*++src == '0' ? '~' : '/'); + } + *dst = '\0'; + return yyjson_mut_strn(doc, str, len); + } +} + +/* macros for yyjson_ptr */ +#define return_err(_ret, _code, _pos, _msg) do { \ + if (err) { \ + err->code = YYJSON_PTR_ERR_##_code; \ + err->msg = _msg; \ + err->pos = (usize)(_pos); \ + } \ + return _ret; \ +} while (false) + +#define return_err_resolve(_ret, _pos) \ + return_err(_ret, RESOLVE, _pos, "JSON pointer cannot be resolved") +#define return_err_syntax(_ret, _pos) \ + return_err(_ret, SYNTAX, _pos, "invalid escaped character") +#define return_err_alloc(_ret) \ + return_err(_ret, MEMORY_ALLOCATION, 0, "failed to create value") + +yyjson_val *unsafe_yyjson_ptr_getx(yyjson_val *val, + const char *ptr, size_t ptr_len, + yyjson_ptr_err *err) { + + const char *hdr = ptr, *end = ptr + ptr_len, *token; + usize len, esc; + yyjson_type type; + + while (true) { + token = ptr_next_token(&ptr, end, &len, &esc); + if (unlikely(!token)) return_err_syntax(NULL, ptr - hdr); + type = unsafe_yyjson_get_type(val); + if (type == YYJSON_TYPE_OBJ) { + val = ptr_obj_get(val, token, len, esc); + } else if (type == YYJSON_TYPE_ARR) { + val = ptr_arr_get(val, token, len, esc); + } else { + val = NULL; + } + if (!val) return_err_resolve(NULL, token - hdr); + if (ptr == end) return val; + } +} + +yyjson_mut_val *unsafe_yyjson_mut_ptr_getx( + yyjson_mut_val *val, const char *ptr, size_t ptr_len, + yyjson_ptr_ctx *ctx, yyjson_ptr_err *err) { + + const char *hdr = ptr, *end = ptr + ptr_len, *token; + usize len, esc; + yyjson_mut_val *ctn, *pre = NULL; + yyjson_type type; + bool idx_is_last = false; + + while (true) { + token = ptr_next_token(&ptr, end, &len, &esc); + if (unlikely(!token)) return_err_syntax(NULL, ptr - hdr); + ctn = val; + type = unsafe_yyjson_get_type(val); + if (type == YYJSON_TYPE_OBJ) { + val = ptr_mut_obj_get(val, token, len, esc, &pre); + } else if (type == YYJSON_TYPE_ARR) { + val = ptr_mut_arr_get(val, token, len, esc, &pre, &idx_is_last); + } else { + val = NULL; + } + if (ctx && (ptr == end)) { + if (type == YYJSON_TYPE_OBJ || + (type == YYJSON_TYPE_ARR && (val || idx_is_last))) { + ctx->ctn = ctn; + ctx->pre = pre; + } + } + if (!val) return_err_resolve(NULL, token - hdr); + if (ptr == end) return val; + } +} + +bool unsafe_yyjson_mut_ptr_putx( + yyjson_mut_val *val, const char *ptr, size_t ptr_len, + yyjson_mut_val *new_val, yyjson_mut_doc *doc, bool create_parent, + bool insert_new, yyjson_ptr_ctx *ctx, yyjson_ptr_err *err) { + + const char *hdr = ptr, *end = ptr + ptr_len, *token; + usize token_len, esc, ctn_len; + yyjson_mut_val *ctn, *key, *pre = NULL; + yyjson_mut_val *sep_ctn = NULL, *sep_key = NULL, *sep_val = NULL; + yyjson_type ctn_type; + bool idx_is_last = false; + + /* skip exist parent nodes */ + while (true) { + token = ptr_next_token(&ptr, end, &token_len, &esc); + if (unlikely(!token)) return_err_syntax(false, ptr - hdr); + ctn = val; + ctn_type = unsafe_yyjson_get_type(ctn); + if (ctn_type == YYJSON_TYPE_OBJ) { + val = ptr_mut_obj_get(ctn, token, token_len, esc, &pre); + } else if (ctn_type == YYJSON_TYPE_ARR) { + val = ptr_mut_arr_get(ctn, token, token_len, esc, &pre, + &idx_is_last); + } else return_err_resolve(false, token - hdr); + if (!val) break; + if (ptr == end) break; /* is last token */ + } + + /* create parent nodes if not exist */ + if (unlikely(ptr != end)) { /* not last token */ + if (!create_parent) return_err_resolve(false, token - hdr); + + /* add value at last index if container is array */ + if (ctn_type == YYJSON_TYPE_ARR) { + if (!idx_is_last || !insert_new) { + return_err_resolve(false, token - hdr); + } + val = yyjson_mut_obj(doc); + if (!val) return_err_alloc(false); + + /* delay attaching until all operations are completed */ + sep_ctn = ctn; + sep_key = NULL; + sep_val = val; + + /* move to next token */ + ctn = val; + val = NULL; + ctn_type = YYJSON_TYPE_OBJ; + token = ptr_next_token(&ptr, end, &token_len, &esc); + if (unlikely(!token)) return_err_resolve(false, token - hdr); + } + + /* container is object, create parent nodes */ + while (ptr != end) { /* not last token */ + key = ptr_new_key(token, token_len, esc, doc); + if (!key) return_err_alloc(false); + val = yyjson_mut_obj(doc); + if (!val) return_err_alloc(false); + + /* delay attaching until all operations are completed */ + if (!sep_ctn) { + sep_ctn = ctn; + sep_key = key; + sep_val = val; + } else { + yyjson_mut_obj_add(ctn, key, val); + } + + /* move to next token */ + ctn = val; + val = NULL; + token = ptr_next_token(&ptr, end, &token_len, &esc); + if (unlikely(!token)) return_err_syntax(false, ptr - hdr); + } + } + + /* JSON pointer is resolved, insert or replace target value */ + ctn_len = unsafe_yyjson_get_len(ctn); + if (ctn_type == YYJSON_TYPE_OBJ) { + if (ctx) ctx->ctn = ctn; + if (!val || insert_new) { + /* insert new key-value pair */ + key = ptr_new_key(token, token_len, esc, doc); + if (unlikely(!key)) return_err_alloc(false); + if (ctx) ctx->pre = ctn_len ? (yyjson_mut_val *)ctn->uni.ptr : key; + unsafe_yyjson_mut_obj_add(ctn, key, new_val, ctn_len); + } else { + /* replace exist value */ + key = pre->next->next; + if (ctx) ctx->pre = pre; + if (ctx) ctx->old = val; + yyjson_mut_obj_put(ctn, key, new_val); + } + } else { + /* array */ + if (ctx && (val || idx_is_last)) ctx->ctn = ctn; + if (insert_new) { + /* append new value */ + if (val) { + pre->next = new_val; + new_val->next = val; + if (ctx) ctx->pre = pre; + unsafe_yyjson_set_len(ctn, ctn_len + 1); + } else if (idx_is_last) { + if (ctx) ctx->pre = ctn_len ? + (yyjson_mut_val *)ctn->uni.ptr : new_val; + yyjson_mut_arr_append(ctn, new_val); + } else { + return_err_resolve(false, token - hdr); + } + } else { + /* replace exist value */ + if (!val) return_err_resolve(false, token - hdr); + if (ctn_len > 1) { + new_val->next = val->next; + pre->next = new_val; + if (ctn->uni.ptr == val) ctn->uni.ptr = new_val; + } else { + new_val->next = new_val; + ctn->uni.ptr = new_val; + pre = new_val; + } + if (ctx) ctx->pre = pre; + if (ctx) ctx->old = val; + } + } + + /* all operations are completed, attach the new components to the target */ + if (unlikely(sep_ctn)) { + if (sep_key) yyjson_mut_obj_add(sep_ctn, sep_key, sep_val); + else yyjson_mut_arr_append(sep_ctn, sep_val); + } + return true; +} + +yyjson_mut_val *unsafe_yyjson_mut_ptr_replacex( + yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, + yyjson_ptr_ctx *ctx, yyjson_ptr_err *err) { + + yyjson_mut_val *cur_val; + yyjson_ptr_ctx cur_ctx; + memset(&cur_ctx, 0, sizeof(cur_ctx)); + if (!ctx) ctx = &cur_ctx; + cur_val = unsafe_yyjson_mut_ptr_getx(val, ptr, len, ctx, err); + if (!cur_val) return NULL; + + if (yyjson_mut_is_obj(ctx->ctn)) { + yyjson_mut_val *key = ctx->pre->next->next; + yyjson_mut_obj_put(ctx->ctn, key, new_val); + } else { + yyjson_ptr_ctx_replace(ctx, new_val); + } + ctx->old = cur_val; + return cur_val; +} + +yyjson_mut_val *unsafe_yyjson_mut_ptr_removex( + yyjson_mut_val *val, const char *ptr, size_t len, + yyjson_ptr_ctx *ctx, yyjson_ptr_err *err) { + + yyjson_mut_val *cur_val; + yyjson_ptr_ctx cur_ctx; + memset(&cur_ctx, 0, sizeof(cur_ctx)); + if (!ctx) ctx = &cur_ctx; + cur_val = unsafe_yyjson_mut_ptr_getx(val, ptr, len, ctx, err); + if (cur_val) { + if (yyjson_mut_is_obj(ctx->ctn)) { + yyjson_mut_val *key = ctx->pre->next->next; + yyjson_mut_obj_put(ctx->ctn, key, NULL); + } else { + yyjson_ptr_ctx_remove(ctx); + } + ctx->pre = NULL; + ctx->old = cur_val; + } + return cur_val; +} + +/* macros for yyjson_ptr */ +#undef return_err +#undef return_err_resolve +#undef return_err_syntax +#undef return_err_alloc + + + +/*============================================================================== + * MARK: - JSON Patch API (RFC 6902) (Public) + *============================================================================*/ + +/* JSON Patch operation */ +typedef enum patch_op { + PATCH_OP_ADD, /* path, value */ + PATCH_OP_REMOVE, /* path */ + PATCH_OP_REPLACE, /* path, value */ + PATCH_OP_MOVE, /* from, path */ + PATCH_OP_COPY, /* from, path */ + PATCH_OP_TEST, /* path, value */ + PATCH_OP_NONE /* invalid */ +} patch_op; + +static patch_op patch_op_get(yyjson_val *op) { + const char *str = op->uni.str; + switch (unsafe_yyjson_get_len(op)) { + case 3: + if (!memcmp(str, "add", 3)) return PATCH_OP_ADD; + return PATCH_OP_NONE; + case 4: + if (!memcmp(str, "move", 4)) return PATCH_OP_MOVE; + if (!memcmp(str, "copy", 4)) return PATCH_OP_COPY; + if (!memcmp(str, "test", 4)) return PATCH_OP_TEST; + return PATCH_OP_NONE; + case 6: + if (!memcmp(str, "remove", 6)) return PATCH_OP_REMOVE; + return PATCH_OP_NONE; + case 7: + if (!memcmp(str, "replace", 7)) return PATCH_OP_REPLACE; + return PATCH_OP_NONE; + default: + return PATCH_OP_NONE; + } +} + +/* macros for yyjson_patch */ +#define return_err(_code, _msg) do { \ + if (err->ptr.code == YYJSON_PTR_ERR_MEMORY_ALLOCATION) { \ + err->code = YYJSON_PATCH_ERROR_MEMORY_ALLOCATION; \ + err->msg = _msg; \ + memset(&err->ptr, 0, sizeof(yyjson_ptr_err)); \ + } else { \ + err->code = YYJSON_PATCH_ERROR_##_code; \ + err->msg = _msg; \ + err->idx = iter.idx ? iter.idx - 1 : 0; \ + } \ + return NULL; \ +} while (false) + +#define return_err_copy() \ + return_err(MEMORY_ALLOCATION, "failed to copy value") +#define return_err_key(_key) \ + return_err(MISSING_KEY, "missing key " _key) +#define return_err_val(_key) \ + return_err(INVALID_MEMBER, "invalid member " _key) + +#define ptr_get(_ptr) yyjson_mut_ptr_getx( \ + root, _ptr->uni.str, _ptr##_len, NULL, &err->ptr) +#define ptr_add(_ptr, _val) yyjson_mut_ptr_addx( \ + root, _ptr->uni.str, _ptr##_len, _val, doc, false, NULL, &err->ptr) +#define ptr_remove(_ptr) yyjson_mut_ptr_removex( \ + root, _ptr->uni.str, _ptr##_len, NULL, &err->ptr) +#define ptr_replace(_ptr, _val)yyjson_mut_ptr_replacex( \ + root, _ptr->uni.str, _ptr##_len, _val, NULL, &err->ptr) + +yyjson_mut_val *yyjson_patch(yyjson_mut_doc *doc, + yyjson_val *orig, + yyjson_val *patch, + yyjson_patch_err *err) { + + yyjson_mut_val *root; + yyjson_val *obj; + yyjson_arr_iter iter; + yyjson_patch_err err_tmp; + if (!err) err = &err_tmp; + memset(err, 0, sizeof(*err)); + memset(&iter, 0, sizeof(iter)); + + if (unlikely(!doc || !orig || !patch)) { + return_err(INVALID_PARAMETER, "input parameter is NULL"); + } + if (unlikely(!yyjson_is_arr(patch))) { + return_err(INVALID_PARAMETER, "input patch is not array"); + } + root = yyjson_val_mut_copy(doc, orig); + if (unlikely(!root)) return_err_copy(); + + /* iterate through the patch array */ + yyjson_arr_iter_init(patch, &iter); + while ((obj = yyjson_arr_iter_next(&iter))) { + patch_op op_enum; + yyjson_val *op, *path, *from = NULL, *value; + yyjson_mut_val *val = NULL, *test; + usize path_len, from_len = 0; + if (unlikely(!unsafe_yyjson_is_obj(obj))) { + return_err(INVALID_OPERATION, "JSON patch operation is not object"); + } + + /* get required member: op */ + op = yyjson_obj_get(obj, "op"); + if (unlikely(!op)) return_err_key("`op`"); + if (unlikely(!yyjson_is_str(op))) return_err_val("`op`"); + op_enum = patch_op_get(op); + + /* get required member: path */ + path = yyjson_obj_get(obj, "path"); + if (unlikely(!path)) return_err_key("`path`"); + if (unlikely(!yyjson_is_str(path))) return_err_val("`path`"); + path_len = unsafe_yyjson_get_len(path); + + /* get required member: value, from */ + switch ((int)op_enum) { + case PATCH_OP_ADD: case PATCH_OP_REPLACE: case PATCH_OP_TEST: + value = yyjson_obj_get(obj, "value"); + if (unlikely(!value)) return_err_key("`value`"); + val = yyjson_val_mut_copy(doc, value); + if (unlikely(!val)) return_err_copy(); + break; + case PATCH_OP_MOVE: case PATCH_OP_COPY: + from = yyjson_obj_get(obj, "from"); + if (unlikely(!from)) return_err_key("`from`"); + if (unlikely(!yyjson_is_str(from))) return_err_val("`from`"); + from_len = unsafe_yyjson_get_len(from); + break; + default: + break; + } + + /* perform an operation */ + switch ((int)op_enum) { + case PATCH_OP_ADD: /* add(path, val) */ + if (unlikely(path_len == 0)) { root = val; break; } + if (unlikely(!ptr_add(path, val))) { + return_err(POINTER, "failed to add `path`"); + } + break; + case PATCH_OP_REMOVE: /* remove(path) */ + if (unlikely(!ptr_remove(path))) { + return_err(POINTER, "failed to remove `path`"); + } + break; + case PATCH_OP_REPLACE: /* replace(path, val) */ + if (unlikely(path_len == 0)) { root = val; break; } + if (unlikely(!ptr_replace(path, val))) { + return_err(POINTER, "failed to replace `path`"); + } + break; + case PATCH_OP_MOVE: /* val = remove(from), add(path, val) */ + if (unlikely(from_len == 0 && path_len == 0)) break; + val = ptr_remove(from); + if (unlikely(!val)) { + return_err(POINTER, "failed to remove `from`"); + } + if (unlikely(path_len == 0)) { root = val; break; } + if (unlikely(!ptr_add(path, val))) { + return_err(POINTER, "failed to add `path`"); + } + break; + case PATCH_OP_COPY: /* val = get(from).copy, add(path, val) */ + val = ptr_get(from); + if (unlikely(!val)) { + return_err(POINTER, "failed to get `from`"); + } + if (unlikely(path_len == 0)) { root = val; break; } + val = yyjson_mut_val_mut_copy(doc, val); + if (unlikely(!val)) return_err_copy(); + if (unlikely(!ptr_add(path, val))) { + return_err(POINTER, "failed to add `path`"); + } + break; + case PATCH_OP_TEST: /* test = get(path), test.eq(val) */ + test = ptr_get(path); + if (unlikely(!test)) { + return_err(POINTER, "failed to get `path`"); + } + if (unlikely(!yyjson_mut_equals(val, test))) { + return_err(EQUAL, "failed to test equal"); + } + break; + default: + return_err(INVALID_MEMBER, "unsupported `op`"); + } + } + return root; +} + +yyjson_mut_val *yyjson_mut_patch(yyjson_mut_doc *doc, + yyjson_mut_val *orig, + yyjson_mut_val *patch, + yyjson_patch_err *err) { + yyjson_mut_val *root, *obj; + yyjson_mut_arr_iter iter; + yyjson_patch_err err_tmp; + if (!err) err = &err_tmp; + memset(err, 0, sizeof(*err)); + memset(&iter, 0, sizeof(iter)); + + if (unlikely(!doc || !orig || !patch)) { + return_err(INVALID_PARAMETER, "input parameter is NULL"); + } + if (unlikely(!yyjson_mut_is_arr(patch))) { + return_err(INVALID_PARAMETER, "input patch is not array"); + } + root = yyjson_mut_val_mut_copy(doc, orig); + if (unlikely(!root)) return_err_copy(); + + /* iterate through the patch array */ + yyjson_mut_arr_iter_init(patch, &iter); + while ((obj = yyjson_mut_arr_iter_next(&iter))) { + patch_op op_enum; + yyjson_mut_val *op, *path, *from = NULL, *value; + yyjson_mut_val *val = NULL, *test; + usize path_len, from_len = 0; + if (!unsafe_yyjson_is_obj(obj)) { + return_err(INVALID_OPERATION, "JSON patch operation is not object"); + } + + /* get required member: op */ + op = yyjson_mut_obj_get(obj, "op"); + if (unlikely(!op)) return_err_key("`op`"); + if (unlikely(!yyjson_mut_is_str(op))) return_err_val("`op`"); + op_enum = patch_op_get((yyjson_val *)(void *)op); + + /* get required member: path */ + path = yyjson_mut_obj_get(obj, "path"); + if (unlikely(!path)) return_err_key("`path`"); + if (unlikely(!yyjson_mut_is_str(path))) return_err_val("`path`"); + path_len = unsafe_yyjson_get_len(path); + + /* get required member: value, from */ + switch ((int)op_enum) { + case PATCH_OP_ADD: case PATCH_OP_REPLACE: case PATCH_OP_TEST: + value = yyjson_mut_obj_get(obj, "value"); + if (unlikely(!value)) return_err_key("`value`"); + val = yyjson_mut_val_mut_copy(doc, value); + if (unlikely(!val)) return_err_copy(); + break; + case PATCH_OP_MOVE: case PATCH_OP_COPY: + from = yyjson_mut_obj_get(obj, "from"); + if (unlikely(!from)) return_err_key("`from`"); + if (unlikely(!yyjson_mut_is_str(from))) { + return_err_val("`from`"); + } + from_len = unsafe_yyjson_get_len(from); + break; + default: + break; + } + + /* perform an operation */ + switch ((int)op_enum) { + case PATCH_OP_ADD: /* add(path, val) */ + if (unlikely(path_len == 0)) { root = val; break; } + if (unlikely(!ptr_add(path, val))) { + return_err(POINTER, "failed to add `path`"); + } + break; + case PATCH_OP_REMOVE: /* remove(path) */ + if (unlikely(!ptr_remove(path))) { + return_err(POINTER, "failed to remove `path`"); + } + break; + case PATCH_OP_REPLACE: /* replace(path, val) */ + if (unlikely(path_len == 0)) { root = val; break; } + if (unlikely(!ptr_replace(path, val))) { + return_err(POINTER, "failed to replace `path`"); + } + break; + case PATCH_OP_MOVE: /* val = remove(from), add(path, val) */ + if (unlikely(from_len == 0 && path_len == 0)) break; + val = ptr_remove(from); + if (unlikely(!val)) { + return_err(POINTER, "failed to remove `from`"); + } + if (unlikely(path_len == 0)) { root = val; break; } + if (unlikely(!ptr_add(path, val))) { + return_err(POINTER, "failed to add `path`"); + } + break; + case PATCH_OP_COPY: /* val = get(from).copy, add(path, val) */ + val = ptr_get(from); + if (unlikely(!val)) { + return_err(POINTER, "failed to get `from`"); + } + if (unlikely(path_len == 0)) { root = val; break; } + val = yyjson_mut_val_mut_copy(doc, val); + if (unlikely(!val)) return_err_copy(); + if (unlikely(!ptr_add(path, val))) { + return_err(POINTER, "failed to add `path`"); + } + break; + case PATCH_OP_TEST: /* test = get(path), test.eq(val) */ + test = ptr_get(path); + if (unlikely(!test)) { + return_err(POINTER, "failed to get `path`"); + } + if (unlikely(!yyjson_mut_equals(val, test))) { + return_err(EQUAL, "failed to test equal"); + } + break; + default: + return_err(INVALID_MEMBER, "unsupported `op`"); + } + } + return root; +} + +/* macros for yyjson_patch */ +#undef return_err +#undef return_err_copy +#undef return_err_key +#undef return_err_val +#undef ptr_get +#undef ptr_add +#undef ptr_remove +#undef ptr_replace + + + +/*============================================================================== + * MARK: - JSON Merge-Patch API (RFC 7386) (Public) + *============================================================================*/ + +yyjson_mut_val *yyjson_merge_patch(yyjson_mut_doc *doc, + yyjson_val *orig, + yyjson_val *patch) { + usize idx, max; + yyjson_val *key, *orig_val, *patch_val, local_orig; + yyjson_mut_val *builder, *mut_key, *mut_val, *merged_val; + + if (unlikely(!yyjson_is_obj(patch))) { + return yyjson_val_mut_copy(doc, patch); + } + + builder = yyjson_mut_obj(doc); + if (unlikely(!builder)) return NULL; + + memset(&local_orig, 0, sizeof(local_orig)); + if (!yyjson_is_obj(orig)) { + orig = &local_orig; + orig->tag = builder->tag; + orig->uni = builder->uni; + } + + /* If orig is contributing, copy any items not modified by the patch */ + if (orig != &local_orig) { + yyjson_obj_foreach(orig, idx, max, key, orig_val) { + patch_val = yyjson_obj_getn(patch, + unsafe_yyjson_get_str(key), + unsafe_yyjson_get_len(key)); + if (!patch_val) { + mut_key = yyjson_val_mut_copy(doc, key); + mut_val = yyjson_val_mut_copy(doc, orig_val); + if (!yyjson_mut_obj_add(builder, mut_key, mut_val)) return NULL; + } + } + } + + /* Merge items modified by the patch. */ + yyjson_obj_foreach(patch, idx, max, key, patch_val) { + /* null indicates the field is removed. */ + if (unsafe_yyjson_is_null(patch_val)) { + continue; + } + mut_key = yyjson_val_mut_copy(doc, key); + orig_val = yyjson_obj_getn(orig, + unsafe_yyjson_get_str(key), + unsafe_yyjson_get_len(key)); + merged_val = yyjson_merge_patch(doc, orig_val, patch_val); + if (!yyjson_mut_obj_add(builder, mut_key, merged_val)) return NULL; + } + + return builder; +} + +yyjson_mut_val *yyjson_mut_merge_patch(yyjson_mut_doc *doc, + yyjson_mut_val *orig, + yyjson_mut_val *patch) { + usize idx, max; + yyjson_mut_val *key, *orig_val, *patch_val, local_orig; + yyjson_mut_val *builder, *mut_key, *mut_val, *merged_val; + + if (unlikely(!yyjson_mut_is_obj(patch))) { + return yyjson_mut_val_mut_copy(doc, patch); + } + + builder = yyjson_mut_obj(doc); + if (unlikely(!builder)) return NULL; + + memset(&local_orig, 0, sizeof(local_orig)); + if (!yyjson_mut_is_obj(orig)) { + orig = &local_orig; + orig->tag = builder->tag; + orig->uni = builder->uni; + } + + /* If orig is contributing, copy any items not modified by the patch */ + if (orig != &local_orig) { + yyjson_mut_obj_foreach(orig, idx, max, key, orig_val) { + patch_val = yyjson_mut_obj_getn(patch, + unsafe_yyjson_get_str(key), + unsafe_yyjson_get_len(key)); + if (!patch_val) { + mut_key = yyjson_mut_val_mut_copy(doc, key); + mut_val = yyjson_mut_val_mut_copy(doc, orig_val); + if (!yyjson_mut_obj_add(builder, mut_key, mut_val)) return NULL; + } + } + } + + /* Merge items modified by the patch. */ + yyjson_mut_obj_foreach(patch, idx, max, key, patch_val) { + /* null indicates the field is removed. */ + if (unsafe_yyjson_is_null(patch_val)) { + continue; + } + mut_key = yyjson_mut_val_mut_copy(doc, key); + orig_val = yyjson_mut_obj_getn(orig, + unsafe_yyjson_get_str(key), + unsafe_yyjson_get_len(key)); + merged_val = yyjson_mut_merge_patch(doc, orig_val, patch_val); + if (!yyjson_mut_obj_add(builder, mut_key, merged_val)) return NULL; + } + + return builder; +} + +#endif /* YYJSON_DISABLE_UTILS */ diff --git a/lib/yyjson-0.12.0/src/yyjson.h b/lib/yyjson-0.12.0/src/yyjson.h new file mode 100644 index 00000000000..5b628445af9 --- /dev/null +++ b/lib/yyjson-0.12.0/src/yyjson.h @@ -0,0 +1,8252 @@ +/*============================================================================== + Copyright (c) 2020 YaoYuan + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + *============================================================================*/ + +/** + @file yyjson.h + @date 2019-03-09 + @author YaoYuan + */ + +#ifndef YYJSON_H +#define YYJSON_H + + + +/*============================================================================== + * MARK: - Header Files + *============================================================================*/ + +#include +#include +#include +#include +#include +#include + + + +/*============================================================================== + * MARK: - Compile-time Options + *============================================================================*/ + +/* + Define as 1 to disable JSON reader at compile-time. + This disables functions with "read" in their name. + Reduces binary size by about 60%. + */ +#ifndef YYJSON_DISABLE_READER +#endif + +/* + Define as 1 to disable JSON writer at compile-time. + This disables functions with "write" in their name. + Reduces binary size by about 30%. + */ +#ifndef YYJSON_DISABLE_WRITER +#endif + +/* + Define as 1 to disable JSON incremental reader at compile-time. + This disables functions with "incr" in their name. + */ +#ifndef YYJSON_DISABLE_INCR_READER +#endif + +/* + Define as 1 to disable JSON Pointer, JSON Patch and JSON Merge Patch supports. + This disables functions with "ptr" or "patch" in their name. + */ +#ifndef YYJSON_DISABLE_UTILS +#endif + +/* + Define as 1 to disable the fast floating-point number conversion in yyjson. + Libc's `strtod/snprintf` will be used instead. + + This reduces binary size by about 30%, but significantly slows down the + floating-point read/write speed. + */ +#ifndef YYJSON_DISABLE_FAST_FP_CONV +#endif + +/* + Define as 1 to disable non-standard JSON features support at compile-time, + such as YYJSON_READ_ALLOW_XXX and YYJSON_WRITE_ALLOW_XXX. + + This reduces binary size by about 10%, and slightly improves performance. + */ +#ifndef YYJSON_DISABLE_NON_STANDARD +#endif + +/* + Define as 1 to disable UTF-8 validation at compile-time. + + Use this if all input strings are guaranteed to be valid UTF-8 + (e.g. language-level String types are already validated). + + Disabling UTF-8 validation improves performance for non-ASCII strings by about + 3% to 7%. + + Note: If this flag is enabled while passing illegal UTF-8 strings, + the following errors may occur: + - Escaped characters may be ignored when parsing JSON strings. + - Ending quotes may be ignored when parsing JSON strings, causing the + string to merge with the next value. + - When serializing with `yyjson_mut_val`, the string's end may be accessed + out of bounds, potentially causing a segmentation fault. + */ +#ifndef YYJSON_DISABLE_UTF8_VALIDATION +#endif + +/* + Define as 1 to improve performance on architectures that do not support + unaligned memory access. + + Normally, this does not need to be set manually. See the C file for details. + */ +#ifndef YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS +#endif + +/* Define as 1 to export symbols when building this library as a Windows DLL. */ +#ifndef YYJSON_EXPORTS +#endif + +/* Define as 1 to import symbols when using this library as a Windows DLL. */ +#ifndef YYJSON_IMPORTS +#endif + +/* Define as 1 to include for compilers without C99 support. */ +#ifndef YYJSON_HAS_STDINT_H +#endif + +/* Define as 1 to include for compilers without C99 support. */ +#ifndef YYJSON_HAS_STDBOOL_H +#endif + + + +/*============================================================================== + * MARK: - Compiler Macros + *============================================================================*/ + +/** compiler version (MSVC) */ +#ifdef _MSC_VER +# define YYJSON_MSC_VER _MSC_VER +#else +# define YYJSON_MSC_VER 0 +#endif + +/** compiler version (GCC) */ +#ifdef __GNUC__ +# define YYJSON_GCC_VER __GNUC__ +# if defined(__GNUC_PATCHLEVEL__) +# define yyjson_gcc_available(major, minor, patch) \ + ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) \ + >= (major * 10000 + minor * 100 + patch)) +# else +# define yyjson_gcc_available(major, minor, patch) \ + ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100) \ + >= (major * 10000 + minor * 100 + patch)) +# endif +#else +# define YYJSON_GCC_VER 0 +# define yyjson_gcc_available(major, minor, patch) 0 +#endif + +/** real gcc check */ +#if defined(__GNUC__) && defined(__GNUC_MINOR__) && \ + !defined(__clang__) && !defined(__llvm__) && \ + !defined(__INTEL_COMPILER) && !defined(__ICC) && \ + !defined(__NVCC__) && !defined(__PGI) && !defined(__TINYC__) +# define YYJSON_IS_REAL_GCC 1 +#else +# define YYJSON_IS_REAL_GCC 0 +#endif + +/** C version (STDC) */ +#if defined(__STDC__) && (__STDC__ >= 1) && defined(__STDC_VERSION__) +# define YYJSON_STDC_VER __STDC_VERSION__ +#else +# define YYJSON_STDC_VER 0 +#endif + +/** C++ version */ +#if defined(__cplusplus) +# define YYJSON_CPP_VER __cplusplus +#else +# define YYJSON_CPP_VER 0 +#endif + +/** compiler builtin check (since gcc 10.0, clang 2.6, icc 2021) */ +#ifndef yyjson_has_builtin +# ifdef __has_builtin +# define yyjson_has_builtin(x) __has_builtin(x) +# else +# define yyjson_has_builtin(x) 0 +# endif +#endif + +/** compiler attribute check (since gcc 5.0, clang 2.9, icc 17) */ +#ifndef yyjson_has_attribute +# ifdef __has_attribute +# define yyjson_has_attribute(x) __has_attribute(x) +# else +# define yyjson_has_attribute(x) 0 +# endif +#endif + +/** compiler feature check (since clang 2.6, icc 17) */ +#ifndef yyjson_has_feature +# ifdef __has_feature +# define yyjson_has_feature(x) __has_feature(x) +# else +# define yyjson_has_feature(x) 0 +# endif +#endif + +/** include check (since gcc 5.0, clang 2.7, icc 16, msvc 2017 15.3) */ +#ifndef yyjson_has_include +# ifdef __has_include +# define yyjson_has_include(x) __has_include(x) +# else +# define yyjson_has_include(x) 0 +# endif +#endif + +/** inline for compiler */ +#ifndef yyjson_inline +# if YYJSON_MSC_VER >= 1200 +# define yyjson_inline __forceinline +# elif defined(_MSC_VER) +# define yyjson_inline __inline +# elif yyjson_has_attribute(always_inline) || YYJSON_GCC_VER >= 4 +# define yyjson_inline __inline__ __attribute__((always_inline)) +# elif defined(__clang__) || defined(__GNUC__) +# define yyjson_inline __inline__ +# elif defined(__cplusplus) || YYJSON_STDC_VER >= 199901L +# define yyjson_inline inline +# else +# define yyjson_inline +# endif +#endif + +/** noinline for compiler */ +#ifndef yyjson_noinline +# if YYJSON_MSC_VER >= 1400 +# define yyjson_noinline __declspec(noinline) +# elif yyjson_has_attribute(noinline) || YYJSON_GCC_VER >= 4 +# define yyjson_noinline __attribute__((noinline)) +# else +# define yyjson_noinline +# endif +#endif + +/** align for compiler */ +#ifndef yyjson_align +# if YYJSON_MSC_VER >= 1300 +# define yyjson_align(x) __declspec(align(x)) +# elif yyjson_has_attribute(aligned) || defined(__GNUC__) +# define yyjson_align(x) __attribute__((aligned(x))) +# elif YYJSON_CPP_VER >= 201103L +# define yyjson_align(x) alignas(x) +# else +# define yyjson_align(x) +# endif +#endif + +/** likely for compiler */ +#ifndef yyjson_likely +# if yyjson_has_builtin(__builtin_expect) || \ + (YYJSON_GCC_VER >= 4 && YYJSON_GCC_VER != 5) +# define yyjson_likely(expr) __builtin_expect(!!(expr), 1) +# else +# define yyjson_likely(expr) (expr) +# endif +#endif + +/** unlikely for compiler */ +#ifndef yyjson_unlikely +# if yyjson_has_builtin(__builtin_expect) || \ + (YYJSON_GCC_VER >= 4 && YYJSON_GCC_VER != 5) +# define yyjson_unlikely(expr) __builtin_expect(!!(expr), 0) +# else +# define yyjson_unlikely(expr) (expr) +# endif +#endif + +/** compile-time constant check for compiler */ +#ifndef yyjson_constant_p +# if yyjson_has_builtin(__builtin_constant_p) || (YYJSON_GCC_VER >= 3) +# define YYJSON_HAS_CONSTANT_P 1 +# define yyjson_constant_p(value) __builtin_constant_p(value) +# else +# define YYJSON_HAS_CONSTANT_P 0 +# define yyjson_constant_p(value) 0 +# endif +#endif + +/** deprecate warning */ +#ifndef yyjson_deprecated +# if YYJSON_MSC_VER >= 1400 +# define yyjson_deprecated(msg) __declspec(deprecated(msg)) +# elif yyjson_has_feature(attribute_deprecated_with_message) || \ + (YYJSON_GCC_VER > 4 || (YYJSON_GCC_VER == 4 && __GNUC_MINOR__ >= 5)) +# define yyjson_deprecated(msg) __attribute__((deprecated(msg))) +# elif YYJSON_GCC_VER >= 3 +# define yyjson_deprecated(msg) __attribute__((deprecated)) +# else +# define yyjson_deprecated(msg) +# endif +#endif + +/** function export */ +#ifndef yyjson_api +# if defined(_WIN32) +# if defined(YYJSON_EXPORTS) && YYJSON_EXPORTS +# define yyjson_api __declspec(dllexport) +# elif defined(YYJSON_IMPORTS) && YYJSON_IMPORTS +# define yyjson_api __declspec(dllimport) +# else +# define yyjson_api +# endif +# elif yyjson_has_attribute(visibility) || YYJSON_GCC_VER >= 4 +# define yyjson_api __attribute__((visibility("default"))) +# else +# define yyjson_api +# endif +#endif + +/** inline function export */ +#ifndef yyjson_api_inline +# define yyjson_api_inline static yyjson_inline +#endif + +/** stdint (C89 compatible) */ +#if (defined(YYJSON_HAS_STDINT_H) && YYJSON_HAS_STDINT_H) || \ + YYJSON_MSC_VER >= 1600 || YYJSON_STDC_VER >= 199901L || \ + defined(_STDINT_H) || defined(_STDINT_H_) || \ + defined(__CLANG_STDINT_H) || defined(_STDINT_H_INCLUDED) || \ + yyjson_has_include() +# include +#elif defined(_MSC_VER) +# if _MSC_VER < 1300 + typedef signed char int8_t; + typedef signed short int16_t; + typedef signed int int32_t; + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; + typedef signed __int64 int64_t; + typedef unsigned __int64 uint64_t; +# else + typedef signed __int8 int8_t; + typedef signed __int16 int16_t; + typedef signed __int32 int32_t; + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + typedef signed __int64 int64_t; + typedef unsigned __int64 uint64_t; +# endif +#else +# if UCHAR_MAX == 0xFFU + typedef signed char int8_t; + typedef unsigned char uint8_t; +# else +# error cannot find 8-bit integer type +# endif +# if USHRT_MAX == 0xFFFFU + typedef unsigned short uint16_t; + typedef signed short int16_t; +# elif UINT_MAX == 0xFFFFU + typedef unsigned int uint16_t; + typedef signed int int16_t; +# else +# error cannot find 16-bit integer type +# endif +# if UINT_MAX == 0xFFFFFFFFUL + typedef unsigned int uint32_t; + typedef signed int int32_t; +# elif ULONG_MAX == 0xFFFFFFFFUL + typedef unsigned long uint32_t; + typedef signed long int32_t; +# elif USHRT_MAX == 0xFFFFFFFFUL + typedef unsigned short uint32_t; + typedef signed short int32_t; +# else +# error cannot find 32-bit integer type +# endif +# if defined(__INT64_TYPE__) && defined(__UINT64_TYPE__) + typedef __INT64_TYPE__ int64_t; + typedef __UINT64_TYPE__ uint64_t; +# elif defined(__GNUC__) || defined(__clang__) +# if !defined(_SYS_TYPES_H) && !defined(__int8_t_defined) + __extension__ typedef long long int64_t; +# endif + __extension__ typedef unsigned long long uint64_t; +# elif defined(_LONG_LONG) || defined(__MWERKS__) || defined(_CRAYC) || \ + defined(__SUNPRO_C) || defined(__SUNPRO_CC) + typedef long long int64_t; + typedef unsigned long long uint64_t; +# elif (defined(__BORLANDC__) && __BORLANDC__ > 0x460) || \ + defined(__WATCOM_INT64__) || defined (__alpha) || defined (__DECC) + typedef __int64 int64_t; + typedef unsigned __int64 uint64_t; +# else +# error cannot find 64-bit integer type +# endif +#endif + +/** stdbool (C89 compatible) */ +#if (defined(YYJSON_HAS_STDBOOL_H) && YYJSON_HAS_STDBOOL_H) || \ + (yyjson_has_include() && !defined(__STRICT_ANSI__)) || \ + YYJSON_MSC_VER >= 1800 || YYJSON_STDC_VER >= 199901L +# include +#elif !defined(__bool_true_false_are_defined) +# define __bool_true_false_are_defined 1 +# if defined(__cplusplus) +# if defined(__GNUC__) && !defined(__STRICT_ANSI__) +# define _Bool bool +# if __cplusplus < 201103L +# define bool bool +# define false false +# define true true +# endif +# endif +# else +# define bool unsigned char +# define true 1 +# define false 0 +# endif +#endif + +/** char bit check */ +#if defined(CHAR_BIT) +# if CHAR_BIT != 8 +# error non 8-bit char is not supported +# endif +#endif + +/** + Microsoft Visual C++ 6.0 doesn't support converting number from u64 to f64: + error C2520: conversion from unsigned __int64 to double not implemented. + */ +#ifndef YYJSON_U64_TO_F64_NO_IMPL +# if (0 < YYJSON_MSC_VER) && (YYJSON_MSC_VER <= 1200) +# define YYJSON_U64_TO_F64_NO_IMPL 1 +# else +# define YYJSON_U64_TO_F64_NO_IMPL 0 +# endif +#endif + + + +/*============================================================================== + * MARK: - Compile Hint Begin + *============================================================================*/ + +/* extern "C" begin */ +#ifdef __cplusplus +extern "C" { +#endif + +/* warning suppress begin */ +#if defined(__clang__) +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wunused-function" +# pragma clang diagnostic ignored "-Wunused-parameter" +#elif defined(__GNUC__) +# if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) +# pragma GCC diagnostic push +# endif +# pragma GCC diagnostic ignored "-Wunused-function" +# pragma GCC diagnostic ignored "-Wunused-parameter" +#elif defined(_MSC_VER) +# pragma warning(push) +# pragma warning(disable:4800) /* 'int': forcing value to 'true' or 'false' */ +#endif + + + +/*============================================================================== + * MARK: - Version + *============================================================================*/ + +/** The major version of yyjson. */ +#define YYJSON_VERSION_MAJOR 0 + +/** The minor version of yyjson. */ +#define YYJSON_VERSION_MINOR 12 + +/** The patch version of yyjson. */ +#define YYJSON_VERSION_PATCH 0 + +/** The version of yyjson in hex: `(major << 16) | (minor << 8) | (patch)`. */ +#define YYJSON_VERSION_HEX 0x000C00 + +/** The version string of yyjson. */ +#define YYJSON_VERSION_STRING "0.12.0" + +/** The version of yyjson in hex, same as `YYJSON_VERSION_HEX`. */ +yyjson_api uint32_t yyjson_version(void); + + + +/*============================================================================== + * MARK: - JSON Types + *============================================================================*/ + +/** Type of a JSON value (3 bit). */ +typedef uint8_t yyjson_type; +/** No type, invalid. */ +#define YYJSON_TYPE_NONE ((uint8_t)0) /* _____000 */ +/** Raw string type, no subtype. */ +#define YYJSON_TYPE_RAW ((uint8_t)1) /* _____001 */ +/** Null type: `null` literal, no subtype. */ +#define YYJSON_TYPE_NULL ((uint8_t)2) /* _____010 */ +/** Boolean type, subtype: TRUE, FALSE. */ +#define YYJSON_TYPE_BOOL ((uint8_t)3) /* _____011 */ +/** Number type, subtype: UINT, SINT, REAL. */ +#define YYJSON_TYPE_NUM ((uint8_t)4) /* _____100 */ +/** String type, subtype: NONE, NOESC, UNIERR. */ +#define YYJSON_TYPE_STR ((uint8_t)5) /* _____101 */ +/** Array type, no subtype. */ +#define YYJSON_TYPE_ARR ((uint8_t)6) /* _____110 */ +/** Object type, no subtype. */ +#define YYJSON_TYPE_OBJ ((uint8_t)7) /* _____111 */ + +/** Subtype of a JSON value (2 bit). */ +typedef uint8_t yyjson_subtype; +/** No subtype. */ +#define YYJSON_SUBTYPE_NONE ((uint8_t)(0 << 3)) /* ___00___ */ +/** False subtype: `false` literal. */ +#define YYJSON_SUBTYPE_FALSE ((uint8_t)(0 << 3)) /* ___00___ */ +/** True subtype: `true` literal. */ +#define YYJSON_SUBTYPE_TRUE ((uint8_t)(1 << 3)) /* ___01___ */ +/** Unsigned integer subtype: `uint64_t`. */ +#define YYJSON_SUBTYPE_UINT ((uint8_t)(0 << 3)) /* ___00___ */ +/** Signed integer subtype: `int64_t`. */ +#define YYJSON_SUBTYPE_SINT ((uint8_t)(1 << 3)) /* ___01___ */ +/** Real number subtype: `double`. */ +#define YYJSON_SUBTYPE_REAL ((uint8_t)(2 << 3)) /* ___10___ */ +/** String that do not need to be escaped for writing (internal use). */ +#define YYJSON_SUBTYPE_NOESC ((uint8_t)(1 << 3)) /* ___01___ */ +/** String containing invalid Unicode sequences. */ +#define YYJSON_SUBTYPE_UNIERR ((uint8_t)(2 << 3)) /* ___10___ */ + +/** The mask used to extract the type of a JSON value. */ +#define YYJSON_TYPE_MASK ((uint8_t)0x07) /* _____111 */ +/** The number of bits used by the type. */ +#define YYJSON_TYPE_BIT ((uint8_t)3) +/** The mask used to extract the subtype of a JSON value. */ +#define YYJSON_SUBTYPE_MASK ((uint8_t)0x18) /* ___11___ */ +/** The number of bits used by the subtype. */ +#define YYJSON_SUBTYPE_BIT ((uint8_t)2) +/** The mask used to extract the reserved bits of a JSON value. */ +#define YYJSON_RESERVED_MASK ((uint8_t)0xE0) /* 111_____ */ +/** The number of reserved bits. */ +#define YYJSON_RESERVED_BIT ((uint8_t)3) +/** The mask used to extract the tag of a JSON value. */ +#define YYJSON_TAG_MASK ((uint8_t)0xFF) /* 11111111 */ +/** The number of bits used by the tag. */ +#define YYJSON_TAG_BIT ((uint8_t)8) + +/** Padding size for JSON reader. */ +#define YYJSON_PADDING_SIZE 4 + + + +/*============================================================================== + * MARK: - Allocator + *============================================================================*/ + +/** + A memory allocator. + + Typically you don't need to use it, unless you want to customize your own + memory allocator. + */ +typedef struct yyjson_alc { + /** Same as libc's malloc(size), should not be NULL. */ + void *(*malloc)(void *ctx, size_t size); + /** Same as libc's realloc(ptr, size), should not be NULL. */ + void *(*realloc)(void *ctx, void *ptr, size_t old_size, size_t size); + /** Same as libc's free(ptr), should not be NULL. */ + void (*free)(void *ctx, void *ptr); + /** A context for malloc/realloc/free, can be NULL. */ + void *ctx; +} yyjson_alc; + +/** + A pool allocator uses fixed length pre-allocated memory. + + This allocator may be used to avoid malloc/realloc calls. The pre-allocated + memory should be held by the caller. The maximum amount of memory required to + read a JSON can be calculated using the `yyjson_read_max_memory_usage()` + function, but the amount of memory required to write a JSON cannot be directly + calculated. + + This is not a general-purpose allocator. It is designed to handle a single JSON + data at a time. If it is used for overly complex memory tasks, such as parsing + multiple JSON documents using the same allocator but releasing only a few of + them, it may cause memory fragmentation, resulting in performance degradation + and memory waste. + + @param alc The allocator to be initialized. + If this parameter is NULL, the function will fail and return false. + If `buf` or `size` is invalid, this will be set to an empty allocator. + @param buf The buffer memory for this allocator. + If this parameter is NULL, the function will fail and return false. + @param size The size of `buf`, in bytes. + If this parameter is less than 8 words (32/64 bytes on 32/64-bit OS), the + function will fail and return false. + @return true if the `alc` has been successfully initialized. + + @b Example + @code + // parse JSON with stack memory + char buf[1024]; + yyjson_alc alc; + yyjson_alc_pool_init(&alc, buf, 1024); + + const char *json = "{\"name\":\"Helvetica\",\"size\":16}" + yyjson_doc *doc = yyjson_read_opts(json, strlen(json), 0, &alc, NULL); + // the memory of `doc` is on the stack + @endcode + + @warning This Allocator is not thread-safe. + */ +yyjson_api bool yyjson_alc_pool_init(yyjson_alc *alc, void *buf, size_t size); + +/** + A dynamic allocator. + + This allocator has a similar usage to the pool allocator above. However, when + there is not enough memory, this allocator will dynamically request more memory + using libc's `malloc` function, and frees it all at once when it is destroyed. + + @return A new dynamic allocator, or NULL if memory allocation failed. + @note The returned value should be freed with `yyjson_alc_dyn_free()`. + + @warning This Allocator is not thread-safe. + */ +yyjson_api yyjson_alc *yyjson_alc_dyn_new(void); + +/** + Free a dynamic allocator which is created by `yyjson_alc_dyn_new()`. + @param alc The dynamic allocator to be destroyed. + */ +yyjson_api void yyjson_alc_dyn_free(yyjson_alc *alc); + + + +/*============================================================================== + * MARK: - Text Locating + *============================================================================*/ + +/** + Locate the line and column number for a byte position in a string. + This can be used to get better description for error position. + + @param str The input string. + @param len The byte length of the input string. + @param pos The byte position within the input string. + @param line A pointer to receive the line number, starting from 1. + @param col A pointer to receive the column number, starting from 1. + @param chr A pointer to receive the character index, starting from 0. + @return true on success, false if `str` is NULL or `pos` is out of bounds. + @note Line/column/character are calculated based on Unicode characters for + compatibility with text editors. For multi-byte UTF-8 characters, + the returned value may not directly correspond to the byte position. + */ +yyjson_api bool yyjson_locate_pos(const char *str, size_t len, size_t pos, + size_t *line, size_t *col, size_t *chr); + + + +/*============================================================================== + * MARK: - JSON Structure + *============================================================================*/ + +/** + An immutable document for reading JSON. + This document holds memory for all its JSON values and strings. When it is no + longer used, the user should call `yyjson_doc_free()` to free its memory. + */ +typedef struct yyjson_doc yyjson_doc; + +/** + An immutable value for reading JSON. + A JSON Value has the same lifetime as its document. The memory is held by its + document and and cannot be freed alone. + */ +typedef struct yyjson_val yyjson_val; + +/** + A mutable document for building JSON. + This document holds memory for all its JSON values and strings. When it is no + longer used, the user should call `yyjson_mut_doc_free()` to free its memory. + */ +typedef struct yyjson_mut_doc yyjson_mut_doc; + +/** + A mutable value for building JSON. + A JSON Value has the same lifetime as its document. The memory is held by its + document and and cannot be freed alone. + */ +typedef struct yyjson_mut_val yyjson_mut_val; + + + +/*============================================================================== + * MARK: - JSON Reader API + *============================================================================*/ + +/** Run-time options for JSON reader. */ +typedef uint32_t yyjson_read_flag; + +/** Default option (RFC 8259 compliant): + - Read positive integer as uint64_t. + - Read negative integer as int64_t. + - Read floating-point number as double with round-to-nearest mode. + - Read integer which cannot fit in uint64_t or int64_t as double. + - Report error if double number is infinity. + - Report error if string contains invalid UTF-8 character or BOM. + - Report error on trailing commas, comments, inf and nan literals. */ +static const yyjson_read_flag YYJSON_READ_NOFLAG = 0; + +/** Read the input data in-situ. + This option allows the reader to modify and use input data to store string + values, which can increase reading speed slightly. + The caller should hold the input data before free the document. + The input data must be padded by at least `YYJSON_PADDING_SIZE` bytes. + For example: `[1,2]` should be `[1,2]\0\0\0\0`, input length should be 5. */ +static const yyjson_read_flag YYJSON_READ_INSITU = 1 << 0; + +/** Stop when done instead of issuing an error if there's additional content + after a JSON document. This option may be used to parse small pieces of JSON + in larger data, such as `NDJSON`. */ +static const yyjson_read_flag YYJSON_READ_STOP_WHEN_DONE = 1 << 1; + +/** Allow single trailing comma at the end of an object or array, + such as `[1,2,3,]`, `{"a":1,"b":2,}` (non-standard). */ +static const yyjson_read_flag YYJSON_READ_ALLOW_TRAILING_COMMAS = 1 << 2; + +/** Allow C-style single-line and mult-line comments (non-standard). */ +static const yyjson_read_flag YYJSON_READ_ALLOW_COMMENTS = 1 << 3; + +/** Allow inf/nan number and literal, case-insensitive, + such as 1e999, NaN, inf, -Infinity (non-standard). */ +static const yyjson_read_flag YYJSON_READ_ALLOW_INF_AND_NAN = 1 << 4; + +/** Read all numbers as raw strings (value with `YYJSON_TYPE_RAW` type), + inf/nan literal is also read as raw with `ALLOW_INF_AND_NAN` flag. */ +static const yyjson_read_flag YYJSON_READ_NUMBER_AS_RAW = 1 << 5; + +/** Allow reading raw invalid UTF-8 bytes in strings (non-standard). + This flag only affects raw bytes; `\uXXXX` escapes still require valid + surrogate pairs unless `YYJSON_READ_ALLOW_INVALID_SURROGATE` is also set. + Invalid escape sequences will still be reported as errors. + + @warning Strings may contain ill-formed UTF-8 when this option is used, + you need to handle these strings carefully to avoid security risks. */ +static const yyjson_read_flag YYJSON_READ_ALLOW_INVALID_UNICODE = 1 << 6; + +/** Read big numbers as raw strings. These big numbers include integers that + cannot be represented by `int64_t` and `uint64_t`, and floating-point + numbers that cannot be represented by finite `double`. + The flag will be overridden by `YYJSON_READ_NUMBER_AS_RAW` flag. */ +static const yyjson_read_flag YYJSON_READ_BIGNUM_AS_RAW = 1 << 7; + +/** Allow UTF-8 BOM and skip it before parsing if any (non-standard). */ +static const yyjson_read_flag YYJSON_READ_ALLOW_BOM = 1 << 8; + +/** Allow extended number formats (non-standard): + - Hexadecimal numbers, such as `0x7B`. + - Numbers with leading or trailing decimal point, such as `.123`, `123.`. + - Numbers with a leading plus sign, such as `+123`. */ +static const yyjson_read_flag YYJSON_READ_ALLOW_EXT_NUMBER = 1 << 9; + +/** Allow extended escape sequences in strings (non-standard): + - Additional escapes: `\a`, `\e`, `\v`, ``\'``, `\?`, `\0`. + - Hex escapes: `\xNN`, such as `\x7B`. + - Line continuation: backslash followed by line terminator sequences. + - Unknown escape: if backslash is followed by an unsupported character, + the backslash will be removed and the character will be kept as-is. + However, `\1`-`\9` will still trigger an error. */ +static const yyjson_read_flag YYJSON_READ_ALLOW_EXT_ESCAPE = 1 << 10; + +/** Allow extended whitespace characters (non-standard): + - Vertical tab `\v` and form feed `\f`. + - Line separator `\u2028` and paragraph separator `\u2029`. + - Non-breaking space `\xA0`. + - Byte order mark: `\uFEFF`. + - Other Unicode characters in the Zs (Separator, space) category. */ +static const yyjson_read_flag YYJSON_READ_ALLOW_EXT_WHITESPACE = 1 << 11; + +/** Allow strings enclosed in single quotes (non-standard), such as ``'ab'``. */ +static const yyjson_read_flag YYJSON_READ_ALLOW_SINGLE_QUOTED_STR = 1 << 12; + +/** Allow object keys without quotes (non-standard), such as `{a:1,b:2}`. + This extends the ECMAScript IdentifierName rule by allowing any + non-whitespace character with code point above `U+007F`. */ +static const yyjson_read_flag YYJSON_READ_ALLOW_UNQUOTED_KEY = 1 << 13; + +/** Replace invalid unicode code units with replacement character `U+FFFD` + when parsing string values (non-standard). + Invalid UTF-8 byte sequences that are shorter than three bytes cannot be + expanded in-place and are left unchanged. Strings that still contain + invalid bytes are marked with `YYJSON_SUBTYPE_UNIERR` for the caller to + detect. + This flag implicitly enables `YYJSON_READ_ALLOW_INVALID_UNICODE` and + `YYJSON_READ_ALLOW_INVALID_SURROGATE`, so malformed input is tolerated + and replaced without needing those flags. + Note: when compiled with `YYJSON_DISABLE_UTF8_VALIDATION=ON`, invalid + UTF-8 byte sequences are not detected and therefore not replaced. */ +static const yyjson_read_flag YYJSON_READ_REPLACE_INVALID_UNICODE = 1 << 14; + +/** Allow unpaired surrogate code units in `\uXXXX` escapes (non-standard). + Raw invalid UTF-8 bytes are unaffected; use + `YYJSON_READ_ALLOW_INVALID_UNICODE` for that. When combined with + `YYJSON_READ_REPLACE_INVALID_UNICODE`, the surrogates are replaced with + `U+FFFD`. */ +static const yyjson_read_flag YYJSON_READ_ALLOW_INVALID_SURROGATE = 1 << 15; + +/** Allow JSON5 format, see: [https://json5.org]. + This flag supports all JSON5 features with some additional extensions: + - Accepts more escape sequences than JSON5 (e.g. `\a`, `\e`). + - Unquoted keys are not limited to ECMAScript IdentifierName. + - Allow case-insensitive `NaN`, `Inf` and `Infinity` literals. */ +static const yyjson_read_flag YYJSON_READ_JSON5 = + (1 << 2) | /* YYJSON_READ_ALLOW_TRAILING_COMMAS */ + (1 << 3) | /* YYJSON_READ_ALLOW_COMMENTS */ + (1 << 4) | /* YYJSON_READ_ALLOW_INF_AND_NAN */ + (1 << 9) | /* YYJSON_READ_ALLOW_EXT_NUMBER */ + (1 << 10) | /* YYJSON_READ_ALLOW_EXT_ESCAPE */ + (1 << 11) | /* YYJSON_READ_ALLOW_EXT_WHITESPACE */ + (1 << 12) | /* YYJSON_READ_ALLOW_SINGLE_QUOTED_STR */ + (1 << 13); /* YYJSON_READ_ALLOW_UNQUOTED_KEY */ + + + +/** Result code for JSON reader. */ +typedef uint32_t yyjson_read_code; + +/** Success, no error. */ +static const yyjson_read_code YYJSON_READ_SUCCESS = 0; + +/** Invalid parameter, such as NULL input string or 0 input length. */ +static const yyjson_read_code YYJSON_READ_ERROR_INVALID_PARAMETER = 1; + +/** Memory allocation failed. */ +static const yyjson_read_code YYJSON_READ_ERROR_MEMORY_ALLOCATION = 2; + +/** Input JSON string is empty. */ +static const yyjson_read_code YYJSON_READ_ERROR_EMPTY_CONTENT = 3; + +/** Unexpected content after document, such as `[123]abc`. */ +static const yyjson_read_code YYJSON_READ_ERROR_UNEXPECTED_CONTENT = 4; + +/** Unexpected end of input, the parsed part is valid, such as `[123`. */ +static const yyjson_read_code YYJSON_READ_ERROR_UNEXPECTED_END = 5; + +/** Unexpected character inside the document, such as `[abc]`. */ +static const yyjson_read_code YYJSON_READ_ERROR_UNEXPECTED_CHARACTER = 6; + +/** Invalid JSON structure, such as `[1,]`. */ +static const yyjson_read_code YYJSON_READ_ERROR_JSON_STRUCTURE = 7; + +/** Invalid comment, deprecated, use `UNEXPECTED_END` for unclosed comment. */ +static const yyjson_read_code YYJSON_READ_ERROR_INVALID_COMMENT = 8; + +/** Invalid number, such as `123.e12`, `000`. */ +static const yyjson_read_code YYJSON_READ_ERROR_INVALID_NUMBER = 9; + +/** Invalid string, such as invalid escaped character inside a string. */ +static const yyjson_read_code YYJSON_READ_ERROR_INVALID_STRING = 10; + +/** Invalid JSON literal, such as `truu`. */ +static const yyjson_read_code YYJSON_READ_ERROR_LITERAL = 11; + +/** Failed to open a file. */ +static const yyjson_read_code YYJSON_READ_ERROR_FILE_OPEN = 12; + +/** Failed to read a file. */ +static const yyjson_read_code YYJSON_READ_ERROR_FILE_READ = 13; + +/** Incomplete input during incremental parsing; parsing state is preserved. */ +static const yyjson_read_code YYJSON_READ_ERROR_MORE = 14; + +/** Error information for JSON reader. */ +typedef struct yyjson_read_err { + /** Error code, see `yyjson_read_code` for all possible values. */ + yyjson_read_code code; + /** Error message, constant, no need to free (NULL if success). */ + const char *msg; + /** Error byte position for input data (0 if success). */ + size_t pos; +} yyjson_read_err; + + + +#if !defined(YYJSON_DISABLE_READER) || !YYJSON_DISABLE_READER + +/** + Read JSON with options. + + This function is thread-safe when: + 1. The `dat` is not modified by other threads. + 2. The `alc` is thread-safe or NULL. + + @param dat The JSON data (UTF-8 without BOM), null-terminator is not required. + If this parameter is NULL, the function will fail and return NULL. + The `dat` will not be modified without the flag `YYJSON_READ_INSITU`, so you + can pass a `const char *` string and case it to `char *` if you don't use + the `YYJSON_READ_INSITU` flag. + @param len The length of JSON data in bytes. + If this parameter is 0, the function will fail and return NULL. + @param flg The JSON read options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON reader. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return A new JSON document, or NULL if an error occurs. + When it's no longer needed, it should be freed with `yyjson_doc_free()`. + */ +yyjson_api yyjson_doc *yyjson_read_opts(char *dat, + size_t len, + yyjson_read_flag flg, + const yyjson_alc *alc, + yyjson_read_err *err); + +/** + Read a JSON file. + + This function is thread-safe when: + 1. The file is not modified by other threads. + 2. The `alc` is thread-safe or NULL. + + @param path The JSON file's path. + This should be a null-terminated string using the system's native encoding. + If this path is NULL or invalid, the function will fail and return NULL. + @param flg The JSON read options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON reader. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return A new JSON document, or NULL if an error occurs. + When it's no longer needed, it should be freed with `yyjson_doc_free()`. + + @warning On 32-bit operating system, files larger than 2GB may fail to read. + */ +yyjson_api yyjson_doc *yyjson_read_file(const char *path, + yyjson_read_flag flg, + const yyjson_alc *alc, + yyjson_read_err *err); + +/** + Read JSON from a file pointer. + + @param fp The file pointer. + The data will be read from the current position of the FILE to the end. + If this fp is NULL or invalid, the function will fail and return NULL. + @param flg The JSON read options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON reader. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return A new JSON document, or NULL if an error occurs. + When it's no longer needed, it should be freed with `yyjson_doc_free()`. + + @warning On 32-bit operating system, files larger than 2GB may fail to read. + */ +yyjson_api yyjson_doc *yyjson_read_fp(FILE *fp, + yyjson_read_flag flg, + const yyjson_alc *alc, + yyjson_read_err *err); + +/** + Read a JSON string. + + This function is thread-safe. + + @param dat The JSON data (UTF-8 without BOM), null-terminator is not required. + If this parameter is NULL, the function will fail and return NULL. + @param len The length of JSON data in bytes. + If this parameter is 0, the function will fail and return NULL. + @param flg The JSON read options. + Multiple options can be combined with `|` operator. 0 means no options. + @return A new JSON document, or NULL if an error occurs. + When it's no longer needed, it should be freed with `yyjson_doc_free()`. + */ +yyjson_api_inline yyjson_doc *yyjson_read(const char *dat, + size_t len, + yyjson_read_flag flg) { + flg &= ~YYJSON_READ_INSITU; /* const string cannot be modified */ + return yyjson_read_opts((char *)(void *)(size_t)(const void *)dat, + len, flg, NULL, NULL); +} + + + +#if !defined(YYJSON_DISABLE_INCR_READER) || !YYJSON_DISABLE_INCR_READER + +/** Opaque state for incremental JSON reader. */ +typedef struct yyjson_incr_state yyjson_incr_state; + +/** + Initialize state for incremental read. + + To read a large JSON document incrementally: + 1. Call `yyjson_incr_new()` to create the state for incremental reading. + 2. Call `yyjson_incr_read()` repeatedly. + 3. Call `yyjson_incr_free()` to free the state. + + Note: The incremental JSON reader only supports standard JSON. + Flags for non-standard features (e.g. comments, trailing commas) are ignored. + + @param buf The JSON data, null-terminator is not required. + If this parameter is NULL, the function will fail and return NULL. + @param buf_len The length of the JSON data in `buf`. + If use `YYJSON_READ_INSITU`, `buf_len` should not include the padding size. + @param flg The JSON read options. + Multiple options can be combined with `|` operator. + @param alc The memory allocator used by JSON reader. + Pass NULL to use the libc's default allocator. + @return A state for incremental reading. + It should be freed with `yyjson_incr_free()`. + NULL is returned if memory allocation fails. +*/ +yyjson_api yyjson_incr_state *yyjson_incr_new(char *buf, size_t buf_len, + yyjson_read_flag flg, + const yyjson_alc *alc); + +/** + Performs incremental read of up to `len` bytes. + + If NULL is returned and `err->code` is set to `YYJSON_READ_ERROR_MORE`, it + indicates that more data is required to continue parsing. Then, call this + function again with incremented `len`. Continue until a document is returned or + an error other than `YYJSON_READ_ERROR_MORE` is returned. + + Note: Parsing in very small increments is not efficient. An increment of + several kilobytes or megabytes is recommended. + + @param state The state for incremental reading, created using + `yyjson_incr_new()`. + @param len The number of bytes of JSON data available to parse. + If this parameter is 0, the function will fail and return NULL. + @param err A pointer to receive error information. + @return A new JSON document, or NULL if an error occurs. + When the document is no longer needed, it should be freed with + `yyjson_doc_free()`. +*/ +yyjson_api yyjson_doc *yyjson_incr_read(yyjson_incr_state *state, size_t len, + yyjson_read_err *err); + +/** Release the incremental read state and free the memory. */ +yyjson_api void yyjson_incr_free(yyjson_incr_state *state); + +#endif /* YYJSON_DISABLE_INCR_READER */ + +/** + Returns the size of maximum memory usage to read a JSON data. + + You may use this value to avoid malloc() or calloc() call inside the reader + to get better performance, or read multiple JSON with one piece of memory. + + @param len The length of JSON data in bytes. + @param flg The JSON read options. + @return The maximum memory size to read this JSON, or 0 if overflow. + + @b Example + @code + // read multiple JSON with same pre-allocated memory + + char *dat1, *dat2, *dat3; // JSON data + size_t len1, len2, len3; // JSON length + size_t max_len = MAX(len1, MAX(len2, len3)); + yyjson_doc *doc; + + // use one allocator for multiple JSON + size_t size = yyjson_read_max_memory_usage(max_len, 0); + void *buf = malloc(size); + yyjson_alc alc; + yyjson_alc_pool_init(&alc, buf, size); + + // no more alloc() or realloc() call during reading + doc = yyjson_read_opts(dat1, len1, 0, &alc, NULL); + yyjson_doc_free(doc); + doc = yyjson_read_opts(dat2, len2, 0, &alc, NULL); + yyjson_doc_free(doc); + doc = yyjson_read_opts(dat3, len3, 0, &alc, NULL); + yyjson_doc_free(doc); + + free(buf); + @endcode + @see yyjson_alc_pool_init() + */ +yyjson_api_inline size_t yyjson_read_max_memory_usage(size_t len, + yyjson_read_flag flg) { + /* + 1. The max value count is (json_size / 2 + 1), + for example: "[1,2,3,4]" size is 9, value count is 5. + 2. Some broken JSON may cost more memory during reading, but fail at end, + for example: "[[[[[[[[". + 3. yyjson use 16 bytes per value, see struct yyjson_val. + 4. yyjson use dynamic memory with a growth factor of 1.5. + + The max memory size is (json_size / 2 * 16 * 1.5 + padding). + */ + size_t mul = (size_t)12 + !(flg & YYJSON_READ_INSITU); + size_t pad = 256; + size_t max = (size_t)(~(size_t)0); + if (flg & YYJSON_READ_STOP_WHEN_DONE) len = len < 256 ? 256 : len; + if (len >= (max - pad - mul) / mul) return 0; + return len * mul + pad; +} + +/** + Read a JSON number. + + This function is thread-safe when data is not modified by other threads. + + @param dat The JSON data (UTF-8 without BOM), null-terminator is required. + If this parameter is NULL, the function will fail and return NULL. + @param val The output value where result is stored. + If this parameter is NULL, the function will fail and return NULL. + The value will hold either UINT or SINT or REAL number; + @param flg The JSON read options. + Multiple options can be combined with `|` operator. 0 means no options. + Supports `YYJSON_READ_NUMBER_AS_RAW` and `YYJSON_READ_ALLOW_INF_AND_NAN`. + @param alc The memory allocator used for long number. + It is only used when the built-in floating point reader is disabled. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return If successful, a pointer to the character after the last character + used in the conversion, NULL if an error occurs. + */ +yyjson_api const char *yyjson_read_number(const char *dat, + yyjson_val *val, + yyjson_read_flag flg, + const yyjson_alc *alc, + yyjson_read_err *err); + +/** Same as `yyjson_read_number()`. */ +yyjson_api_inline const char *yyjson_mut_read_number(const char *dat, + yyjson_mut_val *val, + yyjson_read_flag flg, + const yyjson_alc *alc, + yyjson_read_err *err) { + return yyjson_read_number(dat, (yyjson_val *)val, flg, alc, err); +} + +#endif /* YYJSON_DISABLE_READER) */ + + + +/*============================================================================== + * MARK: - JSON Writer API + *============================================================================*/ + +/** Run-time options for JSON writer. */ +typedef uint32_t yyjson_write_flag; + +/** Default option: + - Write JSON minify. + - Report error on inf or nan number. + - Report error on invalid UTF-8 string. + - Do not escape unicode or slash. */ +static const yyjson_write_flag YYJSON_WRITE_NOFLAG = 0; + +/** Write JSON pretty with 4 space indent. */ +static const yyjson_write_flag YYJSON_WRITE_PRETTY = 1 << 0; + +/** Escape unicode as `uXXXX`, make the output ASCII only. */ +static const yyjson_write_flag YYJSON_WRITE_ESCAPE_UNICODE = 1 << 1; + +/** Escape '/' as '\/'. */ +static const yyjson_write_flag YYJSON_WRITE_ESCAPE_SLASHES = 1 << 2; + +/** Write inf and nan number as 'Infinity' and 'NaN' literal (non-standard). */ +static const yyjson_write_flag YYJSON_WRITE_ALLOW_INF_AND_NAN = 1 << 3; + +/** Write inf and nan number as null literal. + This flag will override `YYJSON_WRITE_ALLOW_INF_AND_NAN` flag. */ +static const yyjson_write_flag YYJSON_WRITE_INF_AND_NAN_AS_NULL = 1 << 4; + +/** Allow invalid unicode when encoding string values (non-standard). + Invalid characters in string value will be copied byte by byte. + If `YYJSON_WRITE_ESCAPE_UNICODE` flag is also set, invalid character will be + escaped as `U+FFFD` (replacement character). + This flag does not affect the performance of correctly encoded strings. */ +static const yyjson_write_flag YYJSON_WRITE_ALLOW_INVALID_UNICODE = 1 << 5; + +/** Write JSON pretty with 2 space indent. + This flag will override `YYJSON_WRITE_PRETTY` flag. */ +static const yyjson_write_flag YYJSON_WRITE_PRETTY_TWO_SPACES = 1 << 6; + +/** Adds a newline character `\n` at the end of the JSON. + This can be helpful for text editors or NDJSON. */ +static const yyjson_write_flag YYJSON_WRITE_NEWLINE_AT_END = 1 << 7; + + + +/** The highest 8 bits of `yyjson_write_flag` and real number value's `tag` + are reserved for controlling the output format of floating-point numbers. */ +#define YYJSON_WRITE_FP_FLAG_BITS 8 + +/** The highest 4 bits of flag are reserved for precision value. */ +#define YYJSON_WRITE_FP_PREC_BITS 4 + +/** Write floating-point number using fixed-point notation. + - This is similar to ECMAScript `Number.prototype.toFixed(prec)`, + but with trailing zeros removed. The `prec` ranges from 1 to 15. + - This will produce shorter output but may lose some precision. */ +#define YYJSON_WRITE_FP_TO_FIXED(prec) ((yyjson_write_flag)( \ + (uint32_t)((uint32_t)(prec)) << (32 - 4) )) + +/** Write floating-point numbers using single-precision (float). + - This casts `double` to `float` before serialization. + - This will produce shorter output, but may lose some precision. + - This flag is ignored if `YYJSON_WRITE_FP_TO_FIXED(prec)` is also used. */ +#define YYJSON_WRITE_FP_TO_FLOAT ((yyjson_write_flag)(1 << (32 - 5))) + + + +/** Result code for JSON writer */ +typedef uint32_t yyjson_write_code; + +/** Success, no error. */ +static const yyjson_write_code YYJSON_WRITE_SUCCESS = 0; + +/** Invalid parameter, such as NULL document. */ +static const yyjson_write_code YYJSON_WRITE_ERROR_INVALID_PARAMETER = 1; + +/** Memory allocation failure occurs. */ +static const yyjson_write_code YYJSON_WRITE_ERROR_MEMORY_ALLOCATION = 2; + +/** Invalid value type in JSON document. */ +static const yyjson_write_code YYJSON_WRITE_ERROR_INVALID_VALUE_TYPE = 3; + +/** NaN or Infinity number occurs. */ +static const yyjson_write_code YYJSON_WRITE_ERROR_NAN_OR_INF = 4; + +/** Failed to open a file. */ +static const yyjson_write_code YYJSON_WRITE_ERROR_FILE_OPEN = 5; + +/** Failed to write a file. */ +static const yyjson_write_code YYJSON_WRITE_ERROR_FILE_WRITE = 6; + +/** Invalid unicode in string. */ +static const yyjson_write_code YYJSON_WRITE_ERROR_INVALID_STRING = 7; + +/** Error information for JSON writer. */ +typedef struct yyjson_write_err { + /** Error code, see `yyjson_write_code` for all possible values. */ + yyjson_write_code code; + /** Error message, constant, no need to free (NULL if success). */ + const char *msg; +} yyjson_write_err; + + + +#if !defined(YYJSON_DISABLE_WRITER) || !YYJSON_DISABLE_WRITER + +/*============================================================================== + * MARK: - JSON Document Writer API + *============================================================================*/ + +/** + Write a document to JSON string with options. + + This function is thread-safe when: + The `alc` is thread-safe or NULL. + + @param doc The JSON document. + If this doc is NULL or has no root, the function will fail and return false. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param len A pointer to receive output length in bytes (not including the + null-terminator). Pass NULL if you don't need length information. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return A new JSON string, or NULL if an error occurs. + This string is encoded as UTF-8 with a null-terminator. + When it's no longer needed, it should be freed with free() or alc->free(). + */ +yyjson_api char *yyjson_write_opts(const yyjson_doc *doc, + yyjson_write_flag flg, + const yyjson_alc *alc, + size_t *len, + yyjson_write_err *err); + +/** + Write a document to JSON file with options. + + This function is thread-safe when: + 1. The file is not accessed by other threads. + 2. The `alc` is thread-safe or NULL. + + @param path The JSON file's path. + This should be a null-terminated string using the system's native encoding. + If this path is NULL or invalid, the function will fail and return false. + If this file is not empty, the content will be discarded. + @param doc The JSON document. + If this doc is NULL or has no root, the function will fail and return false. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return true if successful, false if an error occurs. + + @warning On 32-bit operating system, files larger than 2GB may fail to write. + */ +yyjson_api bool yyjson_write_file(const char *path, + const yyjson_doc *doc, + yyjson_write_flag flg, + const yyjson_alc *alc, + yyjson_write_err *err); + +/** + Write a document to file pointer with options. + + @param fp The file pointer. + The data will be written to the current position of the file. + If this fp is NULL or invalid, the function will fail and return false. + @param doc The JSON document. + If this doc is NULL or has no root, the function will fail and return false. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return true if successful, false if an error occurs. + + @warning On 32-bit operating system, files larger than 2GB may fail to write. + */ +yyjson_api bool yyjson_write_fp(FILE *fp, + const yyjson_doc *doc, + yyjson_write_flag flg, + const yyjson_alc *alc, + yyjson_write_err *err); + +/** + Write a document to JSON string. + + This function is thread-safe. + + @param doc The JSON document. + If this doc is NULL or has no root, the function will fail and return false. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param len A pointer to receive output length in bytes (not including the + null-terminator). Pass NULL if you don't need length information. + @return A new JSON string, or NULL if an error occurs. + This string is encoded as UTF-8 with a null-terminator. + When it's no longer needed, it should be freed with free(). + */ +yyjson_api_inline char *yyjson_write(const yyjson_doc *doc, + yyjson_write_flag flg, + size_t *len) { + return yyjson_write_opts(doc, flg, NULL, len, NULL); +} + + + +/** + Write a document to JSON string with options. + + This function is thread-safe when: + 1. The `doc` is not modified by other threads. + 2. The `alc` is thread-safe or NULL. + + @param doc The mutable JSON document. + If this doc is NULL or has no root, the function will fail and return false. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param len A pointer to receive output length in bytes (not including the + null-terminator). Pass NULL if you don't need length information. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return A new JSON string, or NULL if an error occurs. + This string is encoded as UTF-8 with a null-terminator. + When it's no longer needed, it should be freed with free() or alc->free(). + */ +yyjson_api char *yyjson_mut_write_opts(const yyjson_mut_doc *doc, + yyjson_write_flag flg, + const yyjson_alc *alc, + size_t *len, + yyjson_write_err *err); + +/** + Write a document to JSON file with options. + + This function is thread-safe when: + 1. The file is not accessed by other threads. + 2. The `doc` is not modified by other threads. + 3. The `alc` is thread-safe or NULL. + + @param path The JSON file's path. + This should be a null-terminated string using the system's native encoding. + If this path is NULL or invalid, the function will fail and return false. + If this file is not empty, the content will be discarded. + @param doc The mutable JSON document. + If this doc is NULL or has no root, the function will fail and return false. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return true if successful, false if an error occurs. + + @warning On 32-bit operating system, files larger than 2GB may fail to write. + */ +yyjson_api bool yyjson_mut_write_file(const char *path, + const yyjson_mut_doc *doc, + yyjson_write_flag flg, + const yyjson_alc *alc, + yyjson_write_err *err); + +/** + Write a document to file pointer with options. + + @param fp The file pointer. + The data will be written to the current position of the file. + If this fp is NULL or invalid, the function will fail and return false. + @param doc The mutable JSON document. + If this doc is NULL or has no root, the function will fail and return false. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return true if successful, false if an error occurs. + + @warning On 32-bit operating system, files larger than 2GB may fail to write. + */ +yyjson_api bool yyjson_mut_write_fp(FILE *fp, + const yyjson_mut_doc *doc, + yyjson_write_flag flg, + const yyjson_alc *alc, + yyjson_write_err *err); + +/** + Write a document to JSON string. + + This function is thread-safe when: + The `doc` is not modified by other threads. + + @param doc The JSON document. + If this doc is NULL or has no root, the function will fail and return false. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param len A pointer to receive output length in bytes (not including the + null-terminator). Pass NULL if you don't need length information. + @return A new JSON string, or NULL if an error occurs. + This string is encoded as UTF-8 with a null-terminator. + When it's no longer needed, it should be freed with free(). + */ +yyjson_api_inline char *yyjson_mut_write(const yyjson_mut_doc *doc, + yyjson_write_flag flg, + size_t *len) { + return yyjson_mut_write_opts(doc, flg, NULL, len, NULL); +} + + + +/*============================================================================== + * MARK: - JSON Value Writer API + *============================================================================*/ + +/** + Write a value to JSON string with options. + + This function is thread-safe when: + The `alc` is thread-safe or NULL. + + @param val The JSON root value. + If this parameter is NULL, the function will fail and return NULL. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param len A pointer to receive output length in bytes (not including the + null-terminator). Pass NULL if you don't need length information. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return A new JSON string, or NULL if an error occurs. + This string is encoded as UTF-8 with a null-terminator. + When it's no longer needed, it should be freed with free() or alc->free(). + */ +yyjson_api char *yyjson_val_write_opts(const yyjson_val *val, + yyjson_write_flag flg, + const yyjson_alc *alc, + size_t *len, + yyjson_write_err *err); + +/** + Write a value to JSON file with options. + + This function is thread-safe when: + 1. The file is not accessed by other threads. + 2. The `alc` is thread-safe or NULL. + + @param path The JSON file's path. + This should be a null-terminated string using the system's native encoding. + If this path is NULL or invalid, the function will fail and return false. + If this file is not empty, the content will be discarded. + @param val The JSON root value. + If this parameter is NULL, the function will fail and return NULL. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return true if successful, false if an error occurs. + + @warning On 32-bit operating system, files larger than 2GB may fail to write. + */ +yyjson_api bool yyjson_val_write_file(const char *path, + const yyjson_val *val, + yyjson_write_flag flg, + const yyjson_alc *alc, + yyjson_write_err *err); + +/** + Write a value to file pointer with options. + + @param fp The file pointer. + The data will be written to the current position of the file. + If this path is NULL or invalid, the function will fail and return false. + @param val The JSON root value. + If this parameter is NULL, the function will fail and return NULL. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return true if successful, false if an error occurs. + + @warning On 32-bit operating system, files larger than 2GB may fail to write. + */ +yyjson_api bool yyjson_val_write_fp(FILE *fp, + const yyjson_val *val, + yyjson_write_flag flg, + const yyjson_alc *alc, + yyjson_write_err *err); + +/** + Write a value to JSON string. + + This function is thread-safe. + + @param val The JSON root value. + If this parameter is NULL, the function will fail and return NULL. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param len A pointer to receive output length in bytes (not including the + null-terminator). Pass NULL if you don't need length information. + @return A new JSON string, or NULL if an error occurs. + This string is encoded as UTF-8 with a null-terminator. + When it's no longer needed, it should be freed with free(). + */ +yyjson_api_inline char *yyjson_val_write(const yyjson_val *val, + yyjson_write_flag flg, + size_t *len) { + return yyjson_val_write_opts(val, flg, NULL, len, NULL); +} + +/** + Write a value to JSON string with options. + + This function is thread-safe when: + 1. The `val` is not modified by other threads. + 2. The `alc` is thread-safe or NULL. + + @param val The mutable JSON root value. + If this parameter is NULL, the function will fail and return NULL. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param len A pointer to receive output length in bytes (not including the + null-terminator). Pass NULL if you don't need length information. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return A new JSON string, or NULL if an error occurs. + This string is encoded as UTF-8 with a null-terminator. + When it's no longer needed, it should be freed with free() or alc->free(). + */ +yyjson_api char *yyjson_mut_val_write_opts(const yyjson_mut_val *val, + yyjson_write_flag flg, + const yyjson_alc *alc, + size_t *len, + yyjson_write_err *err); + +/** + Write a value to JSON file with options. + + This function is thread-safe when: + 1. The file is not accessed by other threads. + 2. The `val` is not modified by other threads. + 3. The `alc` is thread-safe or NULL. + + @param path The JSON file's path. + This should be a null-terminated string using the system's native encoding. + If this path is NULL or invalid, the function will fail and return false. + If this file is not empty, the content will be discarded. + @param val The mutable JSON root value. + If this parameter is NULL, the function will fail and return NULL. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return true if successful, false if an error occurs. + + @warning On 32-bit operating system, files larger than 2GB may fail to write. + */ +yyjson_api bool yyjson_mut_val_write_file(const char *path, + const yyjson_mut_val *val, + yyjson_write_flag flg, + const yyjson_alc *alc, + yyjson_write_err *err); + +/** + Write a value to JSON file with options. + + @param fp The file pointer. + The data will be written to the current position of the file. + If this path is NULL or invalid, the function will fail and return false. + @param val The mutable JSON root value. + If this parameter is NULL, the function will fail and return NULL. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return true if successful, false if an error occurs. + + @warning On 32-bit operating system, files larger than 2GB may fail to write. + */ +yyjson_api bool yyjson_mut_val_write_fp(FILE *fp, + const yyjson_mut_val *val, + yyjson_write_flag flg, + const yyjson_alc *alc, + yyjson_write_err *err); + +/** + Write a value to JSON string. + + This function is thread-safe when: + The `val` is not modified by other threads. + + @param val The JSON root value. + If this parameter is NULL, the function will fail and return NULL. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param len A pointer to receive output length in bytes (not including the + null-terminator). Pass NULL if you don't need length information. + @return A new JSON string, or NULL if an error occurs. + This string is encoded as UTF-8 with a null-terminator. + When it's no longer needed, it should be freed with free(). + */ +yyjson_api_inline char *yyjson_mut_val_write(const yyjson_mut_val *val, + yyjson_write_flag flg, + size_t *len) { + return yyjson_mut_val_write_opts(val, flg, NULL, len, NULL); +} + +/** + Write a JSON number. + + @param val A JSON number value to be converted to a string. + If this parameter is invalid, the function will fail and return NULL. + @param buf A buffer to store the resulting null-terminated string. + If this parameter is NULL, the function will fail and return NULL. + For integer values, the buffer must be at least 21 bytes. + For floating-point values, the buffer must be at least 40 bytes. + @return On success, returns a pointer to the character after the last + written character. On failure, returns NULL. + @note + - This function is thread-safe and does not allocate memory + (when `YYJSON_DISABLE_FAST_FP_CONV` is not defined). + - This function will fail and return NULL only in the following cases: + 1) `val` or `buf` is NULL; + 2) `val` is not a number type; + 3) `val` is `inf` or `nan`, and non-standard JSON is explicitly disabled + via the `YYJSON_DISABLE_NON_STANDARD` flag. + */ +yyjson_api char *yyjson_write_number(const yyjson_val *val, char *buf); + +/** Same as `yyjson_write_number()`. */ +yyjson_api_inline char *yyjson_mut_write_number(const yyjson_mut_val *val, + char *buf) { + return yyjson_write_number((const yyjson_val *)val, buf); +} + +#endif /* YYJSON_DISABLE_WRITER */ + + + +/*============================================================================== + * MARK: - JSON Document API + *============================================================================*/ + +/** Returns the root value of this JSON document. + Returns NULL if `doc` is NULL. */ +yyjson_api_inline yyjson_val *yyjson_doc_get_root(yyjson_doc *doc); + +/** Returns read size of input JSON data. + Returns 0 if `doc` is NULL. + For example: the read size of `[1,2,3]` is 7 bytes. */ +yyjson_api_inline size_t yyjson_doc_get_read_size(yyjson_doc *doc); + +/** Returns total value count in this JSON document. + Returns 0 if `doc` is NULL. + For example: the value count of `[1,2,3]` is 4. */ +yyjson_api_inline size_t yyjson_doc_get_val_count(yyjson_doc *doc); + +/** Release the JSON document and free the memory. + After calling this function, the `doc` and all values from the `doc` are no + longer available. This function will do nothing if the `doc` is NULL. */ +yyjson_api_inline void yyjson_doc_free(yyjson_doc *doc); + + + +/*============================================================================== + * MARK: - JSON Value Type API + *============================================================================*/ + +/** Returns whether the JSON value is raw. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_raw(yyjson_val *val); + +/** Returns whether the JSON value is `null`. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_null(yyjson_val *val); + +/** Returns whether the JSON value is `true`. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_true(yyjson_val *val); + +/** Returns whether the JSON value is `false`. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_false(yyjson_val *val); + +/** Returns whether the JSON value is bool (true/false). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_bool(yyjson_val *val); + +/** Returns whether the JSON value is unsigned integer (uint64_t). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_uint(yyjson_val *val); + +/** Returns whether the JSON value is signed integer (int64_t). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_sint(yyjson_val *val); + +/** Returns whether the JSON value is integer (uint64_t/int64_t). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_int(yyjson_val *val); + +/** Returns whether the JSON value is real number (double). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_real(yyjson_val *val); + +/** Returns whether the JSON value is number (uint64_t/int64_t/double). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_num(yyjson_val *val); + +/** Returns whether the JSON value is string. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_str(yyjson_val *val); + +/** Returns whether the JSON value is array. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_arr(yyjson_val *val); + +/** Returns whether the JSON value is object. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_obj(yyjson_val *val); + +/** Returns whether the JSON value is container (array/object). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_ctn(yyjson_val *val); + + + +/*============================================================================== + * MARK: - JSON Value Content API + *============================================================================*/ + +/** Returns the JSON value's type. + Returns YYJSON_TYPE_NONE if `val` is NULL. */ +yyjson_api_inline yyjson_type yyjson_get_type(yyjson_val *val); + +/** Returns the JSON value's subtype. + Returns YYJSON_SUBTYPE_NONE if `val` is NULL. */ +yyjson_api_inline yyjson_subtype yyjson_get_subtype(yyjson_val *val); + +/** Returns the JSON value's tag. + Returns 0 if `val` is NULL. */ +yyjson_api_inline uint8_t yyjson_get_tag(yyjson_val *val); + +/** Returns the JSON value's type description. + The return value should be one of these strings: "raw", "null", "string", + "array", "object", "true", "false", "uint", "sint", "real", "unknown". */ +yyjson_api_inline const char *yyjson_get_type_desc(yyjson_val *val); + +/** Returns the content if the value is raw. + Returns NULL if `val` is NULL or type is not raw. */ +yyjson_api_inline const char *yyjson_get_raw(yyjson_val *val); + +/** Returns the content if the value is bool. + Returns false if `val` is NULL or type is not bool. */ +yyjson_api_inline bool yyjson_get_bool(yyjson_val *val); + +/** Returns the content and cast to uint64_t. + Returns 0 if `val` is NULL or type is not integer(sint/uint). */ +yyjson_api_inline uint64_t yyjson_get_uint(yyjson_val *val); + +/** Returns the content and cast to int64_t. + Returns 0 if `val` is NULL or type is not integer(sint/uint). */ +yyjson_api_inline int64_t yyjson_get_sint(yyjson_val *val); + +/** Returns the content and cast to int. + Returns 0 if `val` is NULL or type is not integer(sint/uint). */ +yyjson_api_inline int yyjson_get_int(yyjson_val *val); + +/** Returns the content if the value is real number, or 0.0 on error. + Returns 0.0 if `val` is NULL or type is not real(double). */ +yyjson_api_inline double yyjson_get_real(yyjson_val *val); + +/** Returns the content and typecast to `double` if the value is number. + Returns 0.0 if `val` is NULL or type is not number(uint/sint/real). */ +yyjson_api_inline double yyjson_get_num(yyjson_val *val); + +/** Returns the content if the value is string. + Returns NULL if `val` is NULL or type is not string. */ +yyjson_api_inline const char *yyjson_get_str(yyjson_val *val); + +/** Returns the content length (string length, array size, object size. + Returns 0 if `val` is NULL or type is not string/array/object. */ +yyjson_api_inline size_t yyjson_get_len(yyjson_val *val); + +/** Returns whether the JSON value is equals to a string. + Returns false if input is NULL or type is not string. */ +yyjson_api_inline bool yyjson_equals_str(yyjson_val *val, const char *str); + +/** Returns whether the JSON value is equals to a string. + The `str` should be a UTF-8 string, null-terminator is not required. + Returns false if input is NULL or type is not string. */ +yyjson_api_inline bool yyjson_equals_strn(yyjson_val *val, const char *str, + size_t len); + +/** Returns whether two JSON values are equal (deep compare). + Returns false if input is NULL. + @note the result may be inaccurate if object has duplicate keys. + @warning This function is recursive and may cause a stack overflow + if the object level is too deep. */ +yyjson_api_inline bool yyjson_equals(yyjson_val *lhs, yyjson_val *rhs); + +/** Set the value to raw. + Returns false if input is NULL or `val` is object or array. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_raw(yyjson_val *val, + const char *raw, size_t len); + +/** Set the value to null. + Returns false if input is NULL or `val` is object or array. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_null(yyjson_val *val); + +/** Set the value to bool. + Returns false if input is NULL or `val` is object or array. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_bool(yyjson_val *val, bool num); + +/** Set the value to uint. + Returns false if input is NULL or `val` is object or array. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_uint(yyjson_val *val, uint64_t num); + +/** Set the value to sint. + Returns false if input is NULL or `val` is object or array. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_sint(yyjson_val *val, int64_t num); + +/** Set the value to int. + Returns false if input is NULL or `val` is object or array. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_int(yyjson_val *val, int num); + +/** Set the value to float. + Returns false if input is NULL or `val` is object or array. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_float(yyjson_val *val, float num); + +/** Set the value to double. + Returns false if input is NULL or `val` is object or array. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_double(yyjson_val *val, double num); + +/** Set the value to real. + Returns false if input is NULL or `val` is object or array. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_real(yyjson_val *val, double num); + +/** Set the floating-point number's output format to fixed-point notation. + Returns false if input is NULL or `val` is not real type. + @see YYJSON_WRITE_FP_TO_FIXED flag. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_fp_to_fixed(yyjson_val *val, int prec); + +/** Set the floating-point number's output format to single-precision. + Returns false if input is NULL or `val` is not real type. + @see YYJSON_WRITE_FP_TO_FLOAT flag. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_fp_to_float(yyjson_val *val, bool flt); + +/** Set the value to string (null-terminated). + Returns false if input is NULL or `val` is object or array. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_str(yyjson_val *val, const char *str); + +/** Set the value to string (with length). + Returns false if input is NULL or `val` is object or array. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_strn(yyjson_val *val, + const char *str, size_t len); + +/** Marks this string as not needing to be escaped during JSON writing. + This can be used to avoid the overhead of escaping if the string contains + only characters that do not require escaping. + Returns false if input is NULL or `val` is not string. + @see YYJSON_SUBTYPE_NOESC subtype. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_str_noesc(yyjson_val *val, bool noesc); + + + +/*============================================================================== + * MARK: - JSON Array API + *============================================================================*/ + +/** Returns the number of elements in this array. + Returns 0 if `arr` is NULL or type is not array. */ +yyjson_api_inline size_t yyjson_arr_size(yyjson_val *arr); + +/** Returns the element at the specified position in this array. + Returns NULL if array is NULL/empty or the index is out of bounds. + @warning This function takes a linear search time if array is not flat. + For example: `[1,{},3]` is flat, `[1,[2],3]` is not flat. */ +yyjson_api_inline yyjson_val *yyjson_arr_get(yyjson_val *arr, size_t idx); + +/** Returns the first element of this array. + Returns NULL if `arr` is NULL/empty or type is not array. */ +yyjson_api_inline yyjson_val *yyjson_arr_get_first(yyjson_val *arr); + +/** Returns the last element of this array. + Returns NULL if `arr` is NULL/empty or type is not array. + @warning This function takes a linear search time if array is not flat. + For example: `[1,{},3]` is flat, `[1,[2],3]` is not flat.*/ +yyjson_api_inline yyjson_val *yyjson_arr_get_last(yyjson_val *arr); + + + +/*============================================================================== + * MARK: - JSON Array Iterator API + *============================================================================*/ + +/** + A JSON array iterator. + + @b Example + @code + yyjson_val *val; + yyjson_arr_iter iter = yyjson_arr_iter_with(arr); + while ((val = yyjson_arr_iter_next(&iter))) { + your_func(val); + } + @endcode + */ +typedef struct yyjson_arr_iter { + size_t idx; /**< next value's index */ + size_t max; /**< maximum index (arr.size) */ + yyjson_val *cur; /**< next value */ +} yyjson_arr_iter; + +/** + Initialize an iterator for this array. + + @param arr The array to be iterated over. + If this parameter is NULL or not an array, `iter` will be set to empty. + @param iter The iterator to be initialized. + If this parameter is NULL, the function will fail and return false. + @return true if the `iter` has been successfully initialized. + + @note The iterator does not need to be destroyed. + */ +yyjson_api_inline bool yyjson_arr_iter_init(yyjson_val *arr, + yyjson_arr_iter *iter); + +/** + Create an iterator with an array , same as `yyjson_arr_iter_init()`. + + @param arr The array to be iterated over. + If this parameter is NULL or not an array, an empty iterator will returned. + @return A new iterator for the array. + + @note The iterator does not need to be destroyed. + */ +yyjson_api_inline yyjson_arr_iter yyjson_arr_iter_with(yyjson_val *arr); + +/** + Returns whether the iteration has more elements. + If `iter` is NULL, this function will return false. + */ +yyjson_api_inline bool yyjson_arr_iter_has_next(yyjson_arr_iter *iter); + +/** + Returns the next element in the iteration, or NULL on end. + If `iter` is NULL, this function will return NULL. + */ +yyjson_api_inline yyjson_val *yyjson_arr_iter_next(yyjson_arr_iter *iter); + +/** + Macro for iterating over an array. + It works like iterator, but with a more intuitive API. + + @b Example + @code + size_t idx, max; + yyjson_val *val; + yyjson_arr_foreach(arr, idx, max, val) { + your_func(idx, val); + } + @endcode + */ +#define yyjson_arr_foreach(arr, idx, max, val) \ + for ((idx) = 0, \ + (max) = yyjson_arr_size(arr), \ + (val) = yyjson_arr_get_first(arr); \ + (idx) < (max); \ + (idx)++, \ + (val) = unsafe_yyjson_get_next(val)) + + + +/*============================================================================== + * MARK: - JSON Object API + *============================================================================*/ + +/** Returns the number of key-value pairs in this object. + Returns 0 if `obj` is NULL or type is not object. */ +yyjson_api_inline size_t yyjson_obj_size(yyjson_val *obj); + +/** Returns the value to which the specified key is mapped. + Returns NULL if this object contains no mapping for the key. + Returns NULL if `obj/key` is NULL, or type is not object. + + The `key` should be a null-terminated UTF-8 string. + + @warning This function takes a linear search time. */ +yyjson_api_inline yyjson_val *yyjson_obj_get(yyjson_val *obj, const char *key); + +/** Returns the value to which the specified key is mapped. + Returns NULL if this object contains no mapping for the key. + Returns NULL if `obj/key` is NULL, or type is not object. + + The `key` should be a UTF-8 string, null-terminator is not required. + The `key_len` should be the length of the key, in bytes. + + @warning This function takes a linear search time. */ +yyjson_api_inline yyjson_val *yyjson_obj_getn(yyjson_val *obj, const char *key, + size_t key_len); + + + +/*============================================================================== + * MARK: - JSON Object Iterator API + *============================================================================*/ + +/** + A JSON object iterator. + + @b Example + @code + yyjson_val *key, *val; + yyjson_obj_iter iter = yyjson_obj_iter_with(obj); + while ((key = yyjson_obj_iter_next(&iter))) { + val = yyjson_obj_iter_get_val(key); + your_func(key, val); + } + @endcode + + If the ordering of the keys is known at compile-time, you can use this method + to speed up value lookups: + @code + // {"k1":1, "k2": 3, "k3": 3} + yyjson_val *key, *val; + yyjson_obj_iter iter = yyjson_obj_iter_with(obj); + yyjson_val *v1 = yyjson_obj_iter_get(&iter, "k1"); + yyjson_val *v3 = yyjson_obj_iter_get(&iter, "k3"); + @endcode + @see yyjson_obj_iter_get() and yyjson_obj_iter_getn() + */ +typedef struct yyjson_obj_iter { + size_t idx; /**< next key's index */ + size_t max; /**< maximum key index (obj.size) */ + yyjson_val *cur; /**< next key */ + yyjson_val *obj; /**< the object being iterated */ +} yyjson_obj_iter; + +/** + Initialize an iterator for this object. + + @param obj The object to be iterated over. + If this parameter is NULL or not an object, `iter` will be set to empty. + @param iter The iterator to be initialized. + If this parameter is NULL, the function will fail and return false. + @return true if the `iter` has been successfully initialized. + + @note The iterator does not need to be destroyed. + */ +yyjson_api_inline bool yyjson_obj_iter_init(yyjson_val *obj, + yyjson_obj_iter *iter); + +/** + Create an iterator with an object, same as `yyjson_obj_iter_init()`. + + @param obj The object to be iterated over. + If this parameter is NULL or not an object, an empty iterator will returned. + @return A new iterator for the object. + + @note The iterator does not need to be destroyed. + */ +yyjson_api_inline yyjson_obj_iter yyjson_obj_iter_with(yyjson_val *obj); + +/** + Returns whether the iteration has more elements. + If `iter` is NULL, this function will return false. + */ +yyjson_api_inline bool yyjson_obj_iter_has_next(yyjson_obj_iter *iter); + +/** + Returns the next key in the iteration, or NULL on end. + If `iter` is NULL, this function will return NULL. + */ +yyjson_api_inline yyjson_val *yyjson_obj_iter_next(yyjson_obj_iter *iter); + +/** + Returns the value for key inside the iteration. + If `iter` is NULL, this function will return NULL. + */ +yyjson_api_inline yyjson_val *yyjson_obj_iter_get_val(yyjson_val *key); + +/** + Iterates to a specified key and returns the value. + + This function does the same thing as `yyjson_obj_get()`, but is much faster + if the ordering of the keys is known at compile-time and you are using the same + order to look up the values. If the key exists in this object, then the + iterator will stop at the next key, otherwise the iterator will not change and + NULL is returned. + + @param iter The object iterator, should not be NULL. + @param key The key, should be a UTF-8 string with null-terminator. + @return The value to which the specified key is mapped. + NULL if this object contains no mapping for the key or input is invalid. + + @warning This function takes a linear search time if the key is not nearby. + */ +yyjson_api_inline yyjson_val *yyjson_obj_iter_get(yyjson_obj_iter *iter, + const char *key); + +/** + Iterates to a specified key and returns the value. + + This function does the same thing as `yyjson_obj_getn()`, but is much faster + if the ordering of the keys is known at compile-time and you are using the same + order to look up the values. If the key exists in this object, then the + iterator will stop at the next key, otherwise the iterator will not change and + NULL is returned. + + @param iter The object iterator, should not be NULL. + @param key The key, should be a UTF-8 string, null-terminator is not required. + @param key_len The the length of `key`, in bytes. + @return The value to which the specified key is mapped. + NULL if this object contains no mapping for the key or input is invalid. + + @warning This function takes a linear search time if the key is not nearby. + */ +yyjson_api_inline yyjson_val *yyjson_obj_iter_getn(yyjson_obj_iter *iter, + const char *key, + size_t key_len); + +/** + Macro for iterating over an object. + It works like iterator, but with a more intuitive API. + + @b Example + @code + size_t idx, max; + yyjson_val *key, *val; + yyjson_obj_foreach(obj, idx, max, key, val) { + your_func(key, val); + } + @endcode + */ +#define yyjson_obj_foreach(obj, idx, max, key, val) \ + for ((idx) = 0, \ + (max) = yyjson_obj_size(obj), \ + (key) = (obj) ? unsafe_yyjson_get_first(obj) : NULL, \ + (val) = (key) + 1; \ + (idx) < (max); \ + (idx)++, \ + (key) = unsafe_yyjson_get_next(val), \ + (val) = (key) + 1) + + + +/*============================================================================== + * MARK: - Mutable JSON Document API + *============================================================================*/ + +/** Returns the root value of this JSON document. + Returns NULL if `doc` is NULL. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_get_root(yyjson_mut_doc *doc); + +/** Sets the root value of this JSON document. + Pass NULL to clear root value of the document. */ +yyjson_api_inline void yyjson_mut_doc_set_root(yyjson_mut_doc *doc, + yyjson_mut_val *root); + +/** + Set the string pool size for a mutable document. + This function does not allocate memory immediately, but uses the size when + the next memory allocation is needed. + + If the caller knows the approximate bytes of strings that the document needs to + store (e.g. copy string with `yyjson_mut_strcpy` function), setting a larger + size can avoid multiple memory allocations and improve performance. + + @param doc The mutable document. + @param len The desired string pool size in bytes (total string length). + @return true if successful, false if size is 0 or overflow. + */ +yyjson_api bool yyjson_mut_doc_set_str_pool_size(yyjson_mut_doc *doc, + size_t len); + +/** + Set the value pool size for a mutable document. + This function does not allocate memory immediately, but uses the size when + the next memory allocation is needed. + + If the caller knows the approximate number of values that the document needs to + store (e.g. create new value with `yyjson_mut_xxx` functions), setting a larger + size can avoid multiple memory allocations and improve performance. + + @param doc The mutable document. + @param count The desired value pool size (number of `yyjson_mut_val`). + @return true if successful, false if size is 0 or overflow. + */ +yyjson_api bool yyjson_mut_doc_set_val_pool_size(yyjson_mut_doc *doc, + size_t count); + +/** Release the JSON document and free the memory. + After calling this function, the `doc` and all values from the `doc` are no + longer available. This function will do nothing if the `doc` is NULL. */ +yyjson_api void yyjson_mut_doc_free(yyjson_mut_doc *doc); + +/** Creates and returns a new mutable JSON document, returns NULL on error. + If allocator is NULL, the default allocator will be used. */ +yyjson_api yyjson_mut_doc *yyjson_mut_doc_new(const yyjson_alc *alc); + +/** Copies and returns a new mutable document from input, returns NULL on error. + This makes a `deep-copy` on the immutable document. + If allocator is NULL, the default allocator will be used. + @note `imut_doc` -> `mut_doc`. */ +yyjson_api yyjson_mut_doc *yyjson_doc_mut_copy(yyjson_doc *doc, + const yyjson_alc *alc); + +/** Copies and returns a new mutable document from input, returns NULL on error. + This makes a `deep-copy` on the mutable document. + If allocator is NULL, the default allocator will be used. + @note `mut_doc` -> `mut_doc`. */ +yyjson_api yyjson_mut_doc *yyjson_mut_doc_mut_copy(yyjson_mut_doc *doc, + const yyjson_alc *alc); + +/** Copies and returns a new mutable value from input, returns NULL on error. + This makes a `deep-copy` on the immutable value. + The memory was managed by mutable document. + @note `imut_val` -> `mut_val`. */ +yyjson_api yyjson_mut_val *yyjson_val_mut_copy(yyjson_mut_doc *doc, + yyjson_val *val); + +/** Copies and returns a new mutable value from input, returns NULL on error. + This makes a `deep-copy` on the mutable value. + The memory was managed by mutable document. + @note `mut_val` -> `mut_val`. + @warning This function is recursive and may cause a stack overflow + if the object level is too deep. */ +yyjson_api yyjson_mut_val *yyjson_mut_val_mut_copy(yyjson_mut_doc *doc, + yyjson_mut_val *val); + +/** Copies and returns a new immutable document from input, + returns NULL on error. This makes a `deep-copy` on the mutable document. + The returned document should be freed with `yyjson_doc_free()`. + @note `mut_doc` -> `imut_doc`. + @warning This function is recursive and may cause a stack overflow + if the object level is too deep. */ +yyjson_api yyjson_doc *yyjson_mut_doc_imut_copy(yyjson_mut_doc *doc, + const yyjson_alc *alc); + +/** Copies and returns a new immutable document from input, + returns NULL on error. This makes a `deep-copy` on the mutable value. + The returned document should be freed with `yyjson_doc_free()`. + @note `mut_val` -> `imut_doc`. + @warning This function is recursive and may cause a stack overflow + if the object level is too deep. */ +yyjson_api yyjson_doc *yyjson_mut_val_imut_copy(yyjson_mut_val *val, + const yyjson_alc *alc); + + + +/*============================================================================== + * MARK: - Mutable JSON Value Type API + *============================================================================*/ + +/** Returns whether the JSON value is raw. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_raw(yyjson_mut_val *val); + +/** Returns whether the JSON value is `null`. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_null(yyjson_mut_val *val); + +/** Returns whether the JSON value is `true`. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_true(yyjson_mut_val *val); + +/** Returns whether the JSON value is `false`. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_false(yyjson_mut_val *val); + +/** Returns whether the JSON value is bool (true/false). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_bool(yyjson_mut_val *val); + +/** Returns whether the JSON value is unsigned integer (uint64_t). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_uint(yyjson_mut_val *val); + +/** Returns whether the JSON value is signed integer (int64_t). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_sint(yyjson_mut_val *val); + +/** Returns whether the JSON value is integer (uint64_t/int64_t). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_int(yyjson_mut_val *val); + +/** Returns whether the JSON value is real number (double). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_real(yyjson_mut_val *val); + +/** Returns whether the JSON value is number (uint/sint/real). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_num(yyjson_mut_val *val); + +/** Returns whether the JSON value is string. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_str(yyjson_mut_val *val); + +/** Returns whether the JSON value is array. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_arr(yyjson_mut_val *val); + +/** Returns whether the JSON value is object. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_obj(yyjson_mut_val *val); + +/** Returns whether the JSON value is container (array/object). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_ctn(yyjson_mut_val *val); + + + +/*============================================================================== + * MARK: - Mutable JSON Value Content API + *============================================================================*/ + +/** Returns the JSON value's type. + Returns `YYJSON_TYPE_NONE` if `val` is NULL. */ +yyjson_api_inline yyjson_type yyjson_mut_get_type(yyjson_mut_val *val); + +/** Returns the JSON value's subtype. + Returns `YYJSON_SUBTYPE_NONE` if `val` is NULL. */ +yyjson_api_inline yyjson_subtype yyjson_mut_get_subtype(yyjson_mut_val *val); + +/** Returns the JSON value's tag. + Returns 0 if `val` is NULL. */ +yyjson_api_inline uint8_t yyjson_mut_get_tag(yyjson_mut_val *val); + +/** Returns the JSON value's type description. + The return value should be one of these strings: "raw", "null", "string", + "array", "object", "true", "false", "uint", "sint", "real", "unknown". */ +yyjson_api_inline const char *yyjson_mut_get_type_desc(yyjson_mut_val *val); + +/** Returns the content if the value is raw. + Returns NULL if `val` is NULL or type is not raw. */ +yyjson_api_inline const char *yyjson_mut_get_raw(yyjson_mut_val *val); + +/** Returns the content if the value is bool. + Returns NULL if `val` is NULL or type is not bool. */ +yyjson_api_inline bool yyjson_mut_get_bool(yyjson_mut_val *val); + +/** Returns the content and cast to uint64_t. + Returns 0 if `val` is NULL or type is not integer(sint/uint). */ +yyjson_api_inline uint64_t yyjson_mut_get_uint(yyjson_mut_val *val); + +/** Returns the content and cast to int64_t. + Returns 0 if `val` is NULL or type is not integer(sint/uint). */ +yyjson_api_inline int64_t yyjson_mut_get_sint(yyjson_mut_val *val); + +/** Returns the content and cast to int. + Returns 0 if `val` is NULL or type is not integer(sint/uint). */ +yyjson_api_inline int yyjson_mut_get_int(yyjson_mut_val *val); + +/** Returns the content if the value is real number. + Returns 0.0 if `val` is NULL or type is not real(double). */ +yyjson_api_inline double yyjson_mut_get_real(yyjson_mut_val *val); + +/** Returns the content and typecast to `double` if the value is number. + Returns 0.0 if `val` is NULL or type is not number(uint/sint/real). */ +yyjson_api_inline double yyjson_mut_get_num(yyjson_mut_val *val); + +/** Returns the content if the value is string. + Returns NULL if `val` is NULL or type is not string. */ +yyjson_api_inline const char *yyjson_mut_get_str(yyjson_mut_val *val); + +/** Returns the content length (string length, array size, object size. + Returns 0 if `val` is NULL or type is not string/array/object. */ +yyjson_api_inline size_t yyjson_mut_get_len(yyjson_mut_val *val); + +/** Returns whether the JSON value is equals to a string. + The `str` should be a null-terminated UTF-8 string. + Returns false if input is NULL or type is not string. */ +yyjson_api_inline bool yyjson_mut_equals_str(yyjson_mut_val *val, + const char *str); + +/** Returns whether the JSON value is equals to a string. + The `str` should be a UTF-8 string, null-terminator is not required. + Returns false if input is NULL or type is not string. */ +yyjson_api_inline bool yyjson_mut_equals_strn(yyjson_mut_val *val, + const char *str, size_t len); + +/** Returns whether two JSON values are equal (deep compare). + Returns false if input is NULL. + @note the result may be inaccurate if object has duplicate keys. + @warning This function is recursive and may cause a stack overflow + if the object level is too deep. */ +yyjson_api_inline bool yyjson_mut_equals(yyjson_mut_val *lhs, + yyjson_mut_val *rhs); + +/** Set the value to raw. + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_raw(yyjson_mut_val *val, + const char *raw, size_t len); + +/** Set the value to null. + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_null(yyjson_mut_val *val); + +/** Set the value to bool. + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_bool(yyjson_mut_val *val, bool num); + +/** Set the value to uint. + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_uint(yyjson_mut_val *val, uint64_t num); + +/** Set the value to sint. + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_sint(yyjson_mut_val *val, int64_t num); + +/** Set the value to int. + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_int(yyjson_mut_val *val, int num); + +/** Set the value to float. + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_float(yyjson_mut_val *val, float num); + +/** Set the value to double. + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_double(yyjson_mut_val *val, double num); + +/** Set the value to real. + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_real(yyjson_mut_val *val, double num); + +/** Set the floating-point number's output format to fixed-point notation. + Returns false if input is NULL or `val` is not real type. + @see YYJSON_WRITE_FP_TO_FIXED flag. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_mut_set_fp_to_fixed(yyjson_mut_val *val, + int prec); + +/** Set the floating-point number's output format to single-precision. + Returns false if input is NULL or `val` is not real type. + @see YYJSON_WRITE_FP_TO_FLOAT flag. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_mut_set_fp_to_float(yyjson_mut_val *val, + bool flt); + +/** Set the value to string (null-terminated). + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_str(yyjson_mut_val *val, const char *str); + +/** Set the value to string (with length). + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_strn(yyjson_mut_val *val, + const char *str, size_t len); + +/** Marks this string as not needing to be escaped during JSON writing. + This can be used to avoid the overhead of escaping if the string contains + only characters that do not require escaping. + Returns false if input is NULL or `val` is not string. + @see YYJSON_SUBTYPE_NOESC subtype. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_mut_set_str_noesc(yyjson_mut_val *val, + bool noesc); + +/** Set the value to array. + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_arr(yyjson_mut_val *val); + +/** Set the value to array. + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_obj(yyjson_mut_val *val); + + + +/*============================================================================== + * MARK: - Mutable JSON Value Creation API + *============================================================================*/ + +/** Creates and returns a raw value, returns NULL on error. + The `str` should be a null-terminated UTF-8 string. + + @warning The input string is not copied, you should keep this string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_raw(yyjson_mut_doc *doc, + const char *str); + +/** Creates and returns a raw value, returns NULL on error. + The `str` should be a UTF-8 string, null-terminator is not required. + + @warning The input string is not copied, you should keep this string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_rawn(yyjson_mut_doc *doc, + const char *str, + size_t len); + +/** Creates and returns a raw value, returns NULL on error. + The `str` should be a null-terminated UTF-8 string. + The input string is copied and held by the document. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_rawcpy(yyjson_mut_doc *doc, + const char *str); + +/** Creates and returns a raw value, returns NULL on error. + The `str` should be a UTF-8 string, null-terminator is not required. + The input string is copied and held by the document. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_rawncpy(yyjson_mut_doc *doc, + const char *str, + size_t len); + +/** Creates and returns a null value, returns NULL on error. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_null(yyjson_mut_doc *doc); + +/** Creates and returns a true value, returns NULL on error. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_true(yyjson_mut_doc *doc); + +/** Creates and returns a false value, returns NULL on error. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_false(yyjson_mut_doc *doc); + +/** Creates and returns a bool value, returns NULL on error. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_bool(yyjson_mut_doc *doc, + bool val); + +/** Creates and returns an unsigned integer value, returns NULL on error. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_uint(yyjson_mut_doc *doc, + uint64_t num); + +/** Creates and returns a signed integer value, returns NULL on error. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_sint(yyjson_mut_doc *doc, + int64_t num); + +/** Creates and returns a signed integer value, returns NULL on error. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_int(yyjson_mut_doc *doc, + int64_t num); + +/** Creates and returns a float number value, returns NULL on error. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_float(yyjson_mut_doc *doc, + float num); + +/** Creates and returns a double number value, returns NULL on error. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_double(yyjson_mut_doc *doc, + double num); + +/** Creates and returns a real number value, returns NULL on error. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_real(yyjson_mut_doc *doc, + double num); + +/** Creates and returns a string value, returns NULL on error. + The `str` should be a null-terminated UTF-8 string. + @warning The input string is not copied, you should keep this string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_str(yyjson_mut_doc *doc, + const char *str); + +/** Creates and returns a string value, returns NULL on error. + The `str` should be a UTF-8 string, null-terminator is not required. + @warning The input string is not copied, you should keep this string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_strn(yyjson_mut_doc *doc, + const char *str, + size_t len); + +/** Creates and returns a string value, returns NULL on error. + The `str` should be a null-terminated UTF-8 string. + The input string is copied and held by the document. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_strcpy(yyjson_mut_doc *doc, + const char *str); + +/** Creates and returns a string value, returns NULL on error. + The `str` should be a UTF-8 string, null-terminator is not required. + The input string is copied and held by the document. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_strncpy(yyjson_mut_doc *doc, + const char *str, + size_t len); + + + +/*============================================================================== + * MARK: - Mutable JSON Array API + *============================================================================*/ + +/** Returns the number of elements in this array. + Returns 0 if `arr` is NULL or type is not array. */ +yyjson_api_inline size_t yyjson_mut_arr_size(yyjson_mut_val *arr); + +/** Returns the element at the specified position in this array. + Returns NULL if array is NULL/empty or the index is out of bounds. + @warning This function takes a linear search time. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_get(yyjson_mut_val *arr, + size_t idx); + +/** Returns the first element of this array. + Returns NULL if `arr` is NULL/empty or type is not array. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_get_first(yyjson_mut_val *arr); + +/** Returns the last element of this array. + Returns NULL if `arr` is NULL/empty or type is not array. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_get_last(yyjson_mut_val *arr); + + + +/*============================================================================== + * MARK: - Mutable JSON Array Iterator API + *============================================================================*/ + +/** + A mutable JSON array iterator. + + @warning You should not modify the array while iterating over it, but you can + use `yyjson_mut_arr_iter_remove()` to remove current value. + + @b Example + @code + yyjson_mut_val *val; + yyjson_mut_arr_iter iter = yyjson_mut_arr_iter_with(arr); + while ((val = yyjson_mut_arr_iter_next(&iter))) { + your_func(val); + if (your_val_is_unused(val)) { + yyjson_mut_arr_iter_remove(&iter); + } + } + @endcode + */ +typedef struct yyjson_mut_arr_iter { + size_t idx; /**< next value's index */ + size_t max; /**< maximum index (arr.size) */ + yyjson_mut_val *cur; /**< current value */ + yyjson_mut_val *pre; /**< previous value */ + yyjson_mut_val *arr; /**< the array being iterated */ +} yyjson_mut_arr_iter; + +/** + Initialize an iterator for this array. + + @param arr The array to be iterated over. + If this parameter is NULL or not an array, `iter` will be set to empty. + @param iter The iterator to be initialized. + If this parameter is NULL, the function will fail and return false. + @return true if the `iter` has been successfully initialized. + + @note The iterator does not need to be destroyed. + */ +yyjson_api_inline bool yyjson_mut_arr_iter_init(yyjson_mut_val *arr, + yyjson_mut_arr_iter *iter); + +/** + Create an iterator with an array , same as `yyjson_mut_arr_iter_init()`. + + @param arr The array to be iterated over. + If this parameter is NULL or not an array, an empty iterator will returned. + @return A new iterator for the array. + + @note The iterator does not need to be destroyed. + */ +yyjson_api_inline yyjson_mut_arr_iter yyjson_mut_arr_iter_with( + yyjson_mut_val *arr); + +/** + Returns whether the iteration has more elements. + If `iter` is NULL, this function will return false. + */ +yyjson_api_inline bool yyjson_mut_arr_iter_has_next( + yyjson_mut_arr_iter *iter); + +/** + Returns the next element in the iteration, or NULL on end. + If `iter` is NULL, this function will return NULL. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_iter_next( + yyjson_mut_arr_iter *iter); + +/** + Removes and returns current element in the iteration. + If `iter` is NULL, this function will return NULL. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_iter_remove( + yyjson_mut_arr_iter *iter); + +/** + Macro for iterating over an array. + It works like iterator, but with a more intuitive API. + + @warning You should not modify the array while iterating over it. + + @b Example + @code + size_t idx, max; + yyjson_mut_val *val; + yyjson_mut_arr_foreach(arr, idx, max, val) { + your_func(idx, val); + } + @endcode + */ +#define yyjson_mut_arr_foreach(arr, idx, max, val) \ + for ((idx) = 0, \ + (max) = yyjson_mut_arr_size(arr), \ + (val) = yyjson_mut_arr_get_first(arr); \ + (idx) < (max); \ + (idx)++, \ + (val) = (val)->next) + + + +/*============================================================================== + * MARK: - Mutable JSON Array Creation API + *============================================================================*/ + +/** + Creates and returns an empty mutable array. + @param doc A mutable document, used for memory allocation only. + @return The new array. NULL if input is NULL or memory allocation failed. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr(yyjson_mut_doc *doc); + +/** + Creates and returns a new mutable array with the given boolean values. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of boolean values. + @param count The value count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @b Example + @code + const bool vals[3] = { true, false, true }; + yyjson_mut_val *arr = yyjson_mut_arr_with_bool(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_bool( + yyjson_mut_doc *doc, const bool *vals, size_t count); + +/** + Creates and returns a new mutable array with the given sint numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of sint numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @b Example + @code + const int64_t vals[3] = { -1, 0, 1 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_sint64(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint( + yyjson_mut_doc *doc, const int64_t *vals, size_t count); + +/** + Creates and returns a new mutable array with the given uint numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of uint numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @b Example + @code + const uint64_t vals[3] = { 0, 1, 0 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_uint(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint( + yyjson_mut_doc *doc, const uint64_t *vals, size_t count); + +/** + Creates and returns a new mutable array with the given real numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of real numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @b Example + @code + const double vals[3] = { 0.1, 0.2, 0.3 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_real(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_real( + yyjson_mut_doc *doc, const double *vals, size_t count); + +/** + Creates and returns a new mutable array with the given int8 numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of int8 numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @b Example + @code + const int8_t vals[3] = { -1, 0, 1 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_sint8(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint8( + yyjson_mut_doc *doc, const int8_t *vals, size_t count); + +/** + Creates and returns a new mutable array with the given int16 numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of int16 numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @b Example + @code + const int16_t vals[3] = { -1, 0, 1 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_sint16(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint16( + yyjson_mut_doc *doc, const int16_t *vals, size_t count); + +/** + Creates and returns a new mutable array with the given int32 numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of int32 numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @b Example + @code + const int32_t vals[3] = { -1, 0, 1 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_sint32(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint32( + yyjson_mut_doc *doc, const int32_t *vals, size_t count); + +/** + Creates and returns a new mutable array with the given int64 numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of int64 numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @b Example + @code + const int64_t vals[3] = { -1, 0, 1 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_sint64(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint64( + yyjson_mut_doc *doc, const int64_t *vals, size_t count); + +/** + Creates and returns a new mutable array with the given uint8 numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of uint8 numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @b Example + @code + const uint8_t vals[3] = { 0, 1, 0 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_uint8(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint8( + yyjson_mut_doc *doc, const uint8_t *vals, size_t count); + +/** + Creates and returns a new mutable array with the given uint16 numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of uint16 numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @b Example + @code + const uint16_t vals[3] = { 0, 1, 0 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_uint16(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint16( + yyjson_mut_doc *doc, const uint16_t *vals, size_t count); + +/** + Creates and returns a new mutable array with the given uint32 numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of uint32 numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @b Example + @code + const uint32_t vals[3] = { 0, 1, 0 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_uint32(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint32( + yyjson_mut_doc *doc, const uint32_t *vals, size_t count); + +/** + Creates and returns a new mutable array with the given uint64 numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of uint64 numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @b Example + @code + const uint64_t vals[3] = { 0, 1, 0 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_uint64(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint64( + yyjson_mut_doc *doc, const uint64_t *vals, size_t count); + +/** + Creates and returns a new mutable array with the given float numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of float numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @b Example + @code + const float vals[3] = { -1.0f, 0.0f, 1.0f }; + yyjson_mut_val *arr = yyjson_mut_arr_with_float(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_float( + yyjson_mut_doc *doc, const float *vals, size_t count); + +/** + Creates and returns a new mutable array with the given double numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of double numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @b Example + @code + const double vals[3] = { -1.0, 0.0, 1.0 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_double(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_double( + yyjson_mut_doc *doc, const double *vals, size_t count); + +/** + Creates and returns a new mutable array with the given strings, these strings + will not be copied. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of UTF-8 null-terminator strings. + If this array contains NULL, the function will fail and return NULL. + @param count The number of values in `vals`. + If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @warning The input strings are not copied, you should keep these strings + unmodified for the lifetime of this JSON document. If these strings will be + modified, you should use `yyjson_mut_arr_with_strcpy()` instead. + + @b Example + @code + const char *vals[3] = { "a", "b", "c" }; + yyjson_mut_val *arr = yyjson_mut_arr_with_str(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_str( + yyjson_mut_doc *doc, const char **vals, size_t count); + +/** + Creates and returns a new mutable array with the given strings and string + lengths, these strings will not be copied. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of UTF-8 strings, null-terminator is not required. + If this array contains NULL, the function will fail and return NULL. + @param lens A C array of string lengths, in bytes. + @param count The number of strings in `vals`. + If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @warning The input strings are not copied, you should keep these strings + unmodified for the lifetime of this JSON document. If these strings will be + modified, you should use `yyjson_mut_arr_with_strncpy()` instead. + + @b Example + @code + const char *vals[3] = { "a", "bb", "c" }; + const size_t lens[3] = { 1, 2, 1 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_strn(doc, vals, lens, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_strn( + yyjson_mut_doc *doc, const char **vals, const size_t *lens, size_t count); + +/** + Creates and returns a new mutable array with the given strings, these strings + will be copied. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of UTF-8 null-terminator strings. + If this array contains NULL, the function will fail and return NULL. + @param count The number of values in `vals`. + If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @b Example + @code + const char *vals[3] = { "a", "b", "c" }; + yyjson_mut_val *arr = yyjson_mut_arr_with_strcpy(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_strcpy( + yyjson_mut_doc *doc, const char **vals, size_t count); + +/** + Creates and returns a new mutable array with the given strings and string + lengths, these strings will be copied. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of UTF-8 strings, null-terminator is not required. + If this array contains NULL, the function will fail and return NULL. + @param lens A C array of string lengths, in bytes. + @param count The number of strings in `vals`. + If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @b Example + @code + const char *vals[3] = { "a", "bb", "c" }; + const size_t lens[3] = { 1, 2, 1 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_strn(doc, vals, lens, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_strncpy( + yyjson_mut_doc *doc, const char **vals, const size_t *lens, size_t count); + + + +/*============================================================================== + * MARK: - Mutable JSON Array Modification API + *============================================================================*/ + +/** + Inserts a value into an array at a given index. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param val The value to be inserted. Returns false if it is NULL. + @param idx The index to which to insert the new value. + Returns false if the index is out of range. + @return Whether successful. + @warning This function takes a linear search time. + */ +yyjson_api_inline bool yyjson_mut_arr_insert(yyjson_mut_val *arr, + yyjson_mut_val *val, size_t idx); + +/** + Inserts a value at the end of the array. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param val The value to be inserted. Returns false if it is NULL. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_append(yyjson_mut_val *arr, + yyjson_mut_val *val); + +/** + Inserts a value at the head of the array. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param val The value to be inserted. Returns false if it is NULL. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_prepend(yyjson_mut_val *arr, + yyjson_mut_val *val); + +/** + Replaces a value at index and returns old value. + @param arr The array to which the value is to be replaced. + Returns false if it is NULL or not an array. + @param idx The index to which to replace the value. + Returns false if the index is out of range. + @param val The new value to replace. Returns false if it is NULL. + @return Old value, or NULL on error. + @warning This function takes a linear search time. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_replace(yyjson_mut_val *arr, + size_t idx, + yyjson_mut_val *val); + +/** + Removes and returns a value at index. + @param arr The array from which the value is to be removed. + Returns false if it is NULL or not an array. + @param idx The index from which to remove the value. + Returns false if the index is out of range. + @return Old value, or NULL on error. + @warning This function takes a linear search time. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_remove(yyjson_mut_val *arr, + size_t idx); + +/** + Removes and returns the first value in this array. + @param arr The array from which the value is to be removed. + Returns false if it is NULL or not an array. + @return The first value, or NULL on error. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_remove_first( + yyjson_mut_val *arr); + +/** + Removes and returns the last value in this array. + @param arr The array from which the value is to be removed. + Returns false if it is NULL or not an array. + @return The last value, or NULL on error. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_remove_last( + yyjson_mut_val *arr); + +/** + Removes all values within a specified range in the array. + @param arr The array from which the value is to be removed. + Returns false if it is NULL or not an array. + @param idx The start index of the range (0 is the first). + @param len The number of items in the range (can be 0). + @return Whether successful. + @warning This function takes a linear search time. + */ +yyjson_api_inline bool yyjson_mut_arr_remove_range(yyjson_mut_val *arr, + size_t idx, size_t len); + +/** + Removes all values in this array. + @param arr The array from which all of the values are to be removed. + Returns false if it is NULL or not an array. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_clear(yyjson_mut_val *arr); + +/** + Rotates values in this array for the given number of times. + For example: `[1,2,3,4,5]` rotate 2 is `[3,4,5,1,2]`. + @param arr The array to be rotated. + @param idx Index (or times) to rotate. + @warning This function takes a linear search time. + */ +yyjson_api_inline bool yyjson_mut_arr_rotate(yyjson_mut_val *arr, + size_t idx); + + + +/*============================================================================== + * MARK: - Mutable JSON Array Modification Convenience API + *============================================================================*/ + +/** + Adds a value at the end of the array. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param val The value to be inserted. Returns false if it is NULL. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_val(yyjson_mut_val *arr, + yyjson_mut_val *val); + +/** + Adds a `null` value at the end of the array. + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_null(yyjson_mut_doc *doc, + yyjson_mut_val *arr); + +/** + Adds a `true` value at the end of the array. + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_true(yyjson_mut_doc *doc, + yyjson_mut_val *arr); + +/** + Adds a `false` value at the end of the array. + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_false(yyjson_mut_doc *doc, + yyjson_mut_val *arr); + +/** + Adds a bool value at the end of the array. + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param val The bool value to be added. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_bool(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + bool val); + +/** + Adds an unsigned integer value at the end of the array. + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param num The number to be added. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_uint(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + uint64_t num); + +/** + Adds a signed integer value at the end of the array. + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param num The number to be added. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_sint(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + int64_t num); + +/** + Adds an integer value at the end of the array. + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param num The number to be added. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_int(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + int64_t num); + +/** + Adds a float value at the end of the array. + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param num The number to be added. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_float(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + float num); + +/** + Adds a double value at the end of the array. + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param num The number to be added. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_double(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + double num); + +/** + Adds a double value at the end of the array. + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param num The number to be added. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_real(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + double num); + +/** + Adds a string value at the end of the array (no copy). + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param str A null-terminated UTF-8 string. + @return Whether successful. + @warning The input string is not copied, you should keep this string unmodified + for the lifetime of this JSON document. + */ +yyjson_api_inline bool yyjson_mut_arr_add_str(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + const char *str); + +/** + Adds a string value at the end of the array (no copy). + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param str A UTF-8 string, null-terminator is not required. + @param len The length of the string, in bytes. + @return Whether successful. + @warning The input string is not copied, you should keep this string unmodified + for the lifetime of this JSON document. + */ +yyjson_api_inline bool yyjson_mut_arr_add_strn(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + const char *str, + size_t len); + +/** + Adds a string value at the end of the array (copied). + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param str A null-terminated UTF-8 string. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_strcpy(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + const char *str); + +/** + Adds a string value at the end of the array (copied). + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param str A UTF-8 string, null-terminator is not required. + @param len The length of the string, in bytes. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_strncpy(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + const char *str, + size_t len); + +/** + Creates and adds a new array at the end of the array. + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @return The new array, or NULL on error. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_add_arr(yyjson_mut_doc *doc, + yyjson_mut_val *arr); + +/** + Creates and adds a new object at the end of the array. + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @return The new object, or NULL on error. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_add_obj(yyjson_mut_doc *doc, + yyjson_mut_val *arr); + + + +/*============================================================================== + * MARK: - Mutable JSON Object API + *============================================================================*/ + +/** Returns the number of key-value pairs in this object. + Returns 0 if `obj` is NULL or type is not object. */ +yyjson_api_inline size_t yyjson_mut_obj_size(yyjson_mut_val *obj); + +/** Returns the value to which the specified key is mapped. + Returns NULL if this object contains no mapping for the key. + Returns NULL if `obj/key` is NULL, or type is not object. + + The `key` should be a null-terminated UTF-8 string. + + @warning This function takes a linear search time. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_get(yyjson_mut_val *obj, + const char *key); + +/** Returns the value to which the specified key is mapped. + Returns NULL if this object contains no mapping for the key. + Returns NULL if `obj/key` is NULL, or type is not object. + + The `key` should be a UTF-8 string, null-terminator is not required. + The `key_len` should be the length of the key, in bytes. + + @warning This function takes a linear search time. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_getn(yyjson_mut_val *obj, + const char *key, + size_t key_len); + + + +/*============================================================================== + * MARK: - Mutable JSON Object Iterator API + *============================================================================*/ + +/** + A mutable JSON object iterator. + + @warning You should not modify the object while iterating over it, but you can + use `yyjson_mut_obj_iter_remove()` to remove current value. + + @b Example + @code + yyjson_mut_val *key, *val; + yyjson_mut_obj_iter iter = yyjson_mut_obj_iter_with(obj); + while ((key = yyjson_mut_obj_iter_next(&iter))) { + val = yyjson_mut_obj_iter_get_val(key); + your_func(key, val); + if (your_val_is_unused(key, val)) { + yyjson_mut_obj_iter_remove(&iter); + } + } + @endcode + + If the ordering of the keys is known at compile-time, you can use this method + to speed up value lookups: + @code + // {"k1":1, "k2": 3, "k3": 3} + yyjson_mut_val *key, *val; + yyjson_mut_obj_iter iter = yyjson_mut_obj_iter_with(obj); + yyjson_mut_val *v1 = yyjson_mut_obj_iter_get(&iter, "k1"); + yyjson_mut_val *v3 = yyjson_mut_obj_iter_get(&iter, "k3"); + @endcode + @see `yyjson_mut_obj_iter_get()` and `yyjson_mut_obj_iter_getn()` + */ +typedef struct yyjson_mut_obj_iter { + size_t idx; /**< next key's index */ + size_t max; /**< maximum key index (obj.size) */ + yyjson_mut_val *cur; /**< current key */ + yyjson_mut_val *pre; /**< previous key */ + yyjson_mut_val *obj; /**< the object being iterated */ +} yyjson_mut_obj_iter; + +/** + Initialize an iterator for this object. + + @param obj The object to be iterated over. + If this parameter is NULL or not an array, `iter` will be set to empty. + @param iter The iterator to be initialized. + If this parameter is NULL, the function will fail and return false. + @return true if the `iter` has been successfully initialized. + + @note The iterator does not need to be destroyed. + */ +yyjson_api_inline bool yyjson_mut_obj_iter_init(yyjson_mut_val *obj, + yyjson_mut_obj_iter *iter); + +/** + Create an iterator with an object, same as `yyjson_obj_iter_init()`. + + @param obj The object to be iterated over. + If this parameter is NULL or not an object, an empty iterator will returned. + @return A new iterator for the object. + + @note The iterator does not need to be destroyed. + */ +yyjson_api_inline yyjson_mut_obj_iter yyjson_mut_obj_iter_with( + yyjson_mut_val *obj); + +/** + Returns whether the iteration has more elements. + If `iter` is NULL, this function will return false. + */ +yyjson_api_inline bool yyjson_mut_obj_iter_has_next( + yyjson_mut_obj_iter *iter); + +/** + Returns the next key in the iteration, or NULL on end. + If `iter` is NULL, this function will return NULL. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_next( + yyjson_mut_obj_iter *iter); + +/** + Returns the value for key inside the iteration. + If `iter` is NULL, this function will return NULL. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_get_val( + yyjson_mut_val *key); + +/** + Removes current key-value pair in the iteration, returns the removed value. + If `iter` is NULL, this function will return NULL. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_remove( + yyjson_mut_obj_iter *iter); + +/** + Iterates to a specified key and returns the value. + + This function does the same thing as `yyjson_mut_obj_get()`, but is much faster + if the ordering of the keys is known at compile-time and you are using the same + order to look up the values. If the key exists in this object, then the + iterator will stop at the next key, otherwise the iterator will not change and + NULL is returned. + + @param iter The object iterator, should not be NULL. + @param key The key, should be a UTF-8 string with null-terminator. + @return The value to which the specified key is mapped. + NULL if this object contains no mapping for the key or input is invalid. + + @warning This function takes a linear search time if the key is not nearby. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_get( + yyjson_mut_obj_iter *iter, const char *key); + +/** + Iterates to a specified key and returns the value. + + This function does the same thing as `yyjson_mut_obj_getn()` but is much faster + if the ordering of the keys is known at compile-time and you are using the same + order to look up the values. If the key exists in this object, then the + iterator will stop at the next key, otherwise the iterator will not change and + NULL is returned. + + @param iter The object iterator, should not be NULL. + @param key The key, should be a UTF-8 string, null-terminator is not required. + @param key_len The the length of `key`, in bytes. + @return The value to which the specified key is mapped. + NULL if this object contains no mapping for the key or input is invalid. + + @warning This function takes a linear search time if the key is not nearby. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_getn( + yyjson_mut_obj_iter *iter, const char *key, size_t key_len); + +/** + Macro for iterating over an object. + It works like iterator, but with a more intuitive API. + + @warning You should not modify the object while iterating over it. + + @b Example + @code + size_t idx, max; + yyjson_mut_val *key, *val; + yyjson_mut_obj_foreach(obj, idx, max, key, val) { + your_func(key, val); + } + @endcode + */ +#define yyjson_mut_obj_foreach(obj, idx, max, key, val) \ + for ((idx) = 0, \ + (max) = yyjson_mut_obj_size(obj), \ + (key) = (max) ? ((yyjson_mut_val *)(obj)->uni.ptr)->next->next : NULL, \ + (val) = (key) ? (key)->next : NULL; \ + (idx) < (max); \ + (idx)++, \ + (key) = (val)->next, \ + (val) = (key)->next) + + + +/*============================================================================== + * MARK: - Mutable JSON Object Creation API + *============================================================================*/ + +/** Creates and returns a mutable object, returns NULL on error. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj(yyjson_mut_doc *doc); + +/** + Creates and returns a mutable object with keys and values, returns NULL on + error. The keys and values are not copied. The strings should be a + null-terminated UTF-8 string. + + @warning The input string is not copied, you should keep this string + unmodified for the lifetime of this JSON document. + + @b Example + @code + const char *keys[2] = { "id", "name" }; + const char *vals[2] = { "01", "Harry" }; + yyjson_mut_val *obj = yyjson_mut_obj_with_str(doc, keys, vals, 2); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_with_str(yyjson_mut_doc *doc, + const char **keys, + const char **vals, + size_t count); + +/** + Creates and returns a mutable object with key-value pairs and pair count, + returns NULL on error. The keys and values are not copied. The strings should + be a null-terminated UTF-8 string. + + @warning The input string is not copied, you should keep this string + unmodified for the lifetime of this JSON document. + + @b Example + @code + const char *kv_pairs[4] = { "id", "01", "name", "Harry" }; + yyjson_mut_val *obj = yyjson_mut_obj_with_kv(doc, kv_pairs, 2); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_with_kv(yyjson_mut_doc *doc, + const char **kv_pairs, + size_t pair_count); + + + +/*============================================================================== + * MARK: - Mutable JSON Object Modification API + *============================================================================*/ + +/** + Adds a key-value pair at the end of the object. + This function allows duplicated key in one object. + @param obj The object to which the new key-value pair is to be added. + @param key The key, should be a string which is created by `yyjson_mut_str()`, + `yyjson_mut_strn()`, `yyjson_mut_strcpy()` or `yyjson_mut_strncpy()`. + @param val The value to add to the object. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_obj_add(yyjson_mut_val *obj, + yyjson_mut_val *key, + yyjson_mut_val *val); +/** + Sets a key-value pair at the end of the object. + This function may remove all key-value pairs for the given key before add. + @param obj The object to which the new key-value pair is to be added. + @param key The key, should be a string which is created by `yyjson_mut_str()`, + `yyjson_mut_strn()`, `yyjson_mut_strcpy()` or `yyjson_mut_strncpy()`. + @param val The value to add to the object. If this value is null, the behavior + is same as `yyjson_mut_obj_remove()`. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_obj_put(yyjson_mut_val *obj, + yyjson_mut_val *key, + yyjson_mut_val *val); + +/** + Inserts a key-value pair to the object at the given position. + This function allows duplicated key in one object. + @param obj The object to which the new key-value pair is to be added. + @param key The key, should be a string which is created by `yyjson_mut_str()`, + `yyjson_mut_strn()`, `yyjson_mut_strcpy()` or `yyjson_mut_strncpy()`. + @param val The value to add to the object. + @param idx The index to which to insert the new pair. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_obj_insert(yyjson_mut_val *obj, + yyjson_mut_val *key, + yyjson_mut_val *val, + size_t idx); + +/** + Removes all key-value pair from the object with given key. + @param obj The object from which the key-value pair is to be removed. + @param key The key, should be a string value. + @return The first matched value, or NULL if no matched value. + @warning This function takes a linear search time. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove(yyjson_mut_val *obj, + yyjson_mut_val *key); + +/** + Removes all key-value pair from the object with given key. + @param obj The object from which the key-value pair is to be removed. + @param key The key, should be a UTF-8 string with null-terminator. + @return The first matched value, or NULL if no matched value. + @warning This function takes a linear search time. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove_key( + yyjson_mut_val *obj, const char *key); + +/** + Removes all key-value pair from the object with given key. + @param obj The object from which the key-value pair is to be removed. + @param key The key, should be a UTF-8 string, null-terminator is not required. + @param key_len The length of the key. + @return The first matched value, or NULL if no matched value. + @warning This function takes a linear search time. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove_keyn( + yyjson_mut_val *obj, const char *key, size_t key_len); + +/** + Removes all key-value pairs in this object. + @param obj The object from which all of the values are to be removed. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_obj_clear(yyjson_mut_val *obj); + +/** + Replaces value from the object with given key. + If the key is not exist, or the value is NULL, it will fail. + @param obj The object to which the value is to be replaced. + @param key The key, should be a string value. + @param val The value to replace into the object. + @return Whether successful. + @warning This function takes a linear search time. + */ +yyjson_api_inline bool yyjson_mut_obj_replace(yyjson_mut_val *obj, + yyjson_mut_val *key, + yyjson_mut_val *val); + +/** + Rotates key-value pairs in the object for the given number of times. + For example: `{"a":1,"b":2,"c":3,"d":4}` rotate 1 is + `{"b":2,"c":3,"d":4,"a":1}`. + @param obj The object to be rotated. + @param idx Index (or times) to rotate. + @return Whether successful. + @warning This function takes a linear search time. + */ +yyjson_api_inline bool yyjson_mut_obj_rotate(yyjson_mut_val *obj, + size_t idx); + + + +/*============================================================================== + * MARK: - Mutable JSON Object Modification Convenience API + *============================================================================*/ + +/** Adds a `null` value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + This function allows duplicated key in one object. + + @warning The key string is not copied, you should keep the string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_null(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key); + +/** Adds a `true` value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + This function allows duplicated key in one object. + + @warning The key string is not copied, you should keep the string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_true(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key); + +/** Adds a `false` value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + This function allows duplicated key in one object. + + @warning The key string is not copied, you should keep the string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_false(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key); + +/** Adds a bool value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + This function allows duplicated key in one object. + + @warning The key string is not copied, you should keep the string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_bool(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, bool val); + +/** Adds an unsigned integer value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + This function allows duplicated key in one object. + + @warning The key string is not copied, you should keep the string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_uint(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, uint64_t val); + +/** Adds a signed integer value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + This function allows duplicated key in one object. + + @warning The key string is not copied, you should keep the string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_sint(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, int64_t val); + +/** Adds an int value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + This function allows duplicated key in one object. + + @warning The key string is not copied, you should keep the string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_int(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, int64_t val); + +/** Adds a float value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + This function allows duplicated key in one object. + + @warning The key string is not copied, you should keep the string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_float(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, float val); + +/** Adds a double value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + This function allows duplicated key in one object. + + @warning The key string is not copied, you should keep the string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_double(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, double val); + +/** Adds a real value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + This function allows duplicated key in one object. + + @warning The key string is not copied, you should keep the string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_real(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, double val); + +/** Adds a string value at the end of the object. + The `key` and `val` should be null-terminated UTF-8 strings. + This function allows duplicated key in one object. + + @warning The key/value strings are not copied, you should keep these strings + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_str(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, const char *val); + +/** Adds a string value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + The `val` should be a UTF-8 string, null-terminator is not required. + The `len` should be the length of the `val`, in bytes. + This function allows duplicated key in one object. + + @warning The key/value strings are not copied, you should keep these strings + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_strn(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, + const char *val, size_t len); + +/** Adds a string value at the end of the object. + The `key` and `val` should be null-terminated UTF-8 strings. + The value string is copied. + This function allows duplicated key in one object. + + @warning The key string is not copied, you should keep the string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_strcpy(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, + const char *val); + +/** Adds a string value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + The `val` should be a UTF-8 string, null-terminator is not required. + The `len` should be the length of the `val`, in bytes. + This function allows duplicated key in one object. + + @warning The key strings are not copied, you should keep these strings + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_strncpy(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, + const char *val, size_t len); + +/** + Creates and adds a new array to the target object. + The `key` should be a null-terminated UTF-8 string. + This function allows duplicated key in one object. + + @warning The key string is not copied, you should keep these strings + unmodified for the lifetime of this JSON document. + @return The new array, or NULL on error. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_add_arr(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key); + +/** + Creates and adds a new object to the target object. + The `key` should be a null-terminated UTF-8 string. + This function allows duplicated key in one object. + + @warning The key string is not copied, you should keep these strings + unmodified for the lifetime of this JSON document. + @return The new object, or NULL on error. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_add_obj(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key); + +/** Adds a JSON value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + This function allows duplicated key in one object. + + @warning The key string is not copied, you should keep the string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_val(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, + yyjson_mut_val *val); + +/** Removes all key-value pairs for the given key. + Returns the first value to which the specified key is mapped or NULL if this + object contains no mapping for the key. + The `key` should be a null-terminated UTF-8 string. + + @warning This function takes a linear search time. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove_str( + yyjson_mut_val *obj, const char *key); + +/** Removes all key-value pairs for the given key. + Returns the first value to which the specified key is mapped or NULL if this + object contains no mapping for the key. + The `key` should be a UTF-8 string, null-terminator is not required. + The `len` should be the length of the key, in bytes. + + @warning This function takes a linear search time. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove_strn( + yyjson_mut_val *obj, const char *key, size_t len); + +/** Replaces all matching keys with the new key. + Returns true if at least one key was renamed. + The `key` and `new_key` should be a null-terminated UTF-8 string. + The `new_key` is copied and held by doc. + + @warning This function takes a linear search time. + If `new_key` already exists, it will cause duplicate keys. + */ +yyjson_api_inline bool yyjson_mut_obj_rename_key(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, + const char *new_key); + +/** Replaces all matching keys with the new key. + Returns true if at least one key was renamed. + The `key` and `new_key` should be a UTF-8 string, + null-terminator is not required. The `new_key` is copied and held by doc. + + @warning This function takes a linear search time. + If `new_key` already exists, it will cause duplicate keys. + */ +yyjson_api_inline bool yyjson_mut_obj_rename_keyn(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, + size_t len, + const char *new_key, + size_t new_len); + + + +#if !defined(YYJSON_DISABLE_UTILS) || !YYJSON_DISABLE_UTILS + +/*============================================================================== + * MARK: - JSON Pointer API (RFC 6901) + * https://tools.ietf.org/html/rfc6901 + *============================================================================*/ + +/** JSON Pointer error code. */ +typedef uint32_t yyjson_ptr_code; + +/** No JSON pointer error. */ +static const yyjson_ptr_code YYJSON_PTR_ERR_NONE = 0; + +/** Invalid input parameter, such as NULL input. */ +static const yyjson_ptr_code YYJSON_PTR_ERR_PARAMETER = 1; + +/** JSON pointer syntax error, such as invalid escape, token no prefix. */ +static const yyjson_ptr_code YYJSON_PTR_ERR_SYNTAX = 2; + +/** JSON pointer resolve failed, such as index out of range, key not found. */ +static const yyjson_ptr_code YYJSON_PTR_ERR_RESOLVE = 3; + +/** Document's root is NULL, but it is required for the function call. */ +static const yyjson_ptr_code YYJSON_PTR_ERR_NULL_ROOT = 4; + +/** Cannot set root as the target is not a document. */ +static const yyjson_ptr_code YYJSON_PTR_ERR_SET_ROOT = 5; + +/** The memory allocation failed and a new value could not be created. */ +static const yyjson_ptr_code YYJSON_PTR_ERR_MEMORY_ALLOCATION = 6; + +/** Error information for JSON pointer. */ +typedef struct yyjson_ptr_err { + /** Error code, see `yyjson_ptr_code` for all possible values. */ + yyjson_ptr_code code; + /** Error message, constant, no need to free (NULL if no error). */ + const char *msg; + /** Error byte position for input JSON pointer (0 if no error). */ + size_t pos; +} yyjson_ptr_err; + +/** + A context for JSON pointer operation. + + This struct stores the context of JSON Pointer operation result. The struct + can be used with three helper functions: `ctx_append()`, `ctx_replace()`, and + `ctx_remove()`, which perform the corresponding operations on the container + without re-parsing the JSON Pointer. + + For example: + @code + // doc before: {"a":[0,1,null]} + // ptr: "/a/2" + val = yyjson_mut_doc_ptr_getx(doc, ptr, strlen(ptr), &ctx, &err); + if (yyjson_is_null(val)) { + yyjson_ptr_ctx_remove(&ctx); + } + // doc after: {"a":[0,1]} + @endcode + */ +typedef struct yyjson_ptr_ctx { + /** + The container (parent) of the target value. It can be either an array or + an object. If the target location has no value, but all its parent + containers exist, and the target location can be used to insert a new + value, then `ctn` is the parent container of the target location. + Otherwise, `ctn` is NULL. + */ + yyjson_mut_val *ctn; + /** + The previous sibling of the target value. It can be either a value in an + array or a key in an object. As the container is a `circular linked list` + of elements, `pre` is the previous node of the target value. If the + operation is `add` or `set`, then `pre` is the previous node of the new + value, not the original target value. If the target value does not exist, + `pre` is NULL. + */ + yyjson_mut_val *pre; + /** + The removed value if the operation is `set`, `replace` or `remove`. It can + be used to restore the original state of the document if needed. + */ + yyjson_mut_val *old; +} yyjson_ptr_ctx; + +/** + Get value by a JSON Pointer. + @param doc The JSON document to be queried. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @return The value referenced by the JSON pointer. + NULL if `doc` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_val *yyjson_doc_ptr_get(yyjson_doc *doc, + const char *ptr); + +/** + Get value by a JSON Pointer. + @param doc The JSON document to be queried. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @return The value referenced by the JSON pointer. + NULL if `doc` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_val *yyjson_doc_ptr_getn(yyjson_doc *doc, + const char *ptr, size_t len); + +/** + Get value by a JSON Pointer. + @param doc The JSON document to be queried. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param err A pointer to store the error information, or NULL if not needed. + @return The value referenced by the JSON pointer. + NULL if `doc` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_val *yyjson_doc_ptr_getx(yyjson_doc *doc, + const char *ptr, size_t len, + yyjson_ptr_err *err); + +/** + Get value by a JSON Pointer. + @param val The JSON value to be queried. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @return The value referenced by the JSON pointer. + NULL if `val` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_val *yyjson_ptr_get(yyjson_val *val, + const char *ptr); + +/** + Get value by a JSON Pointer. + @param val The JSON value to be queried. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @return The value referenced by the JSON pointer. + NULL if `val` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_val *yyjson_ptr_getn(yyjson_val *val, + const char *ptr, size_t len); + +/** + Get value by a JSON Pointer. + @param val The JSON value to be queried. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param err A pointer to store the error information, or NULL if not needed. + @return The value referenced by the JSON pointer. + NULL if `val` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_val *yyjson_ptr_getx(yyjson_val *val, + const char *ptr, size_t len, + yyjson_ptr_err *err); + +/** + Get value by a JSON Pointer. + @param doc The JSON document to be queried. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @return The value referenced by the JSON pointer. + NULL if `doc` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_get(yyjson_mut_doc *doc, + const char *ptr); + +/** + Get value by a JSON Pointer. + @param doc The JSON document to be queried. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @return The value referenced by the JSON pointer. + NULL if `doc` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_getn(yyjson_mut_doc *doc, + const char *ptr, + size_t len); + +/** + Get value by a JSON Pointer. + @param doc The JSON document to be queried. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param ctx A pointer to store the result context, or NULL if not needed. + @param err A pointer to store the error information, or NULL if not needed. + @return The value referenced by the JSON pointer. + NULL if `doc` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_getx(yyjson_mut_doc *doc, + const char *ptr, + size_t len, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err); + +/** + Get value by a JSON Pointer. + @param val The JSON value to be queried. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @return The value referenced by the JSON pointer. + NULL if `val` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_get(yyjson_mut_val *val, + const char *ptr); + +/** + Get value by a JSON Pointer. + @param val The JSON value to be queried. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @return The value referenced by the JSON pointer. + NULL if `val` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_getn(yyjson_mut_val *val, + const char *ptr, + size_t len); + +/** + Get value by a JSON Pointer. + @param val The JSON value to be queried. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param ctx A pointer to store the result context, or NULL if not needed. + @param err A pointer to store the error information, or NULL if not needed. + @return The value referenced by the JSON pointer. + NULL if `val` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_getx(yyjson_mut_val *val, + const char *ptr, + size_t len, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err); + +/** + Add (insert) value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @param new_val The value to be added. + @return true if JSON pointer is valid and new value is added, false otherwise. + @note The parent nodes will be created if they do not exist. + */ +yyjson_api_inline bool yyjson_mut_doc_ptr_add(yyjson_mut_doc *doc, + const char *ptr, + yyjson_mut_val *new_val); + +/** + Add (insert) value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param new_val The value to be added. + @return true if JSON pointer is valid and new value is added, false otherwise. + @note The parent nodes will be created if they do not exist. + */ +yyjson_api_inline bool yyjson_mut_doc_ptr_addn(yyjson_mut_doc *doc, + const char *ptr, size_t len, + yyjson_mut_val *new_val); + +/** + Add (insert) value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param new_val The value to be added. + @param create_parent Whether to create parent nodes if not exist. + @param ctx A pointer to store the result context, or NULL if not needed. + @param err A pointer to store the error information, or NULL if not needed. + @return true if JSON pointer is valid and new value is added, false otherwise. + */ +yyjson_api_inline bool yyjson_mut_doc_ptr_addx(yyjson_mut_doc *doc, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + bool create_parent, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err); + +/** + Add (insert) value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @param doc Only used to create new values when needed. + @param new_val The value to be added. + @return true if JSON pointer is valid and new value is added, false otherwise. + @note The parent nodes will be created if they do not exist. + */ +yyjson_api_inline bool yyjson_mut_ptr_add(yyjson_mut_val *val, + const char *ptr, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc); + +/** + Add (insert) value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param doc Only used to create new values when needed. + @param new_val The value to be added. + @return true if JSON pointer is valid and new value is added, false otherwise. + @note The parent nodes will be created if they do not exist. + */ +yyjson_api_inline bool yyjson_mut_ptr_addn(yyjson_mut_val *val, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc); + +/** + Add (insert) value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param doc Only used to create new values when needed. + @param new_val The value to be added. + @param create_parent Whether to create parent nodes if not exist. + @param ctx A pointer to store the result context, or NULL if not needed. + @param err A pointer to store the error information, or NULL if not needed. + @return true if JSON pointer is valid and new value is added, false otherwise. + */ +yyjson_api_inline bool yyjson_mut_ptr_addx(yyjson_mut_val *val, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc, + bool create_parent, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err); + +/** + Set value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @param new_val The value to be set, pass NULL to remove. + @return true if JSON pointer is valid and new value is set, false otherwise. + @note The parent nodes will be created if they do not exist. + If the target value already exists, it will be replaced by the new value. + */ +yyjson_api_inline bool yyjson_mut_doc_ptr_set(yyjson_mut_doc *doc, + const char *ptr, + yyjson_mut_val *new_val); + +/** + Set value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param new_val The value to be set, pass NULL to remove. + @return true if JSON pointer is valid and new value is set, false otherwise. + @note The parent nodes will be created if they do not exist. + If the target value already exists, it will be replaced by the new value. + */ +yyjson_api_inline bool yyjson_mut_doc_ptr_setn(yyjson_mut_doc *doc, + const char *ptr, size_t len, + yyjson_mut_val *new_val); + +/** + Set value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param new_val The value to be set, pass NULL to remove. + @param create_parent Whether to create parent nodes if not exist. + @param ctx A pointer to store the result context, or NULL if not needed. + @param err A pointer to store the error information, or NULL if not needed. + @return true if JSON pointer is valid and new value is set, false otherwise. + @note If the target value already exists, it will be replaced by the new value. + */ +yyjson_api_inline bool yyjson_mut_doc_ptr_setx(yyjson_mut_doc *doc, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + bool create_parent, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err); + +/** + Set value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @param new_val The value to be set, pass NULL to remove. + @param doc Only used to create new values when needed. + @return true if JSON pointer is valid and new value is set, false otherwise. + @note The parent nodes will be created if they do not exist. + If the target value already exists, it will be replaced by the new value. + */ +yyjson_api_inline bool yyjson_mut_ptr_set(yyjson_mut_val *val, + const char *ptr, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc); + +/** + Set value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param new_val The value to be set, pass NULL to remove. + @param doc Only used to create new values when needed. + @return true if JSON pointer is valid and new value is set, false otherwise. + @note The parent nodes will be created if they do not exist. + If the target value already exists, it will be replaced by the new value. + */ +yyjson_api_inline bool yyjson_mut_ptr_setn(yyjson_mut_val *val, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc); + +/** + Set value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param new_val The value to be set, pass NULL to remove. + @param doc Only used to create new values when needed. + @param create_parent Whether to create parent nodes if not exist. + @param ctx A pointer to store the result context, or NULL if not needed. + @param err A pointer to store the error information, or NULL if not needed. + @return true if JSON pointer is valid and new value is set, false otherwise. + @note If the target value already exists, it will be replaced by the new value. + */ +yyjson_api_inline bool yyjson_mut_ptr_setx(yyjson_mut_val *val, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc, + bool create_parent, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err); + +/** + Replace value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @param new_val The new value to replace the old one. + @return The old value that was replaced, or NULL if not found. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_replace( + yyjson_mut_doc *doc, const char *ptr, yyjson_mut_val *new_val); + +/** + Replace value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param new_val The new value to replace the old one. + @return The old value that was replaced, or NULL if not found. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_replacen( + yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val); + +/** + Replace value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param new_val The new value to replace the old one. + @param ctx A pointer to store the result context, or NULL if not needed. + @param err A pointer to store the error information, or NULL if not needed. + @return The old value that was replaced, or NULL if not found. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_replacex( + yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val, + yyjson_ptr_ctx *ctx, yyjson_ptr_err *err); + +/** + Replace value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @param new_val The new value to replace the old one. + @return The old value that was replaced, or NULL if not found. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_replace( + yyjson_mut_val *val, const char *ptr, yyjson_mut_val *new_val); + +/** + Replace value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param new_val The new value to replace the old one. + @return The old value that was replaced, or NULL if not found. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_replacen( + yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val); + +/** + Replace value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param new_val The new value to replace the old one. + @param ctx A pointer to store the result context, or NULL if not needed. + @param err A pointer to store the error information, or NULL if not needed. + @return The old value that was replaced, or NULL if not found. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_replacex( + yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, + yyjson_ptr_ctx *ctx, yyjson_ptr_err *err); + +/** + Remove value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @return The removed value, or NULL on error. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_remove( + yyjson_mut_doc *doc, const char *ptr); + +/** + Remove value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @return The removed value, or NULL on error. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_removen( + yyjson_mut_doc *doc, const char *ptr, size_t len); + +/** + Remove value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param ctx A pointer to store the result context, or NULL if not needed. + @param err A pointer to store the error information, or NULL if not needed. + @return The removed value, or NULL on error. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_removex( + yyjson_mut_doc *doc, const char *ptr, size_t len, + yyjson_ptr_ctx *ctx, yyjson_ptr_err *err); + +/** + Remove value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @return The removed value, or NULL on error. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_remove(yyjson_mut_val *val, + const char *ptr); + +/** + Remove value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @return The removed value, or NULL on error. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_removen(yyjson_mut_val *val, + const char *ptr, + size_t len); + +/** + Remove value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param ctx A pointer to store the result context, or NULL if not needed. + @param err A pointer to store the error information, or NULL if not needed. + @return The removed value, or NULL on error. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_removex(yyjson_mut_val *val, + const char *ptr, + size_t len, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err); + +/** + Append value by JSON pointer context. + @param ctx The context from the `yyjson_mut_ptr_xxx()` calls. + @param key New key if `ctx->ctn` is object, or NULL if `ctx->ctn` is array. + @param val New value to be added. + @return true on success or false on fail. + */ +yyjson_api_inline bool yyjson_ptr_ctx_append(yyjson_ptr_ctx *ctx, + yyjson_mut_val *key, + yyjson_mut_val *val); + +/** + Replace value by JSON pointer context. + @param ctx The context from the `yyjson_mut_ptr_xxx()` calls. + @param val New value to be replaced. + @return true on success or false on fail. + @note If success, the old value will be returned via `ctx->old`. + */ +yyjson_api_inline bool yyjson_ptr_ctx_replace(yyjson_ptr_ctx *ctx, + yyjson_mut_val *val); + +/** + Remove value by JSON pointer context. + @param ctx The context from the `yyjson_mut_ptr_xxx()` calls. + @return true on success or false on fail. + @note If success, the old value will be returned via `ctx->old`. + */ +yyjson_api_inline bool yyjson_ptr_ctx_remove(yyjson_ptr_ctx *ctx); + + + +/*============================================================================== + * MARK: - JSON Patch API (RFC 6902) + * https://tools.ietf.org/html/rfc6902 + *============================================================================*/ + +/** Result code for JSON patch. */ +typedef uint32_t yyjson_patch_code; + +/** Success, no error. */ +static const yyjson_patch_code YYJSON_PATCH_SUCCESS = 0; + +/** Invalid parameter, such as NULL input or non-array patch. */ +static const yyjson_patch_code YYJSON_PATCH_ERROR_INVALID_PARAMETER = 1; + +/** Memory allocation failure occurs. */ +static const yyjson_patch_code YYJSON_PATCH_ERROR_MEMORY_ALLOCATION = 2; + +/** JSON patch operation is not object type. */ +static const yyjson_patch_code YYJSON_PATCH_ERROR_INVALID_OPERATION = 3; + +/** JSON patch operation is missing a required key. */ +static const yyjson_patch_code YYJSON_PATCH_ERROR_MISSING_KEY = 4; + +/** JSON patch operation member is invalid. */ +static const yyjson_patch_code YYJSON_PATCH_ERROR_INVALID_MEMBER = 5; + +/** JSON patch operation `test` not equal. */ +static const yyjson_patch_code YYJSON_PATCH_ERROR_EQUAL = 6; + +/** JSON patch operation failed on JSON pointer. */ +static const yyjson_patch_code YYJSON_PATCH_ERROR_POINTER = 7; + +/** Error information for JSON patch. */ +typedef struct yyjson_patch_err { + /** Error code, see `yyjson_patch_code` for all possible values. */ + yyjson_patch_code code; + /** Index of the error operation (0 if no error). */ + size_t idx; + /** Error message, constant, no need to free (NULL if no error). */ + const char *msg; + /** JSON pointer error if `code == YYJSON_PATCH_ERROR_POINTER`. */ + yyjson_ptr_err ptr; +} yyjson_patch_err; + +/** + Creates and returns a patched JSON value (RFC 6902). + The memory of the returned value is allocated by the `doc`. + The `err` is used to receive error information, pass NULL if not needed. + Returns NULL if the patch could not be applied. + */ +yyjson_api yyjson_mut_val *yyjson_patch(yyjson_mut_doc *doc, + yyjson_val *orig, + yyjson_val *patch, + yyjson_patch_err *err); + +/** + Creates and returns a patched JSON value (RFC 6902). + The memory of the returned value is allocated by the `doc`. + The `err` is used to receive error information, pass NULL if not needed. + Returns NULL if the patch could not be applied. + */ +yyjson_api yyjson_mut_val *yyjson_mut_patch(yyjson_mut_doc *doc, + yyjson_mut_val *orig, + yyjson_mut_val *patch, + yyjson_patch_err *err); + + + +/*============================================================================== + * MARK: - JSON Merge-Patch API (RFC 7386) + * https://tools.ietf.org/html/rfc7386 + *============================================================================*/ + +/** + Creates and returns a merge-patched JSON value (RFC 7386). + The memory of the returned value is allocated by the `doc`. + Returns NULL if the patch could not be applied. + + @warning This function is recursive and may cause a stack overflow if the + object level is too deep. + */ +yyjson_api yyjson_mut_val *yyjson_merge_patch(yyjson_mut_doc *doc, + yyjson_val *orig, + yyjson_val *patch); + +/** + Creates and returns a merge-patched JSON value (RFC 7386). + The memory of the returned value is allocated by the `doc`. + Returns NULL if the patch could not be applied. + + @warning This function is recursive and may cause a stack overflow if the + object level is too deep. + */ +yyjson_api yyjson_mut_val *yyjson_mut_merge_patch(yyjson_mut_doc *doc, + yyjson_mut_val *orig, + yyjson_mut_val *patch); + +#endif /* YYJSON_DISABLE_UTILS */ + + + +/*============================================================================== + * MARK: - JSON Structure (Implementation) + *============================================================================*/ + +/** Payload of a JSON value (8 bytes). */ +typedef union yyjson_val_uni { + uint64_t u64; + int64_t i64; + double f64; + const char *str; + void *ptr; + size_t ofs; +} yyjson_val_uni; + +/** + Immutable JSON value, 16 bytes. + */ +struct yyjson_val { + uint64_t tag; /**< type, subtype and length */ + yyjson_val_uni uni; /**< payload */ +}; + +struct yyjson_doc { + /** Root value of the document (nonnull). */ + yyjson_val *root; + /** Allocator used by document (nonnull). */ + yyjson_alc alc; + /** The total number of bytes read when parsing JSON (nonzero). */ + size_t dat_read; + /** The total number of value read when parsing JSON (nonzero). */ + size_t val_read; + /** The string pool used by JSON values (nullable). */ + char *str_pool; +}; + + + +/*============================================================================== + * MARK: - Unsafe JSON Value API (Implementation) + *============================================================================*/ + +/* + Whether the string does not need to be escaped for serialization. + This function is used to optimize the writing speed of small constant strings. + This function works only if the compiler can evaluate it at compile time. + + Clang supports it since v8.0, + earlier versions do not support constant_p(strlen) and return false. + GCC supports it since at least v4.4, + earlier versions may compile it as run-time instructions. + ICC supports it since at least v16, + earlier versions are uncertain. + + @param str The C string. + @param len The returnd value from strlen(str). + */ +yyjson_api_inline bool unsafe_yyjson_is_str_noesc(const char *str, size_t len) { +#if YYJSON_HAS_CONSTANT_P && \ + (!YYJSON_IS_REAL_GCC || yyjson_gcc_available(4, 4, 0)) + if (yyjson_constant_p(len) && len <= 32) { + /* + Same as the following loop: + + for (size_t i = 0; i < len; i++) { + char c = str[i]; + if (c < ' ' || c > '~' || c == '"' || c == '\\') return false; + } + + GCC evaluates it at compile time only if the string length is within 17 + and -O3 (which turns on the -fpeel-loops flag) is used. + So the loop is unrolled for GCC. + */ +# define yyjson_repeat32_incr(x) \ + x(0) x(1) x(2) x(3) x(4) x(5) x(6) x(7) \ + x(8) x(9) x(10) x(11) x(12) x(13) x(14) x(15) \ + x(16) x(17) x(18) x(19) x(20) x(21) x(22) x(23) \ + x(24) x(25) x(26) x(27) x(28) x(29) x(30) x(31) +# define yyjson_check_char_noesc(i) \ + if (i < len) { \ + char c = str[i]; \ + if (c < ' ' || c > '~' || c == '"' || c == '\\') return false; } + yyjson_repeat32_incr(yyjson_check_char_noesc) +# undef yyjson_repeat32_incr +# undef yyjson_check_char_noesc + return true; + } +#else + (void)str; + (void)len; +#endif + return false; +} + +yyjson_api_inline double unsafe_yyjson_u64_to_f64(uint64_t num) { +#if YYJSON_U64_TO_F64_NO_IMPL + uint64_t msb = ((uint64_t)1) << 63; + if ((num & msb) == 0) { + return (double)(int64_t)num; + } else { + return ((double)(int64_t)((num >> 1) | (num & 1))) * (double)2.0; + } +#else + return (double)num; +#endif +} + +yyjson_api_inline yyjson_type unsafe_yyjson_get_type(void *val) { + uint8_t tag = (uint8_t)((yyjson_val *)val)->tag; + return (yyjson_type)(tag & YYJSON_TYPE_MASK); +} + +yyjson_api_inline yyjson_subtype unsafe_yyjson_get_subtype(void *val) { + uint8_t tag = (uint8_t)((yyjson_val *)val)->tag; + return (yyjson_subtype)(tag & YYJSON_SUBTYPE_MASK); +} + +yyjson_api_inline uint8_t unsafe_yyjson_get_tag(void *val) { + uint8_t tag = (uint8_t)((yyjson_val *)val)->tag; + return (uint8_t)(tag & YYJSON_TAG_MASK); +} + +yyjson_api_inline bool unsafe_yyjson_is_raw(void *val) { + return unsafe_yyjson_get_type(val) == YYJSON_TYPE_RAW; +} + +yyjson_api_inline bool unsafe_yyjson_is_null(void *val) { + return unsafe_yyjson_get_type(val) == YYJSON_TYPE_NULL; +} + +yyjson_api_inline bool unsafe_yyjson_is_bool(void *val) { + return unsafe_yyjson_get_type(val) == YYJSON_TYPE_BOOL; +} + +yyjson_api_inline bool unsafe_yyjson_is_num(void *val) { + return unsafe_yyjson_get_type(val) == YYJSON_TYPE_NUM; +} + +yyjson_api_inline bool unsafe_yyjson_is_str(void *val) { + return unsafe_yyjson_get_type(val) == YYJSON_TYPE_STR; +} + +yyjson_api_inline bool unsafe_yyjson_is_arr(void *val) { + return unsafe_yyjson_get_type(val) == YYJSON_TYPE_ARR; +} + +yyjson_api_inline bool unsafe_yyjson_is_obj(void *val) { + return unsafe_yyjson_get_type(val) == YYJSON_TYPE_OBJ; +} + +yyjson_api_inline bool unsafe_yyjson_is_ctn(void *val) { + uint8_t mask = YYJSON_TYPE_ARR & YYJSON_TYPE_OBJ; + return (unsafe_yyjson_get_tag(val) & mask) == mask; +} + +yyjson_api_inline bool unsafe_yyjson_is_uint(void *val) { + const uint8_t patt = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_UINT; + return unsafe_yyjson_get_tag(val) == patt; +} + +yyjson_api_inline bool unsafe_yyjson_is_sint(void *val) { + const uint8_t patt = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_SINT; + return unsafe_yyjson_get_tag(val) == patt; +} + +yyjson_api_inline bool unsafe_yyjson_is_int(void *val) { + const uint8_t mask = YYJSON_TAG_MASK & (~YYJSON_SUBTYPE_SINT); + const uint8_t patt = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_UINT; + return (unsafe_yyjson_get_tag(val) & mask) == patt; +} + +yyjson_api_inline bool unsafe_yyjson_is_real(void *val) { + const uint8_t patt = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_REAL; + return unsafe_yyjson_get_tag(val) == patt; +} + +yyjson_api_inline bool unsafe_yyjson_is_true(void *val) { + const uint8_t patt = YYJSON_TYPE_BOOL | YYJSON_SUBTYPE_TRUE; + return unsafe_yyjson_get_tag(val) == patt; +} + +yyjson_api_inline bool unsafe_yyjson_is_false(void *val) { + const uint8_t patt = YYJSON_TYPE_BOOL | YYJSON_SUBTYPE_FALSE; + return unsafe_yyjson_get_tag(val) == patt; +} + +yyjson_api_inline bool unsafe_yyjson_arr_is_flat(yyjson_val *val) { + size_t ofs = val->uni.ofs; + size_t len = (size_t)(val->tag >> YYJSON_TAG_BIT); + return len * sizeof(yyjson_val) + sizeof(yyjson_val) == ofs; +} + +yyjson_api_inline const char *unsafe_yyjson_get_raw(void *val) { + return ((yyjson_val *)val)->uni.str; +} + +yyjson_api_inline bool unsafe_yyjson_get_bool(void *val) { + uint8_t tag = unsafe_yyjson_get_tag(val); + return (bool)((tag & YYJSON_SUBTYPE_MASK) >> YYJSON_TYPE_BIT); +} + +yyjson_api_inline uint64_t unsafe_yyjson_get_uint(void *val) { + return ((yyjson_val *)val)->uni.u64; +} + +yyjson_api_inline int64_t unsafe_yyjson_get_sint(void *val) { + return ((yyjson_val *)val)->uni.i64; +} + +yyjson_api_inline int unsafe_yyjson_get_int(void *val) { + return (int)((yyjson_val *)val)->uni.i64; +} + +yyjson_api_inline double unsafe_yyjson_get_real(void *val) { + return ((yyjson_val *)val)->uni.f64; +} + +yyjson_api_inline double unsafe_yyjson_get_num(void *val) { + uint8_t tag = unsafe_yyjson_get_tag(val); + if (tag == (YYJSON_TYPE_NUM | YYJSON_SUBTYPE_REAL)) { + return ((yyjson_val *)val)->uni.f64; + } else if (tag == (YYJSON_TYPE_NUM | YYJSON_SUBTYPE_SINT)) { + return (double)((yyjson_val *)val)->uni.i64; + } else if (tag == (YYJSON_TYPE_NUM | YYJSON_SUBTYPE_UINT)) { + return unsafe_yyjson_u64_to_f64(((yyjson_val *)val)->uni.u64); + } + return 0.0; +} + +yyjson_api_inline const char *unsafe_yyjson_get_str(void *val) { + return ((yyjson_val *)val)->uni.str; +} + +yyjson_api_inline size_t unsafe_yyjson_get_len(void *val) { + return (size_t)(((yyjson_val *)val)->tag >> YYJSON_TAG_BIT); +} + +yyjson_api_inline yyjson_val *unsafe_yyjson_get_first(yyjson_val *ctn) { + return ctn + 1; +} + +yyjson_api_inline yyjson_val *unsafe_yyjson_get_next(yyjson_val *val) { + bool is_ctn = unsafe_yyjson_is_ctn(val); + size_t ctn_ofs = val->uni.ofs; + size_t ofs = (is_ctn ? ctn_ofs : sizeof(yyjson_val)); + return (yyjson_val *)(void *)((uint8_t *)val + ofs); +} + +yyjson_api_inline bool unsafe_yyjson_equals_strn(void *val, const char *str, + size_t len) { + return unsafe_yyjson_get_len(val) == len && + memcmp(((yyjson_val *)val)->uni.str, str, len) == 0; +} + +yyjson_api_inline bool unsafe_yyjson_equals_str(void *val, const char *str) { + return unsafe_yyjson_equals_strn(val, str, strlen(str)); +} + +yyjson_api_inline void unsafe_yyjson_set_type(void *val, yyjson_type type, + yyjson_subtype subtype) { + uint8_t tag = (type | subtype); + uint64_t new_tag = ((yyjson_val *)val)->tag; + new_tag = (new_tag & (~(uint64_t)YYJSON_TAG_MASK)) | (uint64_t)tag; + ((yyjson_val *)val)->tag = new_tag; +} + +yyjson_api_inline void unsafe_yyjson_set_len(void *val, size_t len) { + uint64_t tag = ((yyjson_val *)val)->tag & YYJSON_TAG_MASK; + tag |= (uint64_t)len << YYJSON_TAG_BIT; + ((yyjson_val *)val)->tag = tag; +} + +yyjson_api_inline void unsafe_yyjson_set_tag(void *val, yyjson_type type, + yyjson_subtype subtype, + size_t len) { + uint64_t tag = (uint64_t)len << YYJSON_TAG_BIT; + tag |= (type | subtype); + ((yyjson_val *)val)->tag = tag; +} + +yyjson_api_inline void unsafe_yyjson_inc_len(void *val) { + uint64_t tag = ((yyjson_val *)val)->tag; + tag += (uint64_t)(1 << YYJSON_TAG_BIT); + ((yyjson_val *)val)->tag = tag; +} + +yyjson_api_inline void unsafe_yyjson_set_raw(void *val, const char *raw, + size_t len) { + unsafe_yyjson_set_tag(val, YYJSON_TYPE_RAW, YYJSON_SUBTYPE_NONE, len); + ((yyjson_val *)val)->uni.str = raw; +} + +yyjson_api_inline void unsafe_yyjson_set_null(void *val) { + unsafe_yyjson_set_tag(val, YYJSON_TYPE_NULL, YYJSON_SUBTYPE_NONE, 0); +} + +yyjson_api_inline void unsafe_yyjson_set_bool(void *val, bool num) { + yyjson_subtype subtype = num ? YYJSON_SUBTYPE_TRUE : YYJSON_SUBTYPE_FALSE; + unsafe_yyjson_set_tag(val, YYJSON_TYPE_BOOL, subtype, 0); +} + +yyjson_api_inline void unsafe_yyjson_set_uint(void *val, uint64_t num) { + unsafe_yyjson_set_tag(val, YYJSON_TYPE_NUM, YYJSON_SUBTYPE_UINT, 0); + ((yyjson_val *)val)->uni.u64 = num; +} + +yyjson_api_inline void unsafe_yyjson_set_sint(void *val, int64_t num) { + unsafe_yyjson_set_tag(val, YYJSON_TYPE_NUM, YYJSON_SUBTYPE_SINT, 0); + ((yyjson_val *)val)->uni.i64 = num; +} + +yyjson_api_inline void unsafe_yyjson_set_fp_to_fixed(void *val, int prec) { + ((yyjson_val *)val)->tag &= ~((uint64_t)YYJSON_WRITE_FP_TO_FIXED(15) << 32); + ((yyjson_val *)val)->tag |= (uint64_t)YYJSON_WRITE_FP_TO_FIXED(prec) << 32; +} + +yyjson_api_inline void unsafe_yyjson_set_fp_to_float(void *val, bool flt) { + uint64_t flag = (uint64_t)YYJSON_WRITE_FP_TO_FLOAT << 32; + if (flt) ((yyjson_val *)val)->tag |= flag; + else ((yyjson_val *)val)->tag &= ~flag; +} + +yyjson_api_inline void unsafe_yyjson_set_float(void *val, float num) { + unsafe_yyjson_set_tag(val, YYJSON_TYPE_NUM, YYJSON_SUBTYPE_REAL, 0); + ((yyjson_val *)val)->tag |= (uint64_t)YYJSON_WRITE_FP_TO_FLOAT << 32; + ((yyjson_val *)val)->uni.f64 = (double)num; +} + +yyjson_api_inline void unsafe_yyjson_set_double(void *val, double num) { + unsafe_yyjson_set_tag(val, YYJSON_TYPE_NUM, YYJSON_SUBTYPE_REAL, 0); + ((yyjson_val *)val)->uni.f64 = num; +} + +yyjson_api_inline void unsafe_yyjson_set_real(void *val, double num) { + unsafe_yyjson_set_tag(val, YYJSON_TYPE_NUM, YYJSON_SUBTYPE_REAL, 0); + ((yyjson_val *)val)->uni.f64 = num; +} + +yyjson_api_inline void unsafe_yyjson_set_str_noesc(void *val, bool noesc) { + ((yyjson_val *)val)->tag &= ~(uint64_t)YYJSON_SUBTYPE_MASK; + if (noesc) ((yyjson_val *)val)->tag |= (uint64_t)YYJSON_SUBTYPE_NOESC; +} + +yyjson_api_inline void unsafe_yyjson_set_strn(void *val, const char *str, + size_t len) { + unsafe_yyjson_set_tag(val, YYJSON_TYPE_STR, YYJSON_SUBTYPE_NONE, len); + ((yyjson_val *)val)->uni.str = str; +} + +yyjson_api_inline void unsafe_yyjson_set_str(void *val, const char *str) { + size_t len = strlen(str); + bool noesc = unsafe_yyjson_is_str_noesc(str, len); + yyjson_subtype subtype = noesc ? YYJSON_SUBTYPE_NOESC : YYJSON_SUBTYPE_NONE; + unsafe_yyjson_set_tag(val, YYJSON_TYPE_STR, subtype, len); + ((yyjson_val *)val)->uni.str = str; +} + +yyjson_api_inline void unsafe_yyjson_set_arr(void *val, size_t size) { + unsafe_yyjson_set_tag(val, YYJSON_TYPE_ARR, YYJSON_SUBTYPE_NONE, size); +} + +yyjson_api_inline void unsafe_yyjson_set_obj(void *val, size_t size) { + unsafe_yyjson_set_tag(val, YYJSON_TYPE_OBJ, YYJSON_SUBTYPE_NONE, size); +} + + + +/*============================================================================== + * MARK: - JSON Document API (Implementation) + *============================================================================*/ + +yyjson_api_inline yyjson_val *yyjson_doc_get_root(yyjson_doc *doc) { + return doc ? doc->root : NULL; +} + +yyjson_api_inline size_t yyjson_doc_get_read_size(yyjson_doc *doc) { + return doc ? doc->dat_read : 0; +} + +yyjson_api_inline size_t yyjson_doc_get_val_count(yyjson_doc *doc) { + return doc ? doc->val_read : 0; +} + +yyjson_api_inline void yyjson_doc_free(yyjson_doc *doc) { + if (doc) { + yyjson_alc alc = doc->alc; + memset(&doc->alc, 0, sizeof(alc)); + if (doc->str_pool) alc.free(alc.ctx, doc->str_pool); + alc.free(alc.ctx, doc); + } +} + + + +/*============================================================================== + * MARK: - JSON Value Type API (Implementation) + *============================================================================*/ + +yyjson_api_inline bool yyjson_is_raw(yyjson_val *val) { + return val ? unsafe_yyjson_is_raw(val) : false; +} + +yyjson_api_inline bool yyjson_is_null(yyjson_val *val) { + return val ? unsafe_yyjson_is_null(val) : false; +} + +yyjson_api_inline bool yyjson_is_true(yyjson_val *val) { + return val ? unsafe_yyjson_is_true(val) : false; +} + +yyjson_api_inline bool yyjson_is_false(yyjson_val *val) { + return val ? unsafe_yyjson_is_false(val) : false; +} + +yyjson_api_inline bool yyjson_is_bool(yyjson_val *val) { + return val ? unsafe_yyjson_is_bool(val) : false; +} + +yyjson_api_inline bool yyjson_is_uint(yyjson_val *val) { + return val ? unsafe_yyjson_is_uint(val) : false; +} + +yyjson_api_inline bool yyjson_is_sint(yyjson_val *val) { + return val ? unsafe_yyjson_is_sint(val) : false; +} + +yyjson_api_inline bool yyjson_is_int(yyjson_val *val) { + return val ? unsafe_yyjson_is_int(val) : false; +} + +yyjson_api_inline bool yyjson_is_real(yyjson_val *val) { + return val ? unsafe_yyjson_is_real(val) : false; +} + +yyjson_api_inline bool yyjson_is_num(yyjson_val *val) { + return val ? unsafe_yyjson_is_num(val) : false; +} + +yyjson_api_inline bool yyjson_is_str(yyjson_val *val) { + return val ? unsafe_yyjson_is_str(val) : false; +} + +yyjson_api_inline bool yyjson_is_arr(yyjson_val *val) { + return val ? unsafe_yyjson_is_arr(val) : false; +} + +yyjson_api_inline bool yyjson_is_obj(yyjson_val *val) { + return val ? unsafe_yyjson_is_obj(val) : false; +} + +yyjson_api_inline bool yyjson_is_ctn(yyjson_val *val) { + return val ? unsafe_yyjson_is_ctn(val) : false; +} + + + +/*============================================================================== + * MARK: - JSON Value Content API (Implementation) + *============================================================================*/ + +yyjson_api_inline yyjson_type yyjson_get_type(yyjson_val *val) { + return val ? unsafe_yyjson_get_type(val) : YYJSON_TYPE_NONE; +} + +yyjson_api_inline yyjson_subtype yyjson_get_subtype(yyjson_val *val) { + return val ? unsafe_yyjson_get_subtype(val) : YYJSON_SUBTYPE_NONE; +} + +yyjson_api_inline uint8_t yyjson_get_tag(yyjson_val *val) { + return val ? unsafe_yyjson_get_tag(val) : 0; +} + +yyjson_api_inline const char *yyjson_get_type_desc(yyjson_val *val) { + switch (yyjson_get_tag(val)) { + case YYJSON_TYPE_RAW | YYJSON_SUBTYPE_NONE: return "raw"; + case YYJSON_TYPE_NULL | YYJSON_SUBTYPE_NONE: return "null"; + case YYJSON_TYPE_STR | YYJSON_SUBTYPE_NONE: return "string"; + case YYJSON_TYPE_STR | YYJSON_SUBTYPE_NOESC: return "string"; + case YYJSON_TYPE_STR | YYJSON_SUBTYPE_UNIERR: return "string"; + case YYJSON_TYPE_ARR | YYJSON_SUBTYPE_NONE: return "array"; + case YYJSON_TYPE_OBJ | YYJSON_SUBTYPE_NONE: return "object"; + case YYJSON_TYPE_BOOL | YYJSON_SUBTYPE_TRUE: return "true"; + case YYJSON_TYPE_BOOL | YYJSON_SUBTYPE_FALSE: return "false"; + case YYJSON_TYPE_NUM | YYJSON_SUBTYPE_UINT: return "uint"; + case YYJSON_TYPE_NUM | YYJSON_SUBTYPE_SINT: return "sint"; + case YYJSON_TYPE_NUM | YYJSON_SUBTYPE_REAL: return "real"; + default: return "unknown"; + } +} + +yyjson_api_inline const char *yyjson_get_raw(yyjson_val *val) { + return yyjson_is_raw(val) ? unsafe_yyjson_get_raw(val) : NULL; +} + +yyjson_api_inline bool yyjson_get_bool(yyjson_val *val) { + return yyjson_is_bool(val) ? unsafe_yyjson_get_bool(val) : false; +} + +yyjson_api_inline uint64_t yyjson_get_uint(yyjson_val *val) { + return yyjson_is_int(val) ? unsafe_yyjson_get_uint(val) : 0; +} + +yyjson_api_inline int64_t yyjson_get_sint(yyjson_val *val) { + return yyjson_is_int(val) ? unsafe_yyjson_get_sint(val) : 0; +} + +yyjson_api_inline int yyjson_get_int(yyjson_val *val) { + return yyjson_is_int(val) ? unsafe_yyjson_get_int(val) : 0; +} + +yyjson_api_inline double yyjson_get_real(yyjson_val *val) { + return yyjson_is_real(val) ? unsafe_yyjson_get_real(val) : 0.0; +} + +yyjson_api_inline double yyjson_get_num(yyjson_val *val) { + return val ? unsafe_yyjson_get_num(val) : 0.0; +} + +yyjson_api_inline const char *yyjson_get_str(yyjson_val *val) { + return yyjson_is_str(val) ? unsafe_yyjson_get_str(val) : NULL; +} + +yyjson_api_inline size_t yyjson_get_len(yyjson_val *val) { + return val ? unsafe_yyjson_get_len(val) : 0; +} + +yyjson_api_inline bool yyjson_equals_str(yyjson_val *val, const char *str) { + if (yyjson_likely(val && str)) { + return unsafe_yyjson_is_str(val) && + unsafe_yyjson_equals_str(val, str); + } + return false; +} + +yyjson_api_inline bool yyjson_equals_strn(yyjson_val *val, const char *str, + size_t len) { + if (yyjson_likely(val && str)) { + return unsafe_yyjson_is_str(val) && + unsafe_yyjson_equals_strn(val, str, len); + } + return false; +} + +yyjson_api bool unsafe_yyjson_equals(yyjson_val *lhs, yyjson_val *rhs); + +yyjson_api_inline bool yyjson_equals(yyjson_val *lhs, yyjson_val *rhs) { + if (yyjson_unlikely(!lhs || !rhs)) return false; + return unsafe_yyjson_equals(lhs, rhs); +} + +yyjson_api_inline bool yyjson_set_raw(yyjson_val *val, + const char *raw, size_t len) { + if (yyjson_unlikely(!val || unsafe_yyjson_is_ctn(val))) return false; + unsafe_yyjson_set_raw(val, raw, len); + return true; +} + +yyjson_api_inline bool yyjson_set_null(yyjson_val *val) { + if (yyjson_unlikely(!val || unsafe_yyjson_is_ctn(val))) return false; + unsafe_yyjson_set_null(val); + return true; +} + +yyjson_api_inline bool yyjson_set_bool(yyjson_val *val, bool num) { + if (yyjson_unlikely(!val || unsafe_yyjson_is_ctn(val))) return false; + unsafe_yyjson_set_bool(val, num); + return true; +} + +yyjson_api_inline bool yyjson_set_uint(yyjson_val *val, uint64_t num) { + if (yyjson_unlikely(!val || unsafe_yyjson_is_ctn(val))) return false; + unsafe_yyjson_set_uint(val, num); + return true; +} + +yyjson_api_inline bool yyjson_set_sint(yyjson_val *val, int64_t num) { + if (yyjson_unlikely(!val || unsafe_yyjson_is_ctn(val))) return false; + unsafe_yyjson_set_sint(val, num); + return true; +} + +yyjson_api_inline bool yyjson_set_int(yyjson_val *val, int num) { + if (yyjson_unlikely(!val || unsafe_yyjson_is_ctn(val))) return false; + unsafe_yyjson_set_sint(val, (int64_t)num); + return true; +} + +yyjson_api_inline bool yyjson_set_float(yyjson_val *val, float num) { + if (yyjson_unlikely(!val || unsafe_yyjson_is_ctn(val))) return false; + unsafe_yyjson_set_float(val, num); + return true; +} + +yyjson_api_inline bool yyjson_set_double(yyjson_val *val, double num) { + if (yyjson_unlikely(!val || unsafe_yyjson_is_ctn(val))) return false; + unsafe_yyjson_set_double(val, num); + return true; +} + +yyjson_api_inline bool yyjson_set_real(yyjson_val *val, double num) { + if (yyjson_unlikely(!val || unsafe_yyjson_is_ctn(val))) return false; + unsafe_yyjson_set_real(val, num); + return true; +} + +yyjson_api_inline bool yyjson_set_fp_to_fixed(yyjson_val *val, int prec) { + if (yyjson_unlikely(!yyjson_is_real(val))) return false; + unsafe_yyjson_set_fp_to_fixed(val, prec); + return true; +} + +yyjson_api_inline bool yyjson_set_fp_to_float(yyjson_val *val, bool flt) { + if (yyjson_unlikely(!yyjson_is_real(val))) return false; + unsafe_yyjson_set_fp_to_float(val, flt); + return true; +} + +yyjson_api_inline bool yyjson_set_str(yyjson_val *val, const char *str) { + if (yyjson_unlikely(!val || unsafe_yyjson_is_ctn(val))) return false; + if (yyjson_unlikely(!str)) return false; + unsafe_yyjson_set_str(val, str); + return true; +} + +yyjson_api_inline bool yyjson_set_strn(yyjson_val *val, + const char *str, size_t len) { + if (yyjson_unlikely(!val || unsafe_yyjson_is_ctn(val))) return false; + if (yyjson_unlikely(!str)) return false; + unsafe_yyjson_set_strn(val, str, len); + return true; +} + +yyjson_api_inline bool yyjson_set_str_noesc(yyjson_val *val, bool noesc) { + if (yyjson_unlikely(!yyjson_is_str(val))) return false; + unsafe_yyjson_set_str_noesc(val, noesc); + return true; +} + + + +/*============================================================================== + * MARK: - JSON Array API (Implementation) + *============================================================================*/ + +yyjson_api_inline size_t yyjson_arr_size(yyjson_val *arr) { + return yyjson_is_arr(arr) ? unsafe_yyjson_get_len(arr) : 0; +} + +yyjson_api_inline yyjson_val *yyjson_arr_get(yyjson_val *arr, size_t idx) { + if (yyjson_likely(yyjson_is_arr(arr))) { + if (yyjson_likely(unsafe_yyjson_get_len(arr) > idx)) { + yyjson_val *val = unsafe_yyjson_get_first(arr); + if (unsafe_yyjson_arr_is_flat(arr)) { + return val + idx; + } else { + while (idx-- > 0) val = unsafe_yyjson_get_next(val); + return val; + } + } + } + return NULL; +} + +yyjson_api_inline yyjson_val *yyjson_arr_get_first(yyjson_val *arr) { + if (yyjson_likely(yyjson_is_arr(arr))) { + if (yyjson_likely(unsafe_yyjson_get_len(arr) > 0)) { + return unsafe_yyjson_get_first(arr); + } + } + return NULL; +} + +yyjson_api_inline yyjson_val *yyjson_arr_get_last(yyjson_val *arr) { + if (yyjson_likely(yyjson_is_arr(arr))) { + size_t len = unsafe_yyjson_get_len(arr); + if (yyjson_likely(len > 0)) { + yyjson_val *val = unsafe_yyjson_get_first(arr); + if (unsafe_yyjson_arr_is_flat(arr)) { + return val + (len - 1); + } else { + while (len-- > 1) val = unsafe_yyjson_get_next(val); + return val; + } + } + } + return NULL; +} + + + +/*============================================================================== + * MARK: - JSON Array Iterator API (Implementation) + *============================================================================*/ + +yyjson_api_inline bool yyjson_arr_iter_init(yyjson_val *arr, + yyjson_arr_iter *iter) { + if (yyjson_likely(yyjson_is_arr(arr) && iter)) { + iter->idx = 0; + iter->max = unsafe_yyjson_get_len(arr); + iter->cur = unsafe_yyjson_get_first(arr); + return true; + } + if (iter) memset(iter, 0, sizeof(yyjson_arr_iter)); + return false; +} + +yyjson_api_inline yyjson_arr_iter yyjson_arr_iter_with(yyjson_val *arr) { + yyjson_arr_iter iter; + yyjson_arr_iter_init(arr, &iter); + return iter; +} + +yyjson_api_inline bool yyjson_arr_iter_has_next(yyjson_arr_iter *iter) { + return iter ? iter->idx < iter->max : false; +} + +yyjson_api_inline yyjson_val *yyjson_arr_iter_next(yyjson_arr_iter *iter) { + yyjson_val *val; + if (iter && iter->idx < iter->max) { + val = iter->cur; + iter->cur = unsafe_yyjson_get_next(val); + iter->idx++; + return val; + } + return NULL; +} + + + +/*============================================================================== + * MARK: - JSON Object API (Implementation) + *============================================================================*/ + +yyjson_api_inline size_t yyjson_obj_size(yyjson_val *obj) { + return yyjson_is_obj(obj) ? unsafe_yyjson_get_len(obj) : 0; +} + +yyjson_api_inline yyjson_val *yyjson_obj_get(yyjson_val *obj, + const char *key) { + return yyjson_obj_getn(obj, key, key ? strlen(key) : 0); +} + +yyjson_api_inline yyjson_val *yyjson_obj_getn(yyjson_val *obj, + const char *_key, + size_t key_len) { + if (yyjson_likely(yyjson_is_obj(obj) && _key)) { + size_t len = unsafe_yyjson_get_len(obj); + yyjson_val *key = unsafe_yyjson_get_first(obj); + while (len-- > 0) { + if (unsafe_yyjson_equals_strn(key, _key, key_len)) return key + 1; + key = unsafe_yyjson_get_next(key + 1); + } + } + return NULL; +} + + + +/*============================================================================== + * MARK: - JSON Object Iterator API (Implementation) + *============================================================================*/ + +yyjson_api_inline bool yyjson_obj_iter_init(yyjson_val *obj, + yyjson_obj_iter *iter) { + if (yyjson_likely(yyjson_is_obj(obj) && iter)) { + iter->idx = 0; + iter->max = unsafe_yyjson_get_len(obj); + iter->cur = unsafe_yyjson_get_first(obj); + iter->obj = obj; + return true; + } + if (iter) memset(iter, 0, sizeof(yyjson_obj_iter)); + return false; +} + +yyjson_api_inline yyjson_obj_iter yyjson_obj_iter_with(yyjson_val *obj) { + yyjson_obj_iter iter; + yyjson_obj_iter_init(obj, &iter); + return iter; +} + +yyjson_api_inline bool yyjson_obj_iter_has_next(yyjson_obj_iter *iter) { + return iter ? iter->idx < iter->max : false; +} + +yyjson_api_inline yyjson_val *yyjson_obj_iter_next(yyjson_obj_iter *iter) { + if (iter && iter->idx < iter->max) { + yyjson_val *key = iter->cur; + iter->idx++; + iter->cur = unsafe_yyjson_get_next(key + 1); + return key; + } + return NULL; +} + +yyjson_api_inline yyjson_val *yyjson_obj_iter_get_val(yyjson_val *key) { + return key ? key + 1 : NULL; +} + +yyjson_api_inline yyjson_val *yyjson_obj_iter_get(yyjson_obj_iter *iter, + const char *key) { + return yyjson_obj_iter_getn(iter, key, key ? strlen(key) : 0); +} + +yyjson_api_inline yyjson_val *yyjson_obj_iter_getn(yyjson_obj_iter *iter, + const char *key, + size_t key_len) { + if (iter && key) { + size_t idx = iter->idx; + size_t max = iter->max; + yyjson_val *cur = iter->cur; + if (yyjson_unlikely(idx == max)) { + idx = 0; + cur = unsafe_yyjson_get_first(iter->obj); + } + while (idx++ < max) { + yyjson_val *next = unsafe_yyjson_get_next(cur + 1); + if (unsafe_yyjson_equals_strn(cur, key, key_len)) { + iter->idx = idx; + iter->cur = next; + return cur + 1; + } + cur = next; + if (idx == iter->max && iter->idx < iter->max) { + idx = 0; + max = iter->idx; + cur = unsafe_yyjson_get_first(iter->obj); + } + } + } + return NULL; +} + + + +/*============================================================================== + * MARK: - Mutable JSON Structure (Implementation) + *============================================================================*/ + +/** + Mutable JSON value, 24 bytes. + The 'tag' and 'uni' field is same as immutable value. + The 'next' field links all elements inside the container to be a cycle. + */ +struct yyjson_mut_val { + uint64_t tag; /**< type, subtype and length */ + yyjson_val_uni uni; /**< payload */ + yyjson_mut_val *next; /**< the next value in circular linked list */ +}; + +/** + A memory chunk in string memory pool. + */ +typedef struct yyjson_str_chunk { + struct yyjson_str_chunk *next; /* next chunk linked list */ + size_t chunk_size; /* chunk size in bytes */ + /* char str[]; flexible array member */ +} yyjson_str_chunk; + +/** + A memory pool to hold all strings in a mutable document. + */ +typedef struct yyjson_str_pool { + char *cur; /* cursor inside current chunk */ + char *end; /* the end of current chunk */ + size_t chunk_size; /* chunk size in bytes while creating new chunk */ + size_t chunk_size_max; /* maximum chunk size in bytes */ + yyjson_str_chunk *chunks; /* a linked list of chunks, nullable */ +} yyjson_str_pool; + +/** + A memory chunk in value memory pool. + `sizeof(yyjson_val_chunk)` should not larger than `sizeof(yyjson_mut_val)`. + */ +typedef struct yyjson_val_chunk { + struct yyjson_val_chunk *next; /* next chunk linked list */ + size_t chunk_size; /* chunk size in bytes */ + /* char pad[sizeof(yyjson_mut_val) - sizeof(yyjson_val_chunk)]; padding */ + /* yyjson_mut_val vals[]; flexible array member */ +} yyjson_val_chunk; + +/** + A memory pool to hold all values in a mutable document. + */ +typedef struct yyjson_val_pool { + yyjson_mut_val *cur; /* cursor inside current chunk */ + yyjson_mut_val *end; /* the end of current chunk */ + size_t chunk_size; /* chunk size in bytes while creating new chunk */ + size_t chunk_size_max; /* maximum chunk size in bytes */ + yyjson_val_chunk *chunks; /* a linked list of chunks, nullable */ +} yyjson_val_pool; + +struct yyjson_mut_doc { + yyjson_mut_val *root; /**< root value of the JSON document, nullable */ + yyjson_alc alc; /**< a valid allocator, nonnull */ + yyjson_str_pool str_pool; /**< string memory pool */ + yyjson_val_pool val_pool; /**< value memory pool */ +}; + +/* Ensures the capacity to at least equal to the specified byte length. */ +yyjson_api bool unsafe_yyjson_str_pool_grow(yyjson_str_pool *pool, + const yyjson_alc *alc, + size_t len); + +/* Ensures the capacity to at least equal to the specified value count. */ +yyjson_api bool unsafe_yyjson_val_pool_grow(yyjson_val_pool *pool, + const yyjson_alc *alc, + size_t count); + +/* Allocate memory for string. */ +yyjson_api_inline char *unsafe_yyjson_mut_str_alc(yyjson_mut_doc *doc, + size_t len) { + char *mem; + const yyjson_alc *alc = &doc->alc; + yyjson_str_pool *pool = &doc->str_pool; + if (yyjson_unlikely((size_t)(pool->end - pool->cur) <= len)) { + if (yyjson_unlikely(!unsafe_yyjson_str_pool_grow(pool, alc, len + 1))) { + return NULL; + } + } + mem = pool->cur; + pool->cur = mem + len + 1; + return mem; +} + +yyjson_api_inline char *unsafe_yyjson_mut_strncpy(yyjson_mut_doc *doc, + const char *str, size_t len) { + char *mem = unsafe_yyjson_mut_str_alc(doc, len); + if (yyjson_unlikely(!mem)) return NULL; + memcpy((void *)mem, (const void *)str, len); + mem[len] = '\0'; + return mem; +} + +yyjson_api_inline yyjson_mut_val *unsafe_yyjson_mut_val(yyjson_mut_doc *doc, + size_t count) { + yyjson_mut_val *val; + yyjson_alc *alc = &doc->alc; + yyjson_val_pool *pool = &doc->val_pool; + if (yyjson_unlikely((size_t)(pool->end - pool->cur) < count)) { + if (yyjson_unlikely(!unsafe_yyjson_val_pool_grow(pool, alc, count))) { + return NULL; + } + } + val = pool->cur; + pool->cur += count; + return val; +} + + + +/*============================================================================== + * MARK: - Mutable JSON Document API (Implementation) + *============================================================================*/ + +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_get_root(yyjson_mut_doc *doc) { + return doc ? doc->root : NULL; +} + +yyjson_api_inline void yyjson_mut_doc_set_root(yyjson_mut_doc *doc, + yyjson_mut_val *root) { + if (doc) doc->root = root; +} + + + +/*============================================================================== + * MARK: - Mutable JSON Value Type API (Implementation) + *============================================================================*/ + +yyjson_api_inline bool yyjson_mut_is_raw(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_raw(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_null(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_null(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_true(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_true(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_false(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_false(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_bool(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_bool(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_uint(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_uint(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_sint(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_sint(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_int(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_int(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_real(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_real(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_num(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_num(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_str(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_str(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_arr(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_arr(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_obj(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_obj(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_ctn(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_ctn(val) : false; +} + + + +/*============================================================================== + * MARK: - Mutable JSON Value Content API (Implementation) + *============================================================================*/ + +yyjson_api_inline yyjson_type yyjson_mut_get_type(yyjson_mut_val *val) { + return yyjson_get_type((yyjson_val *)val); +} + +yyjson_api_inline yyjson_subtype yyjson_mut_get_subtype(yyjson_mut_val *val) { + return yyjson_get_subtype((yyjson_val *)val); +} + +yyjson_api_inline uint8_t yyjson_mut_get_tag(yyjson_mut_val *val) { + return yyjson_get_tag((yyjson_val *)val); +} + +yyjson_api_inline const char *yyjson_mut_get_type_desc(yyjson_mut_val *val) { + return yyjson_get_type_desc((yyjson_val *)val); +} + +yyjson_api_inline const char *yyjson_mut_get_raw(yyjson_mut_val *val) { + return yyjson_get_raw((yyjson_val *)val); +} + +yyjson_api_inline bool yyjson_mut_get_bool(yyjson_mut_val *val) { + return yyjson_get_bool((yyjson_val *)val); +} + +yyjson_api_inline uint64_t yyjson_mut_get_uint(yyjson_mut_val *val) { + return yyjson_get_uint((yyjson_val *)val); +} + +yyjson_api_inline int64_t yyjson_mut_get_sint(yyjson_mut_val *val) { + return yyjson_get_sint((yyjson_val *)val); +} + +yyjson_api_inline int yyjson_mut_get_int(yyjson_mut_val *val) { + return yyjson_get_int((yyjson_val *)val); +} + +yyjson_api_inline double yyjson_mut_get_real(yyjson_mut_val *val) { + return yyjson_get_real((yyjson_val *)val); +} + +yyjson_api_inline double yyjson_mut_get_num(yyjson_mut_val *val) { + return yyjson_get_num((yyjson_val *)val); +} + +yyjson_api_inline const char *yyjson_mut_get_str(yyjson_mut_val *val) { + return yyjson_get_str((yyjson_val *)val); +} + +yyjson_api_inline size_t yyjson_mut_get_len(yyjson_mut_val *val) { + return yyjson_get_len((yyjson_val *)val); +} + +yyjson_api_inline bool yyjson_mut_equals_str(yyjson_mut_val *val, + const char *str) { + return yyjson_equals_str((yyjson_val *)val, str); +} + +yyjson_api_inline bool yyjson_mut_equals_strn(yyjson_mut_val *val, + const char *str, size_t len) { + return yyjson_equals_strn((yyjson_val *)val, str, len); +} + +yyjson_api bool unsafe_yyjson_mut_equals(yyjson_mut_val *lhs, + yyjson_mut_val *rhs); + +yyjson_api_inline bool yyjson_mut_equals(yyjson_mut_val *lhs, + yyjson_mut_val *rhs) { + if (yyjson_unlikely(!lhs || !rhs)) return false; + return unsafe_yyjson_mut_equals(lhs, rhs); +} + +yyjson_api_inline bool yyjson_mut_set_raw(yyjson_mut_val *val, + const char *raw, size_t len) { + if (yyjson_unlikely(!val || !raw)) return false; + unsafe_yyjson_set_raw(val, raw, len); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_null(yyjson_mut_val *val) { + if (yyjson_unlikely(!val)) return false; + unsafe_yyjson_set_null(val); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_bool(yyjson_mut_val *val, bool num) { + if (yyjson_unlikely(!val)) return false; + unsafe_yyjson_set_bool(val, num); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_uint(yyjson_mut_val *val, uint64_t num) { + if (yyjson_unlikely(!val)) return false; + unsafe_yyjson_set_uint(val, num); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_sint(yyjson_mut_val *val, int64_t num) { + if (yyjson_unlikely(!val)) return false; + unsafe_yyjson_set_sint(val, num); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_int(yyjson_mut_val *val, int num) { + if (yyjson_unlikely(!val)) return false; + unsafe_yyjson_set_sint(val, (int64_t)num); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_float(yyjson_mut_val *val, float num) { + if (yyjson_unlikely(!val)) return false; + unsafe_yyjson_set_float(val, num); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_double(yyjson_mut_val *val, double num) { + if (yyjson_unlikely(!val)) return false; + unsafe_yyjson_set_double(val, num); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_real(yyjson_mut_val *val, double num) { + if (yyjson_unlikely(!val)) return false; + unsafe_yyjson_set_real(val, num); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_fp_to_fixed(yyjson_mut_val *val, + int prec) { + if (yyjson_unlikely(!yyjson_mut_is_real(val))) return false; + unsafe_yyjson_set_fp_to_fixed(val, prec); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_fp_to_float(yyjson_mut_val *val, + bool flt) { + if (yyjson_unlikely(!yyjson_mut_is_real(val))) return false; + unsafe_yyjson_set_fp_to_float(val, flt); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_str(yyjson_mut_val *val, + const char *str) { + if (yyjson_unlikely(!val || !str)) return false; + unsafe_yyjson_set_str(val, str); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_strn(yyjson_mut_val *val, + const char *str, size_t len) { + if (yyjson_unlikely(!val || !str)) return false; + unsafe_yyjson_set_strn(val, str, len); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_str_noesc(yyjson_mut_val *val, + bool noesc) { + if (yyjson_unlikely(!yyjson_mut_is_str(val))) return false; + unsafe_yyjson_set_str_noesc(val, noesc); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_arr(yyjson_mut_val *val) { + if (yyjson_unlikely(!val)) return false; + unsafe_yyjson_set_arr(val, 0); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_obj(yyjson_mut_val *val) { + if (yyjson_unlikely(!val)) return false; + unsafe_yyjson_set_obj(val, 0); + return true; +} + + + +/*============================================================================== + * MARK: - Mutable JSON Value Creation API (Implementation) + *============================================================================*/ + +#define yyjson_mut_val_one(func) \ + if (yyjson_likely(doc)) { \ + yyjson_mut_val *val = unsafe_yyjson_mut_val(doc, 1); \ + if (yyjson_likely(val)) { \ + func \ + return val; \ + } \ + } \ + return NULL + +#define yyjson_mut_val_one_str(func) \ + if (yyjson_likely(doc && str)) { \ + yyjson_mut_val *val = unsafe_yyjson_mut_val(doc, 1); \ + if (yyjson_likely(val)) { \ + func \ + return val; \ + } \ + } \ + return NULL + +yyjson_api_inline yyjson_mut_val *yyjson_mut_raw(yyjson_mut_doc *doc, + const char *str) { + yyjson_mut_val_one_str({ unsafe_yyjson_set_raw(val, str, strlen(str)); }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_rawn(yyjson_mut_doc *doc, + const char *str, + size_t len) { + yyjson_mut_val_one_str({ unsafe_yyjson_set_raw(val, str, len); }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_rawcpy(yyjson_mut_doc *doc, + const char *str) { + yyjson_mut_val_one_str({ + size_t len = strlen(str); + char *new_str = unsafe_yyjson_mut_strncpy(doc, str, len); + if (yyjson_unlikely(!new_str)) return NULL; + unsafe_yyjson_set_raw(val, new_str, len); + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_rawncpy(yyjson_mut_doc *doc, + const char *str, + size_t len) { + yyjson_mut_val_one_str({ + char *new_str = unsafe_yyjson_mut_strncpy(doc, str, len); + if (yyjson_unlikely(!new_str)) return NULL; + unsafe_yyjson_set_raw(val, new_str, len); + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_null(yyjson_mut_doc *doc) { + yyjson_mut_val_one({ unsafe_yyjson_set_null(val); }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_true(yyjson_mut_doc *doc) { + yyjson_mut_val_one({ unsafe_yyjson_set_bool(val, true); }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_false(yyjson_mut_doc *doc) { + yyjson_mut_val_one({ unsafe_yyjson_set_bool(val, false); }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_bool(yyjson_mut_doc *doc, + bool _val) { + yyjson_mut_val_one({ unsafe_yyjson_set_bool(val, _val); }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_uint(yyjson_mut_doc *doc, + uint64_t num) { + yyjson_mut_val_one({ unsafe_yyjson_set_uint(val, num); }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_sint(yyjson_mut_doc *doc, + int64_t num) { + yyjson_mut_val_one({ unsafe_yyjson_set_sint(val, num); }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_int(yyjson_mut_doc *doc, + int64_t num) { + yyjson_mut_val_one({ unsafe_yyjson_set_sint(val, num); }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_float(yyjson_mut_doc *doc, + float num) { + yyjson_mut_val_one({ unsafe_yyjson_set_float(val, num); }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_double(yyjson_mut_doc *doc, + double num) { + yyjson_mut_val_one({ unsafe_yyjson_set_double(val, num); }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_real(yyjson_mut_doc *doc, + double num) { + yyjson_mut_val_one({ unsafe_yyjson_set_real(val, num); }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_str(yyjson_mut_doc *doc, + const char *str) { + yyjson_mut_val_one_str({ unsafe_yyjson_set_str(val, str); }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_strn(yyjson_mut_doc *doc, + const char *str, + size_t len) { + yyjson_mut_val_one_str({ unsafe_yyjson_set_strn(val, str, len); }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_strcpy(yyjson_mut_doc *doc, + const char *str) { + yyjson_mut_val_one_str({ + size_t len = strlen(str); + bool noesc = unsafe_yyjson_is_str_noesc(str, len); + yyjson_subtype sub = noesc ? YYJSON_SUBTYPE_NOESC : YYJSON_SUBTYPE_NONE; + char *new_str = unsafe_yyjson_mut_strncpy(doc, str, len); + if (yyjson_unlikely(!new_str)) return NULL; + unsafe_yyjson_set_tag(val, YYJSON_TYPE_STR, sub, len); + val->uni.str = new_str; + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_strncpy(yyjson_mut_doc *doc, + const char *str, + size_t len) { + yyjson_mut_val_one_str({ + char *new_str = unsafe_yyjson_mut_strncpy(doc, str, len); + if (yyjson_unlikely(!new_str)) return NULL; + unsafe_yyjson_set_strn(val, new_str, len); + }); +} + +#undef yyjson_mut_val_one +#undef yyjson_mut_val_one_str + + + +/*============================================================================== + * MARK: - Mutable JSON Array API (Implementation) + *============================================================================*/ + +yyjson_api_inline size_t yyjson_mut_arr_size(yyjson_mut_val *arr) { + return yyjson_mut_is_arr(arr) ? unsafe_yyjson_get_len(arr) : 0; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_get(yyjson_mut_val *arr, + size_t idx) { + if (yyjson_likely(idx < yyjson_mut_arr_size(arr))) { + yyjson_mut_val *val = (yyjson_mut_val *)arr->uni.ptr; + while (idx-- > 0) val = val->next; + return val->next; + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_get_first( + yyjson_mut_val *arr) { + if (yyjson_likely(yyjson_mut_arr_size(arr) > 0)) { + return ((yyjson_mut_val *)arr->uni.ptr)->next; + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_get_last( + yyjson_mut_val *arr) { + if (yyjson_likely(yyjson_mut_arr_size(arr) > 0)) { + return ((yyjson_mut_val *)arr->uni.ptr); + } + return NULL; +} + + + +/*============================================================================== + * MARK: - Mutable JSON Array Iterator API (Implementation) + *============================================================================*/ + +yyjson_api_inline bool yyjson_mut_arr_iter_init(yyjson_mut_val *arr, + yyjson_mut_arr_iter *iter) { + if (yyjson_likely(yyjson_mut_is_arr(arr) && iter)) { + iter->idx = 0; + iter->max = unsafe_yyjson_get_len(arr); + iter->cur = iter->max ? (yyjson_mut_val *)arr->uni.ptr : NULL; + iter->pre = NULL; + iter->arr = arr; + return true; + } + if (iter) memset(iter, 0, sizeof(yyjson_mut_arr_iter)); + return false; +} + +yyjson_api_inline yyjson_mut_arr_iter yyjson_mut_arr_iter_with( + yyjson_mut_val *arr) { + yyjson_mut_arr_iter iter; + yyjson_mut_arr_iter_init(arr, &iter); + return iter; +} + +yyjson_api_inline bool yyjson_mut_arr_iter_has_next(yyjson_mut_arr_iter *iter) { + return iter ? iter->idx < iter->max : false; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_iter_next( + yyjson_mut_arr_iter *iter) { + if (iter && iter->idx < iter->max) { + yyjson_mut_val *val = iter->cur; + iter->pre = val; + iter->cur = val->next; + iter->idx++; + return iter->cur; + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_iter_remove( + yyjson_mut_arr_iter *iter) { + if (yyjson_likely(iter && 0 < iter->idx && iter->idx <= iter->max)) { + yyjson_mut_val *prev = iter->pre; + yyjson_mut_val *cur = iter->cur; + yyjson_mut_val *next = cur->next; + if (yyjson_unlikely(iter->idx == iter->max)) iter->arr->uni.ptr = prev; + iter->idx--; + iter->max--; + unsafe_yyjson_set_len(iter->arr, iter->max); + prev->next = next; + iter->cur = prev; + return cur; + } + return NULL; +} + + + +/*============================================================================== + * MARK: - Mutable JSON Array Creation API (Implementation) + *============================================================================*/ + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr(yyjson_mut_doc *doc) { + if (yyjson_likely(doc)) { + yyjson_mut_val *val = unsafe_yyjson_mut_val(doc, 1); + if (yyjson_likely(val)) { + val->tag = YYJSON_TYPE_ARR | YYJSON_SUBTYPE_NONE; + return val; + } + } + return NULL; +} + +#define yyjson_mut_arr_with_func(func) \ + if (yyjson_likely(doc && ((0 < count && count < \ + (~(size_t)0) / sizeof(yyjson_mut_val) && vals) || count == 0))) { \ + yyjson_mut_val *arr = unsafe_yyjson_mut_val(doc, 1 + count); \ + if (yyjson_likely(arr)) { \ + arr->tag = ((uint64_t)count << YYJSON_TAG_BIT) | YYJSON_TYPE_ARR; \ + if (count > 0) { \ + size_t i; \ + for (i = 0; i < count; i++) { \ + yyjson_mut_val *val = arr + i + 1; \ + func \ + val->next = val + 1; \ + } \ + arr[count].next = arr + 1; \ + arr->uni.ptr = arr + count; \ + } \ + return arr; \ + } \ + } \ + return NULL + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_bool( + yyjson_mut_doc *doc, const bool *vals, size_t count) { + yyjson_mut_arr_with_func({ + unsafe_yyjson_set_bool(val, vals[i]); + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint( + yyjson_mut_doc *doc, const int64_t *vals, size_t count) { + return yyjson_mut_arr_with_sint64(doc, vals, count); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint( + yyjson_mut_doc *doc, const uint64_t *vals, size_t count) { + return yyjson_mut_arr_with_uint64(doc, vals, count); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_real( + yyjson_mut_doc *doc, const double *vals, size_t count) { + yyjson_mut_arr_with_func({ + unsafe_yyjson_set_real(val, vals[i]); + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint8( + yyjson_mut_doc *doc, const int8_t *vals, size_t count) { + yyjson_mut_arr_with_func({ + unsafe_yyjson_set_sint(val, vals[i]); + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint16( + yyjson_mut_doc *doc, const int16_t *vals, size_t count) { + yyjson_mut_arr_with_func({ + unsafe_yyjson_set_sint(val, vals[i]); + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint32( + yyjson_mut_doc *doc, const int32_t *vals, size_t count) { + yyjson_mut_arr_with_func({ + unsafe_yyjson_set_sint(val, vals[i]); + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint64( + yyjson_mut_doc *doc, const int64_t *vals, size_t count) { + yyjson_mut_arr_with_func({ + unsafe_yyjson_set_sint(val, vals[i]); + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint8( + yyjson_mut_doc *doc, const uint8_t *vals, size_t count) { + yyjson_mut_arr_with_func({ + unsafe_yyjson_set_uint(val, vals[i]); + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint16( + yyjson_mut_doc *doc, const uint16_t *vals, size_t count) { + yyjson_mut_arr_with_func({ + unsafe_yyjson_set_uint(val, vals[i]); + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint32( + yyjson_mut_doc *doc, const uint32_t *vals, size_t count) { + yyjson_mut_arr_with_func({ + unsafe_yyjson_set_uint(val, vals[i]); + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint64( + yyjson_mut_doc *doc, const uint64_t *vals, size_t count) { + yyjson_mut_arr_with_func({ + unsafe_yyjson_set_uint(val, vals[i]); + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_float( + yyjson_mut_doc *doc, const float *vals, size_t count) { + yyjson_mut_arr_with_func({ + unsafe_yyjson_set_float(val, vals[i]); + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_double( + yyjson_mut_doc *doc, const double *vals, size_t count) { + yyjson_mut_arr_with_func({ + unsafe_yyjson_set_double(val, vals[i]); + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_str( + yyjson_mut_doc *doc, const char **vals, size_t count) { + yyjson_mut_arr_with_func({ + if (yyjson_unlikely(!vals[i])) return NULL; + unsafe_yyjson_set_str(val, vals[i]); + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_strn( + yyjson_mut_doc *doc, const char **vals, const size_t *lens, size_t count) { + if (yyjson_unlikely(count > 0 && !lens)) return NULL; + yyjson_mut_arr_with_func({ + if (yyjson_unlikely(!vals[i])) return NULL; + unsafe_yyjson_set_strn(val, vals[i], lens[i]); + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_strcpy( + yyjson_mut_doc *doc, const char **vals, size_t count) { + size_t len; + const char *str, *new_str; + yyjson_mut_arr_with_func({ + str = vals[i]; + if (yyjson_unlikely(!str)) return NULL; + len = strlen(str); + new_str = unsafe_yyjson_mut_strncpy(doc, str, len); + if (yyjson_unlikely(!new_str)) return NULL; + unsafe_yyjson_set_strn(val, new_str, len); + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_strncpy( + yyjson_mut_doc *doc, const char **vals, const size_t *lens, size_t count) { + size_t len; + const char *str, *new_str; + if (yyjson_unlikely(count > 0 && !lens)) return NULL; + yyjson_mut_arr_with_func({ + str = vals[i]; + if (yyjson_unlikely(!str)) return NULL; + len = lens[i]; + new_str = unsafe_yyjson_mut_strncpy(doc, str, len); + if (yyjson_unlikely(!new_str)) return NULL; + unsafe_yyjson_set_strn(val, new_str, len); + }); +} + +#undef yyjson_mut_arr_with_func + + + +/*============================================================================== + * MARK: - Mutable JSON Array Modification API (Implementation) + *============================================================================*/ + +yyjson_api_inline bool yyjson_mut_arr_insert(yyjson_mut_val *arr, + yyjson_mut_val *val, size_t idx) { + if (yyjson_likely(yyjson_mut_is_arr(arr) && val)) { + size_t len = unsafe_yyjson_get_len(arr); + if (yyjson_likely(idx <= len)) { + unsafe_yyjson_set_len(arr, len + 1); + if (len == 0) { + val->next = val; + arr->uni.ptr = val; + } else { + yyjson_mut_val *prev = ((yyjson_mut_val *)arr->uni.ptr); + yyjson_mut_val *next = prev->next; + if (idx == len) { + prev->next = val; + val->next = next; + arr->uni.ptr = val; + } else { + while (idx-- > 0) { + prev = next; + next = next->next; + } + prev->next = val; + val->next = next; + } + } + return true; + } + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_append(yyjson_mut_val *arr, + yyjson_mut_val *val) { + if (yyjson_likely(yyjson_mut_is_arr(arr) && val)) { + size_t len = unsafe_yyjson_get_len(arr); + unsafe_yyjson_set_len(arr, len + 1); + if (len == 0) { + val->next = val; + } else { + yyjson_mut_val *prev = ((yyjson_mut_val *)arr->uni.ptr); + yyjson_mut_val *next = prev->next; + prev->next = val; + val->next = next; + } + arr->uni.ptr = val; + return true; + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_prepend(yyjson_mut_val *arr, + yyjson_mut_val *val) { + if (yyjson_likely(yyjson_mut_is_arr(arr) && val)) { + size_t len = unsafe_yyjson_get_len(arr); + unsafe_yyjson_set_len(arr, len + 1); + if (len == 0) { + val->next = val; + arr->uni.ptr = val; + } else { + yyjson_mut_val *prev = ((yyjson_mut_val *)arr->uni.ptr); + yyjson_mut_val *next = prev->next; + prev->next = val; + val->next = next; + } + return true; + } + return false; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_replace(yyjson_mut_val *arr, + size_t idx, + yyjson_mut_val *val) { + if (yyjson_likely(yyjson_mut_is_arr(arr) && val)) { + size_t len = unsafe_yyjson_get_len(arr); + if (yyjson_likely(idx < len)) { + if (yyjson_likely(len > 1)) { + yyjson_mut_val *prev = ((yyjson_mut_val *)arr->uni.ptr); + yyjson_mut_val *next = prev->next; + while (idx-- > 0) { + prev = next; + next = next->next; + } + prev->next = val; + val->next = next->next; + if ((void *)next == arr->uni.ptr) arr->uni.ptr = val; + return next; + } else { + yyjson_mut_val *prev = ((yyjson_mut_val *)arr->uni.ptr); + val->next = val; + arr->uni.ptr = val; + return prev; + } + } + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_remove(yyjson_mut_val *arr, + size_t idx) { + if (yyjson_likely(yyjson_mut_is_arr(arr))) { + size_t len = unsafe_yyjson_get_len(arr); + if (yyjson_likely(idx < len)) { + unsafe_yyjson_set_len(arr, len - 1); + if (yyjson_likely(len > 1)) { + yyjson_mut_val *prev = ((yyjson_mut_val *)arr->uni.ptr); + yyjson_mut_val *next = prev->next; + while (idx-- > 0) { + prev = next; + next = next->next; + } + prev->next = next->next; + if ((void *)next == arr->uni.ptr) arr->uni.ptr = prev; + return next; + } else { + return ((yyjson_mut_val *)arr->uni.ptr); + } + } + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_remove_first( + yyjson_mut_val *arr) { + if (yyjson_likely(yyjson_mut_is_arr(arr))) { + size_t len = unsafe_yyjson_get_len(arr); + if (len > 1) { + yyjson_mut_val *prev = ((yyjson_mut_val *)arr->uni.ptr); + yyjson_mut_val *next = prev->next; + prev->next = next->next; + unsafe_yyjson_set_len(arr, len - 1); + return next; + } else if (len == 1) { + yyjson_mut_val *prev = ((yyjson_mut_val *)arr->uni.ptr); + unsafe_yyjson_set_len(arr, 0); + return prev; + } + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_remove_last( + yyjson_mut_val *arr) { + if (yyjson_likely(yyjson_mut_is_arr(arr))) { + size_t len = unsafe_yyjson_get_len(arr); + if (yyjson_likely(len > 1)) { + yyjson_mut_val *prev = ((yyjson_mut_val *)arr->uni.ptr); + yyjson_mut_val *next = prev->next; + unsafe_yyjson_set_len(arr, len - 1); + while (--len > 0) prev = prev->next; + prev->next = next; + next = (yyjson_mut_val *)arr->uni.ptr; + arr->uni.ptr = prev; + return next; + } else if (len == 1) { + yyjson_mut_val *prev = ((yyjson_mut_val *)arr->uni.ptr); + unsafe_yyjson_set_len(arr, 0); + return prev; + } + } + return NULL; +} + +yyjson_api_inline bool yyjson_mut_arr_remove_range(yyjson_mut_val *arr, + size_t _idx, size_t _len) { + if (yyjson_likely(yyjson_mut_is_arr(arr))) { + yyjson_mut_val *prev, *next; + bool tail_removed; + size_t len = unsafe_yyjson_get_len(arr); + if (yyjson_unlikely(_idx + _len > len)) return false; + if (yyjson_unlikely(_len == 0)) return true; + unsafe_yyjson_set_len(arr, len - _len); + if (yyjson_unlikely(len == _len)) return true; + tail_removed = (_idx + _len == len); + prev = ((yyjson_mut_val *)arr->uni.ptr); + while (_idx-- > 0) prev = prev->next; + next = prev->next; + while (_len-- > 0) next = next->next; + prev->next = next; + if (yyjson_unlikely(tail_removed)) arr->uni.ptr = prev; + return true; + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_clear(yyjson_mut_val *arr) { + if (yyjson_likely(yyjson_mut_is_arr(arr))) { + unsafe_yyjson_set_len(arr, 0); + return true; + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_rotate(yyjson_mut_val *arr, + size_t idx) { + if (yyjson_likely(yyjson_mut_is_arr(arr) && + unsafe_yyjson_get_len(arr) > idx)) { + yyjson_mut_val *val = (yyjson_mut_val *)arr->uni.ptr; + while (idx-- > 0) val = val->next; + arr->uni.ptr = (void *)val; + return true; + } + return false; +} + + + +/*============================================================================== + * MARK: - Mutable JSON Array Modification Convenience API (Implementation) + *============================================================================*/ + +yyjson_api_inline bool yyjson_mut_arr_add_val(yyjson_mut_val *arr, + yyjson_mut_val *val) { + return yyjson_mut_arr_append(arr, val); +} + +yyjson_api_inline bool yyjson_mut_arr_add_null(yyjson_mut_doc *doc, + yyjson_mut_val *arr) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_null(doc); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_true(yyjson_mut_doc *doc, + yyjson_mut_val *arr) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_true(doc); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_false(yyjson_mut_doc *doc, + yyjson_mut_val *arr) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_false(doc); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_bool(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + bool _val) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_bool(doc, _val); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_uint(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + uint64_t num) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_uint(doc, num); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_sint(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + int64_t num) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_sint(doc, num); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_int(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + int64_t num) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_sint(doc, num); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_float(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + float num) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_float(doc, num); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_double(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + double num) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_double(doc, num); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_real(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + double num) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_real(doc, num); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_str(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + const char *str) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_str(doc, str); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_strn(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + const char *str, size_t len) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_strn(doc, str, len); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_strcpy(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + const char *str) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_strcpy(doc, str); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_strncpy(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + const char *str, size_t len) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_strncpy(doc, str, len); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_add_arr(yyjson_mut_doc *doc, + yyjson_mut_val *arr) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_arr(doc); + return yyjson_mut_arr_append(arr, val) ? val : NULL; + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_add_obj(yyjson_mut_doc *doc, + yyjson_mut_val *arr) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_obj(doc); + return yyjson_mut_arr_append(arr, val) ? val : NULL; + } + return NULL; +} + + + +/*============================================================================== + * MARK: - Mutable JSON Object API (Implementation) + *============================================================================*/ + +yyjson_api_inline size_t yyjson_mut_obj_size(yyjson_mut_val *obj) { + return yyjson_mut_is_obj(obj) ? unsafe_yyjson_get_len(obj) : 0; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_get(yyjson_mut_val *obj, + const char *key) { + return yyjson_mut_obj_getn(obj, key, key ? strlen(key) : 0); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_getn(yyjson_mut_val *obj, + const char *_key, + size_t key_len) { + size_t len = yyjson_mut_obj_size(obj); + if (yyjson_likely(len && _key)) { + yyjson_mut_val *key = ((yyjson_mut_val *)obj->uni.ptr)->next->next; + while (len-- > 0) { + if (unsafe_yyjson_equals_strn(key, _key, key_len)) return key->next; + key = key->next->next; + } + } + return NULL; +} + + + +/*============================================================================== + * MARK: - Mutable JSON Object Iterator API (Implementation) + *============================================================================*/ + +yyjson_api_inline bool yyjson_mut_obj_iter_init(yyjson_mut_val *obj, + yyjson_mut_obj_iter *iter) { + if (yyjson_likely(yyjson_mut_is_obj(obj) && iter)) { + iter->idx = 0; + iter->max = unsafe_yyjson_get_len(obj); + iter->cur = iter->max ? (yyjson_mut_val *)obj->uni.ptr : NULL; + iter->pre = NULL; + iter->obj = obj; + return true; + } + if (iter) memset(iter, 0, sizeof(yyjson_mut_obj_iter)); + return false; +} + +yyjson_api_inline yyjson_mut_obj_iter yyjson_mut_obj_iter_with( + yyjson_mut_val *obj) { + yyjson_mut_obj_iter iter; + yyjson_mut_obj_iter_init(obj, &iter); + return iter; +} + +yyjson_api_inline bool yyjson_mut_obj_iter_has_next(yyjson_mut_obj_iter *iter) { + return iter ? iter->idx < iter->max : false; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_next( + yyjson_mut_obj_iter *iter) { + if (iter && iter->idx < iter->max) { + yyjson_mut_val *key = iter->cur; + iter->pre = key; + iter->cur = key->next->next; + iter->idx++; + return iter->cur; + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_get_val( + yyjson_mut_val *key) { + return key ? key->next : NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_remove( + yyjson_mut_obj_iter *iter) { + if (yyjson_likely(iter && 0 < iter->idx && iter->idx <= iter->max)) { + yyjson_mut_val *prev = iter->pre; + yyjson_mut_val *cur = iter->cur; + yyjson_mut_val *next = cur->next->next; + if (yyjson_unlikely(iter->idx == iter->max)) iter->obj->uni.ptr = prev; + iter->idx--; + iter->max--; + unsafe_yyjson_set_len(iter->obj, iter->max); + prev->next->next = next; + iter->cur = prev; + return cur->next; + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_get( + yyjson_mut_obj_iter *iter, const char *key) { + return yyjson_mut_obj_iter_getn(iter, key, key ? strlen(key) : 0); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_getn( + yyjson_mut_obj_iter *iter, const char *key, size_t key_len) { + if (iter && key) { + size_t idx = 0; + size_t max = iter->max; + yyjson_mut_val *pre, *cur = iter->cur; + while (idx++ < max) { + pre = cur; + cur = cur->next->next; + if (unsafe_yyjson_equals_strn(cur, key, key_len)) { + iter->idx += idx; + if (iter->idx > max) iter->idx -= max + 1; + iter->pre = pre; + iter->cur = cur; + return cur->next; + } + } + } + return NULL; +} + + + +/*============================================================================== + * MARK: - Mutable JSON Object Creation API (Implementation) + *============================================================================*/ + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj(yyjson_mut_doc *doc) { + if (yyjson_likely(doc)) { + yyjson_mut_val *val = unsafe_yyjson_mut_val(doc, 1); + if (yyjson_likely(val)) { + val->tag = YYJSON_TYPE_OBJ | YYJSON_SUBTYPE_NONE; + return val; + } + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_with_str(yyjson_mut_doc *doc, + const char **keys, + const char **vals, + size_t count) { + if (yyjson_likely(doc && ((count > 0 && keys && vals) || (count == 0)))) { + yyjson_mut_val *obj = unsafe_yyjson_mut_val(doc, 1 + count * 2); + if (yyjson_likely(obj)) { + obj->tag = ((uint64_t)count << YYJSON_TAG_BIT) | YYJSON_TYPE_OBJ; + if (count > 0) { + size_t i; + for (i = 0; i < count; i++) { + yyjson_mut_val *key = obj + (i * 2 + 1); + yyjson_mut_val *val = obj + (i * 2 + 2); + uint64_t key_len = (uint64_t)strlen(keys[i]); + uint64_t val_len = (uint64_t)strlen(vals[i]); + key->tag = (key_len << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + val->tag = (val_len << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + key->uni.str = keys[i]; + val->uni.str = vals[i]; + key->next = val; + val->next = val + 1; + } + obj[count * 2].next = obj + 1; + obj->uni.ptr = obj + (count * 2 - 1); + } + return obj; + } + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_with_kv(yyjson_mut_doc *doc, + const char **pairs, + size_t count) { + if (yyjson_likely(doc && ((count > 0 && pairs) || (count == 0)))) { + yyjson_mut_val *obj = unsafe_yyjson_mut_val(doc, 1 + count * 2); + if (yyjson_likely(obj)) { + obj->tag = ((uint64_t)count << YYJSON_TAG_BIT) | YYJSON_TYPE_OBJ; + if (count > 0) { + size_t i; + for (i = 0; i < count; i++) { + yyjson_mut_val *key = obj + (i * 2 + 1); + yyjson_mut_val *val = obj + (i * 2 + 2); + const char *key_str = pairs[i * 2 + 0]; + const char *val_str = pairs[i * 2 + 1]; + uint64_t key_len = (uint64_t)strlen(key_str); + uint64_t val_len = (uint64_t)strlen(val_str); + key->tag = (key_len << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + val->tag = (val_len << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + key->uni.str = key_str; + val->uni.str = val_str; + key->next = val; + val->next = val + 1; + } + obj[count * 2].next = obj + 1; + obj->uni.ptr = obj + (count * 2 - 1); + } + return obj; + } + } + return NULL; +} + + + +/*============================================================================== + * MARK: - Mutable JSON Object Modification API (Implementation) + *============================================================================*/ + +yyjson_api_inline void unsafe_yyjson_mut_obj_add(yyjson_mut_val *obj, + yyjson_mut_val *key, + yyjson_mut_val *val, + size_t len) { + if (yyjson_likely(len)) { + yyjson_mut_val *prev_val = ((yyjson_mut_val *)obj->uni.ptr)->next; + yyjson_mut_val *next_key = prev_val->next; + prev_val->next = key; + val->next = next_key; + } else { + val->next = key; + } + key->next = val; + obj->uni.ptr = (void *)key; + unsafe_yyjson_set_len(obj, len + 1); +} + +yyjson_api_inline yyjson_mut_val *unsafe_yyjson_mut_obj_remove( + yyjson_mut_val *obj, const char *key, size_t key_len) { + size_t obj_len = unsafe_yyjson_get_len(obj); + if (obj_len) { + yyjson_mut_val *pre_key = (yyjson_mut_val *)obj->uni.ptr; + yyjson_mut_val *cur_key = pre_key->next->next; + yyjson_mut_val *removed_item = NULL; + size_t i; + for (i = 0; i < obj_len; i++) { + if (unsafe_yyjson_equals_strn(cur_key, key, key_len)) { + if (!removed_item) removed_item = cur_key->next; + cur_key = cur_key->next->next; + pre_key->next->next = cur_key; + if (i + 1 == obj_len) obj->uni.ptr = pre_key; + i--; + obj_len--; + } else { + pre_key = cur_key; + cur_key = cur_key->next->next; + } + } + unsafe_yyjson_set_len(obj, obj_len); + return removed_item; + } else { + return NULL; + } +} + +yyjson_api_inline bool unsafe_yyjson_mut_obj_replace(yyjson_mut_val *obj, + yyjson_mut_val *key, + yyjson_mut_val *val) { + size_t key_len = unsafe_yyjson_get_len(key); + size_t obj_len = unsafe_yyjson_get_len(obj); + if (obj_len) { + yyjson_mut_val *pre_key = (yyjson_mut_val *)obj->uni.ptr; + yyjson_mut_val *cur_key = pre_key->next->next; + size_t i; + for (i = 0; i < obj_len; i++) { + if (unsafe_yyjson_equals_strn(cur_key, key->uni.str, key_len)) { + cur_key->next->tag = val->tag; + cur_key->next->uni.u64 = val->uni.u64; + return true; + } else { + cur_key = cur_key->next->next; + } + } + } + return false; +} + +yyjson_api_inline void unsafe_yyjson_mut_obj_rotate(yyjson_mut_val *obj, + size_t idx) { + yyjson_mut_val *key = (yyjson_mut_val *)obj->uni.ptr; + while (idx-- > 0) key = key->next->next; + obj->uni.ptr = (void *)key; +} + +yyjson_api_inline bool yyjson_mut_obj_add(yyjson_mut_val *obj, + yyjson_mut_val *key, + yyjson_mut_val *val) { + if (yyjson_likely(yyjson_mut_is_obj(obj) && + yyjson_mut_is_str(key) && val)) { + unsafe_yyjson_mut_obj_add(obj, key, val, unsafe_yyjson_get_len(obj)); + return true; + } + return false; +} + +yyjson_api_inline bool yyjson_mut_obj_put(yyjson_mut_val *obj, + yyjson_mut_val *key, + yyjson_mut_val *val) { + bool replaced = false; + size_t key_len; + yyjson_mut_obj_iter iter; + yyjson_mut_val *cur_key; + if (yyjson_unlikely(!yyjson_mut_is_obj(obj) || + !yyjson_mut_is_str(key))) return false; + key_len = unsafe_yyjson_get_len(key); + yyjson_mut_obj_iter_init(obj, &iter); + while ((cur_key = yyjson_mut_obj_iter_next(&iter)) != 0) { + if (unsafe_yyjson_equals_strn(cur_key, key->uni.str, key_len)) { + if (!replaced && val) { + replaced = true; + val->next = cur_key->next->next; + cur_key->next = val; + } else { + yyjson_mut_obj_iter_remove(&iter); + } + } + } + if (!replaced && val) unsafe_yyjson_mut_obj_add(obj, key, val, iter.max); + return true; +} + +yyjson_api_inline bool yyjson_mut_obj_insert(yyjson_mut_val *obj, + yyjson_mut_val *key, + yyjson_mut_val *val, + size_t idx) { + if (yyjson_likely(yyjson_mut_is_obj(obj) && + yyjson_mut_is_str(key) && val)) { + size_t len = unsafe_yyjson_get_len(obj); + if (yyjson_likely(len >= idx)) { + if (len > idx) { + void *ptr = obj->uni.ptr; + unsafe_yyjson_mut_obj_rotate(obj, idx); + unsafe_yyjson_mut_obj_add(obj, key, val, len); + obj->uni.ptr = ptr; + } else { + unsafe_yyjson_mut_obj_add(obj, key, val, len); + } + return true; + } + } + return false; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove(yyjson_mut_val *obj, + yyjson_mut_val *key) { + if (yyjson_likely(yyjson_mut_is_obj(obj) && yyjson_mut_is_str(key))) { + return unsafe_yyjson_mut_obj_remove(obj, key->uni.str, + unsafe_yyjson_get_len(key)); + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove_key( + yyjson_mut_val *obj, const char *key) { + if (yyjson_likely(yyjson_mut_is_obj(obj) && key)) { + size_t key_len = strlen(key); + return unsafe_yyjson_mut_obj_remove(obj, key, key_len); + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove_keyn( + yyjson_mut_val *obj, const char *key, size_t key_len) { + if (yyjson_likely(yyjson_mut_is_obj(obj) && key)) { + return unsafe_yyjson_mut_obj_remove(obj, key, key_len); + } + return NULL; +} + +yyjson_api_inline bool yyjson_mut_obj_clear(yyjson_mut_val *obj) { + if (yyjson_likely(yyjson_mut_is_obj(obj))) { + unsafe_yyjson_set_len(obj, 0); + return true; + } + return false; +} + +yyjson_api_inline bool yyjson_mut_obj_replace(yyjson_mut_val *obj, + yyjson_mut_val *key, + yyjson_mut_val *val) { + if (yyjson_likely(yyjson_mut_is_obj(obj) && + yyjson_mut_is_str(key) && val)) { + return unsafe_yyjson_mut_obj_replace(obj, key, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_obj_rotate(yyjson_mut_val *obj, + size_t idx) { + if (yyjson_likely(yyjson_mut_is_obj(obj) && + unsafe_yyjson_get_len(obj) > idx)) { + unsafe_yyjson_mut_obj_rotate(obj, idx); + return true; + } + return false; +} + + + +/*============================================================================== + * MARK: - Mutable JSON Object Modification Convenience API (Implementation) + *============================================================================*/ + +#define yyjson_mut_obj_add_func(func) \ + if (yyjson_likely(doc && yyjson_mut_is_obj(obj) && _key)) { \ + yyjson_mut_val *key = unsafe_yyjson_mut_val(doc, 2); \ + if (yyjson_likely(key)) { \ + size_t len = unsafe_yyjson_get_len(obj); \ + yyjson_mut_val *val = key + 1; \ + size_t key_len = strlen(_key); \ + bool noesc = unsafe_yyjson_is_str_noesc(_key, key_len); \ + key->tag = YYJSON_TYPE_STR; \ + key->tag |= noesc ? YYJSON_SUBTYPE_NOESC : YYJSON_SUBTYPE_NONE; \ + key->tag |= (uint64_t)strlen(_key) << YYJSON_TAG_BIT; \ + key->uni.str = _key; \ + func \ + unsafe_yyjson_mut_obj_add(obj, key, val, len); \ + return true; \ + } \ + } \ + return false + +yyjson_api_inline bool yyjson_mut_obj_add_null(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key) { + yyjson_mut_obj_add_func({ unsafe_yyjson_set_null(val); }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_true(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key) { + yyjson_mut_obj_add_func({ unsafe_yyjson_set_bool(val, true); }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_false(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key) { + yyjson_mut_obj_add_func({ unsafe_yyjson_set_bool(val, false); }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_bool(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key, + bool _val) { + yyjson_mut_obj_add_func({ unsafe_yyjson_set_bool(val, _val); }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_uint(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key, + uint64_t _val) { + yyjson_mut_obj_add_func({ unsafe_yyjson_set_uint(val, _val); }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_sint(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key, + int64_t _val) { + yyjson_mut_obj_add_func({ unsafe_yyjson_set_sint(val, _val); }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_int(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key, + int64_t _val) { + yyjson_mut_obj_add_func({ unsafe_yyjson_set_sint(val, _val); }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_float(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key, + float _val) { + yyjson_mut_obj_add_func({ unsafe_yyjson_set_float(val, _val); }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_double(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key, + double _val) { + yyjson_mut_obj_add_func({ unsafe_yyjson_set_double(val, _val); }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_real(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key, + double _val) { + yyjson_mut_obj_add_func({ unsafe_yyjson_set_real(val, _val); }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_str(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key, + const char *_val) { + if (yyjson_unlikely(!_val)) return false; + yyjson_mut_obj_add_func({ + size_t val_len = strlen(_val); + bool val_noesc = unsafe_yyjson_is_str_noesc(_val, val_len); + val->tag = ((uint64_t)strlen(_val) << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + val->tag |= val_noesc ? YYJSON_SUBTYPE_NOESC : YYJSON_SUBTYPE_NONE; + val->uni.str = _val; + }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_strn(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key, + const char *_val, + size_t _len) { + if (yyjson_unlikely(!_val)) return false; + yyjson_mut_obj_add_func({ + val->tag = ((uint64_t)_len << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + val->uni.str = _val; + }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_strcpy(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key, + const char *_val) { + if (yyjson_unlikely(!_val)) return false; + yyjson_mut_obj_add_func({ + size_t _len = strlen(_val); + val->uni.str = unsafe_yyjson_mut_strncpy(doc, _val, _len); + if (yyjson_unlikely(!val->uni.str)) return false; + val->tag = ((uint64_t)_len << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_strncpy(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key, + const char *_val, + size_t _len) { + if (yyjson_unlikely(!_val)) return false; + yyjson_mut_obj_add_func({ + val->uni.str = unsafe_yyjson_mut_strncpy(doc, _val, _len); + if (yyjson_unlikely(!val->uni.str)) return false; + val->tag = ((uint64_t)_len << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_add_arr(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key) { + yyjson_mut_val *key = yyjson_mut_str(doc, _key); + yyjson_mut_val *val = yyjson_mut_arr(doc); + return yyjson_mut_obj_add(obj, key, val) ? val : NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_add_obj(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key) { + yyjson_mut_val *key = yyjson_mut_str(doc, _key); + yyjson_mut_val *val = yyjson_mut_obj(doc); + return yyjson_mut_obj_add(obj, key, val) ? val : NULL; +} + +yyjson_api_inline bool yyjson_mut_obj_add_val(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key, + yyjson_mut_val *_val) { + if (yyjson_unlikely(!_val)) return false; + yyjson_mut_obj_add_func({ + val = _val; + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove_str(yyjson_mut_val *obj, + const char *key) { + return yyjson_mut_obj_remove_strn(obj, key, key ? strlen(key) : 0); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove_strn( + yyjson_mut_val *obj, const char *_key, size_t _len) { + if (yyjson_likely(yyjson_mut_is_obj(obj) && _key)) { + yyjson_mut_val *key; + yyjson_mut_obj_iter iter; + yyjson_mut_val *val_removed = NULL; + yyjson_mut_obj_iter_init(obj, &iter); + while ((key = yyjson_mut_obj_iter_next(&iter)) != NULL) { + if (unsafe_yyjson_equals_strn(key, _key, _len)) { + if (!val_removed) val_removed = key->next; + yyjson_mut_obj_iter_remove(&iter); + } + } + return val_removed; + } + return NULL; +} + +yyjson_api_inline bool yyjson_mut_obj_rename_key(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, + const char *new_key) { + if (!key || !new_key) return false; + return yyjson_mut_obj_rename_keyn(doc, obj, key, strlen(key), + new_key, strlen(new_key)); +} + +yyjson_api_inline bool yyjson_mut_obj_rename_keyn(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, + size_t len, + const char *new_key, + size_t new_len) { + char *cpy_key = NULL; + yyjson_mut_val *old_key; + yyjson_mut_obj_iter iter; + if (!doc || !obj || !key || !new_key) return false; + yyjson_mut_obj_iter_init(obj, &iter); + while ((old_key = yyjson_mut_obj_iter_next(&iter))) { + if (unsafe_yyjson_equals_strn((void *)old_key, key, len)) { + if (!cpy_key) { + cpy_key = unsafe_yyjson_mut_strncpy(doc, new_key, new_len); + if (!cpy_key) return false; + } + yyjson_mut_set_strn(old_key, cpy_key, new_len); + } + } + return cpy_key != NULL; +} + + + +#if !defined(YYJSON_DISABLE_UTILS) || !YYJSON_DISABLE_UTILS + +/*============================================================================== + * MARK: - JSON Pointer API (Implementation) + *============================================================================*/ + +#define yyjson_ptr_set_err(_code, _msg) do { \ + if (err) { \ + err->code = YYJSON_PTR_ERR_##_code; \ + err->msg = _msg; \ + err->pos = 0; \ + } \ +} while(false) + +/* require: val != NULL, *ptr == '/', len > 0 */ +yyjson_api yyjson_val *unsafe_yyjson_ptr_getx(yyjson_val *val, + const char *ptr, size_t len, + yyjson_ptr_err *err); + +/* require: val != NULL, *ptr == '/', len > 0 */ +yyjson_api yyjson_mut_val *unsafe_yyjson_mut_ptr_getx(yyjson_mut_val *val, + const char *ptr, + size_t len, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err); + +/* require: val/new_val/doc != NULL, *ptr == '/', len > 0 */ +yyjson_api bool unsafe_yyjson_mut_ptr_putx(yyjson_mut_val *val, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc, + bool create_parent, bool insert_new, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err); + +/* require: val/err != NULL, *ptr == '/', len > 0 */ +yyjson_api yyjson_mut_val *unsafe_yyjson_mut_ptr_replacex( + yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, + yyjson_ptr_ctx *ctx, yyjson_ptr_err *err); + +/* require: val/err != NULL, *ptr == '/', len > 0 */ +yyjson_api yyjson_mut_val *unsafe_yyjson_mut_ptr_removex(yyjson_mut_val *val, + const char *ptr, + size_t len, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err); + +yyjson_api_inline yyjson_val *yyjson_doc_ptr_get(yyjson_doc *doc, + const char *ptr) { + if (yyjson_unlikely(!ptr)) return NULL; + return yyjson_doc_ptr_getn(doc, ptr, strlen(ptr)); +} + +yyjson_api_inline yyjson_val *yyjson_doc_ptr_getn(yyjson_doc *doc, + const char *ptr, size_t len) { + return yyjson_doc_ptr_getx(doc, ptr, len, NULL); +} + +yyjson_api_inline yyjson_val *yyjson_doc_ptr_getx(yyjson_doc *doc, + const char *ptr, size_t len, + yyjson_ptr_err *err) { + yyjson_ptr_set_err(NONE, NULL); + if (yyjson_unlikely(!doc || !ptr)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return NULL; + } + if (yyjson_unlikely(!doc->root)) { + yyjson_ptr_set_err(NULL_ROOT, "document's root is NULL"); + return NULL; + } + if (yyjson_unlikely(len == 0)) { + return doc->root; + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return NULL; + } + return unsafe_yyjson_ptr_getx(doc->root, ptr, len, err); +} + +yyjson_api_inline yyjson_val *yyjson_ptr_get(yyjson_val *val, + const char *ptr) { + if (yyjson_unlikely(!ptr)) return NULL; + return yyjson_ptr_getn(val, ptr, strlen(ptr)); +} + +yyjson_api_inline yyjson_val *yyjson_ptr_getn(yyjson_val *val, + const char *ptr, size_t len) { + return yyjson_ptr_getx(val, ptr, len, NULL); +} + +yyjson_api_inline yyjson_val *yyjson_ptr_getx(yyjson_val *val, + const char *ptr, size_t len, + yyjson_ptr_err *err) { + yyjson_ptr_set_err(NONE, NULL); + if (yyjson_unlikely(!val || !ptr)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return NULL; + } + if (yyjson_unlikely(len == 0)) { + return val; + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return NULL; + } + return unsafe_yyjson_ptr_getx(val, ptr, len, err); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_get(yyjson_mut_doc *doc, + const char *ptr) { + if (!ptr) return NULL; + return yyjson_mut_doc_ptr_getn(doc, ptr, strlen(ptr)); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_getn(yyjson_mut_doc *doc, + const char *ptr, + size_t len) { + return yyjson_mut_doc_ptr_getx(doc, ptr, len, NULL, NULL); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_getx(yyjson_mut_doc *doc, + const char *ptr, + size_t len, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err) { + yyjson_ptr_set_err(NONE, NULL); + if (ctx) memset(ctx, 0, sizeof(*ctx)); + + if (yyjson_unlikely(!doc || !ptr)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return NULL; + } + if (yyjson_unlikely(!doc->root)) { + yyjson_ptr_set_err(NULL_ROOT, "document's root is NULL"); + return NULL; + } + if (yyjson_unlikely(len == 0)) { + return doc->root; + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return NULL; + } + return unsafe_yyjson_mut_ptr_getx(doc->root, ptr, len, ctx, err); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_get(yyjson_mut_val *val, + const char *ptr) { + if (!ptr) return NULL; + return yyjson_mut_ptr_getn(val, ptr, strlen(ptr)); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_getn(yyjson_mut_val *val, + const char *ptr, + size_t len) { + return yyjson_mut_ptr_getx(val, ptr, len, NULL, NULL); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_getx(yyjson_mut_val *val, + const char *ptr, + size_t len, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err) { + yyjson_ptr_set_err(NONE, NULL); + if (ctx) memset(ctx, 0, sizeof(*ctx)); + + if (yyjson_unlikely(!val || !ptr)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return NULL; + } + if (yyjson_unlikely(len == 0)) { + return val; + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return NULL; + } + return unsafe_yyjson_mut_ptr_getx(val, ptr, len, ctx, err); +} + +yyjson_api_inline bool yyjson_mut_doc_ptr_add(yyjson_mut_doc *doc, + const char *ptr, + yyjson_mut_val *new_val) { + if (yyjson_unlikely(!ptr)) return false; + return yyjson_mut_doc_ptr_addn(doc, ptr, strlen(ptr), new_val); +} + +yyjson_api_inline bool yyjson_mut_doc_ptr_addn(yyjson_mut_doc *doc, + const char *ptr, + size_t len, + yyjson_mut_val *new_val) { + return yyjson_mut_doc_ptr_addx(doc, ptr, len, new_val, true, NULL, NULL); +} + +yyjson_api_inline bool yyjson_mut_doc_ptr_addx(yyjson_mut_doc *doc, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + bool create_parent, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err) { + yyjson_ptr_set_err(NONE, NULL); + if (ctx) memset(ctx, 0, sizeof(*ctx)); + + if (yyjson_unlikely(!doc || !ptr || !new_val)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return false; + } + if (yyjson_unlikely(len == 0)) { + if (doc->root) { + yyjson_ptr_set_err(SET_ROOT, "cannot set document's root"); + return false; + } else { + doc->root = new_val; + return true; + } + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return false; + } + if (yyjson_unlikely(!doc->root && !create_parent)) { + yyjson_ptr_set_err(NULL_ROOT, "document's root is NULL"); + return false; + } + if (yyjson_unlikely(!doc->root)) { + yyjson_mut_val *root = yyjson_mut_obj(doc); + if (yyjson_unlikely(!root)) { + yyjson_ptr_set_err(MEMORY_ALLOCATION, "failed to create value"); + return false; + } + if (unsafe_yyjson_mut_ptr_putx(root, ptr, len, new_val, doc, + create_parent, true, ctx, err)) { + doc->root = root; + return true; + } + return false; + } + return unsafe_yyjson_mut_ptr_putx(doc->root, ptr, len, new_val, doc, + create_parent, true, ctx, err); +} + +yyjson_api_inline bool yyjson_mut_ptr_add(yyjson_mut_val *val, + const char *ptr, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc) { + if (yyjson_unlikely(!ptr)) return false; + return yyjson_mut_ptr_addn(val, ptr, strlen(ptr), new_val, doc); +} + +yyjson_api_inline bool yyjson_mut_ptr_addn(yyjson_mut_val *val, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc) { + return yyjson_mut_ptr_addx(val, ptr, len, new_val, doc, true, NULL, NULL); +} + +yyjson_api_inline bool yyjson_mut_ptr_addx(yyjson_mut_val *val, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc, + bool create_parent, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err) { + yyjson_ptr_set_err(NONE, NULL); + if (ctx) memset(ctx, 0, sizeof(*ctx)); + + if (yyjson_unlikely(!val || !ptr || !new_val || !doc)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return false; + } + if (yyjson_unlikely(len == 0)) { + yyjson_ptr_set_err(SET_ROOT, "cannot set root"); + return false; + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return false; + } + return unsafe_yyjson_mut_ptr_putx(val, ptr, len, new_val, + doc, create_parent, true, ctx, err); +} + +yyjson_api_inline bool yyjson_mut_doc_ptr_set(yyjson_mut_doc *doc, + const char *ptr, + yyjson_mut_val *new_val) { + if (yyjson_unlikely(!ptr)) return false; + return yyjson_mut_doc_ptr_setn(doc, ptr, strlen(ptr), new_val); +} + +yyjson_api_inline bool yyjson_mut_doc_ptr_setn(yyjson_mut_doc *doc, + const char *ptr, size_t len, + yyjson_mut_val *new_val) { + return yyjson_mut_doc_ptr_setx(doc, ptr, len, new_val, true, NULL, NULL); +} + +yyjson_api_inline bool yyjson_mut_doc_ptr_setx(yyjson_mut_doc *doc, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + bool create_parent, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err) { + yyjson_ptr_set_err(NONE, NULL); + if (ctx) memset(ctx, 0, sizeof(*ctx)); + + if (yyjson_unlikely(!doc || !ptr)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return false; + } + if (yyjson_unlikely(len == 0)) { + if (ctx) ctx->old = doc->root; + doc->root = new_val; + return true; + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return false; + } + if (!new_val) { + if (!doc->root) { + yyjson_ptr_set_err(RESOLVE, "JSON pointer cannot be resolved"); + return false; + } + return !!unsafe_yyjson_mut_ptr_removex(doc->root, ptr, len, ctx, err); + } + if (yyjson_unlikely(!doc->root && !create_parent)) { + yyjson_ptr_set_err(NULL_ROOT, "document's root is NULL"); + return false; + } + if (yyjson_unlikely(!doc->root)) { + yyjson_mut_val *root = yyjson_mut_obj(doc); + if (yyjson_unlikely(!root)) { + yyjson_ptr_set_err(MEMORY_ALLOCATION, "failed to create value"); + return false; + } + if (unsafe_yyjson_mut_ptr_putx(root, ptr, len, new_val, doc, + create_parent, false, ctx, err)) { + doc->root = root; + return true; + } + return false; + } + return unsafe_yyjson_mut_ptr_putx(doc->root, ptr, len, new_val, doc, + create_parent, false, ctx, err); +} + +yyjson_api_inline bool yyjson_mut_ptr_set(yyjson_mut_val *val, + const char *ptr, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc) { + if (yyjson_unlikely(!ptr)) return false; + return yyjson_mut_ptr_setn(val, ptr, strlen(ptr), new_val, doc); +} + +yyjson_api_inline bool yyjson_mut_ptr_setn(yyjson_mut_val *val, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc) { + return yyjson_mut_ptr_setx(val, ptr, len, new_val, doc, true, NULL, NULL); +} + +yyjson_api_inline bool yyjson_mut_ptr_setx(yyjson_mut_val *val, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc, + bool create_parent, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err) { + yyjson_ptr_set_err(NONE, NULL); + if (ctx) memset(ctx, 0, sizeof(*ctx)); + + if (yyjson_unlikely(!val || !ptr || !doc)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return false; + } + if (yyjson_unlikely(len == 0)) { + yyjson_ptr_set_err(SET_ROOT, "cannot set root"); + return false; + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return false; + } + if (!new_val) { + return !!unsafe_yyjson_mut_ptr_removex(val, ptr, len, ctx, err); + } + return unsafe_yyjson_mut_ptr_putx(val, ptr, len, new_val, doc, + create_parent, false, ctx, err); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_replace( + yyjson_mut_doc *doc, const char *ptr, yyjson_mut_val *new_val) { + if (!ptr) return NULL; + return yyjson_mut_doc_ptr_replacen(doc, ptr, strlen(ptr), new_val); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_replacen( + yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val) { + return yyjson_mut_doc_ptr_replacex(doc, ptr, len, new_val, NULL, NULL); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_replacex( + yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val, + yyjson_ptr_ctx *ctx, yyjson_ptr_err *err) { + + yyjson_ptr_set_err(NONE, NULL); + if (ctx) memset(ctx, 0, sizeof(*ctx)); + + if (yyjson_unlikely(!doc || !ptr || !new_val)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return NULL; + } + if (yyjson_unlikely(len == 0)) { + yyjson_mut_val *root = doc->root; + if (yyjson_unlikely(!root)) { + yyjson_ptr_set_err(RESOLVE, "JSON pointer cannot be resolved"); + return NULL; + } + if (ctx) ctx->old = root; + doc->root = new_val; + return root; + } + if (yyjson_unlikely(!doc->root)) { + yyjson_ptr_set_err(NULL_ROOT, "document's root is NULL"); + return NULL; + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return NULL; + } + return unsafe_yyjson_mut_ptr_replacex(doc->root, ptr, len, new_val, + ctx, err); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_replace( + yyjson_mut_val *val, const char *ptr, yyjson_mut_val *new_val) { + if (!ptr) return NULL; + return yyjson_mut_ptr_replacen(val, ptr, strlen(ptr), new_val); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_replacen( + yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val) { + return yyjson_mut_ptr_replacex(val, ptr, len, new_val, NULL, NULL); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_replacex( + yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, + yyjson_ptr_ctx *ctx, yyjson_ptr_err *err) { + + yyjson_ptr_set_err(NONE, NULL); + if (ctx) memset(ctx, 0, sizeof(*ctx)); + + if (yyjson_unlikely(!val || !ptr || !new_val)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return NULL; + } + if (yyjson_unlikely(len == 0)) { + yyjson_ptr_set_err(SET_ROOT, "cannot set root"); + return NULL; + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return NULL; + } + return unsafe_yyjson_mut_ptr_replacex(val, ptr, len, new_val, ctx, err); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_remove( + yyjson_mut_doc *doc, const char *ptr) { + if (!ptr) return NULL; + return yyjson_mut_doc_ptr_removen(doc, ptr, strlen(ptr)); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_removen( + yyjson_mut_doc *doc, const char *ptr, size_t len) { + return yyjson_mut_doc_ptr_removex(doc, ptr, len, NULL, NULL); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_removex( + yyjson_mut_doc *doc, const char *ptr, size_t len, + yyjson_ptr_ctx *ctx, yyjson_ptr_err *err) { + + yyjson_ptr_set_err(NONE, NULL); + if (ctx) memset(ctx, 0, sizeof(*ctx)); + + if (yyjson_unlikely(!doc || !ptr)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return NULL; + } + if (yyjson_unlikely(!doc->root)) { + yyjson_ptr_set_err(NULL_ROOT, "document's root is NULL"); + return NULL; + } + if (yyjson_unlikely(len == 0)) { + yyjson_mut_val *root = doc->root; + if (ctx) ctx->old = root; + doc->root = NULL; + return root; + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return NULL; + } + return unsafe_yyjson_mut_ptr_removex(doc->root, ptr, len, ctx, err); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_remove(yyjson_mut_val *val, + const char *ptr) { + if (!ptr) return NULL; + return yyjson_mut_ptr_removen(val, ptr, strlen(ptr)); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_removen(yyjson_mut_val *val, + const char *ptr, + size_t len) { + return yyjson_mut_ptr_removex(val, ptr, len, NULL, NULL); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_removex(yyjson_mut_val *val, + const char *ptr, + size_t len, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err) { + yyjson_ptr_set_err(NONE, NULL); + if (ctx) memset(ctx, 0, sizeof(*ctx)); + + if (yyjson_unlikely(!val || !ptr)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return NULL; + } + if (yyjson_unlikely(len == 0)) { + yyjson_ptr_set_err(SET_ROOT, "cannot set root"); + return NULL; + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return NULL; + } + return unsafe_yyjson_mut_ptr_removex(val, ptr, len, ctx, err); +} + +yyjson_api_inline bool yyjson_ptr_ctx_append(yyjson_ptr_ctx *ctx, + yyjson_mut_val *key, + yyjson_mut_val *val) { + yyjson_mut_val *ctn, *pre_key, *pre_val, *cur_key, *cur_val; + if (!ctx || !ctx->ctn || !val) return false; + ctn = ctx->ctn; + + if (yyjson_mut_is_obj(ctn)) { + if (!key) return false; + key->next = val; + pre_key = ctx->pre; + if (unsafe_yyjson_get_len(ctn) == 0) { + val->next = key; + ctn->uni.ptr = key; + ctx->pre = key; + } else if (!pre_key) { + pre_key = (yyjson_mut_val *)ctn->uni.ptr; + pre_val = pre_key->next; + val->next = pre_val->next; + pre_val->next = key; + ctn->uni.ptr = key; + ctx->pre = pre_key; + } else { + cur_key = pre_key->next->next; + cur_val = cur_key->next; + val->next = cur_val->next; + cur_val->next = key; + if (ctn->uni.ptr == cur_key) ctn->uni.ptr = key; + ctx->pre = cur_key; + } + } else { + pre_val = ctx->pre; + if (unsafe_yyjson_get_len(ctn) == 0) { + val->next = val; + ctn->uni.ptr = val; + ctx->pre = val; + } else if (!pre_val) { + pre_val = (yyjson_mut_val *)ctn->uni.ptr; + val->next = pre_val->next; + pre_val->next = val; + ctn->uni.ptr = val; + ctx->pre = pre_val; + } else { + cur_val = pre_val->next; + val->next = cur_val->next; + cur_val->next = val; + if (ctn->uni.ptr == cur_val) ctn->uni.ptr = val; + ctx->pre = cur_val; + } + } + unsafe_yyjson_inc_len(ctn); + return true; +} + +yyjson_api_inline bool yyjson_ptr_ctx_replace(yyjson_ptr_ctx *ctx, + yyjson_mut_val *val) { + yyjson_mut_val *ctn, *pre_key, *cur_key, *pre_val, *cur_val; + if (!ctx || !ctx->ctn || !ctx->pre || !val) return false; + ctn = ctx->ctn; + if (yyjson_mut_is_obj(ctn)) { + pre_key = ctx->pre; + pre_val = pre_key->next; + cur_key = pre_val->next; + cur_val = cur_key->next; + /* replace current value */ + cur_key->next = val; + val->next = cur_val->next; + ctx->old = cur_val; + } else { + pre_val = ctx->pre; + cur_val = pre_val->next; + /* replace current value */ + if (pre_val != cur_val) { + val->next = cur_val->next; + pre_val->next = val; + if (ctn->uni.ptr == cur_val) ctn->uni.ptr = val; + } else { + val->next = val; + ctn->uni.ptr = val; + ctx->pre = val; + } + ctx->old = cur_val; + } + return true; +} + +yyjson_api_inline bool yyjson_ptr_ctx_remove(yyjson_ptr_ctx *ctx) { + yyjson_mut_val *ctn, *pre_key, *pre_val, *cur_key, *cur_val; + size_t len; + if (!ctx || !ctx->ctn || !ctx->pre) return false; + ctn = ctx->ctn; + if (yyjson_mut_is_obj(ctn)) { + pre_key = ctx->pre; + pre_val = pre_key->next; + cur_key = pre_val->next; + cur_val = cur_key->next; + /* remove current key-value */ + pre_val->next = cur_val->next; + if (ctn->uni.ptr == cur_key) ctn->uni.ptr = pre_key; + ctx->pre = NULL; + ctx->old = cur_val; + } else { + pre_val = ctx->pre; + cur_val = pre_val->next; + /* remove current key-value */ + pre_val->next = cur_val->next; + if (ctn->uni.ptr == cur_val) ctn->uni.ptr = pre_val; + ctx->pre = NULL; + ctx->old = cur_val; + } + len = unsafe_yyjson_get_len(ctn) - 1; + if (len == 0) ctn->uni.ptr = NULL; + unsafe_yyjson_set_len(ctn, len); + return true; +} + +#undef yyjson_ptr_set_err + + + +/*============================================================================== + * MARK: - JSON Value at Pointer API (Implementation) + *============================================================================*/ + +/** + Set provided `value` if the JSON Pointer (RFC 6901) exists and is type bool. + Returns true if value at `ptr` exists and is the correct type, otherwise false. + */ +yyjson_api_inline bool yyjson_ptr_get_bool( + yyjson_val *root, const char *ptr, bool *value) { + yyjson_val *val = yyjson_ptr_get(root, ptr); + if (value && yyjson_is_bool(val)) { + *value = unsafe_yyjson_get_bool(val); + return true; + } else { + return false; + } +} + +/** + Set provided `value` if the JSON Pointer (RFC 6901) exists and is an integer + that fits in `uint64_t`. Returns true if successful, otherwise false. + */ +yyjson_api_inline bool yyjson_ptr_get_uint( + yyjson_val *root, const char *ptr, uint64_t *value) { + yyjson_val *val = yyjson_ptr_get(root, ptr); + if (value && val) { + uint64_t ret = val->uni.u64; + if (unsafe_yyjson_is_uint(val) || + (unsafe_yyjson_is_sint(val) && !(ret >> 63))) { + *value = ret; + return true; + } + } + return false; +} + +/** + Set provided `value` if the JSON Pointer (RFC 6901) exists and is an integer + that fits in `int64_t`. Returns true if successful, otherwise false. + */ +yyjson_api_inline bool yyjson_ptr_get_sint( + yyjson_val *root, const char *ptr, int64_t *value) { + yyjson_val *val = yyjson_ptr_get(root, ptr); + if (value && val) { + int64_t ret = val->uni.i64; + if (unsafe_yyjson_is_sint(val) || + (unsafe_yyjson_is_uint(val) && ret >= 0)) { + *value = ret; + return true; + } + } + return false; +} + +/** + Set provided `value` if the JSON Pointer (RFC 6901) exists and is type real. + Returns true if value at `ptr` exists and is the correct type, otherwise false. + */ +yyjson_api_inline bool yyjson_ptr_get_real( + yyjson_val *root, const char *ptr, double *value) { + yyjson_val *val = yyjson_ptr_get(root, ptr); + if (value && yyjson_is_real(val)) { + *value = unsafe_yyjson_get_real(val); + return true; + } else { + return false; + } +} + +/** + Set provided `value` if the JSON Pointer (RFC 6901) exists and is type sint, + uint or real. + Returns true if value at `ptr` exists and is the correct type, otherwise false. + */ +yyjson_api_inline bool yyjson_ptr_get_num( + yyjson_val *root, const char *ptr, double *value) { + yyjson_val *val = yyjson_ptr_get(root, ptr); + if (value && yyjson_is_num(val)) { + *value = unsafe_yyjson_get_num(val); + return true; + } else { + return false; + } +} + +/** + Set provided `value` if the JSON Pointer (RFC 6901) exists and is type string. + Returns true if value at `ptr` exists and is the correct type, otherwise false. + */ +yyjson_api_inline bool yyjson_ptr_get_str( + yyjson_val *root, const char *ptr, const char **value) { + yyjson_val *val = yyjson_ptr_get(root, ptr); + if (value && yyjson_is_str(val)) { + *value = unsafe_yyjson_get_str(val); + return true; + } else { + return false; + } +} + + + +/*============================================================================== + * MARK: - Deprecated + *============================================================================*/ + +/** @deprecated renamed to `yyjson_doc_ptr_get` */ +yyjson_deprecated("renamed to yyjson_doc_ptr_get") +yyjson_api_inline yyjson_val *yyjson_doc_get_pointer(yyjson_doc *doc, + const char *ptr) { + return yyjson_doc_ptr_get(doc, ptr); +} + +/** @deprecated renamed to `yyjson_doc_ptr_getn` */ +yyjson_deprecated("renamed to yyjson_doc_ptr_getn") +yyjson_api_inline yyjson_val *yyjson_doc_get_pointern(yyjson_doc *doc, + const char *ptr, + size_t len) { + return yyjson_doc_ptr_getn(doc, ptr, len); +} + +/** @deprecated renamed to `yyjson_mut_doc_ptr_get` */ +yyjson_deprecated("renamed to yyjson_mut_doc_ptr_get") +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_get_pointer( + yyjson_mut_doc *doc, const char *ptr) { + return yyjson_mut_doc_ptr_get(doc, ptr); +} + +/** @deprecated renamed to `yyjson_mut_doc_ptr_getn` */ +yyjson_deprecated("renamed to yyjson_mut_doc_ptr_getn") +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_get_pointern( + yyjson_mut_doc *doc, const char *ptr, size_t len) { + return yyjson_mut_doc_ptr_getn(doc, ptr, len); +} + +/** @deprecated renamed to `yyjson_ptr_get` */ +yyjson_deprecated("renamed to yyjson_ptr_get") +yyjson_api_inline yyjson_val *yyjson_get_pointer(yyjson_val *val, + const char *ptr) { + return yyjson_ptr_get(val, ptr); +} + +/** @deprecated renamed to `yyjson_ptr_getn` */ +yyjson_deprecated("renamed to yyjson_ptr_getn") +yyjson_api_inline yyjson_val *yyjson_get_pointern(yyjson_val *val, + const char *ptr, + size_t len) { + return yyjson_ptr_getn(val, ptr, len); +} + +/** @deprecated renamed to `yyjson_mut_ptr_get` */ +yyjson_deprecated("renamed to yyjson_mut_ptr_get") +yyjson_api_inline yyjson_mut_val *yyjson_mut_get_pointer(yyjson_mut_val *val, + const char *ptr) { + return yyjson_mut_ptr_get(val, ptr); +} + +/** @deprecated renamed to `yyjson_mut_ptr_getn` */ +yyjson_deprecated("renamed to yyjson_mut_ptr_getn") +yyjson_api_inline yyjson_mut_val *yyjson_mut_get_pointern(yyjson_mut_val *val, + const char *ptr, + size_t len) { + return yyjson_mut_ptr_getn(val, ptr, len); +} + +/** @deprecated renamed to `yyjson_mut_ptr_getn` */ +yyjson_deprecated("renamed to unsafe_yyjson_ptr_getn") +yyjson_api_inline yyjson_val *unsafe_yyjson_get_pointer(yyjson_val *val, + const char *ptr, + size_t len) { + yyjson_ptr_err err; + return unsafe_yyjson_ptr_getx(val, ptr, len, &err); +} + +/** @deprecated renamed to `unsafe_yyjson_mut_ptr_getx` */ +yyjson_deprecated("renamed to unsafe_yyjson_mut_ptr_getx") +yyjson_api_inline yyjson_mut_val *unsafe_yyjson_mut_get_pointer( + yyjson_mut_val *val, const char *ptr, size_t len) { + yyjson_ptr_err err; + return unsafe_yyjson_mut_ptr_getx(val, ptr, len, NULL, &err); +} + +#endif /* YYJSON_DISABLE_UTILS */ + + + +/*============================================================================== + * MARK: - Compiler Hint End + *============================================================================*/ + +#if defined(__clang__) +# pragma clang diagnostic pop +#elif defined(__GNUC__) +# if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) +# pragma GCC diagnostic pop +# endif +#elif defined(_MSC_VER) +# pragma warning(pop) +#endif /* warning suppress end */ + +#ifdef __cplusplus +} +#endif /* extern "C" end */ + +#endif /* YYJSON_H */ diff --git a/lib/yyjson-0.12.0/test/compile_ansi.c b/lib/yyjson-0.12.0/test/compile_ansi.c new file mode 100644 index 00000000000..cbca4e5a5fa --- /dev/null +++ b/lib/yyjson-0.12.0/test/compile_ansi.c @@ -0,0 +1,14 @@ +/* + This file is used to test the compatibility of ANSI C. + It should be able to compile successfully in strict ANSI C environments. +*/ + +#include "yyjson.c" + +int main(void) { + yyjson_mut_doc *mdoc = yyjson_mut_doc_new(NULL); + yyjson_mut_val *root = yyjson_mut_int(mdoc, 0); + yyjson_mut_doc_set_root(mdoc, root); + yyjson_mut_doc_free(mdoc); + return 0; +} diff --git a/lib/yyjson-0.12.0/test/compile_ansi.cpp b/lib/yyjson-0.12.0/test/compile_ansi.cpp new file mode 100644 index 00000000000..0cee1101b61 --- /dev/null +++ b/lib/yyjson-0.12.0/test/compile_ansi.cpp @@ -0,0 +1,14 @@ +/* + This file is used to test the compatibility of C++. + It should be able to compile successfully in C++ environments. +*/ + +#include "yyjson.c" + +int main(void) { + yyjson_mut_doc *mdoc = yyjson_mut_doc_new(NULL); + yyjson_mut_val *root = yyjson_mut_int(mdoc, 0); + yyjson_mut_doc_set_root(mdoc, root); + yyjson_mut_doc_free(mdoc); + return 0; +} diff --git a/lib/yyjson-0.12.0/test/data/json/README.md b/lib/yyjson-0.12.0/test/data/json/README.md new file mode 100644 index 00000000000..bdef287513f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/README.md @@ -0,0 +1,64 @@ +# JSON Test Data + + +## test_parsing +Source: + +A comprehensive test suite for RFC 8259 compliant JSON parsers. +The name of these files tell if their contents should be accepted or rejected. + +- `y_` content must be accepted by parsers +- `n_` content must be rejected by parsers +- `i_` parsers are free to accept or reject content + + +## test_transform +Source: + +These files contain weird structures and characters that parsers may understand differently, eg: + +- huge numbers +- dictionaries with similar keys +- NULL characters +- escaped invalid strings + + +## test_checker +Source: + +If the JSON_checker is working correctly, it must accept all of the pass\*.json files and reject all of the fail\*.json files. (fail01.json is excluded as it is relaxed in RFC7159. fail18.json is excluded as depth of JSON is not specified.) + + +## test_roundtrip +Source: + +27 condensed JSONs are parsed and stringified. The results are compared to the original JSONs. + +yyjson add more test case in this directory. + +## test_encoding +Source: + +Same JSON encoded as UTF-8/UTF-16/UTF-32 with or without BOM. +RFC 8259 only accept UTF-8 without BOM. + + +## test_yyjson +JSON files used for yyjson testing. + +- `(fail)` content must be rejected +- `(comma)` content has trailing comma +- `(comment)` content has comment +- `(endcomment)` content has comment at end +- `(inf)` content has infinity literal +- `(nan)` content has nan literal +- `(bignum)` content has large number (double overflow) +- `(bighex)` content has large hex number (u64/i64 overflow) +- `(garbage)` content has garbage after document +- `(str_err)` content has invalid unicode +- `(bom)` content has byte order mask (BOM) +- `(ext_num)` content has extended number format +- `(ext_esc)` content has extended escape sequence +- `(ext_ws)` content has extended whitespace +- `(str_sq)` content has single-quoted string +- `(str_uq)` content has unquoted key diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail01_EXCLUDE.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail01_EXCLUDE.json new file mode 100644 index 00000000000..6216b865f10 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail01_EXCLUDE.json @@ -0,0 +1 @@ +"A JSON payload should be an object or array, not a string." \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail02.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail02.json new file mode 100644 index 00000000000..6b7c11e5a56 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail02.json @@ -0,0 +1 @@ +["Unclosed array" \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail03.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail03.json new file mode 100644 index 00000000000..168c81eb785 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail03.json @@ -0,0 +1 @@ +{unquoted_key: "keys must be quoted"} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail04.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail04.json new file mode 100644 index 00000000000..9de168bf34e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail04.json @@ -0,0 +1 @@ +["extra comma",] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail05.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail05.json new file mode 100644 index 00000000000..ddf3ce3d240 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail05.json @@ -0,0 +1 @@ +["double extra comma",,] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail06.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail06.json new file mode 100644 index 00000000000..ed91580e1b1 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail06.json @@ -0,0 +1 @@ +[ , "<-- missing value"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail07.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail07.json new file mode 100644 index 00000000000..8a96af3e4ee --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail07.json @@ -0,0 +1 @@ +["Comma after the close"], \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail08.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail08.json new file mode 100644 index 00000000000..b28479c6ecb --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail08.json @@ -0,0 +1 @@ +["Extra close"]] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail09.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail09.json new file mode 100644 index 00000000000..5815574f363 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail09.json @@ -0,0 +1 @@ +{"Extra comma": true,} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail10.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail10.json new file mode 100644 index 00000000000..5d8c0047bd5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail10.json @@ -0,0 +1 @@ +{"Extra value after close": true} "misplaced quoted value" \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail11.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail11.json new file mode 100644 index 00000000000..76eb95b4583 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail11.json @@ -0,0 +1 @@ +{"Illegal expression": 1 + 2} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail12.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail12.json new file mode 100644 index 00000000000..77580a4522d --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail12.json @@ -0,0 +1 @@ +{"Illegal invocation": alert()} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail13.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail13.json new file mode 100644 index 00000000000..379406b59bd --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail13.json @@ -0,0 +1 @@ +{"Numbers cannot have leading zeroes": 013} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail14.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail14.json new file mode 100644 index 00000000000..0ed366b38a3 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail14.json @@ -0,0 +1 @@ +{"Numbers cannot be hex": 0x14} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail15.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail15.json new file mode 100644 index 00000000000..fc8376b605d --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail15.json @@ -0,0 +1 @@ +["Illegal backslash escape: \x15"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail16.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail16.json new file mode 100644 index 00000000000..3fe21d4b532 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail16.json @@ -0,0 +1 @@ +[\naked] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail17.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail17.json new file mode 100644 index 00000000000..62b9214aeda --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail17.json @@ -0,0 +1 @@ +["Illegal backslash escape: \017"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail18_EXCLUDE.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail18_EXCLUDE.json new file mode 100644 index 00000000000..edac92716f1 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail18_EXCLUDE.json @@ -0,0 +1 @@ +[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail19.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail19.json new file mode 100644 index 00000000000..3b9c46fa9a2 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail19.json @@ -0,0 +1 @@ +{"Missing colon" null} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail20.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail20.json new file mode 100644 index 00000000000..27c1af3e72e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail20.json @@ -0,0 +1 @@ +{"Double colon":: null} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail21.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail21.json new file mode 100644 index 00000000000..62474573b21 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail21.json @@ -0,0 +1 @@ +{"Comma instead of colon", null} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail22.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail22.json new file mode 100644 index 00000000000..a7752581bcf --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail22.json @@ -0,0 +1 @@ +["Colon instead of comma": false] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail23.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail23.json new file mode 100644 index 00000000000..494add1ca19 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail23.json @@ -0,0 +1 @@ +["Bad value", truth] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail24.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail24.json new file mode 100644 index 00000000000..caff239bfc3 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail24.json @@ -0,0 +1 @@ +['single quote'] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail25.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail25.json new file mode 100644 index 00000000000..8b7ad23e010 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail25.json @@ -0,0 +1 @@ +[" tab character in string "] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail26.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail26.json new file mode 100644 index 00000000000..845d26a6a54 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail26.json @@ -0,0 +1 @@ +["tab\ character\ in\ string\ "] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail27.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail27.json new file mode 100644 index 00000000000..6b01a2ca4a9 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail27.json @@ -0,0 +1,2 @@ +["line +break"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail28.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail28.json new file mode 100644 index 00000000000..621a0101c66 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail28.json @@ -0,0 +1,2 @@ +["line\ +break"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail29.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail29.json new file mode 100644 index 00000000000..47ec421bb62 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail29.json @@ -0,0 +1 @@ +[0e] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail30.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail30.json new file mode 100644 index 00000000000..8ab0bc4b8b2 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail30.json @@ -0,0 +1 @@ +[0e+] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail31.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail31.json new file mode 100644 index 00000000000..1cce602b518 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail31.json @@ -0,0 +1 @@ +[0e+-1] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail32.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail32.json new file mode 100644 index 00000000000..45cba7396ff --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail32.json @@ -0,0 +1 @@ +{"Comma instead if closing brace": true, \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/fail33.json b/lib/yyjson-0.12.0/test/data/json/test_checker/fail33.json new file mode 100644 index 00000000000..ca5eb19dc97 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/fail33.json @@ -0,0 +1 @@ +["mismatch"} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/pass01.json b/lib/yyjson-0.12.0/test/data/json/test_checker/pass01.json new file mode 100644 index 00000000000..70e26854369 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/pass01.json @@ -0,0 +1,58 @@ +[ + "JSON Test Pattern pass1", + {"object with 1 member":["array with 1 element"]}, + {}, + [], + -42, + true, + false, + null, + { + "integer": 1234567890, + "real": -9876.543210, + "e": 0.123456789e-12, + "E": 1.234567890E+34, + "": 23456789012E66, + "zero": 0, + "one": 1, + "space": " ", + "quote": "\"", + "backslash": "\\", + "controls": "\b\f\n\r\t", + "slash": "/ & \/", + "alpha": "abcdefghijklmnopqrstuvwyz", + "ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWYZ", + "digit": "0123456789", + "0123456789": "digit", + "special": "`1~!@#$%^&*()_+-={':[,]}|;.?", + "hex": "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A", + "true": true, + "false": false, + "null": null, + "array":[ ], + "object":{ }, + "address": "50 St. James Street", + "url": "http://www.JSON.org/", + "comment": "// /* */": " ", + " s p a c e d " :[1,2 , 3 + +, + +4 , 5 , 6 ,7 ],"compact":[1,2,3,4,5,6,7], + "jsontext": "{\"object with 1 member\":[\"array with 1 element\"]}", + "quotes": "" \u0022 %22 0x22 034 "", + "\/\\\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?" +: "A key can be any string" + }, + 0.5 ,98.6 +, +99.44 +, + +1066, +1e1, +0.1e1, +1e-1, +1e00,2e+00,2e-00 +,"rosebud"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/pass02.json b/lib/yyjson-0.12.0/test/data/json/test_checker/pass02.json new file mode 100644 index 00000000000..d3c63c7ad84 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/pass02.json @@ -0,0 +1 @@ +[[[[[[[[[[[[[[[[[[["Not too deep"]]]]]]]]]]]]]]]]]]] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_checker/pass03.json b/lib/yyjson-0.12.0/test/data/json/test_checker/pass03.json new file mode 100644 index 00000000000..4528d51f1ac --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_checker/pass03.json @@ -0,0 +1,6 @@ +{ + "JSON Test Pattern pass3": { + "The outermost value": "must be an object or array.", + "In this test": "It is an object." + } +} diff --git a/lib/yyjson-0.12.0/test/data/json/test_encoding/utf16be.json b/lib/yyjson-0.12.0/test/data/json/test_encoding/utf16be.json new file mode 100644 index 00000000000..e46dbfb9ddc Binary files /dev/null and b/lib/yyjson-0.12.0/test/data/json/test_encoding/utf16be.json differ diff --git a/lib/yyjson-0.12.0/test/data/json/test_encoding/utf16bebom.json b/lib/yyjson-0.12.0/test/data/json/test_encoding/utf16bebom.json new file mode 100644 index 00000000000..0a23ae205cb Binary files /dev/null and b/lib/yyjson-0.12.0/test/data/json/test_encoding/utf16bebom.json differ diff --git a/lib/yyjson-0.12.0/test/data/json/test_encoding/utf16le.json b/lib/yyjson-0.12.0/test/data/json/test_encoding/utf16le.json new file mode 100644 index 00000000000..92d504530cd Binary files /dev/null and b/lib/yyjson-0.12.0/test/data/json/test_encoding/utf16le.json differ diff --git a/lib/yyjson-0.12.0/test/data/json/test_encoding/utf16lebom.json b/lib/yyjson-0.12.0/test/data/json/test_encoding/utf16lebom.json new file mode 100644 index 00000000000..eaba00132cd Binary files /dev/null and b/lib/yyjson-0.12.0/test/data/json/test_encoding/utf16lebom.json differ diff --git a/lib/yyjson-0.12.0/test/data/json/test_encoding/utf32be.json b/lib/yyjson-0.12.0/test/data/json/test_encoding/utf32be.json new file mode 100644 index 00000000000..9cbb522279d Binary files /dev/null and b/lib/yyjson-0.12.0/test/data/json/test_encoding/utf32be.json differ diff --git a/lib/yyjson-0.12.0/test/data/json/test_encoding/utf32bebom.json b/lib/yyjson-0.12.0/test/data/json/test_encoding/utf32bebom.json new file mode 100644 index 00000000000..bde6a99ab43 Binary files /dev/null and b/lib/yyjson-0.12.0/test/data/json/test_encoding/utf32bebom.json differ diff --git a/lib/yyjson-0.12.0/test/data/json/test_encoding/utf32le.json b/lib/yyjson-0.12.0/test/data/json/test_encoding/utf32le.json new file mode 100644 index 00000000000..b00f290a64f Binary files /dev/null and b/lib/yyjson-0.12.0/test/data/json/test_encoding/utf32le.json differ diff --git a/lib/yyjson-0.12.0/test/data/json/test_encoding/utf32lebom.json b/lib/yyjson-0.12.0/test/data/json/test_encoding/utf32lebom.json new file mode 100644 index 00000000000..d3db39bf732 Binary files /dev/null and b/lib/yyjson-0.12.0/test/data/json/test_encoding/utf32lebom.json differ diff --git a/lib/yyjson-0.12.0/test/data/json/test_encoding/utf8.json b/lib/yyjson-0.12.0/test/data/json/test_encoding/utf8.json new file mode 100644 index 00000000000..c500c943f6b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_encoding/utf8.json @@ -0,0 +1,7 @@ +{ + "en":"I can eat glass and it doesn't hurt me.", + "zh-Hant":"我能åžä¸‹çŽ»ç’ƒè€Œä¸å‚·èº«é«”。", + "zh-Hans":"我能åžä¸‹çŽ»ç’ƒè€Œä¸ä¼¤èº«ä½“。", + "ja":"ç§ã¯ã‚¬ãƒ©ã‚¹ã‚’食ã¹ã‚‰ã‚Œã¾ã™ã€‚ãれã¯ç§ã‚’å‚·ã¤ã‘ã¾ã›ã‚“。", + "ko":"나는 유리를 ë¨¹ì„ ìˆ˜ 있어요. ê·¸ëž˜ë„ ì•„í”„ì§€ 않아요" +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_encoding/utf8bom.json b/lib/yyjson-0.12.0/test/data/json/test_encoding/utf8bom.json new file mode 100644 index 00000000000..b9839fe2fa7 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_encoding/utf8bom.json @@ -0,0 +1,7 @@ +{ + "en":"I can eat glass and it doesn't hurt me.", + "zh-Hant":"我能åžä¸‹çŽ»ç’ƒè€Œä¸å‚·èº«é«”。", + "zh-Hans":"我能åžä¸‹çŽ»ç’ƒè€Œä¸ä¼¤èº«ä½“。", + "ja":"ç§ã¯ã‚¬ãƒ©ã‚¹ã‚’食ã¹ã‚‰ã‚Œã¾ã™ã€‚ãれã¯ç§ã‚’å‚·ã¤ã‘ã¾ã›ã‚“。", + "ko":"나는 유리를 ë¨¹ì„ ìˆ˜ 있어요. ê·¸ëž˜ë„ ì•„í”„ì§€ 않아요" +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_double_huge_neg_exp.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_double_huge_neg_exp.json new file mode 100755 index 00000000000..ae4c7b71f62 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_double_huge_neg_exp.json @@ -0,0 +1 @@ +[123.456e-789] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_huge_exp.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_huge_exp.json new file mode 100755 index 00000000000..9b5efa23682 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_huge_exp.json @@ -0,0 +1 @@ +[0.4e00669999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999969999999006] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_neg_int_huge_exp.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_neg_int_huge_exp.json new file mode 100755 index 00000000000..3abd58a5c41 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_neg_int_huge_exp.json @@ -0,0 +1 @@ +[-1e+9999] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_pos_double_huge_exp.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_pos_double_huge_exp.json new file mode 100755 index 00000000000..e10a7eb62a5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_pos_double_huge_exp.json @@ -0,0 +1 @@ +[1.5e+9999] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_real_neg_overflow.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_real_neg_overflow.json new file mode 100755 index 00000000000..3d628a9943f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_real_neg_overflow.json @@ -0,0 +1 @@ +[-123123e100000] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_real_pos_overflow.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_real_pos_overflow.json new file mode 100755 index 00000000000..54d7d3dcdb1 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_real_pos_overflow.json @@ -0,0 +1 @@ +[123123e100000] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_real_underflow.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_real_underflow.json new file mode 100755 index 00000000000..c5236eb26bf --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_real_underflow.json @@ -0,0 +1 @@ +[123e-10000000] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_too_big_neg_int.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_too_big_neg_int.json new file mode 100755 index 00000000000..dfa38461974 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_too_big_neg_int.json @@ -0,0 +1 @@ +[-123123123123123123123123123123] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_too_big_pos_int.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_too_big_pos_int.json new file mode 100755 index 00000000000..338a8c3c0be --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_too_big_pos_int.json @@ -0,0 +1 @@ +[100000000000000000000] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_very_big_negative_int.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_very_big_negative_int.json new file mode 100755 index 00000000000..e2d9738c239 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_number_very_big_negative_int.json @@ -0,0 +1 @@ +[-237462374673276894279832749832423479823246327846] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_object_key_lone_2nd_surrogate.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_object_key_lone_2nd_surrogate.json new file mode 100755 index 00000000000..5be7ebaf98d --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_object_key_lone_2nd_surrogate.json @@ -0,0 +1 @@ +{"\uDFAA":0} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_1st_surrogate_but_2nd_missing.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_1st_surrogate_but_2nd_missing.json new file mode 100755 index 00000000000..3b9e37c67aa --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_1st_surrogate_but_2nd_missing.json @@ -0,0 +1 @@ +["\uDADA"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_1st_valid_surrogate_2nd_invalid.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_1st_valid_surrogate_2nd_invalid.json new file mode 100755 index 00000000000..487592832ed --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_1st_valid_surrogate_2nd_invalid.json @@ -0,0 +1 @@ +["\uD888\u1234"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_UTF-16LE_with_BOM.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_UTF-16LE_with_BOM.json new file mode 100755 index 00000000000..2a79c0629a4 Binary files /dev/null and b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_UTF-16LE_with_BOM.json differ diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_UTF-8_invalid_sequence.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_UTF-8_invalid_sequence.json new file mode 100755 index 00000000000..e2a968a1594 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_UTF-8_invalid_sequence.json @@ -0,0 +1 @@ +["日шú"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_UTF8_surrogate_U+D800.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_UTF8_surrogate_U+D800.json new file mode 100755 index 00000000000..916bff920fa --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_UTF8_surrogate_U+D800.json @@ -0,0 +1 @@ +["í €"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_incomplete_surrogate_and_escape_valid.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_incomplete_surrogate_and_escape_valid.json new file mode 100755 index 00000000000..3cb11d2294b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_incomplete_surrogate_and_escape_valid.json @@ -0,0 +1 @@ +["\uD800\n"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_incomplete_surrogate_pair.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_incomplete_surrogate_pair.json new file mode 100755 index 00000000000..38ec23bb0a9 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_incomplete_surrogate_pair.json @@ -0,0 +1 @@ +["\uDd1ea"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_incomplete_surrogates_escape_valid.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_incomplete_surrogates_escape_valid.json new file mode 100755 index 00000000000..c9cd6f6c31d --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_incomplete_surrogates_escape_valid.json @@ -0,0 +1 @@ +["\uD800\uD800\n"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_invalid_lonely_surrogate.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_invalid_lonely_surrogate.json new file mode 100755 index 00000000000..3abbd8d8d78 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_invalid_lonely_surrogate.json @@ -0,0 +1 @@ +["\ud800"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_invalid_surrogate.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_invalid_surrogate.json new file mode 100755 index 00000000000..ffddc04f52f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_invalid_surrogate.json @@ -0,0 +1 @@ +["\ud800abc"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_invalid_utf-8.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_invalid_utf-8.json new file mode 100755 index 00000000000..8e45a7ecae2 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_invalid_utf-8.json @@ -0,0 +1 @@ +["ÿ"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_inverted_surrogates_U+1D11E.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_inverted_surrogates_U+1D11E.json new file mode 100755 index 00000000000..0d5456cc38f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_inverted_surrogates_U+1D11E.json @@ -0,0 +1 @@ +["\uDd1e\uD834"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_iso_latin_1.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_iso_latin_1.json new file mode 100755 index 00000000000..9389c982311 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_iso_latin_1.json @@ -0,0 +1 @@ +["é"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_lone_second_surrogate.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_lone_second_surrogate.json new file mode 100755 index 00000000000..1dbd397f392 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_lone_second_surrogate.json @@ -0,0 +1 @@ +["\uDFAA"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_lone_utf8_continuation_byte.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_lone_utf8_continuation_byte.json new file mode 100755 index 00000000000..729337c0a35 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_lone_utf8_continuation_byte.json @@ -0,0 +1 @@ +[""] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_not_in_unicode_range.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_not_in_unicode_range.json new file mode 100755 index 00000000000..df90a2916c6 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_not_in_unicode_range.json @@ -0,0 +1 @@ +["ô¿¿¿"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_overlong_sequence_2_bytes.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_overlong_sequence_2_bytes.json new file mode 100755 index 00000000000..c8cee5e0a12 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_overlong_sequence_2_bytes.json @@ -0,0 +1 @@ +["À¯"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_overlong_sequence_6_bytes.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_overlong_sequence_6_bytes.json new file mode 100755 index 00000000000..9a91da791a9 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_overlong_sequence_6_bytes.json @@ -0,0 +1 @@ +["üƒ¿¿¿¿"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_overlong_sequence_6_bytes_null.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_overlong_sequence_6_bytes_null.json new file mode 100755 index 00000000000..d24fffdd982 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_overlong_sequence_6_bytes_null.json @@ -0,0 +1 @@ +["ü€€€€€"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_truncated-utf-8.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_truncated-utf-8.json new file mode 100755 index 00000000000..63c7777fb18 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_truncated-utf-8.json @@ -0,0 +1 @@ +["àÿ"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_utf16BE_no_BOM.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_utf16BE_no_BOM.json new file mode 100755 index 00000000000..57e5392ff63 Binary files /dev/null and b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_utf16BE_no_BOM.json differ diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_utf16LE_no_BOM.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_utf16LE_no_BOM.json new file mode 100755 index 00000000000..c49c1b25d8e Binary files /dev/null and b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_string_utf16LE_no_BOM.json differ diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_structure_500_nested_arrays.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_structure_500_nested_arrays.json new file mode 100755 index 00000000000..7118405898f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_structure_500_nested_arrays.json @@ -0,0 +1 @@ +[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/i_structure_UTF-8_BOM_empty_object.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_structure_UTF-8_BOM_empty_object.json new file mode 100755 index 00000000000..22fdca1b268 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/i_structure_UTF-8_BOM_empty_object.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_1_true_without_comma.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_1_true_without_comma.json new file mode 100755 index 00000000000..c14e3f6b1e9 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_1_true_without_comma.json @@ -0,0 +1 @@ +[1 true] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_a_invalid_utf8.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_a_invalid_utf8.json new file mode 100755 index 00000000000..38a86e2e651 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_a_invalid_utf8.json @@ -0,0 +1 @@ +[aå] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_colon_instead_of_comma.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_colon_instead_of_comma.json new file mode 100755 index 00000000000..0d02ad44833 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_colon_instead_of_comma.json @@ -0,0 +1 @@ +["": 1] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_comma_after_close.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_comma_after_close.json new file mode 100755 index 00000000000..2ccba8d9503 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_comma_after_close.json @@ -0,0 +1 @@ +[""], \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_comma_and_number.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_comma_and_number.json new file mode 100755 index 00000000000..d2c84e374a2 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_comma_and_number.json @@ -0,0 +1 @@ +[,1] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_double_comma.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_double_comma.json new file mode 100755 index 00000000000..0431712bc1d --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_double_comma.json @@ -0,0 +1 @@ +[1,,2] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_double_extra_comma.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_double_extra_comma.json new file mode 100755 index 00000000000..3f01d312923 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_double_extra_comma.json @@ -0,0 +1 @@ +["x",,] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_extra_close.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_extra_close.json new file mode 100755 index 00000000000..c12f9fae1cb --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_extra_close.json @@ -0,0 +1 @@ +["x"]] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_extra_comma.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_extra_comma.json new file mode 100755 index 00000000000..5f8ce18e4b2 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_extra_comma.json @@ -0,0 +1 @@ +["",] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_incomplete.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_incomplete.json new file mode 100755 index 00000000000..cc65b0b512a --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_incomplete.json @@ -0,0 +1 @@ +["x" \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_incomplete_invalid_value.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_incomplete_invalid_value.json new file mode 100755 index 00000000000..c21a8f6cff9 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_incomplete_invalid_value.json @@ -0,0 +1 @@ +[x \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_inner_array_no_comma.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_inner_array_no_comma.json new file mode 100755 index 00000000000..c70b716471b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_inner_array_no_comma.json @@ -0,0 +1 @@ +[3[4]] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_invalid_utf8.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_invalid_utf8.json new file mode 100755 index 00000000000..6099d3441a4 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_invalid_utf8.json @@ -0,0 +1 @@ +[ÿ] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_items_separated_by_semicolon.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_items_separated_by_semicolon.json new file mode 100755 index 00000000000..d4bd7314ca8 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_items_separated_by_semicolon.json @@ -0,0 +1 @@ +[1:2] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_just_comma.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_just_comma.json new file mode 100755 index 00000000000..9d7077c6804 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_just_comma.json @@ -0,0 +1 @@ +[,] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_just_minus.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_just_minus.json new file mode 100755 index 00000000000..29501c6ca23 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_just_minus.json @@ -0,0 +1 @@ +[-] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_missing_value.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_missing_value.json new file mode 100755 index 00000000000..3a6ba86f3ab --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_missing_value.json @@ -0,0 +1 @@ +[ , ""] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_newlines_unclosed.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_newlines_unclosed.json new file mode 100755 index 00000000000..64668006529 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_newlines_unclosed.json @@ -0,0 +1,3 @@ +["a", +4 +,1, \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_number_and_comma.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_number_and_comma.json new file mode 100755 index 00000000000..13f6f1d18a4 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_number_and_comma.json @@ -0,0 +1 @@ +[1,] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_number_and_several_commas.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_number_and_several_commas.json new file mode 100755 index 00000000000..0ac408cb8ae --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_number_and_several_commas.json @@ -0,0 +1 @@ +[1,,] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_spaces_vertical_tab_formfeed.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_spaces_vertical_tab_formfeed.json new file mode 100755 index 00000000000..6cd7cf5855d --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_spaces_vertical_tab_formfeed.json @@ -0,0 +1 @@ +[" a"\f] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_star_inside.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_star_inside.json new file mode 100755 index 00000000000..5a5194647ad --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_star_inside.json @@ -0,0 +1 @@ +[*] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_unclosed.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_unclosed.json new file mode 100755 index 00000000000..06073305901 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_unclosed.json @@ -0,0 +1 @@ +["" \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_unclosed_trailing_comma.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_unclosed_trailing_comma.json new file mode 100755 index 00000000000..6604698ffcd --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_unclosed_trailing_comma.json @@ -0,0 +1 @@ +[1, \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_unclosed_with_new_lines.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_unclosed_with_new_lines.json new file mode 100755 index 00000000000..4f61de3fb1d --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_unclosed_with_new_lines.json @@ -0,0 +1,3 @@ +[1, +1 +,1 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_unclosed_with_object_inside.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_unclosed_with_object_inside.json new file mode 100755 index 00000000000..043a87e2db9 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_array_unclosed_with_object_inside.json @@ -0,0 +1 @@ +[{} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_incomplete_false.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_incomplete_false.json new file mode 100755 index 00000000000..eb18c6a1437 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_incomplete_false.json @@ -0,0 +1 @@ +[fals] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_incomplete_null.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_incomplete_null.json new file mode 100755 index 00000000000..c18ef538510 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_incomplete_null.json @@ -0,0 +1 @@ +[nul] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_incomplete_true.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_incomplete_true.json new file mode 100755 index 00000000000..f451ac6d2e7 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_incomplete_true.json @@ -0,0 +1 @@ +[tru] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_multidigit_number_then_00.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_multidigit_number_then_00.json new file mode 100755 index 00000000000..c22507b864f Binary files /dev/null and b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_multidigit_number_then_00.json differ diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_++.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_++.json new file mode 100755 index 00000000000..bdb62aaf4d9 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_++.json @@ -0,0 +1 @@ +[++1234] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_+1.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_+1.json new file mode 100755 index 00000000000..3cbe58c92b1 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_+1.json @@ -0,0 +1 @@ +[+1] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_+Inf.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_+Inf.json new file mode 100755 index 00000000000..871ae14d535 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_+Inf.json @@ -0,0 +1 @@ +[+Inf] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_-01.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_-01.json new file mode 100755 index 00000000000..0df32bac807 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_-01.json @@ -0,0 +1 @@ +[-01] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_-1.0..json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_-1.0..json new file mode 100755 index 00000000000..7cf55a85a73 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_-1.0..json @@ -0,0 +1 @@ +[-1.0.] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_-2..json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_-2..json new file mode 100755 index 00000000000..9be84365d09 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_-2..json @@ -0,0 +1 @@ +[-2.] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_-NaN.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_-NaN.json new file mode 100755 index 00000000000..f61615d404e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_-NaN.json @@ -0,0 +1 @@ +[-NaN] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_.-1.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_.-1.json new file mode 100755 index 00000000000..1c9f2dd1b71 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_.-1.json @@ -0,0 +1 @@ +[.-1] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_.2e-3.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_.2e-3.json new file mode 100755 index 00000000000..c6c976f2577 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_.2e-3.json @@ -0,0 +1 @@ +[.2e-3] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0.1.2.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0.1.2.json new file mode 100755 index 00000000000..c83a25621e3 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0.1.2.json @@ -0,0 +1 @@ +[0.1.2] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0.3e+.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0.3e+.json new file mode 100755 index 00000000000..a55a1bfefa3 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0.3e+.json @@ -0,0 +1 @@ +[0.3e+] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0.3e.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0.3e.json new file mode 100755 index 00000000000..3dd5df4b3a8 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0.3e.json @@ -0,0 +1 @@ +[0.3e] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0.e1.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0.e1.json new file mode 100755 index 00000000000..c92c71ccb23 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0.e1.json @@ -0,0 +1 @@ +[0.e1] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0_capital_E+.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0_capital_E+.json new file mode 100755 index 00000000000..3ba2c7d6d09 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0_capital_E+.json @@ -0,0 +1 @@ +[0E+] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0_capital_E.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0_capital_E.json new file mode 100755 index 00000000000..5301840d1c3 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0_capital_E.json @@ -0,0 +1 @@ +[0E] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0e+.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0e+.json new file mode 100755 index 00000000000..8ab0bc4b8b2 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0e+.json @@ -0,0 +1 @@ +[0e+] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0e.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0e.json new file mode 100755 index 00000000000..47ec421bb62 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_0e.json @@ -0,0 +1 @@ +[0e] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_1.0e+.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_1.0e+.json new file mode 100755 index 00000000000..cd84b9f69e3 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_1.0e+.json @@ -0,0 +1 @@ +[1.0e+] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_1.0e-.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_1.0e-.json new file mode 100755 index 00000000000..4eb7afa0f99 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_1.0e-.json @@ -0,0 +1 @@ +[1.0e-] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_1.0e.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_1.0e.json new file mode 100755 index 00000000000..21753f4c745 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_1.0e.json @@ -0,0 +1 @@ +[1.0e] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_1_000.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_1_000.json new file mode 100755 index 00000000000..7b18b66b38e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_1_000.json @@ -0,0 +1 @@ +[1 000.0] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_1eE2.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_1eE2.json new file mode 100755 index 00000000000..4318a341d71 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_1eE2.json @@ -0,0 +1 @@ +[1eE2] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_2.e+3.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_2.e+3.json new file mode 100755 index 00000000000..4442f394dd7 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_2.e+3.json @@ -0,0 +1 @@ +[2.e+3] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_2.e-3.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_2.e-3.json new file mode 100755 index 00000000000..a65060edfcf --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_2.e-3.json @@ -0,0 +1 @@ +[2.e-3] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_2.e3.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_2.e3.json new file mode 100755 index 00000000000..66f7cf701bc --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_2.e3.json @@ -0,0 +1 @@ +[2.e3] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_9.e+.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_9.e+.json new file mode 100755 index 00000000000..732a7b11ce6 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_9.e+.json @@ -0,0 +1 @@ +[9.e+] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_Inf.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_Inf.json new file mode 100755 index 00000000000..c40c734c3cd --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_Inf.json @@ -0,0 +1 @@ +[Inf] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_NaN.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_NaN.json new file mode 100755 index 00000000000..4992317909e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_NaN.json @@ -0,0 +1 @@ +[NaN] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_U+FF11_fullwidth_digit_one.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_U+FF11_fullwidth_digit_one.json new file mode 100755 index 00000000000..b14587e5ebb --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_U+FF11_fullwidth_digit_one.json @@ -0,0 +1 @@ +[1] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_expression.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_expression.json new file mode 100755 index 00000000000..76fdbc8a499 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_expression.json @@ -0,0 +1 @@ +[1+2] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_hex_1_digit.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_hex_1_digit.json new file mode 100755 index 00000000000..3b214880c63 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_hex_1_digit.json @@ -0,0 +1 @@ +[0x1] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_hex_2_digits.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_hex_2_digits.json new file mode 100755 index 00000000000..83e516ab0e3 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_hex_2_digits.json @@ -0,0 +1 @@ +[0x42] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_infinity.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_infinity.json new file mode 100755 index 00000000000..8c2baf783a8 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_infinity.json @@ -0,0 +1 @@ +[Infinity] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_invalid+-.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_invalid+-.json new file mode 100755 index 00000000000..1cce602b518 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_invalid+-.json @@ -0,0 +1 @@ +[0e+-1] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_invalid-negative-real.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_invalid-negative-real.json new file mode 100755 index 00000000000..5fc3c1efb60 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_invalid-negative-real.json @@ -0,0 +1 @@ +[-123.123foo] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_invalid-utf-8-in-bigger-int.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_invalid-utf-8-in-bigger-int.json new file mode 100755 index 00000000000..3b97e580e85 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_invalid-utf-8-in-bigger-int.json @@ -0,0 +1 @@ +[123å] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_invalid-utf-8-in-exponent.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_invalid-utf-8-in-exponent.json new file mode 100755 index 00000000000..ea35d723cde --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_invalid-utf-8-in-exponent.json @@ -0,0 +1 @@ +[1e1å] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_invalid-utf-8-in-int.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_invalid-utf-8-in-int.json new file mode 100755 index 00000000000..371226e4cd9 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_invalid-utf-8-in-int.json @@ -0,0 +1 @@ +[0å] diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_minus_infinity.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_minus_infinity.json new file mode 100755 index 00000000000..cf4133d22d6 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_minus_infinity.json @@ -0,0 +1 @@ +[-Infinity] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_minus_sign_with_trailing_garbage.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_minus_sign_with_trailing_garbage.json new file mode 100755 index 00000000000..a6d8e78e7ce --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_minus_sign_with_trailing_garbage.json @@ -0,0 +1 @@ +[-foo] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_minus_space_1.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_minus_space_1.json new file mode 100755 index 00000000000..9a5ebedf679 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_minus_space_1.json @@ -0,0 +1 @@ +[- 1] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_neg_int_starting_with_zero.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_neg_int_starting_with_zero.json new file mode 100755 index 00000000000..67af0960af7 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_neg_int_starting_with_zero.json @@ -0,0 +1 @@ +[-012] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_neg_real_without_int_part.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_neg_real_without_int_part.json new file mode 100755 index 00000000000..1f2a43496ed --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_neg_real_without_int_part.json @@ -0,0 +1 @@ +[-.123] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_neg_with_garbage_at_end.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_neg_with_garbage_at_end.json new file mode 100755 index 00000000000..2aa73119fbb --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_neg_with_garbage_at_end.json @@ -0,0 +1 @@ +[-1x] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_real_garbage_after_e.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_real_garbage_after_e.json new file mode 100755 index 00000000000..9213dfca8de --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_real_garbage_after_e.json @@ -0,0 +1 @@ +[1ea] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_real_with_invalid_utf8_after_e.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_real_with_invalid_utf8_after_e.json new file mode 100755 index 00000000000..1e52ef964cf --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_real_with_invalid_utf8_after_e.json @@ -0,0 +1 @@ +[1eå] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_real_without_fractional_part.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_real_without_fractional_part.json new file mode 100755 index 00000000000..1de287cf892 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_real_without_fractional_part.json @@ -0,0 +1 @@ +[1.] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_starting_with_dot.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_starting_with_dot.json new file mode 100755 index 00000000000..f682dbdce03 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_starting_with_dot.json @@ -0,0 +1 @@ +[.123] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_with_alpha.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_with_alpha.json new file mode 100755 index 00000000000..1e42d81822b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_with_alpha.json @@ -0,0 +1 @@ +[1.2a-3] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_with_alpha_char.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_with_alpha_char.json new file mode 100755 index 00000000000..b79daccb8a6 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_with_alpha_char.json @@ -0,0 +1 @@ +[1.8011670033376514H-308] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_with_leading_zero.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_with_leading_zero.json new file mode 100755 index 00000000000..7106da1f3b8 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_number_with_leading_zero.json @@ -0,0 +1 @@ +[012] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_bad_value.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_bad_value.json new file mode 100755 index 00000000000..a03a8c03b72 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_bad_value.json @@ -0,0 +1 @@ +["x", truth] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_bracket_key.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_bracket_key.json new file mode 100755 index 00000000000..cc443b48321 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_bracket_key.json @@ -0,0 +1 @@ +{[: "x"} diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_comma_instead_of_colon.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_comma_instead_of_colon.json new file mode 100755 index 00000000000..8d56377087d --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_comma_instead_of_colon.json @@ -0,0 +1 @@ +{"x", null} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_double_colon.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_double_colon.json new file mode 100755 index 00000000000..80e8c7b89a9 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_double_colon.json @@ -0,0 +1 @@ +{"x"::"b"} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_emoji.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_emoji.json new file mode 100755 index 00000000000..cb4078eaa10 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_emoji.json @@ -0,0 +1 @@ +{🇨🇭} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_garbage_at_end.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_garbage_at_end.json new file mode 100755 index 00000000000..80c42cbadcf --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_garbage_at_end.json @@ -0,0 +1 @@ +{"a":"a" 123} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_key_with_single_quotes.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_key_with_single_quotes.json new file mode 100755 index 00000000000..77c32759962 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_key_with_single_quotes.json @@ -0,0 +1 @@ +{key: 'value'} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_lone_continuation_byte_in_key_and_trailing_comma.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_lone_continuation_byte_in_key_and_trailing_comma.json new file mode 100755 index 00000000000..aa2cb637cd3 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_lone_continuation_byte_in_key_and_trailing_comma.json @@ -0,0 +1 @@ +{"¹":"0",} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_missing_colon.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_missing_colon.json new file mode 100755 index 00000000000..b98eff62da4 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_missing_colon.json @@ -0,0 +1 @@ +{"a" b} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_missing_key.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_missing_key.json new file mode 100755 index 00000000000..b4fb0f528ed --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_missing_key.json @@ -0,0 +1 @@ +{:"b"} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_missing_semicolon.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_missing_semicolon.json new file mode 100755 index 00000000000..e3451384f81 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_missing_semicolon.json @@ -0,0 +1 @@ +{"a" "b"} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_missing_value.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_missing_value.json new file mode 100755 index 00000000000..3ef538a60e6 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_missing_value.json @@ -0,0 +1 @@ +{"a": \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_no-colon.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_no-colon.json new file mode 100755 index 00000000000..f3797b35764 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_no-colon.json @@ -0,0 +1 @@ +{"a" \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_non_string_key.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_non_string_key.json new file mode 100755 index 00000000000..b9945b34b44 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_non_string_key.json @@ -0,0 +1 @@ +{1:1} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_non_string_key_but_huge_number_instead.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_non_string_key_but_huge_number_instead.json new file mode 100755 index 00000000000..b37fa86c0e0 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_non_string_key_but_huge_number_instead.json @@ -0,0 +1 @@ +{9999E9999:1} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_repeated_null_null.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_repeated_null_null.json new file mode 100755 index 00000000000..f7d2959d0d4 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_repeated_null_null.json @@ -0,0 +1 @@ +{null:null,null:null} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_several_trailing_commas.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_several_trailing_commas.json new file mode 100755 index 00000000000..3c9afe8dc90 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_several_trailing_commas.json @@ -0,0 +1 @@ +{"id":0,,,,,} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_single_quote.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_single_quote.json new file mode 100755 index 00000000000..e5cdf976ad6 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_single_quote.json @@ -0,0 +1 @@ +{'a':0} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_trailing_comma.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_trailing_comma.json new file mode 100755 index 00000000000..a4b02509459 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_trailing_comma.json @@ -0,0 +1 @@ +{"id":0,} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_trailing_comment.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_trailing_comment.json new file mode 100755 index 00000000000..a372c6553d2 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_trailing_comment.json @@ -0,0 +1 @@ +{"a":"b"}/**/ \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_trailing_comment_open.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_trailing_comment_open.json new file mode 100755 index 00000000000..d557f41ca45 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_trailing_comment_open.json @@ -0,0 +1 @@ +{"a":"b"}/**// \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_trailing_comment_slash_open.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_trailing_comment_slash_open.json new file mode 100755 index 00000000000..e335136c079 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_trailing_comment_slash_open.json @@ -0,0 +1 @@ +{"a":"b"}// \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_trailing_comment_slash_open_incomplete.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_trailing_comment_slash_open_incomplete.json new file mode 100755 index 00000000000..d892e49f176 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_trailing_comment_slash_open_incomplete.json @@ -0,0 +1 @@ +{"a":"b"}/ \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_two_commas_in_a_row.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_two_commas_in_a_row.json new file mode 100755 index 00000000000..7c639ae6496 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_two_commas_in_a_row.json @@ -0,0 +1 @@ +{"a":"b",,"c":"d"} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_unquoted_key.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_unquoted_key.json new file mode 100755 index 00000000000..8ba137293c3 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_unquoted_key.json @@ -0,0 +1 @@ +{a: "b"} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_unterminated-value.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_unterminated-value.json new file mode 100755 index 00000000000..7fe699a6a3f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_unterminated-value.json @@ -0,0 +1 @@ +{"a":"a \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_with_single_string.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_with_single_string.json new file mode 100755 index 00000000000..d63f7fbb7e3 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_with_single_string.json @@ -0,0 +1 @@ +{ "foo" : "bar", "a" } \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_with_trailing_garbage.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_with_trailing_garbage.json new file mode 100755 index 00000000000..787c8f0a8c0 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_object_with_trailing_garbage.json @@ -0,0 +1 @@ +{"a":"b"}# \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_single_space.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_single_space.json new file mode 100755 index 00000000000..0519ecba6ea --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_single_space.json @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_1_surrogate_then_escape.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_1_surrogate_then_escape.json new file mode 100755 index 00000000000..acec66d8f4b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_1_surrogate_then_escape.json @@ -0,0 +1 @@ +["\uD800\"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_1_surrogate_then_escape_u.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_1_surrogate_then_escape_u.json new file mode 100755 index 00000000000..e834b05e963 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_1_surrogate_then_escape_u.json @@ -0,0 +1 @@ +["\uD800\u"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_1_surrogate_then_escape_u1.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_1_surrogate_then_escape_u1.json new file mode 100755 index 00000000000..a04cd348928 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_1_surrogate_then_escape_u1.json @@ -0,0 +1 @@ +["\uD800\u1"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_1_surrogate_then_escape_u1x.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_1_surrogate_then_escape_u1x.json new file mode 100755 index 00000000000..bfbd234098f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_1_surrogate_then_escape_u1x.json @@ -0,0 +1 @@ +["\uD800\u1x"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_accentuated_char_no_quotes.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_accentuated_char_no_quotes.json new file mode 100755 index 00000000000..fd6895693f5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_accentuated_char_no_quotes.json @@ -0,0 +1 @@ +[é] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_backslash_00.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_backslash_00.json new file mode 100755 index 00000000000..b5bf267b5d4 Binary files /dev/null and b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_backslash_00.json differ diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_escape_x.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_escape_x.json new file mode 100755 index 00000000000..fae291938d9 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_escape_x.json @@ -0,0 +1 @@ +["\x00"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_escaped_backslash_bad.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_escaped_backslash_bad.json new file mode 100755 index 00000000000..016fcb47ef5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_escaped_backslash_bad.json @@ -0,0 +1 @@ +["\\\"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_escaped_ctrl_char_tab.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_escaped_ctrl_char_tab.json new file mode 100755 index 00000000000..f35ea382bb0 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_escaped_ctrl_char_tab.json @@ -0,0 +1 @@ +["\ "] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_escaped_emoji.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_escaped_emoji.json new file mode 100755 index 00000000000..a2777542136 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_escaped_emoji.json @@ -0,0 +1 @@ +["\🌀"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_incomplete_escape.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_incomplete_escape.json new file mode 100755 index 00000000000..3415c33ca8a --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_incomplete_escape.json @@ -0,0 +1 @@ +["\"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_incomplete_escaped_character.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_incomplete_escaped_character.json new file mode 100755 index 00000000000..0f2197ea290 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_incomplete_escaped_character.json @@ -0,0 +1 @@ +["\u00A"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_incomplete_surrogate.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_incomplete_surrogate.json new file mode 100755 index 00000000000..75504a65618 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_incomplete_surrogate.json @@ -0,0 +1 @@ +["\uD834\uDd"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_incomplete_surrogate_escape_invalid.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_incomplete_surrogate_escape_invalid.json new file mode 100755 index 00000000000..bd9656060df --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_incomplete_surrogate_escape_invalid.json @@ -0,0 +1 @@ +["\uD800\uD800\x"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_invalid-utf-8-in-escape.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_invalid-utf-8-in-escape.json new file mode 100755 index 00000000000..0c43006430d --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_invalid-utf-8-in-escape.json @@ -0,0 +1 @@ +["\uå"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_invalid_backslash_esc.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_invalid_backslash_esc.json new file mode 100755 index 00000000000..d1eb60921a0 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_invalid_backslash_esc.json @@ -0,0 +1 @@ +["\a"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_invalid_unicode_escape.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_invalid_unicode_escape.json new file mode 100755 index 00000000000..7608cb6ba89 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_invalid_unicode_escape.json @@ -0,0 +1 @@ +["\uqqqq"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_invalid_utf8_after_escape.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_invalid_utf8_after_escape.json new file mode 100755 index 00000000000..2f757a25b54 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_invalid_utf8_after_escape.json @@ -0,0 +1 @@ +["\å"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_leading_uescaped_thinspace.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_leading_uescaped_thinspace.json new file mode 100755 index 00000000000..7b297c6365a --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_leading_uescaped_thinspace.json @@ -0,0 +1 @@ +[\u0020"asd"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_no_quotes_with_bad_escape.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_no_quotes_with_bad_escape.json new file mode 100755 index 00000000000..01bc70abae6 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_no_quotes_with_bad_escape.json @@ -0,0 +1 @@ +[\n] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_single_doublequote.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_single_doublequote.json new file mode 100755 index 00000000000..9d68933c44f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_single_doublequote.json @@ -0,0 +1 @@ +" \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_single_quote.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_single_quote.json new file mode 100755 index 00000000000..caff239bfc3 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_single_quote.json @@ -0,0 +1 @@ +['single quote'] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_single_string_no_double_quotes.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_single_string_no_double_quotes.json new file mode 100755 index 00000000000..f2ba8f84ab5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_single_string_no_double_quotes.json @@ -0,0 +1 @@ +abc \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_start_escape_unclosed.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_start_escape_unclosed.json new file mode 100755 index 00000000000..db62a46fcbc --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_start_escape_unclosed.json @@ -0,0 +1 @@ +["\ \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_unescaped_crtl_char.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_unescaped_crtl_char.json new file mode 100755 index 00000000000..9f21348071d Binary files /dev/null and b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_unescaped_crtl_char.json differ diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_unescaped_ctrl_char.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_unescaped_ctrl_char.json new file mode 100755 index 00000000000..9f21348071d Binary files /dev/null and b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_unescaped_ctrl_char.json differ diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_unescaped_newline.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_unescaped_newline.json new file mode 100755 index 00000000000..700d3608691 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_unescaped_newline.json @@ -0,0 +1,2 @@ +["new +line"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_unescaped_tab.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_unescaped_tab.json new file mode 100755 index 00000000000..160264a2d99 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_unescaped_tab.json @@ -0,0 +1 @@ +[" "] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_unicode_CapitalU.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_unicode_CapitalU.json new file mode 100755 index 00000000000..17332bb174c --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_unicode_CapitalU.json @@ -0,0 +1 @@ +"\UA66D" \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_with_trailing_garbage.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_with_trailing_garbage.json new file mode 100755 index 00000000000..efe3bd272c4 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_string_with_trailing_garbage.json @@ -0,0 +1 @@ +""x \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_100000_opening_arrays.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_100000_opening_arrays.json new file mode 100755 index 00000000000..a4823eecceb --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_100000_opening_arrays.json @@ -0,0 +1 @@ +[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_U+2060_word_joined.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_U+2060_word_joined.json new file mode 100755 index 00000000000..81156a6996e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_U+2060_word_joined.json @@ -0,0 +1 @@ +[â ] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_UTF8_BOM_no_data.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_UTF8_BOM_no_data.json new file mode 100755 index 00000000000..5f282702bb0 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_UTF8_BOM_no_data.json @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_angle_bracket_..json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_angle_bracket_..json new file mode 100755 index 00000000000..a56fef0b021 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_angle_bracket_..json @@ -0,0 +1 @@ +<.> \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_angle_bracket_null.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_angle_bracket_null.json new file mode 100755 index 00000000000..617f2625493 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_angle_bracket_null.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_array_trailing_garbage.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_array_trailing_garbage.json new file mode 100755 index 00000000000..5a745e6f3c3 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_array_trailing_garbage.json @@ -0,0 +1 @@ +[1]x \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_array_with_extra_array_close.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_array_with_extra_array_close.json new file mode 100755 index 00000000000..6cfb1398d22 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_array_with_extra_array_close.json @@ -0,0 +1 @@ +[1]] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_array_with_unclosed_string.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_array_with_unclosed_string.json new file mode 100755 index 00000000000..ba6b1788b67 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_array_with_unclosed_string.json @@ -0,0 +1 @@ +["asd] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_ascii-unicode-identifier.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_ascii-unicode-identifier.json new file mode 100755 index 00000000000..ef2ab62fe76 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_ascii-unicode-identifier.json @@ -0,0 +1 @@ +aÃ¥ \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_capitalized_True.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_capitalized_True.json new file mode 100755 index 00000000000..7cd88469ab3 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_capitalized_True.json @@ -0,0 +1 @@ +[True] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_close_unopened_array.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_close_unopened_array.json new file mode 100755 index 00000000000..d2af0c646a8 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_close_unopened_array.json @@ -0,0 +1 @@ +1] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_comma_instead_of_closing_brace.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_comma_instead_of_closing_brace.json new file mode 100755 index 00000000000..ac61b820068 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_comma_instead_of_closing_brace.json @@ -0,0 +1 @@ +{"x": true, \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_double_array.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_double_array.json new file mode 100755 index 00000000000..058d1626e5a --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_double_array.json @@ -0,0 +1 @@ +[][] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_end_array.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_end_array.json new file mode 100755 index 00000000000..54caf60b136 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_end_array.json @@ -0,0 +1 @@ +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_incomplete_UTF8_BOM.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_incomplete_UTF8_BOM.json new file mode 100755 index 00000000000..bfcdd514f33 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_incomplete_UTF8_BOM.json @@ -0,0 +1 @@ +ï»{} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_lone-invalid-utf-8.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_lone-invalid-utf-8.json new file mode 100755 index 00000000000..8b1296cad20 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_lone-invalid-utf-8.json @@ -0,0 +1 @@ +å \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_lone-open-bracket.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_lone-open-bracket.json new file mode 100755 index 00000000000..8e2f0bef135 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_lone-open-bracket.json @@ -0,0 +1 @@ +[ \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_no_data.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_no_data.json new file mode 100755 index 00000000000..e69de29bb2d diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_null-byte-outside-string.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_null-byte-outside-string.json new file mode 100755 index 00000000000..326db14422a Binary files /dev/null and b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_null-byte-outside-string.json differ diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_number_with_trailing_garbage.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_number_with_trailing_garbage.json new file mode 100755 index 00000000000..0746539d246 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_number_with_trailing_garbage.json @@ -0,0 +1 @@ +2@ \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_object_followed_by_closing_object.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_object_followed_by_closing_object.json new file mode 100755 index 00000000000..aa9ebaec570 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_object_followed_by_closing_object.json @@ -0,0 +1 @@ +{}} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_object_unclosed_no_value.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_object_unclosed_no_value.json new file mode 100755 index 00000000000..17d045147fe --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_object_unclosed_no_value.json @@ -0,0 +1 @@ +{"": \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_object_with_comment.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_object_with_comment.json new file mode 100755 index 00000000000..ed1b569b704 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_object_with_comment.json @@ -0,0 +1 @@ +{"a":/*comment*/"b"} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_object_with_trailing_garbage.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_object_with_trailing_garbage.json new file mode 100755 index 00000000000..9ca2336d745 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_object_with_trailing_garbage.json @@ -0,0 +1 @@ +{"a": true} "x" \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_array_apostrophe.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_array_apostrophe.json new file mode 100755 index 00000000000..8bebe3af09a --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_array_apostrophe.json @@ -0,0 +1 @@ +[' \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_array_comma.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_array_comma.json new file mode 100755 index 00000000000..6295fdc36db --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_array_comma.json @@ -0,0 +1 @@ +[, \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_array_object.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_array_object.json new file mode 100755 index 00000000000..e870445b2e2 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_array_object.json @@ -0,0 +1 @@ +[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"": diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_array_open_object.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_array_open_object.json new file mode 100755 index 00000000000..7a63c8c57c8 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_array_open_object.json @@ -0,0 +1 @@ +[{ \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_array_open_string.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_array_open_string.json new file mode 100755 index 00000000000..9822a6baf7e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_array_open_string.json @@ -0,0 +1 @@ +["a \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_array_string.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_array_string.json new file mode 100755 index 00000000000..42a61936202 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_array_string.json @@ -0,0 +1 @@ +["a" \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_object.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_object.json new file mode 100755 index 00000000000..81750b96f9d --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_object.json @@ -0,0 +1 @@ +{ \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_object_close_array.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_object_close_array.json new file mode 100755 index 00000000000..eebc700a101 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_object_close_array.json @@ -0,0 +1 @@ +{] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_object_comma.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_object_comma.json new file mode 100755 index 00000000000..47bc9106f86 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_object_comma.json @@ -0,0 +1 @@ +{, \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_object_open_array.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_object_open_array.json new file mode 100755 index 00000000000..381ede5dea5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_object_open_array.json @@ -0,0 +1 @@ +{[ \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_object_open_string.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_object_open_string.json new file mode 100755 index 00000000000..328c30cd782 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_object_open_string.json @@ -0,0 +1 @@ +{"a \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_object_string_with_apostrophes.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_object_string_with_apostrophes.json new file mode 100755 index 00000000000..9dba17090cf --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_object_string_with_apostrophes.json @@ -0,0 +1 @@ +{'a' \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_open.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_open.json new file mode 100755 index 00000000000..841fd5f8640 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_open_open.json @@ -0,0 +1 @@ +["\{["\{["\{["\{ \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_single_eacute.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_single_eacute.json new file mode 100755 index 00000000000..92a39f398b8 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_single_eacute.json @@ -0,0 +1 @@ +é \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_single_star.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_single_star.json new file mode 100755 index 00000000000..f59ec20aabf --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_single_star.json @@ -0,0 +1 @@ +* \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_trailing_#.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_trailing_#.json new file mode 100755 index 00000000000..8986110875a --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_trailing_#.json @@ -0,0 +1 @@ +{"a":"b"}#{} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_uescaped_LF_before_string.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_uescaped_LF_before_string.json new file mode 100755 index 00000000000..df2f0f24224 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_uescaped_LF_before_string.json @@ -0,0 +1 @@ +[\u000A""] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_unclosed_array.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_unclosed_array.json new file mode 100755 index 00000000000..11209515c8d --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_unclosed_array.json @@ -0,0 +1 @@ +[1 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_unclosed_array_partial_null.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_unclosed_array_partial_null.json new file mode 100755 index 00000000000..0d591762c12 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_unclosed_array_partial_null.json @@ -0,0 +1 @@ +[ false, nul \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_unclosed_array_unfinished_false.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_unclosed_array_unfinished_false.json new file mode 100755 index 00000000000..a2ff8504a9c --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_unclosed_array_unfinished_false.json @@ -0,0 +1 @@ +[ true, fals \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_unclosed_array_unfinished_true.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_unclosed_array_unfinished_true.json new file mode 100755 index 00000000000..3149e8f5a7a --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_unclosed_array_unfinished_true.json @@ -0,0 +1 @@ +[ false, tru \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_unclosed_object.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_unclosed_object.json new file mode 100755 index 00000000000..694d69dbd00 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_unclosed_object.json @@ -0,0 +1 @@ +{"asd":"asd" \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_unicode-identifier.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_unicode-identifier.json new file mode 100755 index 00000000000..7284aea33d3 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_unicode-identifier.json @@ -0,0 +1 @@ +Ã¥ \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_whitespace_U+2060_word_joiner.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_whitespace_U+2060_word_joiner.json new file mode 100755 index 00000000000..81156a6996e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_whitespace_U+2060_word_joiner.json @@ -0,0 +1 @@ +[â ] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_whitespace_formfeed.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_whitespace_formfeed.json new file mode 100755 index 00000000000..a9ea535d1bb --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/n_structure_whitespace_formfeed.json @@ -0,0 +1 @@ +[ ] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_arraysWithSpaces.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_arraysWithSpaces.json new file mode 100755 index 00000000000..582290798f4 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_arraysWithSpaces.json @@ -0,0 +1 @@ +[[] ] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_empty-string.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_empty-string.json new file mode 100755 index 00000000000..93b6be2bcca --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_empty-string.json @@ -0,0 +1 @@ +[""] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_empty.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_empty.json new file mode 100755 index 00000000000..0637a088a01 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_empty.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_ending_with_newline.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_ending_with_newline.json new file mode 100755 index 00000000000..eac5f7b46e0 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_ending_with_newline.json @@ -0,0 +1 @@ +["a"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_false.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_false.json new file mode 100755 index 00000000000..67b2f07601e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_false.json @@ -0,0 +1 @@ +[false] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_heterogeneous.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_heterogeneous.json new file mode 100755 index 00000000000..d3c1e264845 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_heterogeneous.json @@ -0,0 +1 @@ +[null, 1, "1", {}] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_null.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_null.json new file mode 100755 index 00000000000..500db4a86aa --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_null.json @@ -0,0 +1 @@ +[null] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_with_1_and_newline.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_with_1_and_newline.json new file mode 100755 index 00000000000..994825500ae --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_with_1_and_newline.json @@ -0,0 +1,2 @@ +[1 +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_with_leading_space.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_with_leading_space.json new file mode 100755 index 00000000000..18bfe6422c7 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_with_leading_space.json @@ -0,0 +1 @@ + [1] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_with_several_null.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_with_several_null.json new file mode 100755 index 00000000000..99f6c5d1d88 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_with_several_null.json @@ -0,0 +1 @@ +[1,null,null,null,2] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_with_trailing_space.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_with_trailing_space.json new file mode 100755 index 00000000000..de9e7a94492 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_array_with_trailing_space.json @@ -0,0 +1 @@ +[2] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number.json new file mode 100755 index 00000000000..e5f5cc3340d --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number.json @@ -0,0 +1 @@ +[123e65] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_0e+1.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_0e+1.json new file mode 100755 index 00000000000..d1d3967065c --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_0e+1.json @@ -0,0 +1 @@ +[0e+1] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_0e1.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_0e1.json new file mode 100755 index 00000000000..3283a793651 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_0e1.json @@ -0,0 +1 @@ +[0e1] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_after_space.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_after_space.json new file mode 100755 index 00000000000..623570d9604 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_after_space.json @@ -0,0 +1 @@ +[ 4] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_double_close_to_zero.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_double_close_to_zero.json new file mode 100755 index 00000000000..96555ff7823 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_double_close_to_zero.json @@ -0,0 +1 @@ +[-0.000000000000000000000000000000000000000000000000000000000000000000000000000001] diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_int_with_exp.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_int_with_exp.json new file mode 100755 index 00000000000..a4ca9e754fb --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_int_with_exp.json @@ -0,0 +1 @@ +[20e1] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_minus_zero.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_minus_zero.json new file mode 100755 index 00000000000..37af1312ab5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_minus_zero.json @@ -0,0 +1 @@ +[-0] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_negative_int.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_negative_int.json new file mode 100755 index 00000000000..8e30f8bd966 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_negative_int.json @@ -0,0 +1 @@ +[-123] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_negative_one.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_negative_one.json new file mode 100755 index 00000000000..99d21a2a0f0 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_negative_one.json @@ -0,0 +1 @@ +[-1] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_negative_zero.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_negative_zero.json new file mode 100755 index 00000000000..37af1312ab5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_negative_zero.json @@ -0,0 +1 @@ +[-0] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_real_capital_e.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_real_capital_e.json new file mode 100755 index 00000000000..6edbdfcb180 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_real_capital_e.json @@ -0,0 +1 @@ +[1E22] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_real_capital_e_neg_exp.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_real_capital_e_neg_exp.json new file mode 100755 index 00000000000..0a01bd3ef4c --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_real_capital_e_neg_exp.json @@ -0,0 +1 @@ +[1E-2] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_real_capital_e_pos_exp.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_real_capital_e_pos_exp.json new file mode 100755 index 00000000000..5a8fc097242 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_real_capital_e_pos_exp.json @@ -0,0 +1 @@ +[1E+2] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_real_exponent.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_real_exponent.json new file mode 100755 index 00000000000..da2522d61a1 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_real_exponent.json @@ -0,0 +1 @@ +[123e45] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_real_fraction_exponent.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_real_fraction_exponent.json new file mode 100755 index 00000000000..3944a7a454b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_real_fraction_exponent.json @@ -0,0 +1 @@ +[123.456e78] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_real_neg_exp.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_real_neg_exp.json new file mode 100755 index 00000000000..ca40d3c2553 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_real_neg_exp.json @@ -0,0 +1 @@ +[1e-2] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_real_pos_exponent.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_real_pos_exponent.json new file mode 100755 index 00000000000..343601d51fd --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_real_pos_exponent.json @@ -0,0 +1 @@ +[1e+2] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_simple_int.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_simple_int.json new file mode 100755 index 00000000000..e47f69afcf4 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_simple_int.json @@ -0,0 +1 @@ +[123] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_simple_real.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_simple_real.json new file mode 100755 index 00000000000..b02878e5fc1 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_number_simple_real.json @@ -0,0 +1 @@ +[123.456789] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object.json new file mode 100755 index 00000000000..78262eda3fa --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object.json @@ -0,0 +1 @@ +{"asd":"sdf", "dfg":"fgh"} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_basic.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_basic.json new file mode 100755 index 00000000000..646bbe7bb1f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_basic.json @@ -0,0 +1 @@ +{"asd":"sdf"} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_duplicated_key.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_duplicated_key.json new file mode 100755 index 00000000000..bbc2e1ce433 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_duplicated_key.json @@ -0,0 +1 @@ +{"a":"b","a":"c"} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_duplicated_key_and_value.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_duplicated_key_and_value.json new file mode 100755 index 00000000000..211581c2071 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_duplicated_key_and_value.json @@ -0,0 +1 @@ +{"a":"b","a":"b"} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_empty.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_empty.json new file mode 100755 index 00000000000..9e26dfeeb6e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_empty.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_empty_key.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_empty_key.json new file mode 100755 index 00000000000..c0013d3b8bd --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_empty_key.json @@ -0,0 +1 @@ +{"":0} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_escaped_null_in_key.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_escaped_null_in_key.json new file mode 100755 index 00000000000..593f0f67f9c --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_escaped_null_in_key.json @@ -0,0 +1 @@ +{"foo\u0000bar": 42} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_extreme_numbers.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_extreme_numbers.json new file mode 100755 index 00000000000..a0d3531c32f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_extreme_numbers.json @@ -0,0 +1 @@ +{ "min": -1.0e+28, "max": 1.0e+28 } \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_long_strings.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_long_strings.json new file mode 100755 index 00000000000..bdc4a08719e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_long_strings.json @@ -0,0 +1 @@ +{"x":[{"id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}], "id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_simple.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_simple.json new file mode 100755 index 00000000000..dacac917fb7 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_simple.json @@ -0,0 +1 @@ +{"a":[]} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_string_unicode.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_string_unicode.json new file mode 100755 index 00000000000..8effdb297c7 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_string_unicode.json @@ -0,0 +1 @@ +{"title":"\u041f\u043e\u043b\u0442\u043e\u0440\u0430 \u0417\u0435\u043c\u043b\u0435\u043a\u043e\u043f\u0430" } \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_with_newlines.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_with_newlines.json new file mode 100755 index 00000000000..246ec6b34d5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_object_with_newlines.json @@ -0,0 +1,3 @@ +{ +"a": "b" +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_1_2_3_bytes_UTF-8_sequences.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_1_2_3_bytes_UTF-8_sequences.json new file mode 100755 index 00000000000..9967ddeb8b1 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_1_2_3_bytes_UTF-8_sequences.json @@ -0,0 +1 @@ +["\u0060\u012a\u12AB"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_accepted_surrogate_pair.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_accepted_surrogate_pair.json new file mode 100755 index 00000000000..996875cc8c9 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_accepted_surrogate_pair.json @@ -0,0 +1 @@ +["\uD801\udc37"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_accepted_surrogate_pairs.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_accepted_surrogate_pairs.json new file mode 100755 index 00000000000..3401021ecef --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_accepted_surrogate_pairs.json @@ -0,0 +1 @@ +["\ud83d\ude39\ud83d\udc8d"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_allowed_escapes.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_allowed_escapes.json new file mode 100755 index 00000000000..7f495532fb3 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_allowed_escapes.json @@ -0,0 +1 @@ +["\"\\\/\b\f\n\r\t"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_backslash_and_u_escaped_zero.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_backslash_and_u_escaped_zero.json new file mode 100755 index 00000000000..d4439eda73a --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_backslash_and_u_escaped_zero.json @@ -0,0 +1 @@ +["\\u0000"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_backslash_doublequotes.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_backslash_doublequotes.json new file mode 100755 index 00000000000..ae03243b674 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_backslash_doublequotes.json @@ -0,0 +1 @@ +["\""] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_comments.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_comments.json new file mode 100755 index 00000000000..2260c20c2f8 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_comments.json @@ -0,0 +1 @@ +["a/*b*/c/*d//e"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_double_escape_a.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_double_escape_a.json new file mode 100755 index 00000000000..6715d6f4049 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_double_escape_a.json @@ -0,0 +1 @@ +["\\a"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_double_escape_n.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_double_escape_n.json new file mode 100755 index 00000000000..44ca56c4d94 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_double_escape_n.json @@ -0,0 +1 @@ +["\\n"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_escaped_control_character.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_escaped_control_character.json new file mode 100755 index 00000000000..5b014a9c25b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_escaped_control_character.json @@ -0,0 +1 @@ +["\u0012"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_escaped_noncharacter.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_escaped_noncharacter.json new file mode 100755 index 00000000000..2ff52e2c50b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_escaped_noncharacter.json @@ -0,0 +1 @@ +["\uFFFF"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_in_array.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_in_array.json new file mode 100755 index 00000000000..21d7ae4cd80 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_in_array.json @@ -0,0 +1 @@ +["asd"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_in_array_with_leading_space.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_in_array_with_leading_space.json new file mode 100755 index 00000000000..9e1887c1e4d --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_in_array_with_leading_space.json @@ -0,0 +1 @@ +[ "asd"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_last_surrogates_1_and_2.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_last_surrogates_1_and_2.json new file mode 100755 index 00000000000..3919cef7657 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_last_surrogates_1_and_2.json @@ -0,0 +1 @@ +["\uDBFF\uDFFF"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_nbsp_uescaped.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_nbsp_uescaped.json new file mode 100755 index 00000000000..2085ab1a1c7 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_nbsp_uescaped.json @@ -0,0 +1 @@ +["new\u00A0line"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_nonCharacterInUTF-8_U+10FFFF.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_nonCharacterInUTF-8_U+10FFFF.json new file mode 100755 index 00000000000..059e4d9dd0f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_nonCharacterInUTF-8_U+10FFFF.json @@ -0,0 +1 @@ +["ô¿¿"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_nonCharacterInUTF-8_U+FFFF.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_nonCharacterInUTF-8_U+FFFF.json new file mode 100755 index 00000000000..4c913bd41a0 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_nonCharacterInUTF-8_U+FFFF.json @@ -0,0 +1 @@ +["ï¿¿"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_null_escape.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_null_escape.json new file mode 100755 index 00000000000..c1ad844043e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_null_escape.json @@ -0,0 +1 @@ +["\u0000"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_one-byte-utf-8.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_one-byte-utf-8.json new file mode 100755 index 00000000000..157185923ac --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_one-byte-utf-8.json @@ -0,0 +1 @@ +["\u002c"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_pi.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_pi.json new file mode 100755 index 00000000000..9df11ae88bd --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_pi.json @@ -0,0 +1 @@ +["Ï€"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_reservedCharacterInUTF-8_U+1BFFF.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_reservedCharacterInUTF-8_U+1BFFF.json new file mode 100755 index 00000000000..10a33a1717e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_reservedCharacterInUTF-8_U+1BFFF.json @@ -0,0 +1 @@ +["𛿿"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_simple_ascii.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_simple_ascii.json new file mode 100755 index 00000000000..8cadf7d051d --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_simple_ascii.json @@ -0,0 +1 @@ +["asd "] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_space.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_space.json new file mode 100755 index 00000000000..efd782cc325 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_space.json @@ -0,0 +1 @@ +" " \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json new file mode 100755 index 00000000000..7620b66559f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json @@ -0,0 +1 @@ +["\uD834\uDd1e"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_three-byte-utf-8.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_three-byte-utf-8.json new file mode 100755 index 00000000000..108f1d67dff --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_three-byte-utf-8.json @@ -0,0 +1 @@ +["\u0821"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_two-byte-utf-8.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_two-byte-utf-8.json new file mode 100755 index 00000000000..461503c3100 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_two-byte-utf-8.json @@ -0,0 +1 @@ +["\u0123"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_u+2028_line_sep.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_u+2028_line_sep.json new file mode 100755 index 00000000000..897b6021af7 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_u+2028_line_sep.json @@ -0,0 +1 @@ +["
"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_u+2029_par_sep.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_u+2029_par_sep.json new file mode 100755 index 00000000000..8cd998c89ea --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_u+2029_par_sep.json @@ -0,0 +1 @@ +["
"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_uEscape.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_uEscape.json new file mode 100755 index 00000000000..f7b41a02fa5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_uEscape.json @@ -0,0 +1 @@ +["\u0061\u30af\u30EA\u30b9"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_uescaped_newline.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_uescaped_newline.json new file mode 100755 index 00000000000..3a5a220b69c --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_uescaped_newline.json @@ -0,0 +1 @@ +["new\u000Aline"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unescaped_char_delete.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unescaped_char_delete.json new file mode 100755 index 00000000000..7d064f49871 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unescaped_char_delete.json @@ -0,0 +1 @@ +[""] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode.json new file mode 100755 index 00000000000..3598095b79b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode.json @@ -0,0 +1 @@ +["\uA66D"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicodeEscapedBackslash.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicodeEscapedBackslash.json new file mode 100755 index 00000000000..0bb3b51e7ea --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicodeEscapedBackslash.json @@ -0,0 +1 @@ +["\u005C"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_2.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_2.json new file mode 100755 index 00000000000..a7dcb97683f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_2.json @@ -0,0 +1 @@ +["â‚㈴â‚"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_U+10FFFE_nonchar.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_U+10FFFE_nonchar.json new file mode 100755 index 00000000000..9a8370b96a1 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_U+10FFFE_nonchar.json @@ -0,0 +1 @@ +["\uDBFF\uDFFE"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_U+1FFFE_nonchar.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_U+1FFFE_nonchar.json new file mode 100755 index 00000000000..c51f8ae45c3 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_U+1FFFE_nonchar.json @@ -0,0 +1 @@ +["\uD83F\uDFFE"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json new file mode 100755 index 00000000000..626d5f81572 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json @@ -0,0 +1 @@ +["\u200B"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_U+2064_invisible_plus.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_U+2064_invisible_plus.json new file mode 100755 index 00000000000..1e23972c65e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_U+2064_invisible_plus.json @@ -0,0 +1 @@ +["\u2064"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_U+FDD0_nonchar.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_U+FDD0_nonchar.json new file mode 100755 index 00000000000..18ef151b4f2 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_U+FDD0_nonchar.json @@ -0,0 +1 @@ +["\uFDD0"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_U+FFFE_nonchar.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_U+FFFE_nonchar.json new file mode 100755 index 00000000000..13d261fdad5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_U+FFFE_nonchar.json @@ -0,0 +1 @@ +["\uFFFE"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_escaped_double_quote.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_escaped_double_quote.json new file mode 100755 index 00000000000..4e6257856dd --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_unicode_escaped_double_quote.json @@ -0,0 +1 @@ +["\u0022"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_utf8.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_utf8.json new file mode 100755 index 00000000000..40878435f97 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_utf8.json @@ -0,0 +1 @@ +["€ð„ž"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_with_del_character.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_with_del_character.json new file mode 100755 index 00000000000..8bd24907d9e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_string_with_del_character.json @@ -0,0 +1 @@ +["aa"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_lonely_false.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_lonely_false.json new file mode 100755 index 00000000000..02e4a84d62c --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_lonely_false.json @@ -0,0 +1 @@ +false \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_lonely_int.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_lonely_int.json new file mode 100755 index 00000000000..f70d7bba4ae --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_lonely_int.json @@ -0,0 +1 @@ +42 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_lonely_negative_real.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_lonely_negative_real.json new file mode 100755 index 00000000000..b5135a207de --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_lonely_negative_real.json @@ -0,0 +1 @@ +-0.1 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_lonely_null.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_lonely_null.json new file mode 100755 index 00000000000..ec747fa47dd --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_lonely_null.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_lonely_string.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_lonely_string.json new file mode 100755 index 00000000000..b6e982ca96a --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_lonely_string.json @@ -0,0 +1 @@ +"asd" \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_lonely_true.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_lonely_true.json new file mode 100755 index 00000000000..f32a5804e29 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_lonely_true.json @@ -0,0 +1 @@ +true \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_string_empty.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_string_empty.json new file mode 100755 index 00000000000..3cc762b5501 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_string_empty.json @@ -0,0 +1 @@ +"" \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_trailing_newline.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_trailing_newline.json new file mode 100755 index 00000000000..0c3426d4c28 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_trailing_newline.json @@ -0,0 +1 @@ +["a"] diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_true_in_array.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_true_in_array.json new file mode 100755 index 00000000000..de601e305f4 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_true_in_array.json @@ -0,0 +1 @@ +[true] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_whitespace_array.json b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_whitespace_array.json new file mode 100755 index 00000000000..2bedf7f2de5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_parsing/y_structure_whitespace_array.json @@ -0,0 +1 @@ + [] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip01.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip01.json new file mode 100644 index 00000000000..500db4a86aa --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip01.json @@ -0,0 +1 @@ +[null] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip02.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip02.json new file mode 100644 index 00000000000..de601e305f4 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip02.json @@ -0,0 +1 @@ +[true] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip03.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip03.json new file mode 100644 index 00000000000..67b2f07601e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip03.json @@ -0,0 +1 @@ +[false] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip04.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip04.json new file mode 100644 index 00000000000..6e7ea636eec --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip04.json @@ -0,0 +1 @@ +[0] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip05.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip05.json new file mode 100644 index 00000000000..6dfd29830eb --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip05.json @@ -0,0 +1 @@ +["foo"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip06.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip06.json new file mode 100644 index 00000000000..0637a088a01 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip06.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip07.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip07.json new file mode 100644 index 00000000000..9e26dfeeb6e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip07.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip08.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip08.json new file mode 100644 index 00000000000..bfa34124ca9 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip08.json @@ -0,0 +1 @@ +[0,1] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip09.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip09.json new file mode 100644 index 00000000000..9f5dd4e3d9f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip09.json @@ -0,0 +1 @@ +{"foo":"bar"} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip10.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip10.json new file mode 100644 index 00000000000..2355b4df271 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip10.json @@ -0,0 +1 @@ +{"a":null,"foo":"bar"} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip101.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip101.json new file mode 100644 index 00000000000..d11f3fd703c --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip101.json @@ -0,0 +1 @@ +"single string" \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip102.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip102.json new file mode 100644 index 00000000000..f32a5804e29 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip102.json @@ -0,0 +1 @@ +true \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip103.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip103.json new file mode 100644 index 00000000000..02e4a84d62c --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip103.json @@ -0,0 +1 @@ +false \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip104.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip104.json new file mode 100644 index 00000000000..ec747fa47dd --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip104.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip105.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip105.json new file mode 100644 index 00000000000..3169929f695 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip105.json @@ -0,0 +1 @@ +[1,2] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip106.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip106.json new file mode 100644 index 00000000000..b25b5643055 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip106.json @@ -0,0 +1 @@ +[-1,0,1,2,-1.0,0.0,1.0,2.0,-1.2,1.2,1.2e-123,-1.2e123,1e-123,-1e123] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip107.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip107.json new file mode 100644 index 00000000000..00a55f04962 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip107.json @@ -0,0 +1 @@ +[[]] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip108.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip108.json new file mode 100644 index 00000000000..e7dfc5b3c61 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip108.json @@ -0,0 +1 @@ +[[],[]] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip109.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip109.json new file mode 100644 index 00000000000..ee1aac42be5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip109.json @@ -0,0 +1 @@ +[{}] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip11.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip11.json new file mode 100644 index 00000000000..99d21a2a0f0 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip11.json @@ -0,0 +1 @@ +[-1] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip110.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip110.json new file mode 100644 index 00000000000..28975ede720 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip110.json @@ -0,0 +1 @@ +[{},[]] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip111.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip111.json new file mode 100644 index 00000000000..5f6a8b1caa4 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip111.json @@ -0,0 +1 @@ +[[1],[2,3],[4]] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip112.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip112.json new file mode 100644 index 00000000000..11075c8a44f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip112.json @@ -0,0 +1 @@ +[{"a":1},[2,3]] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip113.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip113.json new file mode 100644 index 00000000000..f85e16750b3 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip113.json @@ -0,0 +1 @@ +[{"b":2,"a":1},["c",4]] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip114.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip114.json new file mode 100644 index 00000000000..b80d6e19938 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip114.json @@ -0,0 +1 @@ +[{"b":{},"a":[]},["c",4]] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip115.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip115.json new file mode 100644 index 00000000000..336819fbfa1 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip115.json @@ -0,0 +1 @@ +[{"b":{"c":5},"a":[6,{"d":7}]},["c",4]] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip116.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip116.json new file mode 100644 index 00000000000..6efe5fcc0fe --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip116.json @@ -0,0 +1 @@ +{"":""} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip117.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip117.json new file mode 100644 index 00000000000..6efe5fcc0fe --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip117.json @@ -0,0 +1 @@ +{"":""} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip118.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip118.json new file mode 100644 index 00000000000..7cd8808c1af --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip118.json @@ -0,0 +1 @@ +{"":"","":""} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip119.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip119.json new file mode 100644 index 00000000000..0c4547df378 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip119.json @@ -0,0 +1 @@ +{"a":1,"a":2} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip12.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip12.json new file mode 100644 index 00000000000..56c78bef1d1 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip12.json @@ -0,0 +1 @@ +[-2147483648] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip120.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip120.json new file mode 100644 index 00000000000..29fdf9637fd --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip120.json @@ -0,0 +1 @@ +{"y":"yy","x":"xx","z":"zz"} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip121.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip121.json new file mode 100644 index 00000000000..a19c0f20b97 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip121.json @@ -0,0 +1 @@ +{"y":[1,2,3],"x":{"b":"bb","a":"aa","c":"cc"},"z":[{},{"m":"mm","n":"nn"},3]} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip13.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip13.json new file mode 100644 index 00000000000..029580f6fc4 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip13.json @@ -0,0 +1 @@ +[-1234567890123456789] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip14.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip14.json new file mode 100644 index 00000000000..d8658000903 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip14.json @@ -0,0 +1 @@ +[-9223372036854775808] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip15.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip15.json new file mode 100644 index 00000000000..bace2a0be17 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip15.json @@ -0,0 +1 @@ +[1] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip16.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip16.json new file mode 100644 index 00000000000..dfe696dbd6c --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip16.json @@ -0,0 +1 @@ +[2147483647] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip17.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip17.json new file mode 100644 index 00000000000..6640b07fb5c --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip17.json @@ -0,0 +1 @@ +[4294967295] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip18.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip18.json new file mode 100644 index 00000000000..a3ab143b043 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip18.json @@ -0,0 +1 @@ +[1234567890123456789] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip19.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip19.json new file mode 100644 index 00000000000..8ab4a5078ae --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip19.json @@ -0,0 +1 @@ +[9223372036854775807] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip20.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip20.json new file mode 100644 index 00000000000..92df1df1d15 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip20.json @@ -0,0 +1 @@ +[0.0] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip21.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip21.json new file mode 100644 index 00000000000..cfef81540e2 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip21.json @@ -0,0 +1 @@ +[-0.0] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip22.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip22.json new file mode 100644 index 00000000000..a7b7eefc5c9 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip22.json @@ -0,0 +1 @@ +[1.2345] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip23.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip23.json new file mode 100644 index 00000000000..b553e84b7c5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip23.json @@ -0,0 +1 @@ +[-1.2345] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip24.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip24.json new file mode 100644 index 00000000000..f01efb6d5e1 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip24.json @@ -0,0 +1 @@ +[5e-324] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip25.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip25.json new file mode 100644 index 00000000000..cdef14d38b4 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip25.json @@ -0,0 +1 @@ +[2.225073858507201e-308] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip26.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip26.json new file mode 100644 index 00000000000..f4121b787d6 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip26.json @@ -0,0 +1 @@ +[2.2250738585072014e-308] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip27.json b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip27.json new file mode 100644 index 00000000000..17ce5211c8b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_roundtrip/roundtrip27.json @@ -0,0 +1 @@ +[1.7976931348623157e308] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_transform/number_-9223372036854775808.json b/lib/yyjson-0.12.0/test/data/json/test_transform/number_-9223372036854775808.json new file mode 100644 index 00000000000..f8853ff83d5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_transform/number_-9223372036854775808.json @@ -0,0 +1 @@ +[-9223372036854775808] diff --git a/lib/yyjson-0.12.0/test/data/json/test_transform/number_-9223372036854775809.json b/lib/yyjson-0.12.0/test/data/json/test_transform/number_-9223372036854775809.json new file mode 100644 index 00000000000..5dca91fde6d --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_transform/number_-9223372036854775809.json @@ -0,0 +1 @@ +[-9223372036854775809] diff --git a/lib/yyjson-0.12.0/test/data/json/test_transform/number_1.0.json b/lib/yyjson-0.12.0/test/data/json/test_transform/number_1.0.json new file mode 100755 index 00000000000..e7a19a6ecee --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_transform/number_1.0.json @@ -0,0 +1 @@ +[1.0] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_transform/number_1.000000000000000005.json b/lib/yyjson-0.12.0/test/data/json/test_transform/number_1.000000000000000005.json new file mode 100755 index 00000000000..c73b7cfcab9 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_transform/number_1.000000000000000005.json @@ -0,0 +1 @@ +[1.000000000000000005] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_transform/number_1000000000000000.json b/lib/yyjson-0.12.0/test/data/json/test_transform/number_1000000000000000.json new file mode 100755 index 00000000000..cd38afa7768 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_transform/number_1000000000000000.json @@ -0,0 +1 @@ +[1000000000000000] diff --git a/lib/yyjson-0.12.0/test/data/json/test_transform/number_10000000000000000999.json b/lib/yyjson-0.12.0/test/data/json/test_transform/number_10000000000000000999.json new file mode 100755 index 00000000000..946d13d3697 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_transform/number_10000000000000000999.json @@ -0,0 +1 @@ +[10000000000000000999] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_transform/number_1e-999.json b/lib/yyjson-0.12.0/test/data/json/test_transform/number_1e-999.json new file mode 100755 index 00000000000..c8ed222fc9c --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_transform/number_1e-999.json @@ -0,0 +1 @@ +[1E-999] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_transform/number_1e6.json b/lib/yyjson-0.12.0/test/data/json/test_transform/number_1e6.json new file mode 100755 index 00000000000..1a8b0f78b62 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_transform/number_1e6.json @@ -0,0 +1 @@ +[1E6] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_transform/number_9223372036854775807.json b/lib/yyjson-0.12.0/test/data/json/test_transform/number_9223372036854775807.json new file mode 100644 index 00000000000..f899e4c407b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_transform/number_9223372036854775807.json @@ -0,0 +1 @@ +[9223372036854775807] diff --git a/lib/yyjson-0.12.0/test/data/json/test_transform/number_9223372036854775808.json b/lib/yyjson-0.12.0/test/data/json/test_transform/number_9223372036854775808.json new file mode 100644 index 00000000000..15757d3e5d2 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_transform/number_9223372036854775808.json @@ -0,0 +1 @@ +[9223372036854775808] diff --git a/lib/yyjson-0.12.0/test/data/json/test_transform/object_key_nfc_nfd.json b/lib/yyjson-0.12.0/test/data/json/test_transform/object_key_nfc_nfd.json new file mode 100755 index 00000000000..e4cbc1dc114 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_transform/object_key_nfc_nfd.json @@ -0,0 +1 @@ +{"é":"NFC","eÌ":"NFD"} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_transform/object_key_nfd_nfc.json b/lib/yyjson-0.12.0/test/data/json/test_transform/object_key_nfd_nfc.json new file mode 100755 index 00000000000..b04ece18df7 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_transform/object_key_nfd_nfc.json @@ -0,0 +1 @@ +{"eÌ":"NFD","é":"NFC"} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_transform/object_same_key_different_values.json b/lib/yyjson-0.12.0/test/data/json/test_transform/object_same_key_different_values.json new file mode 100755 index 00000000000..0c4547df378 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_transform/object_same_key_different_values.json @@ -0,0 +1 @@ +{"a":1,"a":2} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_transform/object_same_key_same_value.json b/lib/yyjson-0.12.0/test/data/json/test_transform/object_same_key_same_value.json new file mode 100755 index 00000000000..e1070184de7 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_transform/object_same_key_same_value.json @@ -0,0 +1 @@ +{"a":1,"a":1} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_transform/object_same_key_unclear_values.json b/lib/yyjson-0.12.0/test/data/json/test_transform/object_same_key_unclear_values.json new file mode 100755 index 00000000000..8a76bd4ffee --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_transform/object_same_key_unclear_values.json @@ -0,0 +1 @@ +{"a":0, "a":-0} diff --git a/lib/yyjson-0.12.0/test/data/json/test_transform/string_1_escaped_invalid_codepoint.json b/lib/yyjson-0.12.0/test/data/json/test_transform/string_1_escaped_invalid_codepoint.json new file mode 100755 index 00000000000..8e6247319f5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_transform/string_1_escaped_invalid_codepoint.json @@ -0,0 +1 @@ +["\uD800"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_transform/string_1_invalid_codepoint.json b/lib/yyjson-0.12.0/test/data/json/test_transform/string_1_invalid_codepoint.json new file mode 100755 index 00000000000..916bff920fa --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_transform/string_1_invalid_codepoint.json @@ -0,0 +1 @@ +["í €"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_transform/string_2_escaped_invalid_codepoints.json b/lib/yyjson-0.12.0/test/data/json/test_transform/string_2_escaped_invalid_codepoints.json new file mode 100755 index 00000000000..93568e2c776 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_transform/string_2_escaped_invalid_codepoints.json @@ -0,0 +1 @@ +["\uD800\uD800"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_transform/string_2_invalid_codepoints.json b/lib/yyjson-0.12.0/test/data/json/test_transform/string_2_invalid_codepoints.json new file mode 100755 index 00000000000..043a72e813c --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_transform/string_2_invalid_codepoints.json @@ -0,0 +1 @@ +["í €í €"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_transform/string_3_escaped_invalid_codepoints.json b/lib/yyjson-0.12.0/test/data/json/test_transform/string_3_escaped_invalid_codepoints.json new file mode 100755 index 00000000000..407dc657508 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_transform/string_3_escaped_invalid_codepoints.json @@ -0,0 +1 @@ +["\uD800\uD800\uD800"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_transform/string_3_invalid_codepoints.json b/lib/yyjson-0.12.0/test/data/json/test_transform/string_3_invalid_codepoints.json new file mode 100755 index 00000000000..2fcb0927d10 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_transform/string_3_invalid_codepoints.json @@ -0,0 +1 @@ +["í €í €í €"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_transform/string_with_escaped_NULL.json b/lib/yyjson-0.12.0/test/data/json/test_transform/string_with_escaped_NULL.json new file mode 100755 index 00000000000..8ca2be59e60 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_transform/string_with_escaped_NULL.json @@ -0,0 +1 @@ +["A\u0000B"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/blns.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/blns.json new file mode 100644 index 00000000000..3a2e1413e25 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/blns.json @@ -0,0 +1,509 @@ +[ + "", + "undefined", + "undef", + "null", + "NULL", + "(null)", + "nil", + "NIL", + "true", + "false", + "True", + "False", + "TRUE", + "FALSE", + "None", + "hasOwnProperty", + "\\", + "\\\\", + "0", + "1", + "1.00", + "$1.00", + "1/2", + "1E2", + "1E02", + "1E+02", + "-1", + "-1.00", + "-$1.00", + "-1/2", + "-1E2", + "-1E02", + "-1E+02", + "1/0", + "0/0", + "-2147483648/-1", + "-9223372036854775808/-1", + "-0", + "-0.0", + "+0", + "+0.0", + "0.00", + "0..0", + ".", + "0.0.0", + "0,00", + "0,,0", + ",", + "0,0,0", + "0.0/0", + "1.0/0.0", + "0.0/0.0", + "1,0/0,0", + "0,0/0,0", + "--1", + "-", + "-.", + "-,", + "999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999", + "NaN", + "Infinity", + "-Infinity", + "INF", + "1#INF", + "-1#IND", + "1#QNAN", + "1#SNAN", + "1#IND", + "0x0", + "0xffffffff", + "0xffffffffffffffff", + "0xabad1dea", + "123456789012345678901234567890123456789", + "1,000.00", + "1 000.00", + "1'000.00", + "1,000,000.00", + "1 000 000.00", + "1'000'000.00", + "1.000,00", + "1 000,00", + "1'000,00", + "1.000.000,00", + "1 000 000,00", + "1'000'000,00", + "01000", + "08", + "09", + "2.2250738585072011e-308", + ",./;'[]\\-=", + "<>?:\"{}|_+", + "!@#$%^&*()`~", + "\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f", + "€Â‚ƒ„†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ", + "\t\u000b\f …             ​

 âŸã€€", + "Â­Ø€ØØ‚؃؄؅؜ÛÜ᠎​‌â€â€Žâ€â€ªâ€«â€¬â€­â€®â â¡â¢â£â¤â¦â§â¨â©âªâ«â¬â­â®â¯ï»¿ï¿¹ï¿ºï¿»ð‘‚½ð›² ð›²¡ð›²¢ð›²£ð…³ð…´ð…µð…¶ð…·ð…¸ð…¹ð…ºó €ó € ó €¡ó €¢ó €£ó €¤ó €¥ó €¦ó €§ó €¨ó €©ó €ªó €«ó €¬ó €­ó €®ó €¯ó €°ó €±ó €²ó €³ó €´ó €µó €¶ó €·ó €¸ó €¹ó €ºó €»ó €¼ó €½ó €¾ó €¿ó €ó ó ‚ó ƒó „ó …ó †ó ‡ó ˆó ‰ó Šó ‹ó Œó ó Žó ó ó ‘ó ’ó “ó ”ó •ó –ó —ó ˜ó ™ó šó ›ó œó ó žó Ÿó  ó ¡ó ¢ó £ó ¤ó ¥ó ¦ó §ó ¨ó ©ó ªó «ó ¬ó ­ó ®ó ¯ó °ó ±ó ²ó ³ó ´ó µó ¶ó ·ó ¸ó ¹ó ºó »ó ¼ó ½ó ¾ó ¿", + "", + "￾", + "Ω≈ç√∫˜µ≤≥÷", + "åß∂ƒ©˙∆˚¬…æ", + "œ∑´®†¥¨ˆøπ“‘", + "¡™£¢∞§¶•ªº–≠", + "¸˛Ç◊ı˜Â¯˘¿", + "Ã…ÃÃŽÃËÓÔÒÚÆ☃", + "Œ„´‰ˇÃ¨ˆØâˆâ€â€™", + "`â„€‹›ï¬ï¬‚‡°·‚—±", + "⅛⅜â…â…ž", + "ÐЂЃЄЅІЇЈЉЊЋЌÐÐŽÐÐБВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑ", + "٠١٢٣٤٥٦٧٨٩", + "â°â´âµ", + "â‚€â‚â‚‚", + "â°â´âµâ‚€â‚â‚‚", + "ด้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็ ด้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็ ด้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็", + "'", + "\"", + "''", + "\"\"", + "'\"'", + "\"''''\"'\"", + "\"'\"'\"''''\"", + "", + "", + "", + "", + "田中ã•ã‚“ã«ã‚ã’ã¦ä¸‹ã•ã„", + "パーティーã¸è¡Œã‹ãªã„ã‹", + "和製漢語", + "éƒ¨è½æ ¼", + "ì‚¬íšŒê³¼í•™ì› ì–´í•™ì—°êµ¬ì†Œ", + "찦차를 타고 온 펲시맨과 쑛다리 똠방ê°í•˜", + "社會科學院語學研究所", + "울란바토르", + "𠜎𠜱ð ¹ð ±“𠱸𠲖ð ³", + "Ⱥ", + "Ⱦ", + "ヽ༼ຈل͜ຈ༽ノ ヽ༼ຈل͜ຈ༽ノ ", + "(。◕ ∀ ◕。)", + "`ィ(´∀`∩", + "__ï¾›(,_,*)", + "・( ̄∀ ̄)・:*:", + "゚・✿ヾ╲(。◕‿◕。)╱✿・゚", + ",。・:*:・゜’( ☻ ω ☻ )。・:*:・゜’", + "(╯°□°)╯︵ â”»â”â”»)", + "(ノಥ益ಥ)ノ â”»â”â”»", + "┬─┬ノ( º _ ºノ)", + "( ͡° ͜ʖ ͡°)", + "ðŸ˜", + "👩ðŸ½", + "👾 🙇 💠🙅 🙆 🙋 🙎 ðŸ™", + "🵠🙈 🙉 🙊", + "â¤ï¸ 💔 💌 💕 💞 💓 💗 💖 💘 💠💟 💜 💛 💚 💙", + "✋🿠💪🿠ðŸ‘🿠🙌🿠ðŸ‘🿠ðŸ™ðŸ¿", + "🚾 🆒 🆓 🆕 🆖 🆗 🆙 ðŸ§", + "0ï¸âƒ£ 1ï¸âƒ£ 2ï¸âƒ£ 3ï¸âƒ£ 4ï¸âƒ£ 5ï¸âƒ£ 6ï¸âƒ£ 7ï¸âƒ£ 8ï¸âƒ£ 9ï¸âƒ£ 🔟", + "🇺🇸🇷🇺🇸 🇦🇫🇦🇲🇸", + "🇺🇸🇷🇺🇸🇦🇫🇦🇲", + "🇺🇸🇷🇺🇸🇦", + "123", + "١٢٣", + "ثم Ù†ÙØ³ سقطت وبالتحديد،, جزيرتي باستخدام أن دنو. إذ هنا؟ الستار وتنصيب كان. أهّل ايطاليا، بريطانيا-ÙØ±Ù†Ø³Ø§ قد أخذ. سليمان، Ø¥ØªÙØ§Ù‚ية بين ما, يذكر الحدود أي بعد, معاملة بولندا، الإطلاق عل إيو.", + "בְּרֵ×שִ×ית, ×‘Ö¸Ö¼×¨Ö¸× ×ֱלֹהִי×, ×ֵת הַשָּ×מַיִ×, וְ×ֵת ×”Ö¸×ָרֶץ", + "הָיְתָהtestØ§Ù„ØµÙØ­Ø§Øª التّحول", + "ï·½", + "ï·º", + "Ù…ÙÙ†ÙŽØ§Ù‚ÙŽØ´ÙŽØ©Ù Ø³ÙØ¨ÙÙ„Ù Ø§ÙØ³Ù’ØªÙØ®Ù’دَام٠اللÙّغَة٠ÙÙÙŠ النÙّظÙم٠الْقَائÙمَة٠وَÙÙيم ÙŠÙŽØ®ÙØµÙŽÙ‘ التَّطْبÙيقَات٠الْحاسÙوبÙÙŠÙŽÙ‘Ø©ÙØŒ ", + "​", + " ", + "á Ž", + " ", + "", + "â£", + "â¢", + "â¡", + "‪‪test‪", + "‫test‫", + "
test
", + "testâ test‫", + "â¦testâ§", + "Ṱ̺̺̕oÍž Ì·i̲̬͇̪͙nÌÌ—Í•v̟̜̘̦͟o̶̙̰̠kè͚̮̺̪̹̱̤ Ì–tÌ͕̳̣̻̪͞h̼͓̲̦̳̘̲e͇̣̰̦̬͎ ̢̼̻̱̘h͚͎͙̜̣̲ͅi̦̲̣̰̤vÌ»Íe̺̭̳̪̰-mÌ¢iÍ…n̖̺̞̲̯̰d̵̼̟͙̩̼̘̳ ̞̥̱̳̭r̛̗̘eÍ™pÍ r̼̞̻̭̗e̺̠̣͟s̘͇̳ÍÌ͉e͉̥̯̞̲͚̬͜ǹ̬͎͎̟̖͇̤tÍ̬̤͓̼̭͘ͅi̪̱nÍ g̴͉ Í͉ͅc̬̟hÍ¡a̫̻̯͘o̫̟̖ÍÌ™Ì͉s̗̦̲.̨̹͈̣", + "̡͓̞ͅI̗̘̦Ín͇͇͙v̮̫ok̲̫̙͈i̖͙̭̹̠̞n̡̻̮̣̺g̲͈͙̭͙̬͎ ̰t͔̦h̞̲e̢̤ Í̬̲͖f̴̘͕̣è͖ẹ̥̩l͖͔͚i͓͚̦͠nÍ–Í̗͓̳̮gÍ Ì¨o͚̪͡f̘̣̬ ̖̘͖̟͙̮c҉͔̫͖͓͇͖ͅh̵̤̣͚͔á̗̼͕ͅo̼̣̥s̱͈̺̖̦̻͢.̛̖̞̠̫̰", + "̗̺͖̹̯͓Ṯ̤Í̥͇͈h̲ÌeÍ͓̼̗̙̼̣͔ ͇̜̱̠͓ÍÍ…N͕͠e̗̱z̘Ì̜̺͙p̤̺̹Í̯͚e̠̻̠͜r̨̤Í̺̖͔̖̖d̠̟̭̬ÌÍŸi̦͖̩͓͔̤a̠̗̬͉̙n͚͜ ̻̞̰͚ͅh̵͉i̳̞v̢͇ḙ͎͟-҉̭̩̼͔m̤̭̫i͕͇Ì̦nÌ—Í™á¸ÌŸ ̯̲͕͞ǫ̟̯̰̲͙̻Ìf ̪̰̰̗̖̭̘͘c̦Í̲̞Í̩̙ḥ͚a̮͎̟̙͜ơ̩̹͎s̤.ÌÌ Ò‰Z̡̖̜͖̰̣͉̜a͖̰͙̬͡l̲̫̳ÍÌ©g̡̟̼̱͚̞̬ͅoÌ—Íœ.ÌŸ", + "̦H̬̤̗̤ÍeÍœ ̜̥ÌÌ»ÍÌŸÌwÌ•h̖̯͓oÌ͙̖͎̱̮ ҉̺̙̞̟͈W̷̼̭a̺̪Íį͈͕̭͙̯̜t̶̼̮s̘͙͖̕ ̠̫̠BÌ»Í͙͉̳ͅe̵h̵̬͇̫͙i̹͓̳̳̮͎̫̕nÍŸd̴̪̜̖ ̰͉̩͇͙̲͞ͅT͖̼͓̪͢hÍ͓̮̻e̬ÌÌŸÍ… ̤̹ÌW͙̞Ì͔͇ÍÍ…aÍ͓͔̹̼̣l̴͔̰̤̟͔ḽ̫.Í•", + "Z̮̞̠͙͔ͅḀ̗̞͈̻̗Ḷ͙͎̯̹̞͓GÌ»OÌ­Ì—Ì®", + "Ë™Énbá´‰lÉ ÉuƃÉɯ Çɹolop Ê‡Ç ÇɹoqÉl ʇn ʇunpá´‰pᴉɔuá´‰ ɹodɯÇʇ poɯsná´‰Ç op pÇs 'ʇᴉlÇ Æƒuᴉɔsá´‰dá´‰pÉ É¹nʇÇʇɔÇsuoÉ” 'ʇÇÉ¯É Ê‡á´‰s ɹolop ɯnsdá´‰ ɯÇɹoË¥", + "00˙Ɩ$-", + "The quick brï½ï½—n fï½ï½˜ juï½ï½ï½“ ï½ï½–ï½…ï½’ the lï½ï½šï½™ dï½ï½‡", + "ð“ð¡ðž ðªð®ð¢ðœð¤ ð›ð«ð¨ð°ð§ ðŸð¨ð± ð£ð®ð¦ð©ð¬ ð¨ð¯ðžð« ð­ð¡ðž ð¥ðšð³ð² ðð¨ð ", + "ð•¿ð–ð–Š ð––ð–šð–Žð–ˆð– ð–‡ð–—ð–”ð–œð–“ ð–‹ð–”ð– ð–ð–šð–’ð–•ð–˜ ð–”ð–›ð–Šð–— ð–™ð–ð–Š ð–‘ð–†ð–Ÿð–ž ð–‰ð–”ð–Œ", + "ð‘»ð’‰ð’† ð’’ð’–ð’Šð’„𒌠ð’ƒð’“ð’ð’˜ð’ ð’‡ð’ð’™ ð’‹ð’–ð’Žð’‘ð’” ð’ð’—ð’†ð’“ ð’•ð’‰ð’† ð’ð’‚ð’›ð’š ð’…ð’ð’ˆ", + "ð“£ð“±ð“® ð“ºð“¾ð“²ð“¬ð“´ ð“«ð“»ð“¸ð”€ð“· ð“¯ð“¸ð” ð“³ð“¾ð“¶ð“¹ð“¼ ð“¸ð“¿ð“®ð“» ð“½ð“±ð“® ð“µð“ªð”ƒð”‚ ð“­ð“¸ð“°", + "ð•‹ð•™ð•– ð•¢ð•¦ð•šð•”𕜠ð•“ð•£ð• ð•¨ð•Ÿ ð•—ð• ð•© ð•›ð•¦ð•žð•¡ð•¤ ð• ð•§ð•–ð•£ ð•¥ð•™ð•– ð•ð•’ð•«ð•ª ð••ð• ð•˜", + "ðšƒðš‘𚎠ðššðšžðš’ðšŒðš” ðš‹ðš›ðš˜ðš ðš— ðšðš˜ðš¡ ðš“ðšžðš–ðš™ðšœ ðš˜ðšŸðšŽðš› ðšðš‘𚎠ðš•ðšŠðš£ðš¢ ðšðš˜ðš", + "⒯⒣⒠ ⒬⒰⒤⒞⒦ â’⒭⒪⒲⒩ ⒡⒪⒳ ⒥⒰⒨⒫⒮ ⒪⒱⒠⒭ ⒯⒣⒠ ⒧⒜⒵⒴ ⒟⒪⒢", + "", + "<script>alert('123');</script>", + "", + "", + "\">", + "'>", + ">", + "", + "< / script >< script >alert(123)< / script >", + " onfocus=JaVaSCript:alert(123) autofocus", + "\" onfocus=JaVaSCript:alert(123) autofocus", + "' onfocus=JaVaSCript:alert(123) autofocus", + "<script>alert(123)</script>", + "ript>alert(123)ript>", + "-->", + "\";alert(123);t=\"", + "';alert(123);t='", + "JavaSCript:alert(123)", + ";alert(123);", + "src=JaVaSCript:prompt(132)", + "\"><\\x3Cscript>javascript:alert(1)", + "'`\"><\\x00script>javascript:alert(1)", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "ABC
    DEF", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "test", + "`\"'>", + "`\"'>", + "`\"'>", + "`\"'>", + "`\"'>", + "`\"'>", + "`\"'>", + "`\"'>", + "`\"'>", + "`\"'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "\"`'>", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "XXX", + "javascript:alert(1)\"` `>", + "", + "", + "<a href=http://foo.bar/#x=`y></a><img alt=\"`><img src=x:x onerror=javascript:alert(1)></a>\">", + "<!--[if]><script>javascript:alert(1)</script -->", + "<!--[if<img src=x onerror=javascript:alert(1)//]> -->", + "<script src=\"/\\%(jscript)s\"></script>", + "<script src=\"\\\\%(jscript)s\"></script>", + "<IMG \"\"\"><SCRIPT>alert(\"XSS\")</SCRIPT>\">", + "<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>", + "<IMG SRC=# onmouseover=\"alert('xxs')\">", + "<IMG SRC= onmouseover=\"alert('xxs')\">", + "<IMG onmouseover=\"alert('xxs')\">", + "<IMG SRC=javascript:alert('XSS')>", + "<IMG SRC=javascript:alert('XSS')>", + "<IMG SRC=javascript:alert('XSS')>", + "<IMG SRC=\"jav ascript:alert('XSS');\">", + "<IMG SRC=\"jav ascript:alert('XSS');\">", + "<IMG SRC=\"jav ascript:alert('XSS');\">", + "<IMG SRC=\"jav ascript:alert('XSS');\">", + "perl -e 'print \"<IMG SRC=java\\0script:alert(\\\"XSS\\\")>\";' > out", + "<IMG SRC=\"  javascript:alert('XSS');\">", + "<SCRIPT/XSS SRC=\"http://ha.ckers.org/xss.js\"></SCRIPT>", + "<BODY onload!#$%&()*~+-_.,:;?@[/|\\]^`=alert(\"XSS\")>", + "<SCRIPT/SRC=\"http://ha.ckers.org/xss.js\"></SCRIPT>", + "<<SCRIPT>alert(\"XSS\");//<</SCRIPT>", + "<SCRIPT SRC=http://ha.ckers.org/xss.js?< B >", + "<SCRIPT SRC=//ha.ckers.org/.j>", + "<IMG SRC=\"javascript:alert('XSS')\"", + "<iframe src=http://ha.ckers.org/scriptlet.html <", + "\\\";alert('XSS');//", + "<u oncopy=alert()> Copy me</u>", + "<i onwheel=alert(1)> Scroll over me </i>", + "<plaintext>", + "http://a/%%30%30", + "</textarea><script>alert(123)</script>", + "1;DROP TABLE users", + "1'; DROP TABLE users-- 1", + "' OR 1=1 -- 1", + "' OR '1'='1", + " ", + "%", + "_", + "-", + "--", + "--version", + "--help", + "$USER", + "/dev/null; touch /tmp/blns.fail ; echo", + "`touch /tmp/blns.fail`", + "$(touch /tmp/blns.fail)", + "@{[system \"touch /tmp/blns.fail\"]}", + "eval(\"puts 'hello world'\")", + "System(\"ls -al /\")", + "`ls -al /`", + "Kernel.exec(\"ls -al /\")", + "Kernel.exit(1)", + "%x('ls -al /')", + "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><!DOCTYPE foo [ <!ELEMENT foo ANY ><!ENTITY xxe SYSTEM \"file:///etc/passwd\" >]><foo>&xxe;</foo>", + "$HOME", + "$ENV{'HOME'}", + "%d", + "%s", + "{0}", + "%*.*s", + "File:///", + "../../../../../../../../../../../etc/passwd%00", + "../../../../../../../../../../../etc/hosts", + "() { 0; }; touch /tmp/blns.shellshock1.fail;", + "() { _; } >_[$($())] { touch /tmp/blns.shellshock2.fail; }", + "<<< %s(un='%s') = %u", + "+++ATH0", + "CON", + "PRN", + "AUX", + "CLOCK$", + "NUL", + "A:", + "ZZ:", + "COM1", + "LPT1", + "LPT2", + "LPT3", + "COM2", + "COM3", + "COM4", + "DCC SEND STARTKEYLOGGER 0 0 0", + "Scunthorpe General Hospital", + "Penistone Community Church", + "Lightwater Country Park", + "Jimmy Clitheroe", + "Horniman Museum", + "shitake mushrooms", + "RomansInSussex.co.uk", + "http://www.cum.qc.ca/", + "Craig Cockburn, Software Specialist", + "Linda Callahan", + "Dr. Herman I. Libshitz", + "magna cum laude", + "Super Bowl XXX", + "medieval erection of parapets", + "evaluate", + "mocha", + "expression", + "Arsenal canal", + "classic", + "Tyson Gay", + "Dick Van Dyke", + "basement", + "If you're reading this, you've been in a coma for almost 20 years now. We're trying a new technique. We don't know where this message will end up in your dream, but we hope it works. Please wake up, we miss you.", + "Roses are \u001b[0;31mred\u001b[0m, violets are \u001b[0;34mblue. Hope you enjoy terminal hue", + "But now...\u001b[20Cfor my greatest trick...\u001b[8m", + "The quic\b\b\b\b\b\bk brown fo\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007x... [Beeeep]", + "PowerÙ„ÙÙ„ÙØµÙ‘بÙÙ„ÙÙ„ØµÙ‘Ø¨ÙØ±Ø±Ù‹ ॣ ॣh ॣ ॣ冗" +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_1(comment).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_1(comment).json new file mode 100644 index 00000000000..8cdeecc4840 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_1(comment).json @@ -0,0 +1,7 @@ +/* multi-line comment */ +[ + 1, + 2, + 3 +] +/* multi-line comment */ \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_1(comment).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_1(comment).min.json new file mode 100644 index 00000000000..f51ecda0354 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_1(comment).min.json @@ -0,0 +1 @@ +/* multi-line comment */[1,2,3]/* multi-line comment */ \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_2(comment).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_2(comment).json new file mode 100644 index 00000000000..a0b0f3bc258 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_2(comment).json @@ -0,0 +1,5 @@ +[ + 1,/* inner */ + 2, + 3 +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_2(comment).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_2(comment).min.json new file mode 100644 index 00000000000..40b17dfdcae --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_2(comment).min.json @@ -0,0 +1 @@ +[1,/* inner */2,3] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_3(comment).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_3(comment).json new file mode 100644 index 00000000000..62e5d40f22f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_3(comment).json @@ -0,0 +1,8 @@ +/*aa*/ +[ + /*aa*/1/*aa*/, + /*aa*/[/*aa*/]/*aa*/, + /*aa*/{/*aa*/"a"/*aa*/:/*aa*/1/*aa*/}/*aa*/,/*aa*/ + /*aa*/2/*aa*/ +]/*aa*/ +//aaa \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_3(comment).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_3(comment).min.json new file mode 100644 index 00000000000..658e6602499 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_3(comment).min.json @@ -0,0 +1 @@ +/*aa*/[/*aa*/1/*aa*/,/*aa*/[/*aa*/]/*aa*/,/*aa*/{/*aa*/"a"/*aa*/:/*aa*/1/*aa*/},/*aa*/2/*aa*/]/*aa*///aaa \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_4(endcomment).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_4(endcomment).json new file mode 100644 index 00000000000..f248c148f46 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_4(endcomment).json @@ -0,0 +1,2 @@ +true +/* aaa */ \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_4(endcomment).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_4(endcomment).min.json new file mode 100644 index 00000000000..319588cbecd --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_4(endcomment).min.json @@ -0,0 +1 @@ +true/* aaa */ \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_empty(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_empty(fail).json new file mode 100644 index 00000000000..0136e1223b1 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_multiline_empty(fail).json @@ -0,0 +1 @@ +/* test */ \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_1(comment).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_1(comment).json new file mode 100644 index 00000000000..e6dc2b60c40 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_1(comment).json @@ -0,0 +1,6 @@ +// aaa +[// aaa + 1,// aaa + 2, // aaa + 3 // aaa +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_1(comment).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_1(comment).min.json new file mode 100644 index 00000000000..977f94930c8 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_1(comment).min.json @@ -0,0 +1,2 @@ +// aaa +[1,2,3] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_2(comment).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_2(comment).json new file mode 100644 index 00000000000..644a4df4d09 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_2(comment).json @@ -0,0 +1,6 @@ +// aaa +{ + "a": 1,// aaa + "b": 2, // aaa + "c": 3 // aaa +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_2(comment).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_2(comment).min.json new file mode 100644 index 00000000000..dc4dca64630 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_2(comment).min.json @@ -0,0 +1,2 @@ +// aaa +{"a":1,"b":2,"c":3} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_3(endcomment).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_3(endcomment).json new file mode 100644 index 00000000000..fed8da7f346 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_3(endcomment).json @@ -0,0 +1,2 @@ +true +// aaa \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_3(endcomment).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_3(endcomment).min.json new file mode 100644 index 00000000000..d0f47df7825 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_3(endcomment).min.json @@ -0,0 +1 @@ +true// aaa \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_4(endcomment).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_4(endcomment).json new file mode 100644 index 00000000000..9b5752f75c0 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_4(endcomment).json @@ -0,0 +1,6 @@ +[ + 1, + 2, + 3 +] +// aaa \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_4(endcomment).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_4(endcomment).min.json new file mode 100644 index 00000000000..3f6aab5566b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_4(endcomment).min.json @@ -0,0 +1 @@ +[1,2,3]//aaa \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_empty(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_empty(fail).json new file mode 100644 index 00000000000..75fa785de70 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_empty(fail).json @@ -0,0 +1 @@ +// test \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_end_cr(comment).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_end_cr(comment).json new file mode 100644 index 00000000000..d8c6a9cad63 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_end_cr(comment).json @@ -0,0 +1 @@ +{ // test } \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_end_crlf(comment).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_end_crlf(comment).json new file mode 100644 index 00000000000..fa941a70707 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_end_crlf(comment).json @@ -0,0 +1,2 @@ +{ // test + } \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_end_lf(comment).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_end_lf(comment).json new file mode 100644 index 00000000000..f85721341e7 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_end_lf(comment).json @@ -0,0 +1,2 @@ +{ // test + } \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_end_ls(comment)(ext_ws).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_end_ls(comment)(ext_ws).json new file mode 100644 index 00000000000..13ac9c28c38 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_end_ls(comment)(ext_ws).json @@ -0,0 +1 @@ +{ // test
 } \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_end_ps(comment)(ext_ws).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_end_ps(comment)(ext_ws).json new file mode 100644 index 00000000000..8f2cecc9ce6 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/comment_singleline_end_ps(comment)(ext_ws).json @@ -0,0 +1 @@ +{ // test
 } \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/content_after_doc_1(garbage).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/content_after_doc_1(garbage).min.json new file mode 100644 index 00000000000..eb56083fd4c --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/content_after_doc_1(garbage).min.json @@ -0,0 +1 @@ +[1,2,3]extra \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/content_after_doc_2(garbage).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/content_after_doc_2(garbage).min.json new file mode 100644 index 00000000000..6b3ea6036e2 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/content_after_doc_2(garbage).min.json @@ -0,0 +1 @@ +123/* \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/content_after_doc_3(garbage).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/content_after_doc_3(garbage).min.json new file mode 100644 index 00000000000..c9b281c0ec6 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/content_after_doc_3(garbage).min.json @@ -0,0 +1 @@ +123/ \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/content_after_doc_4(garbage).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/content_after_doc_4(garbage).json new file mode 100644 index 00000000000..9d1354116f4 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/content_after_doc_4(garbage).json @@ -0,0 +1,6 @@ +{ + "a": 1 +} +{ + "b": 2 +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/del_char.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/del_char.json new file mode 100644 index 00000000000..363947ace8e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/del_char.json @@ -0,0 +1,3 @@ +[ + "" +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/del_char.min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/del_char.min.json new file mode 100644 index 00000000000..7d064f49871 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/del_char.min.json @@ -0,0 +1 @@ +[""] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_1(ext_esc).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_1(ext_esc).min.json new file mode 100644 index 00000000000..d1eb60921a0 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_1(ext_esc).min.json @@ -0,0 +1 @@ +["\a"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_10(ext_esc).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_10(ext_esc).min.json new file mode 100644 index 00000000000..8a74eb512ca --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_10(ext_esc).min.json @@ -0,0 +1,2 @@ +["AAA\ +BBB"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_2(ext_esc).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_2(ext_esc).min.json new file mode 100644 index 00000000000..8bfae02b259 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_2(ext_esc).min.json @@ -0,0 +1 @@ +["\e"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_3(ext_esc).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_3(ext_esc).min.json new file mode 100644 index 00000000000..28a33df4cc3 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_3(ext_esc).min.json @@ -0,0 +1 @@ +["\v"] diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_4(ext_esc).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_4(ext_esc).min.json new file mode 100644 index 00000000000..53e09d9d450 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_4(ext_esc).min.json @@ -0,0 +1 @@ +["\'"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_5(ext_esc).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_5(ext_esc).min.json new file mode 100644 index 00000000000..a4be06f272b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_5(ext_esc).min.json @@ -0,0 +1 @@ +["\?"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_6(ext_esc).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_6(ext_esc).min.json new file mode 100644 index 00000000000..e65551e81b0 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_6(ext_esc).min.json @@ -0,0 +1 @@ +["\X"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_7(ext_esc).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_7(ext_esc).min.json new file mode 100644 index 00000000000..6e457288aa2 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_7(ext_esc).min.json @@ -0,0 +1 @@ +["\*"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_8(ext_esc).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_8(ext_esc).min.json new file mode 100644 index 00000000000..5e5edf05962 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_8(ext_esc).min.json @@ -0,0 +1 @@ +["\ "] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_9(ext_esc).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_9(ext_esc).min.json new file mode 100644 index 00000000000..f076e480560 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_char_9(ext_esc).min.json @@ -0,0 +1 @@ +["\😄"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_hex_1(ext_esc).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_hex_1(ext_esc).min.json new file mode 100644 index 00000000000..fae291938d9 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_hex_1(ext_esc).min.json @@ -0,0 +1 @@ +["\x00"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_hex_2(ext_esc).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_hex_2(ext_esc).min.json new file mode 100644 index 00000000000..a237d82365b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_hex_2(ext_esc).min.json @@ -0,0 +1 @@ +["A\xFFA"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_hex_3(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_hex_3(fail).min.json new file mode 100644 index 00000000000..2d365f5c2a1 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_hex_3(fail).min.json @@ -0,0 +1 @@ +["\xPP"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_hex_4(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_hex_4(fail).min.json new file mode 100644 index 00000000000..e39532665b7 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_hex_4(fail).min.json @@ -0,0 +1 @@ +["\x2"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_hex_5(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_hex_5(fail).min.json new file mode 100644 index 00000000000..2627124621a --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_hex_5(fail).min.json @@ -0,0 +1 @@ +["\x"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_num_0(ext_esc).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_num_0(ext_esc).min.json new file mode 100644 index 00000000000..7ddabef66bd --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_num_0(ext_esc).min.json @@ -0,0 +1 @@ +["\0"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_num_1(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_num_1(fail).min.json new file mode 100644 index 00000000000..b114aab7988 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_num_1(fail).min.json @@ -0,0 +1 @@ +["\1"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_num_2(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_num_2(fail).min.json new file mode 100644 index 00000000000..bddc99464cd --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_num_2(fail).min.json @@ -0,0 +1 @@ +["\123"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_num_3(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_num_3(fail).min.json new file mode 100644 index 00000000000..d32044477c3 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_num_3(fail).min.json @@ -0,0 +1 @@ +["\1abc"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_1(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_1(fail).json new file mode 100644 index 00000000000..8af659b8119 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_1(fail).json @@ -0,0 +1,3 @@ +[ + "\u" +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_1(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_1(fail).min.json new file mode 100644 index 00000000000..588eba94435 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_1(fail).min.json @@ -0,0 +1 @@ +["\u"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_2(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_2(fail).json new file mode 100644 index 00000000000..019362c220f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_2(fail).json @@ -0,0 +1,3 @@ +[ + "\u123" +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_2(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_2(fail).min.json new file mode 100644 index 00000000000..0ea7a82d4ff --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_2(fail).min.json @@ -0,0 +1 @@ +["\u123"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_3(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_3(fail).json new file mode 100644 index 00000000000..fd8e0cdb2ab --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_3(fail).json @@ -0,0 +1,3 @@ +[ + "\u123I" +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_3(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_3(fail).min.json new file mode 100644 index 00000000000..6ef5d101168 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_3(fail).min.json @@ -0,0 +1 @@ +["\u123I"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_4(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_4(fail).json new file mode 100644 index 00000000000..8dc325e423b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_4(fail).json @@ -0,0 +1,3 @@ +{ + "\u123I": "456" +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_4(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_4(fail).min.json new file mode 100644 index 00000000000..618253c5334 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_4(fail).min.json @@ -0,0 +1 @@ +{"\u123I":"456"} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_5(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_5(fail).json new file mode 100644 index 00000000000..e32ec421909 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_5(fail).json @@ -0,0 +1,3 @@ +{ + "456": "\u123I" +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_5(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_5(fail).min.json new file mode 100644 index 00000000000..b33a0cfe81b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/esc_unicode_5(fail).min.json @@ -0,0 +1 @@ +{"456":"\u123I"} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/ext_whitespace_1(ext_ws).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/ext_whitespace_1(ext_ws).min.json new file mode 100644 index 00000000000..0264685b711 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/ext_whitespace_1(ext_ws).min.json @@ -0,0 +1 @@ +[ ] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/ext_whitespace_2(ext_ws).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/ext_whitespace_2(ext_ws).min.json new file mode 100644 index 00000000000..a9ea535d1bb --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/ext_whitespace_2(ext_ws).min.json @@ -0,0 +1 @@ +[ ] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_1(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_1(fail).json new file mode 100644 index 00000000000..bee103930a9 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_1(fail).json @@ -0,0 +1,3 @@ +[ + truu +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_1(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_1(fail).min.json new file mode 100644 index 00000000000..1c4f1f44bb7 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_1(fail).min.json @@ -0,0 +1 @@ +[truu] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_2(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_2(fail).json new file mode 100644 index 00000000000..f7cc224e834 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_2(fail).json @@ -0,0 +1,3 @@ +[ + falss +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_2(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_2(fail).min.json new file mode 100644 index 00000000000..d61ad49f8c0 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_2(fail).min.json @@ -0,0 +1 @@ +[falss] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_3(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_3(fail).json new file mode 100644 index 00000000000..becb362b6c1 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_3(fail).json @@ -0,0 +1,3 @@ +{ + "a": truu +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_3(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_3(fail).min.json new file mode 100644 index 00000000000..8ecb664acc5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_3(fail).min.json @@ -0,0 +1 @@ +{"a":truu} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_4(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_4(fail).json new file mode 100644 index 00000000000..3f01ee22328 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_4(fail).json @@ -0,0 +1,3 @@ +{ + "a": falss +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_4(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_4(fail).min.json new file mode 100644 index 00000000000..25d9f68a928 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_4(fail).min.json @@ -0,0 +1 @@ +{"a":falss} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_5(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_5(fail).json new file mode 100644 index 00000000000..9869d9a2507 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_5(fail).json @@ -0,0 +1,3 @@ +[ + nil +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_5(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_5(fail).min.json new file mode 100644 index 00000000000..6553206487f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_5(fail).min.json @@ -0,0 +1 @@ +[nil] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_6(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_6(fail).json new file mode 100644 index 00000000000..e3b8b21b87d --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_6(fail).json @@ -0,0 +1,3 @@ +{ + "a": nil +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_6(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_6(fail).min.json new file mode 100644 index 00000000000..9bcd4b9f518 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_6(fail).min.json @@ -0,0 +1 @@ +{"a":nil} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_7(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_7(fail).json new file mode 100644 index 00000000000..5d174618ca6 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_7(fail).json @@ -0,0 +1,3 @@ +[ + NULL +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_7(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_7(fail).min.json new file mode 100644 index 00000000000..06904c6a57e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_7(fail).min.json @@ -0,0 +1 @@ +[NULL] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_8(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_8(fail).json new file mode 100644 index 00000000000..59f050da745 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_8(fail).json @@ -0,0 +1,3 @@ +{ + "a": NULL +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_8(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_8(fail).min.json new file mode 100644 index 00000000000..1f57d370f82 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_literal_8(fail).min.json @@ -0,0 +1 @@ +{"a":NULL} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_escape_1(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_escape_1(fail).min.json new file mode 100644 index 00000000000..8e6247319f5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_escape_1(fail).min.json @@ -0,0 +1 @@ +["\uD800"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_escape_2(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_escape_2(fail).min.json new file mode 100644 index 00000000000..6c166c529c3 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_escape_2(fail).min.json @@ -0,0 +1 @@ +["\uDFFF"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_escape_3(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_escape_3(fail).min.json new file mode 100644 index 00000000000..23cbf19725b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_escape_3(fail).min.json @@ -0,0 +1 @@ +["\uD801"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_escape_4(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_escape_4(fail).min.json new file mode 100644 index 00000000000..2c9693bb3db --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_escape_4(fail).min.json @@ -0,0 +1 @@ +["\uDC01"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_escape_5(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_escape_5(fail).min.json new file mode 100644 index 00000000000..0d521309089 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_escape_5(fail).min.json @@ -0,0 +1 @@ +["\uD801\uD801"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_escape_6(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_escape_6(fail).min.json new file mode 100644 index 00000000000..c2d9b98d9af --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_escape_6(fail).min.json @@ -0,0 +1 @@ +["\uDC01\uDC01"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_escape_7(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_escape_7(fail).min.json new file mode 100644 index 00000000000..03f23872261 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_escape_7(fail).min.json @@ -0,0 +1 @@ +["\uDC01\uD801"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_1(str_err).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_1(str_err).min.json new file mode 100644 index 00000000000..de9e4449648 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_1(str_err).min.json @@ -0,0 +1 @@ +[""] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_2(str_err).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_2(str_err).min.json new file mode 100644 index 00000000000..5cdcf9fef34 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_2(str_err).min.json @@ -0,0 +1 @@ +["€"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_3(str_err).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_3(str_err).min.json new file mode 100644 index 00000000000..e691989bd30 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_3(str_err).min.json @@ -0,0 +1 @@ +["Ð0"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_4(str_err).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_4(str_err).min.json new file mode 100644 index 00000000000..5bf5d8dfb7a --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_4(str_err).min.json @@ -0,0 +1 @@ +["Á€"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_5(str_err).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_5(str_err).min.json new file mode 100644 index 00000000000..00402c9b79b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_5(str_err).min.json @@ -0,0 +1 @@ +["àˆˆ"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_6(str_err).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_6(str_err).min.json new file mode 100644 index 00000000000..cec421d4ded --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_6(str_err).min.json @@ -0,0 +1 @@ +["í  "] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_7(str_err).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_7(str_err).min.json new file mode 100644 index 00000000000..92dc6e0c865 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_7(str_err).min.json @@ -0,0 +1 @@ +["ðˆˆˆ"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_8(str_err).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_8(str_err).min.json new file mode 100644 index 00000000000..0340947f71f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/invalid_utf8_seq_8(str_err).min.json @@ -0,0 +1 @@ +["õˆˆˆ"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/json5(comma)(comment)(inf)(nan)(ext_num)(ext_esc)(ext_ws)(str_sq)(str_uq).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/json5(comma)(comment)(inf)(nan)(ext_num)(ext_esc)(ext_ws)(str_sq)(str_uq).json new file mode 100644 index 00000000000..0a1d6b7dc17 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/json5(comma)(comment)(inf)(nan)(ext_num)(ext_esc)(ext_ws)(str_sq)(str_uq).json @@ -0,0 +1,18 @@ +{ + // single-line comment + /* multi-line comment */ + "key": "value", + unquoted_key: "value", + 'single quote key': 'single quoted text', + line_breaks: "Line\ +Line", + hexadecimal: 0xABCD1234, + leading_decimal_point: .123, + trailing_decimal_point: 123., + positive_sign: +123, + inf: Infinity, + nan: NaN, + trailing_comma: [1,2,3,], + extended_escape: "\a\e\v\'\?\0\x12\Z\😀", + extended_whitespace: "" +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_1(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_1(fail).json new file mode 100644 index 00000000000..0bdd071ae1a --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_1(fail).json @@ -0,0 +1,3 @@ +[ + ,"abc" +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_1(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_1(fail).min.json new file mode 100644 index 00000000000..2686b60f0f8 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_1(fail).min.json @@ -0,0 +1 @@ +[,"abc"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_2(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_2(fail).json new file mode 100644 index 00000000000..8c503af0a0e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_2(fail).json @@ -0,0 +1,4 @@ +{ + , + "key": "value" +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_2(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_2(fail).min.json new file mode 100644 index 00000000000..a71fe521600 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_2(fail).min.json @@ -0,0 +1 @@ +{,"key":"value"} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_3(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_3(fail).json new file mode 100644 index 00000000000..013b45c5bb1 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_3(fail).json @@ -0,0 +1,3 @@ +[ + , +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_3(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_3(fail).min.json new file mode 100644 index 00000000000..9d7077c6804 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_3(fail).min.json @@ -0,0 +1 @@ +[,] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_4(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_4(fail).json new file mode 100644 index 00000000000..3f3f9f796b8 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_4(fail).json @@ -0,0 +1,3 @@ +{ + , +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_4(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_4(fail).min.json new file mode 100644 index 00000000000..4f7034e21ce --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/leading_comma_4(fail).min.json @@ -0,0 +1 @@ +{,} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_inf(inf)(ext_num).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_inf(inf)(ext_num).json new file mode 100644 index 00000000000..851b5474e8a --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_inf(inf)(ext_num).json @@ -0,0 +1,40 @@ +[ + INF, + Inf, + inf, + INFINITY, + Infinity, + infinity, + -INF, + -Inf, + -inf, + -INFINITY, + -Infinity, + -infinity, + +INF, + +Inf, + +inf, + +INFINITY, + +Infinity, + +infinity, + { + "i": INF, + "i": Inf, + "i": inf, + "i": INFINITY, + "i": Infinity, + "i": infinity, + "i": -INF, + "i": -Inf, + "i": -inf, + "i": -INFINITY, + "i": -Infinity, + "i": -infinity, + "i": +INF, + "i": +Inf, + "i": +inf, + "i": +INFINITY, + "i": +Infinity, + "i": +infinity + } +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_inf(inf)(ext_num).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_inf(inf)(ext_num).min.json new file mode 100644 index 00000000000..7ee46e8b627 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_inf(inf)(ext_num).min.json @@ -0,0 +1 @@ +[INF,Inf,inf,INFINITY,Infinity,infinity,-INF,-Inf,-inf,-INFINITY,-Infinity,-infinity,+INF,+Inf,+inf,+INFINITY,+Infinity,+infinity,{"i":INF,"i":Inf,"i":inf,"i":INFINITY,"i":Infinity,"i":infinity,"i":-INF,"i":-Inf,"i":-inf,"i":-INFINITY,"i":-Infinity,"i":-infinity,"i":+INF,"i":+Inf,"i":+inf,"i":+INFINITY,"i":+Infinity,"i":+infinity}] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_inf(inf).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_inf(inf).json new file mode 100644 index 00000000000..6f0b20b9b01 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_inf(inf).json @@ -0,0 +1,28 @@ +[ + INF, + Inf, + inf, + INFINITY, + Infinity, + infinity, + -INF, + -Inf, + -inf, + -INFINITY, + -Infinity, + -infinity, + { + "i": INF, + "i": Inf, + "i": inf, + "i": INFINITY, + "i": Infinity, + "i": infinity, + "i": -INF, + "i": -Inf, + "i": -inf, + "i": -INFINITY, + "i": -Infinity, + "i": -infinity + } +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_inf(inf).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_inf(inf).min.json new file mode 100644 index 00000000000..0a621151f76 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_inf(inf).min.json @@ -0,0 +1 @@ +[INF,Inf,inf,INFINITY,Infinity,infinity,-INF,-Inf,-inf,-INFINITY,-Infinity,-infinity,{"i":INF,"i":Inf,"i":inf,"i":INFINITY,"i":Infinity,"i":infinity,"i":-INF,"i":-Inf,"i":-inf,"i":-INFINITY,"i":-Infinity,"i":-infinity}] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_nan(nan)(ext_num).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_nan(nan)(ext_num).json new file mode 100644 index 00000000000..eaf1e46ad68 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_nan(nan)(ext_num).json @@ -0,0 +1,22 @@ +[ + NaN, + Nan, + nan, + -NaN, + -Nan, + -nan, + +NaN, + +Nan, + +nan, + { + "n": NaN, + "n": Nan, + "n": nan, + "n": -NaN, + "n": -Nan, + "n": -nan, + "n": +NaN, + "n": +Nan, + "n": +nan + } +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_nan(nan)(ext_num).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_nan(nan)(ext_num).min.json new file mode 100644 index 00000000000..372eee67f75 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_nan(nan)(ext_num).min.json @@ -0,0 +1 @@ +[NaN,Nan,nan,-NaN,-Nan,-nan,+NaN,+Nan,+nan,{"n":NaN,"n":Nan,"n":nan,"n":-NaN,"n":-Nan,"n":-nan,"n":+NaN,"n":+Nan,"n":+nan}] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_nan(nan).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_nan(nan).json new file mode 100644 index 00000000000..3516dc818f7 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_nan(nan).json @@ -0,0 +1,16 @@ +[ + NaN, + Nan, + nan, + -NaN, + -Nan, + -nan, + { + "n": NaN, + "n": Nan, + "n": nan, + "n": -NaN, + "n": -Nan, + "n": -nan + } +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_nan(nan).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_nan(nan).min.json new file mode 100644 index 00000000000..a18de5313c8 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/literal_nan(nan).min.json @@ -0,0 +1 @@ +[NaN,Nan,nan,-NaN,-Nan,-nan,{"n":NaN,"n":Nan,"n":nan,"n":-NaN,"n":-Nan,"n":-nan}] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/long_space.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/long_space.json new file mode 100644 index 00000000000..a66324e88e1 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/long_space.json @@ -0,0 +1,6 @@ +[ + [ + [ ], + { } + ] +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/long_string.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/long_string.json new file mode 100644 index 00000000000..387f294885e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/long_string.json @@ -0,0 +1,3 @@ +[ + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/more_spaces.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/more_spaces.json new file mode 100644 index 00000000000..8c37c40af42 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/more_spaces.json @@ -0,0 +1 @@ + [ 1 , "" , true , { "key" : "val" , "key2" : "val2" } ] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/multi_trailing_comma_1(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/multi_trailing_comma_1(fail).json new file mode 100644 index 00000000000..99b286bffc8 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/multi_trailing_comma_1(fail).json @@ -0,0 +1,6 @@ +[ + 1, + 2, + 3, + , +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/multi_trailing_comma_1(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/multi_trailing_comma_1(fail).min.json new file mode 100644 index 00000000000..085e7d89961 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/multi_trailing_comma_1(fail).min.json @@ -0,0 +1 @@ +[1,2,3,,] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/multi_trailing_comma_2(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/multi_trailing_comma_2(fail).json new file mode 100644 index 00000000000..ac0c0264c15 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/multi_trailing_comma_2(fail).json @@ -0,0 +1,5 @@ +{ + "a": 1, + "b": 2, + , +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/multi_trailing_comma_2(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/multi_trailing_comma_2(fail).min.json new file mode 100644 index 00000000000..371a4395e8f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/multi_trailing_comma_2(fail).min.json @@ -0,0 +1 @@ +{"a":1,"b":2,,} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/no_comma_1(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/no_comma_1(fail).json new file mode 100644 index 00000000000..2a7bcc78055 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/no_comma_1(fail).json @@ -0,0 +1,4 @@ +[ + null + null +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/no_comma_2(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/no_comma_2(fail).json new file mode 100644 index 00000000000..edd05dd9e8b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/no_comma_2(fail).json @@ -0,0 +1,4 @@ +{ + "key1": "value1" + "key2": "value2" +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_ext_1(ext_num).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_ext_1(ext_num).json new file mode 100644 index 00000000000..a80a21180cf --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_ext_1(ext_num).json @@ -0,0 +1,8 @@ +[ + .123, + 123., + .123e4, + 123.e4, + +.123, + +123. +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_ext_1(ext_num).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_ext_1(ext_num).min.json new file mode 100644 index 00000000000..57a7a0a5164 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_ext_1(ext_num).min.json @@ -0,0 +1 @@ +[.123,123.,.123e4,123.e4,+.123,+123.] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_ext_2(ext_num).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_ext_2(ext_num).json new file mode 100644 index 00000000000..52987af00b2 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_ext_2(ext_num).json @@ -0,0 +1,8 @@ +{ + "a": .123, + "b": 123., + "c": .123e4, + "d": 123.e4, + "e": +.123, + "f": +123. +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_ext_2(ext_num).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_ext_2(ext_num).min.json new file mode 100644 index 00000000000..50ae992d99b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_ext_2(ext_num).min.json @@ -0,0 +1 @@ +{"a":.123,"b":123.,"c":.123e4,"d":123.e4,"e":+.123,"f":+123.} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_1(ext_num).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_1(ext_num).json new file mode 100644 index 00000000000..7564671d105 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_1(ext_num).json @@ -0,0 +1,7 @@ +[ + 0x0, + -0x1234, + 0x0000, + 0XABCD, + 0xabcd +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_1(ext_num).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_1(ext_num).min.json new file mode 100644 index 00000000000..4e1ff2b403c --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_1(ext_num).min.json @@ -0,0 +1 @@ +[0x0,-0x1234,0x0000,0XABCD,0xabcd] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_2(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_2(fail).json new file mode 100644 index 00000000000..02d4b4113cb --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_2(fail).json @@ -0,0 +1,3 @@ +[ + 0x +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_2(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_2(fail).min.json new file mode 100644 index 00000000000..0b5e1dd46d6 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_2(fail).min.json @@ -0,0 +1 @@ +[0x] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_3(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_3(fail).json new file mode 100644 index 00000000000..592754ab0b4 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_3(fail).json @@ -0,0 +1,3 @@ +[ + 0x123.456 +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_3(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_3(fail).min.json new file mode 100644 index 00000000000..267a4581b51 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_3(fail).min.json @@ -0,0 +1 @@ +[0x123.456] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_big(ext_num)(bighex).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_big(ext_num)(bighex).json new file mode 100644 index 00000000000..0d50b77577f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_big(ext_num)(bighex).json @@ -0,0 +1,4 @@ +[ + 0x0123456789ABCDEF0123456789ABCDEF, + -0x0123456789ABCDEF0123456789ABCDEF +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_big(ext_num)(bighex).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_big(ext_num)(bighex).min.json new file mode 100644 index 00000000000..81b11aa5677 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_hex_big(ext_num)(bighex).min.json @@ -0,0 +1 @@ +[0x0123456789ABCDEF0123456789ABCDEF,-0x0123456789ABCDEF0123456789ABCDEF] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_leading_zero_1(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_leading_zero_1(fail).json new file mode 100644 index 00000000000..e086a0ee604 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_leading_zero_1(fail).json @@ -0,0 +1,3 @@ +[ + 00 +] diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_leading_zero_2(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_leading_zero_2(fail).json new file mode 100644 index 00000000000..e18da18b706 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_leading_zero_2(fail).json @@ -0,0 +1,3 @@ +[ + 0123 +] diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_leading_zero_3(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_leading_zero_3(fail).json new file mode 100644 index 00000000000..0fb5a73c3fa --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_leading_zero_3(fail).json @@ -0,0 +1,3 @@ +[ + 00123 +] diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_leading_zero_4(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_leading_zero_4(fail).json new file mode 100644 index 00000000000..20d5a3644ba --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_leading_zero_4(fail).json @@ -0,0 +1,3 @@ +[ + 00.0 +] diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_leading_zero_5(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_leading_zero_5(fail).json new file mode 100644 index 00000000000..fc436809174 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_leading_zero_5(fail).json @@ -0,0 +1,3 @@ +[ + 00.123 +] diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_long_int(bignum).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_long_int(bignum).json new file mode 100644 index 00000000000..d5d28f09e56 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_long_int(bignum).json @@ -0,0 +1 @@ +123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_long_real(bignum).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_long_real(bignum).json new file mode 100644 index 00000000000..de17ace501a --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_long_real(bignum).json @@ -0,0 +1 @@ +123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.0 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_long_real.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_long_real.json new file mode 100644 index 00000000000..0ee7f6f6946 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_long_real.json @@ -0,0 +1 @@ +0.123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_1.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_1.json new file mode 100644 index 00000000000..8d680effcb5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_1.json @@ -0,0 +1 @@ +0.99999999999999999 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_2.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_2.json new file mode 100644 index 00000000000..22d0c732fb4 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_2.json @@ -0,0 +1 @@ +1.7976931348623155e+308 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_3.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_3.json new file mode 100644 index 00000000000..002956eb514 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_3.json @@ -0,0 +1 @@ +1532495540865889028499530487619540915306042838067707904.0 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_4.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_4.json new file mode 100644 index 00000000000..45dd4ad1667 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_4.json @@ -0,0 +1 @@ +0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_5.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_5.json new file mode 100644 index 00000000000..e6f1fb55a4b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_5.json @@ -0,0 +1 @@ +5.01042090002243250125873475517575089229404508911079583656777744168034413250572896957044871206572637048440089507299506695055335346009233975506965415435762316484727374555180669849586624628118677416088544682029359271612073962728499823370574542907950289615398032024776959370351531333927683435572390788707994053189727799316534944670357325827641268724024551017305166642827267436398674328583453115497378886133009753871002861037915323396524674440119918996646956262755333800258220588204646896178154345598163666897167539604014977981908246473645600267411126519686156738026179115192677600268245391526220329846480762346317976395245426781699153440237350195493786693809683893623101945482267965911689217559966957882267024615430273115634918212890625E-293 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_6.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_6.json new file mode 100644 index 00000000000..8f7b8b90c8f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_6.json @@ -0,0 +1 @@ +2.47032822920623272088284396434110686182529901307162382212792841250337753635104375932649918180817996189898282347722858865463328355177969898199387398005390939063150356595155702263922908583924491051844359318028499365361525003193704576782492193656236698636584807570015857692699037063119282795585513329278343384093519780155312465972635795746227664652728272200563740064854999770965994704540208281662262378573934507363390079677619305775067401763246736009689513405355374585166611342237666786041621596804619144672918403005300575308490487653917113865916462395249126236538818796362393732804238910186723484976682350898633885879256283027559956575244555072551893136908362547791869486679949683240497058210285131854513962138377228261454376934125320985913276672363281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_7(bignum).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_7(bignum).json new file mode 100644 index 00000000000..07a687c45d5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_7(bignum).json @@ -0,0 +1 @@ +179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792.0 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_8(bignum).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_8(bignum).json new file mode 100644 index 00000000000..545d8098f4e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_real_8(bignum).json @@ -0,0 +1 @@ +12340000E00001234 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_sint_max.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_sint_max.json new file mode 100644 index 00000000000..f353950e01e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_sint_max.json @@ -0,0 +1,5 @@ +[ + 9223372036854775806, + 9223372036854775807, + 9223372036854775808 +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_sint_min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_sint_min.json new file mode 100644 index 00000000000..8929314d403 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_sint_min.json @@ -0,0 +1,5 @@ +[ + -9223372036854775807, + -9223372036854775808, + -9223372036854775809 +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_uint_max.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_uint_max.json new file mode 100644 index 00000000000..4442c437d76 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/num_uint_max.json @@ -0,0 +1,5 @@ +[ + 18446744073709551614, + 18446744073709551615, + 18446744073709551616 +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/single_literal_1(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/single_literal_1(fail).json new file mode 100644 index 00000000000..7a4a6f04a88 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/single_literal_1(fail).json @@ -0,0 +1 @@ +truu \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/single_literal_2(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/single_literal_2(fail).json new file mode 100644 index 00000000000..0ba0793ef0e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/single_literal_2(fail).json @@ -0,0 +1 @@ +tru \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/single_literal_3(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/single_literal_3(fail).json new file mode 100644 index 00000000000..52a422f29d9 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/single_literal_3(fail).json @@ -0,0 +1 @@ +falss \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/single_literal_4(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/single_literal_4(fail).json new file mode 100644 index 00000000000..692b8050547 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/single_literal_4(fail).json @@ -0,0 +1 @@ +fals \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/single_literal_5(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/single_literal_5(fail).json new file mode 100644 index 00000000000..5f6f79d84c8 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/single_literal_5(fail).json @@ -0,0 +1 @@ +Null \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/single_literal_6(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/single_literal_6(fail).json new file mode 100644 index 00000000000..0f4a1662f82 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/single_literal_6(fail).json @@ -0,0 +1,3 @@ +[ + Null +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/single_literal_6(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/single_literal_6(fail).min.json new file mode 100644 index 00000000000..33fc745df79 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/single_literal_6(fail).min.json @@ -0,0 +1 @@ +[Null] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_1(str_sq).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_1(str_sq).json new file mode 100644 index 00000000000..34974876728 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_1(str_sq).json @@ -0,0 +1,3 @@ +[ + 'abc' +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_1(str_sq).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_1(str_sq).min.json new file mode 100644 index 00000000000..11e5a01c943 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_1(str_sq).min.json @@ -0,0 +1 @@ +['abc'] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_2(str_sq).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_2(str_sq).json new file mode 100644 index 00000000000..d1637497852 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_2(str_sq).json @@ -0,0 +1,5 @@ +{ + 'key1': 'abc', + 'key2': 'a"c', + 'key3': 'a\'c' +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_2(str_sq).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_2(str_sq).min.json new file mode 100644 index 00000000000..d6b7b04814c --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_2(str_sq).min.json @@ -0,0 +1 @@ +{'key1':'abc','key2':'a"c','key3':'a\'c'} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_err_1(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_err_1(fail).json new file mode 100644 index 00000000000..847332ea9f6 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_err_1(fail).json @@ -0,0 +1,3 @@ +[ + 'abc" +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_err_1(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_err_1(fail).min.json new file mode 100644 index 00000000000..c4ac4419396 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_err_1(fail).min.json @@ -0,0 +1 @@ +['abc"] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_err_2(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_err_2(fail).json new file mode 100644 index 00000000000..93487bf73e4 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_err_2(fail).json @@ -0,0 +1,3 @@ +{ + 'abc": 123 +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_err_2(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_err_2(fail).min.json new file mode 100644 index 00000000000..56698489628 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_err_2(fail).min.json @@ -0,0 +1 @@ +{'abc":123} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_err_3(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_err_3(fail).json new file mode 100644 index 00000000000..64c304a5294 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_err_3(fail).json @@ -0,0 +1,3 @@ +{ + "key": 'abc" +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_err_3(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_err_3(fail).min.json new file mode 100644 index 00000000000..235704d28e9 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_single_quote_err_3(fail).min.json @@ -0,0 +1 @@ +{"key":'abc"} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_1(str_uq).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_1(str_uq).json new file mode 100644 index 00000000000..50f44762a41 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_1(str_uq).json @@ -0,0 +1,4 @@ +{ + a: 1, + b: 2 +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_1(str_uq).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_1(str_uq).min.json new file mode 100644 index 00000000000..6dfe0a87b06 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_1(str_uq).min.json @@ -0,0 +1 @@ +{a:1,b:2} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_2(str_uq).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_2(str_uq).json new file mode 100644 index 00000000000..51cce1bf2ae --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_2(str_uq).json @@ -0,0 +1,16 @@ +{ + \u1234AAA: 1, + AAA\u1234: 2, + $AAA: 3, + é果\u1234é果\u1234é果: 4, + \uD83D\uDE0A: 5, + 😀: 6, + true: true, + false: false, + null: null, + while: true, + do: true, + _: true, + _$_: true, + $_test123_$: true +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_2(str_uq).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_2(str_uq).min.json new file mode 100644 index 00000000000..00d3bd4b043 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_2(str_uq).min.json @@ -0,0 +1 @@ +{\u1234AAA:1,AAA\u1234:2,$AAA:3,é果\u1234é果\u1234é果:4,\uD83D\uDE0A:5,😀:6,true:true,false:false,null:null,while:true,do:true,_:true,_$_:true,$_test123_$:true} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_1(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_1(fail).json new file mode 100644 index 00000000000..2387c8546fb --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_1(fail).json @@ -0,0 +1,3 @@ +{ + 123: 456 +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_1(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_1(fail).min.json new file mode 100644 index 00000000000..b0cbfe6d08f --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_1(fail).min.json @@ -0,0 +1 @@ +{123:456} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_2(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_2(fail).json new file mode 100644 index 00000000000..d4bc18c1d4d --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_2(fail).json @@ -0,0 +1,3 @@ +{ + a-b: 1 +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_2(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_2(fail).min.json new file mode 100644 index 00000000000..1bc7b6861ba --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_2(fail).min.json @@ -0,0 +1 @@ +{a-b:1} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_3(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_3(fail).json new file mode 100644 index 00000000000..f88577e2448 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_3(fail).json @@ -0,0 +1,3 @@ +{ + a.b: 1 +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_3(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_3(fail).min.json new file mode 100644 index 00000000000..363e99f9bbe --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_3(fail).min.json @@ -0,0 +1 @@ +{a.b:1} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_4(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_4(fail).json new file mode 100644 index 00000000000..53effa62910 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_4(fail).json @@ -0,0 +1,3 @@ +{ + abc\u: 1 +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_4(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_4(fail).min.json new file mode 100644 index 00000000000..1c093f87cf0 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/str_unquoted_err_4(fail).min.json @@ -0,0 +1 @@ +{abc\u:1} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/trailing_comma_1(comma).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/trailing_comma_1(comma).json new file mode 100644 index 00000000000..9ec6706ed05 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/trailing_comma_1(comma).json @@ -0,0 +1,4 @@ +[ + 1, + 2, +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/trailing_comma_1(comma).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/trailing_comma_1(comma).min.json new file mode 100644 index 00000000000..fbbcb4f97a0 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/trailing_comma_1(comma).min.json @@ -0,0 +1 @@ +[1,2,] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/trailing_comma_2(comma).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/trailing_comma_2(comma).json new file mode 100644 index 00000000000..5d9537349d8 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/trailing_comma_2(comma).json @@ -0,0 +1,3 @@ +{ + "a": 1, +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/trailing_comma_2(comma).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/trailing_comma_2(comma).min.json new file mode 100644 index 00000000000..3acaa8fb045 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/trailing_comma_2(comma).min.json @@ -0,0 +1 @@ +{"a":1,} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_1(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_1(fail).json new file mode 100644 index 00000000000..67b4913da06 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_1(fail).json @@ -0,0 +1,4 @@ +[ + 1, /* unclosed comment + 2 +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_1(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_1(fail).min.json new file mode 100644 index 00000000000..98f4df3d701 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_1(fail).min.json @@ -0,0 +1 @@ +[1,/* unclosed comment 2] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_2(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_2(fail).json new file mode 100644 index 00000000000..38c3aeb87e1 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_2(fail).json @@ -0,0 +1,4 @@ +{ + "a": 1, /* ppp + "b": 2 +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_2(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_2(fail).min.json new file mode 100644 index 00000000000..51b53291e03 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_2(fail).min.json @@ -0,0 +1 @@ +{"a":1/* } \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_3(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_3(fail).json new file mode 100644 index 00000000000..bd4d8795907 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_3(fail).json @@ -0,0 +1,5 @@ +[ + 1, + 2 + /*aaa +] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_3(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_3(fail).min.json new file mode 100644 index 00000000000..d71e0f5ada9 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_3(fail).min.json @@ -0,0 +1 @@ +[1,2/*aaa ] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_4(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_4(fail).json new file mode 100644 index 00000000000..f6ccf5bb775 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_4(fail).json @@ -0,0 +1,3 @@ +{ + "a"/* test : 1 +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_4(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_4(fail).min.json new file mode 100644 index 00000000000..30f836a505a --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_4(fail).min.json @@ -0,0 +1 @@ +{"a"/*abc : } \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_5(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_5(fail).json new file mode 100644 index 00000000000..af0af024d92 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_5(fail).json @@ -0,0 +1,4 @@ +{ + "a": 1 + /* test +} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_5(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_5(fail).min.json new file mode 100644 index 00000000000..342ec4dbc4c --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_5(fail).min.json @@ -0,0 +1 @@ +{"a":1/* test} \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_6(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_6(fail).json new file mode 100644 index 00000000000..842bb96669a --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_6(fail).json @@ -0,0 +1,2 @@ +/* abd +[1,2,3] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_6(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_6(fail).min.json new file mode 100644 index 00000000000..be87086b14b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_6(fail).min.json @@ -0,0 +1 @@ +/* abd[1,2,3] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_7(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_7(fail).json new file mode 100644 index 00000000000..6413ed8dce6 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_7(fail).json @@ -0,0 +1,2 @@ +{ + /* test \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_7(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_7(fail).min.json new file mode 100644 index 00000000000..1f2aa04662d --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_7(fail).min.json @@ -0,0 +1 @@ +{/* test \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_8(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_8(fail).json new file mode 100644 index 00000000000..a8a6eaf31f2 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_8(fail).json @@ -0,0 +1,2 @@ +{ + "key": /* test \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_8(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_8(fail).min.json new file mode 100644 index 00000000000..98e1f0b8f5a --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_8(fail).min.json @@ -0,0 +1 @@ +{"key":/* test \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_tail_1(garbage).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_tail_1(garbage).json new file mode 100644 index 00000000000..b906dbd8316 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_tail_1(garbage).json @@ -0,0 +1 @@ +true/*what \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_tail_2(garbage).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_tail_2(garbage).json new file mode 100644 index 00000000000..0be9bfae2d4 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_tail_2(garbage).json @@ -0,0 +1,4 @@ +{ + "key": "val" +} +/* test \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_tail_2(garbage).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_tail_2(garbage).min.json new file mode 100644 index 00000000000..8af600c4242 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unclosed_comment_tail_2(garbage).min.json @@ -0,0 +1 @@ +{"key":"val"}/* test \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/unexpected_end(fail).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unexpected_end(fail).json new file mode 100644 index 00000000000..f945d16db7c --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unexpected_end(fail).json @@ -0,0 +1,2 @@ +[ + 123 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/unexpected_end(fail).min.json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unexpected_end(fail).min.json new file mode 100644 index 00000000000..de9a2e034a8 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/unexpected_end(fail).min.json @@ -0,0 +1 @@ +[123 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/whitespace_bom(bom).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/whitespace_bom(bom).json new file mode 100644 index 00000000000..3e2f6b7d6e7 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/whitespace_bom(bom).json @@ -0,0 +1 @@ +[1,2,3] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/whitespace_bom_inside(ext_ws).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/whitespace_bom_inside(ext_ws).json new file mode 100644 index 00000000000..751de87e609 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/whitespace_bom_inside(ext_ws).json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/whitespace_ff(ext_ws).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/whitespace_ff(ext_ws).json new file mode 100644 index 00000000000..a9ea535d1bb --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/whitespace_ff(ext_ws).json @@ -0,0 +1 @@ +[ ] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/whitespace_ls(ext_ws).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/whitespace_ls(ext_ws).json new file mode 100644 index 00000000000..975b50f9422 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/whitespace_ls(ext_ws).json @@ -0,0 +1 @@ +[
] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/whitespace_nbsp(ext_ws).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/whitespace_nbsp(ext_ws).json new file mode 100644 index 00000000000..841ee3fcc5d --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/whitespace_nbsp(ext_ws).json @@ -0,0 +1 @@ +[ ] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/json/test_yyjson/whitespace_vt(ext_ws).json b/lib/yyjson-0.12.0/test/data/json/test_yyjson/whitespace_vt(ext_ws).json new file mode 100644 index 00000000000..0264685b711 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/json/test_yyjson/whitespace_vt(ext_ws).json @@ -0,0 +1 @@ +[ ] \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/num/README.md b/lib/yyjson-0.12.0/test/data/num/README.md new file mode 100644 index 00000000000..636429f511b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/README.md @@ -0,0 +1,16 @@ +# Number Test Data + +This directory contains test cases used to validate JSON number parsing. + +## Number Types + +- `int` Integer (e.g., -123, -0) +- `real` Real number (e.g., 1.23, 1e23) +- `hex` Hexadecimal integer (e.g., 0x123) +- `literal` Special numeric literal (e.g., NaN, Infinity) + +## Number Flags +- `(big)` Integer that exceeds the int64/uint64 range and should be read as real number +- `(inf)` Number (integer or real) that exceeds the double precision range +- `(ext)` Number valid only when the `EXT_NUMBER` flag is enabled +- `(fail)` Number that must be rejected under all flags diff --git a/lib/yyjson-0.12.0/test/data/num/hex(ext)(big).txt b/lib/yyjson-0.12.0/test/data/num/hex(ext)(big).txt new file mode 100644 index 00000000000..ea8113fee86 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/hex(ext)(big).txt @@ -0,0 +1,58 @@ + +# ============================================================================== +# Overflow Hexadecimal + +# UINT64_MAX(18446744073709551615) +1, +2, +3 ... + +0x10000000000000000 +0x10000000000000001 +0x10000000000000002 +0x1000000000000000D +0x1000000000000000E +0x1000000000000000F + +0xF0000000000000000 +0xF0000000000000001 +0xF0000000000000002 +0xF000000000000000D +0xF000000000000000E +0xF000000000000000F + +0xFFFFFFFFFFFFFFFFF + ++0x10000000000000000 ++0x10000000000000001 ++0x10000000000000002 ++0x1000000000000000D ++0x1000000000000000E ++0x1000000000000000F + ++0xF0000000000000000 ++0xF0000000000000001 ++0xF0000000000000002 ++0xF000000000000000D ++0xF000000000000000E ++0xF000000000000000F + ++0xFFFFFFFFFFFFFFFFF + + +# INT64_MIN(-9223372036854775808) -1, -2, -3, ... + +-0x8000000000000001 +-0x8000000000000002 +-0x8000000000000003 + +-0x800000000000000D +-0x800000000000000E +-0x800000000000000F + +-0xF000000000000000 +-0xF000000000000001 +-0xF000000000000002 +-0xFFFFFFFFFFFFFFFF + +-0x80000000000000000 +-0x80000000000000001 +-0x80000000000000002 +-0x80000000000000003 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/num/hex(ext).txt b/lib/yyjson-0.12.0/test/data/num/hex(ext).txt new file mode 100644 index 00000000000..5c82b8ca342 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/hex(ext).txt @@ -0,0 +1,232 @@ +# ============================================================================== +# Hexadecimal + +0x0 +0X0 ++0x0 ++0X0 +-0x0 +-0X0 + +0x1 +0X1 ++0x1 ++0X1 +-0x1 +-0X1 + +0xf +0Xf ++0xf ++0Xf +-0xf +-0Xf + +0xF +0XF ++0xF ++0XF +-0xF +-0XF + +0x123 +-0x123 ++0x123 + +0xAaFf123 +-0xAaFf123 ++0xAaFf123 + +0x1e2 +-0x1e2 ++0x1e2 + + +# ============================================================================== +# Hexadecimal with leading Zero + +0x00 ++0x00 +-0x00 + +0x0F ++0x0F +-0x0F + +0x00001234 ++0x00001234 ++0x00001234 + +0x0FFFFFFFFFFFFFFFF +0x0000000000000000FFFFFFFFFFFFFFFF + ++0x07FFFFFFFFFFFFFFF ++0x00000000000000007FFFFFFFFFFFFFFF + +-0x08000000000000000 +-0x00000000000000008000000000000000 + + +# ============================================================================== +# Hexadecimal Limits + +# UINT64_MAX(18446744073709551615) -0, -1, -2, ... + +0xFFFFFFFFFFFFFFFF +0xFFFFFFFFFFFFFFFE +0xFFFFFFFFFFFFFFFD + +0xFFFFFFFFFFFFFFF2 +0xFFFFFFFFFFFFFFF1 +0xFFFFFFFFFFFFFFF0 + +0xFFFFFFFFFFFFFFEF +0xFFFFFFFFFFFFFFEE +0xFFFFFFFFFFFFFFED + +0xFFFFFFFFFFFFFFE2 +0xFFFFFFFFFFFFFFE1 +0xFFFFFFFFFFFFFFE0 + +0xFFFFFFFFFFFFFFF +0xFFFFFFFFFFFFFFE +0xFFFFFFFFFFFFFFD + +0xFFFFFFFFFFFFFF2 +0xFFFFFFFFFFFFFF1 +0xFFFFFFFFFFFFFF0 + ++0xFFFFFFFFFFFFFFFF ++0xFFFFFFFFFFFFFFFE ++0xFFFFFFFFFFFFFFFD + ++0xFFFFFFFFFFFFFFF2 ++0xFFFFFFFFFFFFFFF1 ++0xFFFFFFFFFFFFFFF0 + ++0xFFFFFFFFFFFFFFEF ++0xFFFFFFFFFFFFFFEE ++0xFFFFFFFFFFFFFFED + ++0xFFFFFFFFFFFFFFE2 ++0xFFFFFFFFFFFFFFE1 ++0xFFFFFFFFFFFFFFE0 + ++0xFFFFFFFFFFFFFFF ++0xFFFFFFFFFFFFFFE ++0xFFFFFFFFFFFFFFD + ++0xFFFFFFFFFFFFFF2 ++0xFFFFFFFFFFFFFF1 ++0xFFFFFFFFFFFFFF0 + + +# INT64_MAX(9223372036854775807) +1, +2, +3, ... + +0x8000000000000000 +0x8000000000000001 +0x8000000000000002 + +0x800000000000000D +0x800000000000000E +0x800000000000000F + ++0x8000000000000000 ++0x8000000000000001 ++0x8000000000000002 + ++0x800000000000000D ++0x800000000000000E ++0x800000000000000F + + +# INT64_MAX(9223372036854775807) -0, -1, -2, ... + +0x7FFFFFFFFFFFFFFF +0x7FFFFFFFFFFFFFFE +0x7FFFFFFFFFFFFFFD + +0x7FFFFFFFFFFFFFF2 +0x7FFFFFFFFFFFFFF1 +0x7FFFFFFFFFFFFFF0 + +0x7FFFFFFFFFFFFFEF +0x7FFFFFFFFFFFFFEE +0x7FFFFFFFFFFFFFED + +0x7FFFFFFFFFFFFFE2 +0x7FFFFFFFFFFFFFE1 +0x7FFFFFFFFFFFFFE0 + +0x7FFFFFFFFFFFFFF +0x7FFFFFFFFFFFFFE +0x7FFFFFFFFFFFFFD + +0x7FFFFFFFFFFFFF2 +0x7FFFFFFFFFFFFF1 +0x7FFFFFFFFFFFFF0 + ++0x7FFFFFFFFFFFFFFF ++0x7FFFFFFFFFFFFFFE ++0x7FFFFFFFFFFFFFFD + ++0x7FFFFFFFFFFFFFF2 ++0x7FFFFFFFFFFFFFF1 ++0x7FFFFFFFFFFFFFF0 + ++0x7FFFFFFFFFFFFFEF ++0x7FFFFFFFFFFFFFEE ++0x7FFFFFFFFFFFFFED + ++0x7FFFFFFFFFFFFFE2 ++0x7FFFFFFFFFFFFFE1 ++0x7FFFFFFFFFFFFFE0 + ++0x7FFFFFFFFFFFFFF ++0x7FFFFFFFFFFFFFE ++0x7FFFFFFFFFFFFFD + ++0x7FFFFFFFFFFFFF2 ++0x7FFFFFFFFFFFFF1 ++0x7FFFFFFFFFFFFF0 + + +# INT64_MIN(-9223372036854775808) +0, +1, +2, ... + +-0x8000000000000000 + +-0x7FFFFFFFFFFFFFFF +-0x7FFFFFFFFFFFFFFE +-0x7FFFFFFFFFFFFFFD + +-0x7FFFFFFFFFFFFFF2 +-0x7FFFFFFFFFFFFFF1 +-0x7FFFFFFFFFFFFFF0 + +-0x7FFFFFFFFFFFFFEF +-0x7FFFFFFFFFFFFFEE +-0x7FFFFFFFFFFFFFED + +-0xFFFFFFFFFFFFFFF +-0xFFFFFFFFFFFFFFE +-0xFFFFFFFFFFFFFFD + +-0xFFFFFFFFFFFFFF2 +-0xFFFFFFFFFFFFFF1 +-0xFFFFFFFFFFFFFF0 + +-0xEFFFFFFFFFFFFFF +-0xEFFFFFFFFFFFFFE +-0xEFFFFFFFFFFFFFD + +-0xEFFFFFFFFFFFFF2 +-0xEFFFFFFFFFFFFF1 +-0xEFFFFFFFFFFFFF0 + +-0x7FFFFFFFFFFFFFF +-0x7FFFFFFFFFFFFFE +-0x7FFFFFFFFFFFFFD + +-0x7FFFFFFFFFFFFF2 +-0x7FFFFFFFFFFFFF1 +-0x7FFFFFFFFFFFFF0 diff --git a/lib/yyjson-0.12.0/test/data/num/hex(fail).txt b/lib/yyjson-0.12.0/test/data/num/hex(fail).txt new file mode 100644 index 00000000000..4594abee128 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/hex(fail).txt @@ -0,0 +1,49 @@ +# ============================================================================== +# Invalid Hexadecimal + +0x +0X +-0x +-0X ++0x ++0X + +0x. +-0x. ++0x. + +0xL +-0xL ++0xL + +0x.1 +-0x.1 ++0x.1 + +0xx123 +-0xx123 ++0xx123 + +0.x1 +-0.x1 ++0.x1 + +0x0.1 +-0x0.1 ++0x0.1 + +x123 +-x123 ++x123 + +0xx123 +-0xx123 ++0xx123 + +12AB +-12AB ++12AB + +AB12 +-AB12 ++AB12 diff --git a/lib/yyjson-0.12.0/test/data/num/int(big).txt b/lib/yyjson-0.12.0/test/data/num/int(big).txt new file mode 100644 index 00000000000..bda03e9d09b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/int(big).txt @@ -0,0 +1,79 @@ +# ============================================================================== +# UINT64_MAX +1, +2, +3, ... + +18446744073709551616 +18446744073709551617 +18446744073709551618 +18446744073709551619 +18446744073709551620 +18446744073709551621 +18446744073709551622 +18446744073709551623 +18446744073709551624 +18446744073709551625 +18446744073709551626 + + +# ============================================================================== +# INT64_MIN -0, -1, -2, ... + +-9223372036854775809 +-9223372036854775810 +-9223372036854775811 +-9223372036854775812 +-9223372036854775813 +-9223372036854775814 +-9223372036854775815 +-9223372036854775816 +-9223372036854775817 +-9223372036854775818 +-9223372036854775819 +-9223372036854775820 +-9223372036854775821 + + +# ============================================================================== +# Others + +184467440737095516149 +184467440737095516150 +184467440737095516151 +19000000000000000000 +20000000000000000000 +99999999999999999999 +1900000000000000000000000000000000000000000000000000000000000000000000000000000 +2000000000000000000000000000000000000000000000000000000000000000000000000000000 +9999999999999999999999999999999999999999999999999999999999999999999999999999999 + +-92233720368547758079 +-92233720368547758080 +-92233720368547758081 +-10000000000000000000 +-99999999999999999999 +-1000000000000000000000000000000000000000000000000000000000000000000000000000000 +-9999999999999999999999999999999999999999999999999999999999999999999999999999999 + + +# ============================================================================== +# Special + +# -0x8000000000000400 +-9223372036854776832 +# -0x8000000000000400 - 1 +-9223372036854776831 +# -0x8000000000000400 + 1 +-9223372036854776833 + +# -0xFFFFFFFFFFFFFC00 +-18446744073709550592 +# -0xFFFFFFFFFFFFFC00 - 1 +-18446744073709550591 +# -0xFFFFFFFFFFFFFC00 + 1 +-18446744073709550593 + +# -0xFFFFFFFFFFFFF400 +-18446744073709548544 +# -0xFFFFFFFFFFFFF3FF - 1 +-18446744073709548543 +# -0xFFFFFFFFFFFFF401 + 1 +-18446744073709548545 diff --git a/lib/yyjson-0.12.0/test/data/num/int(ext).txt b/lib/yyjson-0.12.0/test/data/num/int(ext).txt new file mode 100644 index 00000000000..4d4ec0190bf --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/int(ext).txt @@ -0,0 +1,6 @@ +# ============================================================================== +# Positive sign + ++0 ++1 ++123 diff --git a/lib/yyjson-0.12.0/test/data/num/int(fail).txt b/lib/yyjson-0.12.0/test/data/num/int(fail).txt new file mode 100644 index 00000000000..8e26ba1efb5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/int(fail).txt @@ -0,0 +1,49 @@ +# ============================================================================== +# Number with suffix + +0u +0U +0ul +0ul +0UL +0ull +0ULL + +123u +123U +123ul +123UL +123ull +123ULL + + +# ============================================================================== +# Leading Zero + +00 +01 +012 + ++00 ++01 ++012 + +-00 +-01 +-012 + + +# ============================================================================== +# Multiple sign + +++0 +++123 + +--0 +--123 + ++-0 ++-123 + +-+0 +-+123 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/num/int(inf).txt b/lib/yyjson-0.12.0/test/data/num/int(inf).txt new file mode 100644 index 00000000000..be03fa18732 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/int(inf).txt @@ -0,0 +1,14 @@ +# ============================================================================== +# Integer to double overflow + +1797693134862315708145274237317043567980705675258449965989174768031572607800285387605895586327668781715404589535143824642343213268894641827684675467035375169860499105765512820762454900903893289440758685084551339423045832369032229481658085593321233482747978262041447231687381771809192998812504040261841248583680 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +179769313486231580814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368 +200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 + +-1797693134862315708145274237317043567980705675258449965989174768031572607800285387605895586327668781715404589535143824642343213268894641827684675467035375169860499105765512820762454900903893289440758685084551339423045832369032229481658085593321233482747978262041447231687381771809192998812504040261841248583680 +-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-179769313486231580814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368 +-200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 diff --git a/lib/yyjson-0.12.0/test/data/num/int.txt b/lib/yyjson-0.12.0/test/data/num/int.txt new file mode 100644 index 00000000000..24cf711d56e --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/int.txt @@ -0,0 +1,1730 @@ +# ============================================================================== +# Zero + +0 +-0 + + +# ============================================================================== +# Limits + +# INT64_MAX -0, -1, -2, ... +9223372036854775807 +9223372036854775806 +9223372036854775805 +9223372036854775804 +9223372036854775803 +9223372036854775802 +9223372036854775801 +9223372036854775800 +9223372036854775799 +9223372036854775798 +9223372036854775797 + +# INT64_MIN +0, +1, +2, ... +-9223372036854775808 +-9223372036854775807 +-9223372036854775806 +-9223372036854775805 +-9223372036854775804 +-9223372036854775803 +-9223372036854775802 +-9223372036854775801 +-9223372036854775799 +-9223372036854775798 + +# INT64_MAX +1, +2, +3, ... +9223372036854775808 +9223372036854775809 +9223372036854775810 +9223372036854775811 +9223372036854775812 +9223372036854775813 +9223372036854775814 +9223372036854775815 +9223372036854775816 +9223372036854775817 +9223372036854775818 +9223372036854775819 + +# UINT64_MAX -0, -1, -2, -3, -4, ... +18446744073709551615 +18446744073709551614 +18446744073709551613 +18446744073709551612 +18446744073709551611 +18446744073709551610 +18446744073709551609 +18446744073709551608 +18446744073709551607 +18446744073709551606 +18446744073709551605 + + +# ============================================================================== +# m^n + +1 +2 +4 +8 +16 +32 +64 +128 +256 +512 +1024 +2048 +4096 +8192 +16384 +32768 +65536 +131072 +262144 +524288 +1048576 +2097152 +4194304 +8388608 +16777216 +33554432 +67108864 +134217728 +268435456 +536870912 +1073741824 +2147483648 +4294967296 +8589934592 +17179869184 +34359738368 +68719476736 +137438953472 +274877906944 +549755813888 +1099511627776 +2199023255552 +4398046511104 +8796093022208 +17592186044416 +35184372088832 +70368744177664 +140737488355328 +281474976710656 +562949953421312 +1125899906842624 +2251799813685248 +4503599627370496 +9007199254740992 +18014398509481984 +36028797018963968 +72057594037927936 +144115188075855872 +288230376151711744 +576460752303423488 +1152921504606846976 +2305843009213693952 +4611686018427387904 +9223372036854775808 +1 +3 +9 +27 +81 +243 +729 +2187 +6561 +19683 +59049 +177147 +531441 +1594323 +4782969 +14348907 +43046721 +129140163 +387420489 +1162261467 +3486784401 +10460353203 +31381059609 +94143178827 +282429536481 +847288609443 +2541865828329 +7625597484987 +22876792454961 +68630377364883 +205891132094649 +617673396283947 +1853020188851841 +5559060566555523 +16677181699666569 +50031545098999707 +150094635296999121 +450283905890997363 +1350851717672992089 +4052555153018976267 +12157665459056928801 +18026252303461234787 +1 +4 +16 +64 +256 +1024 +4096 +16384 +65536 +262144 +1048576 +4194304 +16777216 +67108864 +268435456 +1073741824 +4294967296 +17179869184 +68719476736 +274877906944 +1099511627776 +4398046511104 +17592186044416 +70368744177664 +281474976710656 +1125899906842624 +4503599627370496 +18014398509481984 +72057594037927936 +288230376151711744 +1152921504606846976 +4611686018427387904 +1 +5 +25 +125 +625 +3125 +15625 +78125 +390625 +1953125 +9765625 +48828125 +244140625 +1220703125 +6103515625 +30517578125 +152587890625 +762939453125 +3814697265625 +19073486328125 +95367431640625 +476837158203125 +2384185791015625 +11920928955078125 +59604644775390625 +298023223876953125 +1490116119384765625 +7450580596923828125 +1 +6 +36 +216 +1296 +7776 +46656 +279936 +1679616 +10077696 +60466176 +362797056 +2176782336 +13060694016 +78364164096 +470184984576 +2821109907456 +16926659444736 +101559956668416 +609359740010496 +3656158440062976 +21936950640377856 +131621703842267136 +789730223053602816 +4738381338321616896 +9983543956220149760 +1 +7 +49 +343 +2401 +16807 +117649 +823543 +5764801 +40353607 +282475249 +1977326743 +13841287201 +96889010407 +678223072849 +4747561509943 +33232930569601 +232630513987207 +1628413597910449 +11398895185373143 +79792266297612001 +558545864083284007 +3909821048582988049 +8922003266371364727 +1 +8 +64 +512 +4096 +32768 +262144 +2097152 +16777216 +134217728 +1073741824 +8589934592 +68719476736 +549755813888 +4398046511104 +35184372088832 +281474976710656 +2251799813685248 +18014398509481984 +144115188075855872 +1152921504606846976 +9223372036854775808 +1 +9 +81 +729 +6561 +59049 +531441 +4782969 +43046721 +387420489 +3486784401 +31381059609 +282429536481 +2541865828329 +22876792454961 +205891132094649 +1853020188851841 +16677181699666569 +150094635296999121 +1350851717672992089 +12157665459056928801 +17185268762964601129 +1 +10 +100 +1000 +10000 +100000 +1000000 +10000000 +100000000 +1000000000 +10000000000 +100000000000 +1000000000000 +10000000000000 +100000000000000 +1000000000000000 +10000000000000000 +100000000000000000 +1000000000000000000 +10000000000000000000 + +# m^n - 1 +0 +1 +3 +7 +15 +31 +63 +127 +255 +511 +1023 +2047 +4095 +8191 +16383 +32767 +65535 +131071 +262143 +524287 +1048575 +2097151 +4194303 +8388607 +16777215 +33554431 +67108863 +134217727 +268435455 +536870911 +1073741823 +2147483647 +4294967295 +8589934591 +17179869183 +34359738367 +68719476735 +137438953471 +274877906943 +549755813887 +1099511627775 +2199023255551 +4398046511103 +8796093022207 +17592186044415 +35184372088831 +70368744177663 +140737488355327 +281474976710655 +562949953421311 +1125899906842623 +2251799813685247 +4503599627370495 +9007199254740991 +18014398509481983 +36028797018963967 +72057594037927935 +144115188075855871 +288230376151711743 +576460752303423487 +1152921504606846975 +2305843009213693951 +4611686018427387903 +9223372036854775807 +0 +2 +8 +26 +80 +242 +728 +2186 +6560 +19682 +59048 +177146 +531440 +1594322 +4782968 +14348906 +43046720 +129140162 +387420488 +1162261466 +3486784400 +10460353202 +31381059608 +94143178826 +282429536480 +847288609442 +2541865828328 +7625597484986 +22876792454960 +68630377364882 +205891132094648 +617673396283946 +1853020188851840 +5559060566555522 +16677181699666568 +50031545098999706 +150094635296999120 +450283905890997362 +1350851717672992088 +4052555153018976266 +12157665459056928800 +18026252303461234786 +0 +3 +15 +63 +255 +1023 +4095 +16383 +65535 +262143 +1048575 +4194303 +16777215 +67108863 +268435455 +1073741823 +4294967295 +17179869183 +68719476735 +274877906943 +1099511627775 +4398046511103 +17592186044415 +70368744177663 +281474976710655 +1125899906842623 +4503599627370495 +18014398509481983 +72057594037927935 +288230376151711743 +1152921504606846975 +4611686018427387903 +0 +4 +24 +124 +624 +3124 +15624 +78124 +390624 +1953124 +9765624 +48828124 +244140624 +1220703124 +6103515624 +30517578124 +152587890624 +762939453124 +3814697265624 +19073486328124 +95367431640624 +476837158203124 +2384185791015624 +11920928955078124 +59604644775390624 +298023223876953124 +1490116119384765624 +7450580596923828124 +0 +5 +35 +215 +1295 +7775 +46655 +279935 +1679615 +10077695 +60466175 +362797055 +2176782335 +13060694015 +78364164095 +470184984575 +2821109907455 +16926659444735 +101559956668415 +609359740010495 +3656158440062975 +21936950640377855 +131621703842267135 +789730223053602815 +4738381338321616895 +9983543956220149759 +0 +6 +48 +342 +2400 +16806 +117648 +823542 +5764800 +40353606 +282475248 +1977326742 +13841287200 +96889010406 +678223072848 +4747561509942 +33232930569600 +232630513987206 +1628413597910448 +11398895185373142 +79792266297612000 +558545864083284006 +3909821048582988048 +8922003266371364726 +0 +7 +63 +511 +4095 +32767 +262143 +2097151 +16777215 +134217727 +1073741823 +8589934591 +68719476735 +549755813887 +4398046511103 +35184372088831 +281474976710655 +2251799813685247 +18014398509481983 +144115188075855871 +1152921504606846975 +9223372036854775807 +0 +8 +80 +728 +6560 +59048 +531440 +4782968 +43046720 +387420488 +3486784400 +31381059608 +282429536480 +2541865828328 +22876792454960 +205891132094648 +1853020188851840 +16677181699666568 +150094635296999120 +1350851717672992088 +12157665459056928800 +17185268762964601128 +0 +9 +99 +999 +9999 +99999 +999999 +9999999 +99999999 +999999999 +9999999999 +99999999999 +999999999999 +9999999999999 +99999999999999 +999999999999999 +9999999999999999 +99999999999999999 +999999999999999999 +9999999999999999999 + +# m^n + 1 +2 +3 +5 +9 +17 +33 +65 +129 +257 +513 +1025 +2049 +4097 +8193 +16385 +32769 +65537 +131073 +262145 +524289 +1048577 +2097153 +4194305 +8388609 +16777217 +33554433 +67108865 +134217729 +268435457 +536870913 +1073741825 +2147483649 +4294967297 +8589934593 +17179869185 +34359738369 +68719476737 +137438953473 +274877906945 +549755813889 +1099511627777 +2199023255553 +4398046511105 +8796093022209 +17592186044417 +35184372088833 +70368744177665 +140737488355329 +281474976710657 +562949953421313 +1125899906842625 +2251799813685249 +4503599627370497 +9007199254740993 +18014398509481985 +36028797018963969 +72057594037927937 +144115188075855873 +288230376151711745 +576460752303423489 +1152921504606846977 +2305843009213693953 +4611686018427387905 +9223372036854775809 +2 +4 +10 +28 +82 +244 +730 +2188 +6562 +19684 +59050 +177148 +531442 +1594324 +4782970 +14348908 +43046722 +129140164 +387420490 +1162261468 +3486784402 +10460353204 +31381059610 +94143178828 +282429536482 +847288609444 +2541865828330 +7625597484988 +22876792454962 +68630377364884 +205891132094650 +617673396283948 +1853020188851842 +5559060566555524 +16677181699666570 +50031545098999708 +150094635296999122 +450283905890997364 +1350851717672992090 +4052555153018976268 +12157665459056928802 +18026252303461234788 +2 +5 +17 +65 +257 +1025 +4097 +16385 +65537 +262145 +1048577 +4194305 +16777217 +67108865 +268435457 +1073741825 +4294967297 +17179869185 +68719476737 +274877906945 +1099511627777 +4398046511105 +17592186044417 +70368744177665 +281474976710657 +1125899906842625 +4503599627370497 +18014398509481985 +72057594037927937 +288230376151711745 +1152921504606846977 +4611686018427387905 +2 +6 +26 +126 +626 +3126 +15626 +78126 +390626 +1953126 +9765626 +48828126 +244140626 +1220703126 +6103515626 +30517578126 +152587890626 +762939453126 +3814697265626 +19073486328126 +95367431640626 +476837158203126 +2384185791015626 +11920928955078126 +59604644775390626 +298023223876953126 +1490116119384765626 +7450580596923828126 +2 +7 +37 +217 +1297 +7777 +46657 +279937 +1679617 +10077697 +60466177 +362797057 +2176782337 +13060694017 +78364164097 +470184984577 +2821109907457 +16926659444737 +101559956668417 +609359740010497 +3656158440062977 +21936950640377857 +131621703842267137 +789730223053602817 +4738381338321616897 +9983543956220149761 +2 +8 +50 +344 +2402 +16808 +117650 +823544 +5764802 +40353608 +282475250 +1977326744 +13841287202 +96889010408 +678223072850 +4747561509944 +33232930569602 +232630513987208 +1628413597910450 +11398895185373144 +79792266297612002 +558545864083284008 +3909821048582988050 +8922003266371364728 +2 +9 +65 +513 +4097 +32769 +262145 +2097153 +16777217 +134217729 +1073741825 +8589934593 +68719476737 +549755813889 +4398046511105 +35184372088833 +281474976710657 +2251799813685249 +18014398509481985 +144115188075855873 +1152921504606846977 +9223372036854775809 +2 +10 +82 +730 +6562 +59050 +531442 +4782970 +43046722 +387420490 +3486784402 +31381059610 +282429536482 +2541865828330 +22876792454962 +205891132094650 +1853020188851842 +16677181699666570 +150094635296999122 +1350851717672992090 +12157665459056928802 +17185268762964601130 +2 +11 +101 +1001 +10001 +100001 +1000001 +10000001 +100000001 +1000000001 +10000000001 +100000000001 +1000000000001 +10000000000001 +100000000000001 +1000000000000001 +10000000000000001 +100000000000000001 +1000000000000000001 +10000000000000000001 + + +# ============================================================================== +# -m^n + +-1 +-2 +-4 +-8 +-16 +-32 +-64 +-128 +-256 +-512 +-1024 +-2048 +-4096 +-8192 +-16384 +-32768 +-65536 +-131072 +-262144 +-524288 +-1048576 +-2097152 +-4194304 +-8388608 +-16777216 +-33554432 +-67108864 +-134217728 +-268435456 +-536870912 +-1073741824 +-2147483648 +-4294967296 +-8589934592 +-17179869184 +-34359738368 +-68719476736 +-137438953472 +-274877906944 +-549755813888 +-1099511627776 +-2199023255552 +-4398046511104 +-8796093022208 +-17592186044416 +-35184372088832 +-70368744177664 +-140737488355328 +-281474976710656 +-562949953421312 +-1125899906842624 +-2251799813685248 +-4503599627370496 +-9007199254740992 +-18014398509481984 +-36028797018963968 +-72057594037927936 +-144115188075855872 +-288230376151711744 +-576460752303423488 +-1152921504606846976 +-2305843009213693952 +-4611686018427387904 +-9223372036854775808 +-1 +-3 +-9 +-27 +-81 +-243 +-729 +-2187 +-6561 +-19683 +-59049 +-177147 +-531441 +-1594323 +-4782969 +-14348907 +-43046721 +-129140163 +-387420489 +-1162261467 +-3486784401 +-10460353203 +-31381059609 +-94143178827 +-282429536481 +-847288609443 +-2541865828329 +-7625597484987 +-22876792454961 +-68630377364883 +-205891132094649 +-617673396283947 +-1853020188851841 +-5559060566555523 +-16677181699666569 +-50031545098999707 +-150094635296999121 +-450283905890997363 +-1350851717672992089 +-4052555153018976267 +-1 +-4 +-16 +-64 +-256 +-1024 +-4096 +-16384 +-65536 +-262144 +-1048576 +-4194304 +-16777216 +-67108864 +-268435456 +-1073741824 +-4294967296 +-17179869184 +-68719476736 +-274877906944 +-1099511627776 +-4398046511104 +-17592186044416 +-70368744177664 +-281474976710656 +-1125899906842624 +-4503599627370496 +-18014398509481984 +-72057594037927936 +-288230376151711744 +-1152921504606846976 +-4611686018427387904 +-1 +-5 +-25 +-125 +-625 +-3125 +-15625 +-78125 +-390625 +-1953125 +-9765625 +-48828125 +-244140625 +-1220703125 +-6103515625 +-30517578125 +-152587890625 +-762939453125 +-3814697265625 +-19073486328125 +-95367431640625 +-476837158203125 +-2384185791015625 +-11920928955078125 +-59604644775390625 +-298023223876953125 +-1490116119384765625 +-7450580596923828125 +-1 +-6 +-36 +-216 +-1296 +-7776 +-46656 +-279936 +-1679616 +-10077696 +-60466176 +-362797056 +-2176782336 +-13060694016 +-78364164096 +-470184984576 +-2821109907456 +-16926659444736 +-101559956668416 +-609359740010496 +-3656158440062976 +-21936950640377856 +-131621703842267136 +-789730223053602816 +-4738381338321616896 +-1 +-7 +-49 +-343 +-2401 +-16807 +-117649 +-823543 +-5764801 +-40353607 +-282475249 +-1977326743 +-13841287201 +-96889010407 +-678223072849 +-4747561509943 +-33232930569601 +-232630513987207 +-1628413597910449 +-11398895185373143 +-79792266297612001 +-558545864083284007 +-3909821048582988049 +-8922003266371364727 +-1 +-8 +-64 +-512 +-4096 +-32768 +-262144 +-2097152 +-16777216 +-134217728 +-1073741824 +-8589934592 +-68719476736 +-549755813888 +-4398046511104 +-35184372088832 +-281474976710656 +-2251799813685248 +-18014398509481984 +-144115188075855872 +-1152921504606846976 +-9223372036854775808 +-1 +-9 +-81 +-729 +-6561 +-59049 +-531441 +-4782969 +-43046721 +-387420489 +-3486784401 +-31381059609 +-282429536481 +-2541865828329 +-22876792454961 +-205891132094649 +-1853020188851841 +-16677181699666569 +-150094635296999121 +-1350851717672992089 +-1 +-10 +-100 +-1000 +-10000 +-100000 +-1000000 +-10000000 +-100000000 +-1000000000 +-10000000000 +-100000000000 +-1000000000000 +-10000000000000 +-100000000000000 +-1000000000000000 +-10000000000000000 +-100000000000000000 +-1000000000000000000 + +# -m^n - 1 +-2 +-3 +-5 +-9 +-17 +-33 +-65 +-129 +-257 +-513 +-1025 +-2049 +-4097 +-8193 +-16385 +-32769 +-65537 +-131073 +-262145 +-524289 +-1048577 +-2097153 +-4194305 +-8388609 +-16777217 +-33554433 +-67108865 +-134217729 +-268435457 +-536870913 +-1073741825 +-2147483649 +-4294967297 +-8589934593 +-17179869185 +-34359738369 +-68719476737 +-137438953473 +-274877906945 +-549755813889 +-1099511627777 +-2199023255553 +-4398046511105 +-8796093022209 +-17592186044417 +-35184372088833 +-70368744177665 +-140737488355329 +-281474976710657 +-562949953421313 +-1125899906842625 +-2251799813685249 +-4503599627370497 +-9007199254740993 +-18014398509481985 +-36028797018963969 +-72057594037927937 +-144115188075855873 +-288230376151711745 +-576460752303423489 +-1152921504606846977 +-2305843009213693953 +-4611686018427387905 +-2 +-4 +-10 +-28 +-82 +-244 +-730 +-2188 +-6562 +-19684 +-59050 +-177148 +-531442 +-1594324 +-4782970 +-14348908 +-43046722 +-129140164 +-387420490 +-1162261468 +-3486784402 +-10460353204 +-31381059610 +-94143178828 +-282429536482 +-847288609444 +-2541865828330 +-7625597484988 +-22876792454962 +-68630377364884 +-205891132094650 +-617673396283948 +-1853020188851842 +-5559060566555524 +-16677181699666570 +-50031545098999708 +-150094635296999122 +-450283905890997364 +-1350851717672992090 +-4052555153018976268 +-2 +-5 +-17 +-65 +-257 +-1025 +-4097 +-16385 +-65537 +-262145 +-1048577 +-4194305 +-16777217 +-67108865 +-268435457 +-1073741825 +-4294967297 +-17179869185 +-68719476737 +-274877906945 +-1099511627777 +-4398046511105 +-17592186044417 +-70368744177665 +-281474976710657 +-1125899906842625 +-4503599627370497 +-18014398509481985 +-72057594037927937 +-288230376151711745 +-1152921504606846977 +-4611686018427387905 +-2 +-6 +-26 +-126 +-626 +-3126 +-15626 +-78126 +-390626 +-1953126 +-9765626 +-48828126 +-244140626 +-1220703126 +-6103515626 +-30517578126 +-152587890626 +-762939453126 +-3814697265626 +-19073486328126 +-95367431640626 +-476837158203126 +-2384185791015626 +-11920928955078126 +-59604644775390626 +-298023223876953126 +-1490116119384765626 +-7450580596923828126 +-2 +-7 +-37 +-217 +-1297 +-7777 +-46657 +-279937 +-1679617 +-10077697 +-60466177 +-362797057 +-2176782337 +-13060694017 +-78364164097 +-470184984577 +-2821109907457 +-16926659444737 +-101559956668417 +-609359740010497 +-3656158440062977 +-21936950640377857 +-131621703842267137 +-789730223053602817 +-4738381338321616897 +-2 +-8 +-50 +-344 +-2402 +-16808 +-117650 +-823544 +-5764802 +-40353608 +-282475250 +-1977326744 +-13841287202 +-96889010408 +-678223072850 +-4747561509944 +-33232930569602 +-232630513987208 +-1628413597910450 +-11398895185373144 +-79792266297612002 +-558545864083284008 +-3909821048582988050 +-8922003266371364728 +-2 +-9 +-65 +-513 +-4097 +-32769 +-262145 +-2097153 +-16777217 +-134217729 +-1073741825 +-8589934593 +-68719476737 +-549755813889 +-4398046511105 +-35184372088833 +-281474976710657 +-2251799813685249 +-18014398509481985 +-144115188075855873 +-1152921504606846977 +-2 +-10 +-82 +-730 +-6562 +-59050 +-531442 +-4782970 +-43046722 +-387420490 +-3486784402 +-31381059610 +-282429536482 +-2541865828330 +-22876792454962 +-205891132094650 +-1853020188851842 +-16677181699666570 +-150094635296999122 +-1350851717672992090 +-2 +-11 +-101 +-1001 +-10001 +-100001 +-1000001 +-10000001 +-100000001 +-1000000001 +-10000000001 +-100000000001 +-1000000000001 +-10000000000001 +-100000000000001 +-1000000000000001 +-10000000000000001 +-100000000000000001 +-1000000000000000001 + +# -m^n + 1 +-1 +-3 +-7 +-15 +-31 +-63 +-127 +-255 +-511 +-1023 +-2047 +-4095 +-8191 +-16383 +-32767 +-65535 +-131071 +-262143 +-524287 +-1048575 +-2097151 +-4194303 +-8388607 +-16777215 +-33554431 +-67108863 +-134217727 +-268435455 +-536870911 +-1073741823 +-2147483647 +-4294967295 +-8589934591 +-17179869183 +-34359738367 +-68719476735 +-137438953471 +-274877906943 +-549755813887 +-1099511627775 +-2199023255551 +-4398046511103 +-8796093022207 +-17592186044415 +-35184372088831 +-70368744177663 +-140737488355327 +-281474976710655 +-562949953421311 +-1125899906842623 +-2251799813685247 +-4503599627370495 +-9007199254740991 +-18014398509481983 +-36028797018963967 +-72057594037927935 +-144115188075855871 +-288230376151711743 +-576460752303423487 +-1152921504606846975 +-2305843009213693951 +-4611686018427387903 +-9223372036854775807 +-2 +-8 +-26 +-80 +-242 +-728 +-2186 +-6560 +-19682 +-59048 +-177146 +-531440 +-1594322 +-4782968 +-14348906 +-43046720 +-129140162 +-387420488 +-1162261466 +-3486784400 +-10460353202 +-31381059608 +-94143178826 +-282429536480 +-847288609442 +-2541865828328 +-7625597484986 +-22876792454960 +-68630377364882 +-205891132094648 +-617673396283946 +-1853020188851840 +-5559060566555522 +-16677181699666568 +-50031545098999706 +-150094635296999120 +-450283905890997362 +-1350851717672992088 +-4052555153018976266 +-3 +-15 +-63 +-255 +-1023 +-4095 +-16383 +-65535 +-262143 +-1048575 +-4194303 +-16777215 +-67108863 +-268435455 +-1073741823 +-4294967295 +-17179869183 +-68719476735 +-274877906943 +-1099511627775 +-4398046511103 +-17592186044415 +-70368744177663 +-281474976710655 +-1125899906842623 +-4503599627370495 +-18014398509481983 +-72057594037927935 +-288230376151711743 +-1152921504606846975 +-4611686018427387903 +-4 +-24 +-124 +-624 +-3124 +-15624 +-78124 +-390624 +-1953124 +-9765624 +-48828124 +-244140624 +-1220703124 +-6103515624 +-30517578124 +-152587890624 +-762939453124 +-3814697265624 +-19073486328124 +-95367431640624 +-476837158203124 +-2384185791015624 +-11920928955078124 +-59604644775390624 +-298023223876953124 +-1490116119384765624 +-7450580596923828124 +-5 +-35 +-215 +-1295 +-7775 +-46655 +-279935 +-1679615 +-10077695 +-60466175 +-362797055 +-2176782335 +-13060694015 +-78364164095 +-470184984575 +-2821109907455 +-16926659444735 +-101559956668415 +-609359740010495 +-3656158440062975 +-21936950640377855 +-131621703842267135 +-789730223053602815 +-4738381338321616895 +-6 +-48 +-342 +-2400 +-16806 +-117648 +-823542 +-5764800 +-40353606 +-282475248 +-1977326742 +-13841287200 +-96889010406 +-678223072848 +-4747561509942 +-33232930569600 +-232630513987206 +-1628413597910448 +-11398895185373142 +-79792266297612000 +-558545864083284006 +-3909821048582988048 +-8922003266371364726 +-7 +-63 +-511 +-4095 +-32767 +-262143 +-2097151 +-16777215 +-134217727 +-1073741823 +-8589934591 +-68719476735 +-549755813887 +-4398046511103 +-35184372088831 +-281474976710655 +-2251799813685247 +-18014398509481983 +-144115188075855871 +-1152921504606846975 +-9223372036854775807 +-8 +-80 +-728 +-6560 +-59048 +-531440 +-4782968 +-43046720 +-387420488 +-3486784400 +-31381059608 +-282429536480 +-2541865828328 +-22876792454960 +-205891132094648 +-1853020188851840 +-16677181699666568 +-150094635296999120 +-1350851717672992088 +-9 +-99 +-999 +-9999 +-99999 +-999999 +-9999999 +-99999999 +-999999999 +-9999999999 +-99999999999 +-999999999999 +-9999999999999 +-99999999999999 +-999999999999999 +-9999999999999999 +-99999999999999999 +-999999999999999999 diff --git a/lib/yyjson-0.12.0/test/data/num/literal(ext).txt b/lib/yyjson-0.12.0/test/data/num/literal(ext).txt new file mode 100644 index 00000000000..eeed0cddce4 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/literal(ext).txt @@ -0,0 +1,18 @@ +# ============================================================================== +# NaN and Infinity literals (positive sign) + ++NAN ++NaN ++Nan ++naN ++nan + ++INF ++Inf ++inF ++inf + ++INFINITY ++Infinity ++infINITY ++infinity diff --git a/lib/yyjson-0.12.0/test/data/num/literal(fail).txt b/lib/yyjson-0.12.0/test/data/num/literal(fail).txt new file mode 100644 index 00000000000..e317e53049b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/literal(fail).txt @@ -0,0 +1,266 @@ +# ============================================================================== +# NaN with data encoded is not allowed + +NaN() +NaN(0) +NaN(1) +NaN(abc) +NaN(9999999999999999999999999999) +NaN(_) + + +# ============================================================================== +# Invalid literal + +N +Na +NaNf +NaNF +NaNd +NaND + ++N ++Na ++NaNf ++NaNF ++NaNd ++NaND + +-N +-Na +-NaNf +-NaNF +-NaNd +-NaND + +I +In +Infi +Infin +Infini +Infinit +Infinityf +InfinityF +Infinityd +InfinityD + ++I ++In ++Infi ++Infin ++Infini ++Infinit ++Infinityf ++InfinityF ++Infinityd ++InfinityD + +-I +-In +-Infi +-Infin +-Infini +-Infinit +-Infinityf +-InfinityF +-Infinityd +-InfinityD + +NaNInfinity +InfinityNaN + +NaN0 +-NaN0 ++NaN0 + +Inf0 +-Inf0 ++Inf0 + +Infinity0 +-Infinity0 ++Infinity0 + +NaN. +-NaN. ++NaN. + +Inf. +-Inf. ++Inf. + +Infinity. +-Infinity. ++Infinity. + +.Inf +.NaN +-.Inf +-.NaN ++.Inf ++.NaN + + +# ============================================================================== +# Invalid single character + +a +b +c +d +e +f +g +h +i +j +k +l +m +n +o +p +q +r +s +t +u +v +w +x +y +z + +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +X +Y +Z + +-a +-b +-c +-d +-e +-f +-g +-h +-i +-j +-k +-l +-m +-n +-o +-p +-q +-r +-s +-t +-u +-v +-w +-x +-y +-z + +-A +-B +-C +-D +-E +-F +-G +-H +-I +-J +-K +-L +-M +-N +-O +-P +-Q +-R +-S +-T +-U +-V +-W +-X +-Y +-Z ++a ++b ++c ++d ++e ++f ++g ++h ++i ++j ++k ++l ++m ++n ++o ++p ++q ++r ++s ++t ++u ++v ++w ++x ++y ++z + ++A ++B ++C ++D ++E ++F ++G ++H ++I ++J ++K ++L ++M ++N ++O ++P ++Q ++R ++S ++T ++U ++V ++W ++X ++Y ++Z diff --git a/lib/yyjson-0.12.0/test/data/num/literal.txt b/lib/yyjson-0.12.0/test/data/num/literal.txt new file mode 100644 index 00000000000..f723aeeb6c2 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/literal.txt @@ -0,0 +1,34 @@ +# ============================================================================== +# NaN and Infinity literals + +NAN +NaN +Nan +naN +nan + +INF +Inf +inF +inf + +INFINITY +Infinity +infINITY +infinity + +-NAN +-NaN +-Nan +-naN +-nan + +-INF +-Inf +-inF +-inf + +-INFINITY +-Infinity +-infINITY +-infinity diff --git a/lib/yyjson-0.12.0/test/data/num/real(ext).txt b/lib/yyjson-0.12.0/test/data/num/real(ext).txt new file mode 100644 index 00000000000..54172239a68 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/real(ext).txt @@ -0,0 +1,256 @@ +# ============================================================================== +# JSON5 extended number + +# Leading decimal point +.0 +.00 +.001 +.5 +.123 +.123 + +-.0 +-.00 +-.001 +-.5 +-.123 +-.123 + ++.0 ++.00 ++.001 ++.5 ++.123 ++.123 + +# Leading decimal point with exponent +.0e12 +.00e12 +.001e12 +.5e12 +.123e12 + +-.0e12 +-.00e12 +-.001e12 +-.5e12 +-.123e12 + ++.0e12 ++.00e12 ++.001e12 ++.5e12 ++.123e12 + +# Trailing decimal point +0. +5. +123. + +-0. +-5. +-123. + ++0. ++5. ++123. + +# Trailing decimal point with exponent +0.e12 +5.e12 +123.e12 + +# Positive sign ++0.0 ++1.0 ++0e1 ++1e2 ++0.1e23 ++1.2e34 + +# Long number +1. +12. +123. +1234. +12345. +123456. +1234567. +12345678. +123456789. +1234567890. +12345678901. +123456789012. +1234567890123. +12345678901234. +123456789012345. +1234567890123456. +12345678901234567. +123456789012345678. +1234567890123456789. +12345678901234567890. +123456789012345678901. +1234567890123456789012. +12345678901234567890123. +123456789012345678901234. + +10. +120. +1230. +12340. +123450. +1234560. +12345670. +123456780. +1234567890. +12345678900. +123456789010. +1234567890120. +12345678901230. +123456789012340. +1234567890123450. +12345678901234560. +123456789012345670. +1234567890123456780. +12345678901234567890. +123456789012345678900. +1234567890123456789010. +12345678901234567890120. +123456789012345678901230. +1234567890123456789012340. + +1000000000000000000000000. +12000000000000000000000000. +123000000000000000000000000. +1234000000000000000000000000. +12345000000000000000000000000. +123456000000000000000000000000. +1234567000000000000000000000000. +12345678000000000000000000000000. +123456789000000000000000000000000. +1234567890000000000000000000000000. +12345678901000000000000000000000000. +123456789012000000000000000000000000. +1234567890123000000000000000000000000. +12345678901234000000000000000000000000. +123456789012345000000000000000000000000. +1234567890123456000000000000000000000000. +12345678901234567000000000000000000000000. +123456789012345678000000000000000000000000. +1234567890123456789000000000000000000000000. +12345678901234567890000000000000000000000000. +123456789012345678901000000000000000000000000. +1234567890123456789012000000000000000000000000. +12345678901234567890123000000000000000000000000. +123456789012345678901234000000000000000000000000. + +.1 +.12 +.123 +.1234 +.12345 +.123456 +.1234567 +.12345678 +.123456789 +.1234567890 +.12345678901 +.123456789012 +.1234567890123 +.12345678901234 +.123456789012345 +.1234567890123456 +.12345678901234567 +.123456789012345678 +.1234567890123456789 +.12345678901234567890 +.123456789012345678901 +.1234567890123456789012 +.12345678901234567890123 +.123456789012345678901234 + +.0 +.00 +.000 +.0000 +.00000 +.000000 +.0000000 +.00000000 +.000000000 +.0000000000 +.00000000000 +.000000000000 +.0000000000000 +.00000000000000 +.000000000000000 +.0000000000000000 +.00000000000000000 +.000000000000000000 +.0000000000000000000 +.00000000000000000000 +.000000000000000000000 +.0000000000000000000000 +.00000000000000000000000 +.000000000000000000000000 + +.1 +.01 +.001 +.0001 +.00001 +.000001 +.0000001 +.00000001 +.000000001 +.0000000001 +.00000000001 +.000000000001 +.0000000000001 +.00000000000001 +.000000000000001 +.0000000000000001 +.00000000000000001 +.000000000000000001 +.0000000000000000001 +.00000000000000000001 +.000000000000000000001 +.0000000000000000000001 +.00000000000000000000001 +.000000000000000000000001 +.0000000000000000000000001 + +.123456789012345678901234 +.0123456789012345678901234 +.00123456789012345678901234 +.000123456789012345678901234 +.0000123456789012345678901234 +.00000123456789012345678901234 +.000000123456789012345678901234 +.0000000123456789012345678901234 +.00000000123456789012345678901234 +.000000000123456789012345678901234 +.0000000000123456789012345678901234 +.00000000000123456789012345678901234 +.000000000000123456789012345678901234 +.0000000000000123456789012345678901234 +.00000000000000123456789012345678901234 +.000000000000000123456789012345678901234 +.0000000000000000123456789012345678901234 +.00000000000000000123456789012345678901234 +.000000000000000000123456789012345678901234 +.0000000000000000000123456789012345678901234 +.00000000000000000000123456789012345678901234 +.000000000000000000000123456789012345678901234 +.0000000000000000000000123456789012345678901234 +.00000000000000000000000123456789012345678901234 +.000000000000000000000000123456789012345678901234 + +.24703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328125001e-323 +.247032822920623272088284396434110686182529901307162382212792841250337753635104375932649918180817996189898282347722858865463328355177969898199387398005390939063150356595155702263922908583924491051844359318028499365361525003193704576782492193656236698636584807570015857692699037063119282795585513329278343384093519780155312465972635795746227664652728272200563740064854999770965994704540208281662262378573934507363390079677619305775067401763246736009689513405355374585166611342237666786041621596804619144672918403005300575308490487653917113865916462395249126236538818796362393732804238910186723484976682350898633885879256283027559956575244555072551893136908362547791869486679949683240497058210285131854513962138377228261454376934125320985913276672363281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e-323 +.2470328229206232720882843964341106861825299013071623822127928412503377536351043759326499181808179961898982823477228588654633283551779698981993873980053909390631503565951557022639229085839244910518443593180284993653615250031937045767824921936562366986365848075700158576926990370631192827955855133292783433840935197801553124659726357957462276646527282722005637400648549997709659947045402082816622623785739345073633900796776193057750674017632467360096895134053553745851666113422376667860416215968046191446729184030053005753084904876539171138659164623952491262365388187963623937328042389101867234849766823508986338858792562830275599565752445550725518931369083625477918694866799496832404970582102851318545139621383772282614543769341253209859132766723632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e-323 +.2470328229206232720882843964341106861825299013071623822127928412503377536351043759326499181808179961898982823477228588654633283551779698981993873980053909390631503565951557022639229085839244910518443593180284993653615250031937045767824921936562366986365848075700158576926990370631192827955855133292783433840935197801553124659726357957462276646527282722005637400648549997709659947045402082816622623785739345073633900796776193057750674017632467360096895134053553745851666113422376667860416215968046191446729184030053005753084904876539171138659164623952491262365388187963623937328042389101867234849766823508986338858792562830275599565752445550725518931369083625477918694866799496832404970582102851318545139621383772282614543769341253209859132766723632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e-323 + +1189731495357231765053511589829488667966254004695567218956499277562499181851727204760449442904570461384330567646167443286662555267489487930236325136097654342377232417536489080362029584951246485605740928178136611230674219048500381811805207877203107268812398885808170517032687767579195512604426112969939697309064970421357373593737548189791064578075396520278041564919877710332117871859964923206311175434753221226253534337199304629504137668677812103359730222935610071343425325633562626092674600633358193879055413937592435479934747155496913520748914500847834599706604816899916747713074435514585511372746030946789075371775796999312354227866587803370992862072730331502951338476357350089453460696354521572546926077765383044577075982892200047380230605947983926605074559374288887635146614087580689065065271437207231562037396763728185780908406142166217047877746112568232134313256340568095056911759884246066540728231159508276273778086735741815471986687141421432344475502062691975457742639931301197788106590436213127071090684338861628772228444915189303418963135612389885203608036075349871783050435209372998381734440835020273404521625820382960095748088096587424348978607559613437524195438026532392163371033702927429354975024746264545597290170945602348672367013792302348098432637396409095613884932277251719835310031547998505803752546406866843706502753183166325399209709698038388729144247605351114448647488475730429635692916794001788966968620265007002798266353024717022066273037990476329714600171995445673732316103762568799871343179341500144434361457105461379244904895252415230182712399067436456639767780598951274425173976825259444309519076481099524794546856555816525710213317614010389620491220471110091857573837438278112540147709446027133781874510952001326117006323864207925852079541370644269957126564493435341201207708574988136737425864785839645124060309307041974867276363338370018636105162869283008917743830711050229193144085029688094638483773246680141155923835213247853616763725824680857167751837090780487900840228387283614547346509044804890143691849792564977383927445249156165014494875205013001248617782698812613355440377357151258089863597284198597765215866830359241005748505543689358738031324284465243629136488333487686637331181039189590604124992017972343852392605049057443576119873279945400832860199527936922650062116335246759763699388664096895732875994904427617012292176896143437273923395471742216159840248646356256801083915667206811346470984128630513747606135060039717590702096972930814428759032404269759101709671790756463178143949787623821836792662477247624052842849718333550449622140658955581054081751312471819712726722479962465958577056952080928160441258225609897705262614494607339126216928069521406520619119688243287473394538225119027875465220992256233111477265049726174251028452120761620567236506258269287781320020740354052506311094266116406810709272834304862320539294205143454357131313879679493260017348668942730474494178249137387898297328336833589009038180169681270850774180709517707029996636939683240047817287633101083794404428541740415811916696232677498555197744273877942786661835044988438574758774422356087368185157228627335879058660154558309535912070401295584736621504268847267595223765835863174255756697267818931047523414328918687705134068360361363742640382966108545994545911705825697417989043286767551310728319742954355856116731710961138337957358885918445698641669559694166808074917226884181158917536699176609687522288426691820400183361523559409155799556283862329497478912575261457830579497761228960488413082611130636745385531466634515743840239035698486403517044157039226831085528805370810274043977756176084122952933117637894899009906118591255725255303492783199432613047841255537488113392259699564654048366964907825009036946741350368993216860237824660346368178183476516236016631293185747612693520285606412666148401080833153012602745585750872969103848152851344605317151546396041150523486651715472516090757848631964035419441554251667764234034722117421393132102998968842527073068624998951156916755512381404671428195378673434142765187038589280087599553911407299582781759652177398265112189244631130776935980062283655148992367895151475032666162688096176262281649169171506024644941424855074678761732513983988468070793092275675388024763356241941156378024394000502219343689759498466840264622527907455975633934878799543518206521383037618795439338086429200645002065120039545639315698201147683480515936292743251499063438531296922453863968872815997353125881179686462705170051219974666064694475306164653842558263043808428507798331085671416437696164008096171739721381877119714312306163210350382599226246553966125970240408129674442076735944784179006667645805896851048093638137596670696937010699212957919299380937222250509562807981779341384684146547286314982564181910419531236194060603634063907761401557097370591258981203660079555061603095538604465962028762337280258716255780315038694244061790279947528902264433516193654532433289688740976918528. +1189731495357231765053511589829488667966254004695567218956499277562499181851727204760449442904570461384330567646167443286662555267489487930236325136097654342377232417536489080362029584951246485605740928178136611230674219048500381811805207877203107268812398885808170517032687767579195512604426112969939697309064970421357373593737548189791064578075396520278041564919877710332117871859964923206311175434753221226253534337199304629504137668677812103359730222935610071343425325633562626092674600633358193879055413937592435479934747155496913520748914500847834599706604816899916747713074435514585511372746030946789075371775796999312354227866587803370992862072730331502951338476357350089453460696354521572546926077765383044577075982892200047380230605947983926605074559374288887635146614087580689065065271437207231562037396763728185780908406142166217047877746112568232134313256340568095056911759884246066540728231159508276273778086735741815471986687141421432344475502062691975457742639931301197788106590436213127071090684338861628772228444915189303418963135612389885203608036075349871783050435209372998381734440835020273404521625820382960095748088096587424348978607559613437524195438026532392163371033702927429354975024746264545597290170945602348672367013792302348098432637396409095613884932277251719835310031547998505803752546406866843706502753183166325399209709698038388729144247605351114448647488475730429635692916794001788966968620265007002798266353024717022066273037990476329714600171995445673732316103762568799871343179341500144434361457105461379244904895252415230182712399067436456639767780598951274425173976825259444309519076481099524794546856555816525710213317614010389620491220471110091857573837438278112540147709446027133781874510952001326117006323864207925852079541370644269957126564493435341201207708574988136737425864785839645124060309307041974867276363338370018636105162869283008917743830711050229193144085029688094638483773246680141155923835213247853616763725824680857167751837090780487900840228387283614547346509044804890143691849792564977383927445249156165014494875205013001248617782698812613355440377357151258089863597284198597765215866830359241005748505543689358738031324284465243629136488333487686637331181039189590604124992017972343852392605049057443576119873279945400832860199527936922650062116335246759763699388664096895732875994904427617012292176896143437273923395471742216159840248646356256801083915667206811346470984128630513747606135060039717590702096972930814428759032404269759101709671790756463178143949787623821836792662477247624052842849718333550449622140658955581054081751312471819712726722479962465958577056952080928160441258225609897705262614494607339126216928069521406520619119688243287473394538225119027875465220992256233111477265049726174251028452120761620567236506258269287781320020740354052506311094266116406810709272834304862320539294205143454357131313879679493260017348668942730474494178249137387898297328336833589009038180169681270850774180709517707029996636939683240047817287633101083794404428541740415811916696232677498555197744273877942786661835044988438574758774422356087368185157228627335879058660154558309535912070401295584736621504268847267595223765835863174255756697267818931047523414328918687705134068360361363742640382966108545994545911705825697417989043286767551310728319742954355856116731710961138337957358885918445698641669559694166808074917226884181158917536699176609687522288426691820400183361523559409155799556283862329497478912575261457830579497761228960488413082611130636745385531466634515743840239035698486403517044157039226831085528805370810274043977756176084122952933117637894899009906118591255725255303492783199432613047841255537488113392259699564654048366964907825009036946741350368993216860237824660346368178183476516236016631293185747612693520285606412666148401080833153012602745585750872969103848152851344605317151546396041150523486651715472516090757848631964035419441554251667764234034722117421393132102998968842527073068624998951156916755512381404671428195378673434142765187038589280087599553911407299582781759652177398265112189244631130776935980062283655148992367895151475032666162688096176262281649169171506024644941424855074678761732513983988468070793092275675388024763356241941156378024394000502219343689759498466840264622527907455975633934878799543518206521383037618795439338086429200645002065120039545639315698201147683480515936292743251499063438531296922453863968872815997353125881179686462705170051219974666064694475306164653842558263043808428507798331085671416437696164008096171739721381877119714312306163210350382599226246553966125970240408129674442076735944784179006667645805896851048093638137596670696937010699212957919299380937222250509562807981779341384684146547286314982564181910419531236194060603634063907761401557097370591258981203660079555061603095538604465962028762337280258716255780315038694244061790279947528902264433516193654532433289688740976918528.e0 +11897314953572317650535115898294886679662540046955672189564992775624991818517272047604494429045704613843305676461674432866625552674894879302363251360976543423772324175364890803620295849512464856057409281781366112306742190485003818118052078772031072688123988858081705170326877675791955126044261129699396973090649704213573735937375481897910645780753965202780415649198777103321178718599649232063111754347532212262535343371993046295041376686778121033597302229356100713434253256335626260926746006333581938790554139375924354799347471554969135207489145008478345997066048168999167477130744355145855113727460309467890753717757969993123542278665878033709928620727303315029513384763573500894534606963545215725469260777653830445770759828922000473802306059479839266050745593742888876351466140875806890650652714372072315620373967637281857809084061421662170478777461125682321343132563405680950569117598842460665407282311595082762737780867357418154719866871414214323444755020626919754577426399313011977881065904362131270710906843388616287722284449151893034189631356123898852036080360753498717830504352093729983817344408350202734045216258203829600957480880965874243489786075596134375241954380265323921633710337029274293549750247462645455972901709456023486723670137923023480984326373964090956138849322772517198353100315479985058037525464068668437065027531831663253992097096980383887291442476053511144486474884757304296356929167940017889669686202650070027982663530247170220662730379904763297146001719954456737323161037625687998713431793415001444343614571054613792449048952524152301827123990674364566397677805989512744251739768252594443095190764810995247945468565558165257102133176140103896204912204711100918575738374382781125401477094460271337818745109520013261170063238642079258520795413706442699571265644934353412012077085749881367374258647858396451240603093070419748672763633383700186361051628692830089177438307110502291931440850296880946384837732466801411559238352132478536167637258246808571677518370907804879008402283872836145473465090448048901436918497925649773839274452491561650144948752050130012486177826988126133554403773571512580898635972841985977652158668303592410057485055436893587380313242844652436291364883334876866373311810391895906041249920179723438523926050490574435761198732799454008328601995279369226500621163352467597636993886640968957328759949044276170122921768961434372739233954717422161598402486463562568010839156672068113464709841286305137476061350600397175907020969729308144287590324042697591017096717907564631781439497876238218367926624772476240528428497183335504496221406589555810540817513124718197127267224799624659585770569520809281604412582256098977052626144946073391262169280695214065206191196882432874733945382251190278754652209922562331114772650497261742510284521207616205672365062582692877813200207403540525063110942661164068107092728343048623205392942051434543571313138796794932600173486689427304744941782491373878982973283368335890090381801696812708507741807095177070299966369396832400478172876331010837944044285417404158119166962326774985551977442738779427866618350449884385747587744223560873681851572286273358790586601545583095359120704012955847366215042688472675952237658358631742557566972678189310475234143289186877051340683603613637426403829661085459945459117058256974179890432867675513107283197429543558561167317109611383379573588859184456986416695596941668080749172268841811589175366991766096875222884266918204001833615235594091557995562838623294974789125752614578305794977612289604884130826111306367453855314666345157438402390356984864035170441570392268310855288053708102740439777561760841229529331176378948990099061185912557252553034927831994326130478412555374881133922596995646540483669649078250090369467413503689932168602378246603463681781834765162360166312931857476126935202856064126661484010808331530126027455857508729691038481528513446053171515463960411505234866517154725160907578486319640354194415542516677642340347221174213931321029989688425270730686249989511569167555123814046714281953786734341427651870385892800875995539114072995827817596521773982651121892446311307769359800622836551489923678951514750326661626880961762622816491691715060246449414248550746787617325139839884680707930922756753880247633562419411563780243940005022193436897594984668402646225279074559756339348787995435182065213830376187954393380864292006450020651200395456393156982011476834805159362927432514990634385312969224538639688728159973531258811796864627051700512199746660646944753061646538425582630438084285077983310856714164376961640080961717397213818771197143123061632103503825992262465539661259702404081296744420767359447841790066676458058968510480936381375966706969370106992129579192993809372222505095628079817793413846841465472863149825641819104195312361940606036340639077614015570973705912589812036600795550616030955386044659620287623372802587162557803150386942440617902799475289022644335161936545324332896887409769185280.e-1 \ No newline at end of file diff --git a/lib/yyjson-0.12.0/test/data/num/real(fail).txt b/lib/yyjson-0.12.0/test/data/num/real(fail).txt new file mode 100644 index 00000000000..261f7f28476 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/real(fail).txt @@ -0,0 +1,169 @@ +# ============================================================================== +# No digit + ++ +- +++ +-- ++- +-+ + +. +.. ++. +-. +.+ +.- + + +# ============================================================================== +# Multiple sign + +++0.1 +++1.0 +++.0 +++.1 + +--0.1 +--1.0 +--.0 +--.1 + ++-0.1 ++-1.0 ++-.0 ++-.1 + +-+0.1 +-+1.0 +-+.0 +-+.1 + + + +# ============================================================================== +# Invalid exponent + +e + ++e +-e + +e+ +e- + +.e +e. + +.e123 +e.123 + ++e123 +-e123 + + +# ============================================================================== +# Number with suffix + +123f +123F + +123d +123D + +123.0f +123.0F + +123.0d +123.0D + +123.0ef +123.0ed + +123.0e1f +123.0e1d + + + +# ============================================================================== +# Leading Zero + +00.0 +01.0 +-00.0 +-01.0 ++00.0 ++01.0 + +00e1 +01e1 +-00e1 +-01e1 ++00e1 ++01e1 + +00.e1 +01.e1 +-00.e1 +-01.e1 ++00.e1 ++01.e1 + +00. +00.e +00.e12 + + +# ============================================================================== +# Locale + +0,123e45 +123,45 +123, +,123 +12345678901233456789012345,123 + +-0,123e45 +-123,45 +-123, +-,123 +-12345678901233456789012345,123 + ++0,123e45 ++123,45 ++123, ++,123 ++12345678901233456789012345,123 + + +# ============================================================================== +# Others + +.e +e12 +.e12 + +0e +0.0e +0.e +.0e + +123e +123.0e +123.e +.123e + +123e0x45 +123e-0x45 +123e+0x45 + +1e2.3 +1e-2.3 +1e+2.3 + +0..1 +1..0 +0.. +1.. +..0 +..1 diff --git a/lib/yyjson-0.12.0/test/data/num/real(inf)(ext).txt b/lib/yyjson-0.12.0/test/data/num/real(inf)(ext).txt new file mode 100644 index 00000000000..e7eeb2eaa87 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/real(inf)(ext).txt @@ -0,0 +1,7 @@ +# ============================================================================== + +# Real number overflow +.18e309 +.18e999 +.18e999999999 +.18e9999999999999999999999999999999 diff --git a/lib/yyjson-0.12.0/test/data/num/real(inf).txt b/lib/yyjson-0.12.0/test/data/num/real(inf).txt new file mode 100644 index 00000000000..d39fbc8d9a4 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/real(inf).txt @@ -0,0 +1,7 @@ +# ============================================================================== + +# Real number overflow +1.8e308 +1.8e999 +1.8e999999999 +1.8e9999999999999999999999999999999 diff --git a/lib/yyjson-0.12.0/test/data/num/real_1.txt b/lib/yyjson-0.12.0/test/data/num/real_1.txt new file mode 100644 index 00000000000..617750ff8f5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/real_1.txt @@ -0,0 +1,3349 @@ +# ============================================================================== +# Zero (0e?) + +0e0 +0E0 +0e-0 +0E-0 +0e+0 +0E+0 + +0e1 +0E1 +0e-1 +0E-1 +0e+1 +0E+1 + +0e000 +0E000 +0e-000 +0E-000 +0e+000 +0E+000 + +0e001 +0E001 +0e-001 +0E-001 +0e+001 +0E+001 + +0e999 +0E999 +0e-999 +0E-999 +0e+999 +0E+999 + +0e999999999999999999999999 +0E999999999999999999999999 +0e-999999999999999999999999 +0E-999999999999999999999999 +0e+999999999999999999999999 +0E+999999999999999999999999 + + +# ============================================================================== +# Zero (-0e?) + +-0e0 +-0E0 +-0e-0 +-0E-0 +-0e+0 +-0E+0 + +-0e1 +-0E1 +-0e-1 +-0E-1 +-0e+1 +-0E+1 + +-0e000 +-0E000 +-0e-000 +-0E-000 +-0e+000 +-0E+000 + +-0e001 +-0E001 +-0e-001 +-0E-001 +-0e+001 +-0E+001 + +-0e999 +-0E999 +-0e-999 +-0E-999 +-0e+999 +-0E+999 + +-0e999999999999999999999999 +-0E999999999999999999999999 +-0e-999999999999999999999999 +-0E-999999999999999999999999 +-0e+999999999999999999999999 +-0E+999999999999999999999999 + + +# ============================================================================== +# Zero (0.0e?) + +0.0e0 +0.0E0 +0.0e-0 +0.0E-0 +0.0e+0 +0.0E+0 + +0.0e1 +0.0E1 +0.0e-1 +0.0E-1 +0.0e+1 +0.0E+1 + +0.0e000 +0.0E000 +0.0e-000 +0.0E-000 +0.0e+000 +0.0E+000 + +0.0e001 +0.0E001 +0.0e-001 +0.0E-001 +0.0e+001 +0.0E+001 + +0.0e999 +0.0E999 +0.0e-999 +0.0E-999 +0.0e+999 +0.0E+999 + +0.0e999999999999999999999999 +0.0E999999999999999999999999 +0.0e-999999999999999999999999 +0.0E-999999999999999999999999 +0.0e+999999999999999999999999 +0.0E+999999999999999999999999 + + +# ============================================================================== +# Zero (-0.0e?) + +-0.0e0 +-0.0E0 +-0.0e-0 +-0.0E-0 +-0.0e+0 +-0.0E+0 + +-0.0e1 +-0.0E1 +-0.0e-1 +-0.0E-1 +-0.0e+1 +-0.0E+1 + +-0.0e000 +-0.0E000 +-0.0e-000 +-0.0E-000 +-0.0e+000 +-0.0E+000 + +-0.0e001 +-0.0E001 +-0.0e-001 +-0.0E-001 +-0.0e+001 +-0.0E+001 + +-0.0e999 +-0.0E999 +-0.0e-999 +-0.0E-999 +-0.0e+999 +-0.0E+999 + +-0.0e999999999999999999999999 +-0.0E999999999999999999999999 +-0.0e-999999999999999999999999 +-0.0E-999999999999999999999999 +-0.0e+999999999999999999999999 +-0.0E+999999999999999999999999 + + +# ============================================================================== +# Zero (0.00000000000000000000000e?) + +0.00000000000000000000000e0 +0.00000000000000000000000E0 +0.00000000000000000000000e-0 +0.00000000000000000000000E-0 +0.00000000000000000000000e+0 +0.00000000000000000000000E+0 + +0.00000000000000000000000e1 +0.00000000000000000000000E1 +0.00000000000000000000000e-1 +0.00000000000000000000000E-1 +0.00000000000000000000000e+1 +0.00000000000000000000000E+1 + +0.00000000000000000000000e000000000000000000000000 +0.00000000000000000000000E000000000000000000000000 +0.00000000000000000000000e-000000000000000000000000 +0.00000000000000000000000E-000000000000000000000000 +0.00000000000000000000000e+000000000000000000000000 +0.00000000000000000000000E+000000000000000000000000 + +0.00000000000000000000000e001 +0.00000000000000000000000E001 +0.00000000000000000000000e-001 +0.00000000000000000000000E-001 +0.00000000000000000000000e+001 +0.00000000000000000000000E+001 + +0.00000000000000000000000e999 +0.00000000000000000000000E999 +0.00000000000000000000000e-999 +0.00000000000000000000000E-999 +0.00000000000000000000000e+999 +0.00000000000000000000000E+999 + +0.00000000000000000000000e999999999999999999999999 +0.00000000000000000000000E999999999999999999999999 +0.00000000000000000000000e-999999999999999999999999 +0.00000000000000000000000E-999999999999999999999999 +0.00000000000000000000000e+999999999999999999999999 +0.00000000000000000000000E+999999999999999999999999 + +-0.00000000000000000000000e0 +-0.00000000000000000000000E0 +-0.00000000000000000000000e-0 +-0.00000000000000000000000E-0 +-0.00000000000000000000000e+0 +-0.00000000000000000000000E+0 + +-0.00000000000000000000000e1 +-0.00000000000000000000000E1 +-0.00000000000000000000000e-1 +-0.00000000000000000000000E-1 +-0.00000000000000000000000e+1 +-0.00000000000000000000000E+1 + +-0.00000000000000000000000e000000000000000000000000 +-0.00000000000000000000000E000000000000000000000000 +-0.00000000000000000000000e-000000000000000000000000 +-0.00000000000000000000000E-000000000000000000000000 +-0.00000000000000000000000e+000000000000000000000000 +-0.00000000000000000000000E+000000000000000000000000 + +-0.00000000000000000000000e001 +-0.00000000000000000000000E001 +-0.00000000000000000000000e-001 +-0.00000000000000000000000E-001 +-0.00000000000000000000000e+001 +-0.00000000000000000000000E+001 + +-0.00000000000000000000000e999 +-0.00000000000000000000000E999 +-0.00000000000000000000000e-999 +-0.00000000000000000000000E-999 +-0.00000000000000000000000e+999 +-0.00000000000000000000000E+999 + +-0.00000000000000000000000e999999999999999999999999 +-0.00000000000000000000000E999999999999999999999999 +-0.00000000000000000000000e-999999999999999999999999 +-0.00000000000000000000000E-999999999999999999999999 +-0.00000000000000000000000e+999999999999999999999999 +-0.00000000000000000000000E+999999999999999999999999 + + +# ============================================================================== +# Zero (smaller than subnormal) +2e-324 +1.0e-324 +4.9406564584124654e-325 +123e-999999999999999999999999 + + +# ============================================================================== +# Limits + +# subnormal min -2 -1 -0 +1 +2 +4.9406564584124652e-324 +4.9406564584124653e-324 +4.9406564584124654e-324 +4.9406564584124655e-324 +4.9406564584124656e-324 + +# subnormal max -2 -1 -0 +1 +2 +2.2250738585072007e-308 +2.2250738585072008e-308 +2.2250738585072009e-308 +2.2250738585072010e-308 +2.2250738585072011e-308 + +# normal min -2 -1 -0 +1 +2 +2.2250738585072012e-308 +2.2250738585072013e-308 +2.2250738585072014e-308 +2.2250738585072015e-308 +2.2250738585072016e-308 + +# normal max -2 -1 -0 +1 +2 +1.7976931348623155e+308 +1.7976931348623156e+308 +1.7976931348623157e+308 +1.7976931348623158e+308 +1.7976931348623159e+308 + +# u64 max -1 +1 +18446744073709551614.0 +18446744073709551615.0 +18446744073709551616.0 + +18446744073709551614.1 +18446744073709551615.1 +18446744073709551616.1 + +18446744073709551614.5 +18446744073709551615.5 +18446744073709551616.5 + +18446744073709551614.9 +18446744073709551615.9 +18446744073709551616.9 + + +# ============================================================================== +# Others + +0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111 + +123456e+12345678901234567890 +123456e-12345678901234567890 + + +# ============================================================================== +# Sequence + +1.0 +12.0 +123.0 +1234.0 +12345.0 +123456.0 +1234567.0 +12345678.0 +123456789.0 +1234567890.0 +12345678901.0 +123456789012.0 +1234567890123.0 +12345678901234.0 +123456789012345.0 +1234567890123456.0 +12345678901234567.0 +123456789012345678.0 +1234567890123456789.0 +12345678901234567890.0 +123456789012345678901.0 +1234567890123456789012.0 + +1e0 +12e0 +123e0 +1234e0 +12345e0 +123456e0 +1234567e0 +12345678e0 +123456789e0 +1234567890e0 +12345678901e0 +123456789012e0 +1234567890123e0 +12345678901234e0 +123456789012345e0 +1234567890123456e0 +12345678901234567e0 +123456789012345678e0 +1234567890123456789e0 +12345678901234567890e0 +123456789012345678901e0 +1234567890123456789012e0 + + +# ============================================================================== +# Sequence with 1 + +0.0000000000000000000000001 +0.000000000000000000000001 +0.00000000000000000000001 +0.0000000000000000000001 +0.000000000000000000001 +0.00000000000000000001 +0.0000000000000000001 +0.000000000000000001 +0.00000000000000001 +0.0000000000000001 +0.000000000000001 +0.00000000000001 +0.0000000000001 +0.000000000001 +0.00000000001 +0.0000000001 +0.000000001 +0.00000001 +0.0000001 +0.000001 +0.00001 +0.0001 +0.001 +0.01 +0.1 +1.0 +10.0 +100.0 +1000.0 +10000.0 +100000.0 +1000000.0 +10000000.0 +100000000.0 +1000000000.0 +10000000000.0 +100000000000.0 +1000000000000.0 +10000000000000.0 +100000000000000.0 +1000000000000000.0 +10000000000000000.0 +100000000000000000.0 +1000000000000000000.0 +10000000000000000000.0 +100000000000000000000.0 +1000000000000000000000.0 +10000000000000000000000.0 +100000000000000000000000.0 +1000000000000000000000000.0 +0.00000000000000000000000011 +0.0000000000000000000000011 +0.000000000000000000000011 +0.00000000000000000000011 +0.0000000000000000000011 +0.000000000000000000011 +0.00000000000000000011 +0.0000000000000000011 +0.000000000000000011 +0.00000000000000011 +0.0000000000000011 +0.000000000000011 +0.00000000000011 +0.0000000000011 +0.000000000011 +0.00000000011 +0.0000000011 +0.000000011 +0.00000011 +0.0000011 +0.000011 +0.00011 +0.0011 +0.011 +0.11 +1.1 +11.0 +110.0 +1100.0 +11000.0 +110000.0 +1100000.0 +11000000.0 +110000000.0 +1100000000.0 +11000000000.0 +110000000000.0 +1100000000000.0 +11000000000000.0 +110000000000000.0 +1100000000000000.0 +11000000000000000.0 +110000000000000000.0 +1100000000000000000.0 +11000000000000000000.0 +110000000000000000000.0 +1100000000000000000000.0 +11000000000000000000000.0 +110000000000000000000000.0 +1100000000000000000000000.0 +11000000000000000000000000.0 +0.000000000000000000000000111 +0.00000000000000000000000111 +0.0000000000000000000000111 +0.000000000000000000000111 +0.00000000000000000000111 +0.0000000000000000000111 +0.000000000000000000111 +0.00000000000000000111 +0.0000000000000000111 +0.000000000000000111 +0.00000000000000111 +0.0000000000000111 +0.000000000000111 +0.00000000000111 +0.0000000000111 +0.000000000111 +0.00000000111 +0.0000000111 +0.000000111 +0.00000111 +0.0000111 +0.000111 +0.00111 +0.0111 +0.111 +1.11 +11.1 +111.0 +1110.0 +11100.0 +111000.0 +1110000.0 +11100000.0 +111000000.0 +1110000000.0 +11100000000.0 +111000000000.0 +1110000000000.0 +11100000000000.0 +111000000000000.0 +1110000000000000.0 +11100000000000000.0 +111000000000000000.0 +1110000000000000000.0 +11100000000000000000.0 +111000000000000000000.0 +1110000000000000000000.0 +11100000000000000000000.0 +111000000000000000000000.0 +1110000000000000000000000.0 +11100000000000000000000000.0 +111000000000000000000000000.0 +0.0000000000000000000000001111 +0.000000000000000000000001111 +0.00000000000000000000001111 +0.0000000000000000000001111 +0.000000000000000000001111 +0.00000000000000000001111 +0.0000000000000000001111 +0.000000000000000001111 +0.00000000000000001111 +0.0000000000000001111 +0.000000000000001111 +0.00000000000001111 +0.0000000000001111 +0.000000000001111 +0.00000000001111 +0.0000000001111 +0.000000001111 +0.00000001111 +0.0000001111 +0.000001111 +0.00001111 +0.0001111 +0.001111 +0.01111 +0.1111 +1.111 +11.11 +111.1 +1111.0 +11110.0 +111100.0 +1111000.0 +11110000.0 +111100000.0 +1111000000.0 +11110000000.0 +111100000000.0 +1111000000000.0 +11110000000000.0 +111100000000000.0 +1111000000000000.0 +11110000000000000.0 +111100000000000000.0 +1111000000000000000.0 +11110000000000000000.0 +111100000000000000000.0 +1111000000000000000000.0 +11110000000000000000000.0 +111100000000000000000000.0 +1111000000000000000000000.0 +11110000000000000000000000.0 +111100000000000000000000000.0 +1111000000000000000000000000.0 +0.00000000000000000000000011111 +0.0000000000000000000000011111 +0.000000000000000000000011111 +0.00000000000000000000011111 +0.0000000000000000000011111 +0.000000000000000000011111 +0.00000000000000000011111 +0.0000000000000000011111 +0.000000000000000011111 +0.00000000000000011111 +0.0000000000000011111 +0.000000000000011111 +0.00000000000011111 +0.0000000000011111 +0.000000000011111 +0.00000000011111 +0.0000000011111 +0.000000011111 +0.00000011111 +0.0000011111 +0.000011111 +0.00011111 +0.0011111 +0.011111 +0.11111 +1.1111 +11.111 +111.11 +1111.1 +11111.0 +111110.0 +1111100.0 +11111000.0 +111110000.0 +1111100000.0 +11111000000.0 +111110000000.0 +1111100000000.0 +11111000000000.0 +111110000000000.0 +1111100000000000.0 +11111000000000000.0 +111110000000000000.0 +1111100000000000000.0 +11111000000000000000.0 +111110000000000000000.0 +1111100000000000000000.0 +11111000000000000000000.0 +111110000000000000000000.0 +1111100000000000000000000.0 +11111000000000000000000000.0 +111110000000000000000000000.0 +1111100000000000000000000000.0 +11111000000000000000000000000.0 +0.000000000000000000000000111111 +0.00000000000000000000000111111 +0.0000000000000000000000111111 +0.000000000000000000000111111 +0.00000000000000000000111111 +0.0000000000000000000111111 +0.000000000000000000111111 +0.00000000000000000111111 +0.0000000000000000111111 +0.000000000000000111111 +0.00000000000000111111 +0.0000000000000111111 +0.000000000000111111 +0.00000000000111111 +0.0000000000111111 +0.000000000111111 +0.00000000111111 +0.0000000111111 +0.000000111111 +0.00000111111 +0.0000111111 +0.000111111 +0.00111111 +0.0111111 +0.111111 +1.11111 +11.1111 +111.111 +1111.11 +11111.1 +111111.0 +1111110.0 +11111100.0 +111111000.0 +1111110000.0 +11111100000.0 +111111000000.0 +1111110000000.0 +11111100000000.0 +111111000000000.0 +1111110000000000.0 +11111100000000000.0 +111111000000000000.0 +1111110000000000000.0 +11111100000000000000.0 +111111000000000000000.0 +1111110000000000000000.0 +11111100000000000000000.0 +111111000000000000000000.0 +1111110000000000000000000.0 +11111100000000000000000000.0 +111111000000000000000000000.0 +1111110000000000000000000000.0 +11111100000000000000000000000.0 +111111000000000000000000000000.0 +0.0000000000000000000000001111111 +0.000000000000000000000001111111 +0.00000000000000000000001111111 +0.0000000000000000000001111111 +0.000000000000000000001111111 +0.00000000000000000001111111 +0.0000000000000000001111111 +0.000000000000000001111111 +0.00000000000000001111111 +0.0000000000000001111111 +0.000000000000001111111 +0.00000000000001111111 +0.0000000000001111111 +0.000000000001111111 +0.00000000001111111 +0.0000000001111111 +0.000000001111111 +0.00000001111111 +0.0000001111111 +0.000001111111 +0.00001111111 +0.0001111111 +0.001111111 +0.01111111 +0.1111111 +1.111111 +11.11111 +111.1111 +1111.111 +11111.11 +111111.1 +1111111.0 +11111110.0 +111111100.0 +1111111000.0 +11111110000.0 +111111100000.0 +1111111000000.0 +11111110000000.0 +111111100000000.0 +1111111000000000.0 +11111110000000000.0 +111111100000000000.0 +1111111000000000000.0 +11111110000000000000.0 +111111100000000000000.0 +1111111000000000000000.0 +11111110000000000000000.0 +111111100000000000000000.0 +1111111000000000000000000.0 +11111110000000000000000000.0 +111111100000000000000000000.0 +1111111000000000000000000000.0 +11111110000000000000000000000.0 +111111100000000000000000000000.0 +1111111000000000000000000000000.0 +0.00000000000000000000000011111111 +0.0000000000000000000000011111111 +0.000000000000000000000011111111 +0.00000000000000000000011111111 +0.0000000000000000000011111111 +0.000000000000000000011111111 +0.00000000000000000011111111 +0.0000000000000000011111111 +0.000000000000000011111111 +0.00000000000000011111111 +0.0000000000000011111111 +0.000000000000011111111 +0.00000000000011111111 +0.0000000000011111111 +0.000000000011111111 +0.00000000011111111 +0.0000000011111111 +0.000000011111111 +0.00000011111111 +0.0000011111111 +0.000011111111 +0.00011111111 +0.0011111111 +0.011111111 +0.11111111 +1.1111111 +11.111111 +111.11111 +1111.1111 +11111.111 +111111.11 +1111111.1 +11111111.0 +111111110.0 +1111111100.0 +11111111000.0 +111111110000.0 +1111111100000.0 +11111111000000.0 +111111110000000.0 +1111111100000000.0 +11111111000000000.0 +111111110000000000.0 +1111111100000000000.0 +11111111000000000000.0 +111111110000000000000.0 +1111111100000000000000.0 +11111111000000000000000.0 +111111110000000000000000.0 +1111111100000000000000000.0 +11111111000000000000000000.0 +111111110000000000000000000.0 +1111111100000000000000000000.0 +11111111000000000000000000000.0 +111111110000000000000000000000.0 +1111111100000000000000000000000.0 +11111111000000000000000000000000.0 +0.000000000000000000000000111111111 +0.00000000000000000000000111111111 +0.0000000000000000000000111111111 +0.000000000000000000000111111111 +0.00000000000000000000111111111 +0.0000000000000000000111111111 +0.000000000000000000111111111 +0.00000000000000000111111111 +0.0000000000000000111111111 +0.000000000000000111111111 +0.00000000000000111111111 +0.0000000000000111111111 +0.000000000000111111111 +0.00000000000111111111 +0.0000000000111111111 +0.000000000111111111 +0.00000000111111111 +0.0000000111111111 +0.000000111111111 +0.00000111111111 +0.0000111111111 +0.000111111111 +0.00111111111 +0.0111111111 +0.111111111 +1.11111111 +11.1111111 +111.111111 +1111.11111 +11111.1111 +111111.111 +1111111.11 +11111111.1 +111111111.0 +1111111110.0 +11111111100.0 +111111111000.0 +1111111110000.0 +11111111100000.0 +111111111000000.0 +1111111110000000.0 +11111111100000000.0 +111111111000000000.0 +1111111110000000000.0 +11111111100000000000.0 +111111111000000000000.0 +1111111110000000000000.0 +11111111100000000000000.0 +111111111000000000000000.0 +1111111110000000000000000.0 +11111111100000000000000000.0 +111111111000000000000000000.0 +1111111110000000000000000000.0 +11111111100000000000000000000.0 +111111111000000000000000000000.0 +1111111110000000000000000000000.0 +11111111100000000000000000000000.0 +111111111000000000000000000000000.0 +0.0000000000000000000000001111111111 +0.000000000000000000000001111111111 +0.00000000000000000000001111111111 +0.0000000000000000000001111111111 +0.000000000000000000001111111111 +0.00000000000000000001111111111 +0.0000000000000000001111111111 +0.000000000000000001111111111 +0.00000000000000001111111111 +0.0000000000000001111111111 +0.000000000000001111111111 +0.00000000000001111111111 +0.0000000000001111111111 +0.000000000001111111111 +0.00000000001111111111 +0.0000000001111111111 +0.000000001111111111 +0.00000001111111111 +0.0000001111111111 +0.000001111111111 +0.00001111111111 +0.0001111111111 +0.001111111111 +0.01111111111 +0.1111111111 +1.111111111 +11.11111111 +111.1111111 +1111.111111 +11111.11111 +111111.1111 +1111111.111 +11111111.11 +111111111.1 +1111111111.0 +11111111110.0 +111111111100.0 +1111111111000.0 +11111111110000.0 +111111111100000.0 +1111111111000000.0 +11111111110000000.0 +111111111100000000.0 +1111111111000000000.0 +11111111110000000000.0 +111111111100000000000.0 +1111111111000000000000.0 +11111111110000000000000.0 +111111111100000000000000.0 +1111111111000000000000000.0 +11111111110000000000000000.0 +111111111100000000000000000.0 +1111111111000000000000000000.0 +11111111110000000000000000000.0 +111111111100000000000000000000.0 +1111111111000000000000000000000.0 +11111111110000000000000000000000.0 +111111111100000000000000000000000.0 +1111111111000000000000000000000000.0 +0.00000000000000000000000011111111111 +0.0000000000000000000000011111111111 +0.000000000000000000000011111111111 +0.00000000000000000000011111111111 +0.0000000000000000000011111111111 +0.000000000000000000011111111111 +0.00000000000000000011111111111 +0.0000000000000000011111111111 +0.000000000000000011111111111 +0.00000000000000011111111111 +0.0000000000000011111111111 +0.000000000000011111111111 +0.00000000000011111111111 +0.0000000000011111111111 +0.000000000011111111111 +0.00000000011111111111 +0.0000000011111111111 +0.000000011111111111 +0.00000011111111111 +0.0000011111111111 +0.000011111111111 +0.00011111111111 +0.0011111111111 +0.011111111111 +0.11111111111 +1.1111111111 +11.111111111 +111.11111111 +1111.1111111 +11111.111111 +111111.11111 +1111111.1111 +11111111.111 +111111111.11 +1111111111.1 +11111111111.0 +111111111110.0 +1111111111100.0 +11111111111000.0 +111111111110000.0 +1111111111100000.0 +11111111111000000.0 +111111111110000000.0 +1111111111100000000.0 +11111111111000000000.0 +111111111110000000000.0 +1111111111100000000000.0 +11111111111000000000000.0 +111111111110000000000000.0 +1111111111100000000000000.0 +11111111111000000000000000.0 +111111111110000000000000000.0 +1111111111100000000000000000.0 +11111111111000000000000000000.0 +111111111110000000000000000000.0 +1111111111100000000000000000000.0 +11111111111000000000000000000000.0 +111111111110000000000000000000000.0 +1111111111100000000000000000000000.0 +11111111111000000000000000000000000.0 +0.000000000000000000000000111111111111 +0.00000000000000000000000111111111111 +0.0000000000000000000000111111111111 +0.000000000000000000000111111111111 +0.00000000000000000000111111111111 +0.0000000000000000000111111111111 +0.000000000000000000111111111111 +0.00000000000000000111111111111 +0.0000000000000000111111111111 +0.000000000000000111111111111 +0.00000000000000111111111111 +0.0000000000000111111111111 +0.000000000000111111111111 +0.00000000000111111111111 +0.0000000000111111111111 +0.000000000111111111111 +0.00000000111111111111 +0.0000000111111111111 +0.000000111111111111 +0.00000111111111111 +0.0000111111111111 +0.000111111111111 +0.00111111111111 +0.0111111111111 +0.111111111111 +1.11111111111 +11.1111111111 +111.111111111 +1111.11111111 +11111.1111111 +111111.111111 +1111111.11111 +11111111.1111 +111111111.111 +1111111111.11 +11111111111.1 +111111111111.0 +1111111111110.0 +11111111111100.0 +111111111111000.0 +1111111111110000.0 +11111111111100000.0 +111111111111000000.0 +1111111111110000000.0 +11111111111100000000.0 +111111111111000000000.0 +1111111111110000000000.0 +11111111111100000000000.0 +111111111111000000000000.0 +1111111111110000000000000.0 +11111111111100000000000000.0 +111111111111000000000000000.0 +1111111111110000000000000000.0 +11111111111100000000000000000.0 +111111111111000000000000000000.0 +1111111111110000000000000000000.0 +11111111111100000000000000000000.0 +111111111111000000000000000000000.0 +1111111111110000000000000000000000.0 +11111111111100000000000000000000000.0 +111111111111000000000000000000000000.0 +0.0000000000000000000000001111111111111 +0.000000000000000000000001111111111111 +0.00000000000000000000001111111111111 +0.0000000000000000000001111111111111 +0.000000000000000000001111111111111 +0.00000000000000000001111111111111 +0.0000000000000000001111111111111 +0.000000000000000001111111111111 +0.00000000000000001111111111111 +0.0000000000000001111111111111 +0.000000000000001111111111111 +0.00000000000001111111111111 +0.0000000000001111111111111 +0.000000000001111111111111 +0.00000000001111111111111 +0.0000000001111111111111 +0.000000001111111111111 +0.00000001111111111111 +0.0000001111111111111 +0.000001111111111111 +0.00001111111111111 +0.0001111111111111 +0.001111111111111 +0.01111111111111 +0.1111111111111 +1.111111111111 +11.11111111111 +111.1111111111 +1111.111111111 +11111.11111111 +111111.1111111 +1111111.111111 +11111111.11111 +111111111.1111 +1111111111.111 +11111111111.11 +111111111111.1 +1111111111111.0 +11111111111110.0 +111111111111100.0 +1111111111111000.0 +11111111111110000.0 +111111111111100000.0 +1111111111111000000.0 +11111111111110000000.0 +111111111111100000000.0 +1111111111111000000000.0 +11111111111110000000000.0 +111111111111100000000000.0 +1111111111111000000000000.0 +11111111111110000000000000.0 +111111111111100000000000000.0 +1111111111111000000000000000.0 +11111111111110000000000000000.0 +111111111111100000000000000000.0 +1111111111111000000000000000000.0 +11111111111110000000000000000000.0 +111111111111100000000000000000000.0 +1111111111111000000000000000000000.0 +11111111111110000000000000000000000.0 +111111111111100000000000000000000000.0 +1111111111111000000000000000000000000.0 +0.00000000000000000000000011111111111111 +0.0000000000000000000000011111111111111 +0.000000000000000000000011111111111111 +0.00000000000000000000011111111111111 +0.0000000000000000000011111111111111 +0.000000000000000000011111111111111 +0.00000000000000000011111111111111 +0.0000000000000000011111111111111 +0.000000000000000011111111111111 +0.00000000000000011111111111111 +0.0000000000000011111111111111 +0.000000000000011111111111111 +0.00000000000011111111111111 +0.0000000000011111111111111 +0.000000000011111111111111 +0.00000000011111111111111 +0.0000000011111111111111 +0.000000011111111111111 +0.00000011111111111111 +0.0000011111111111111 +0.000011111111111111 +0.00011111111111111 +0.0011111111111111 +0.011111111111111 +0.11111111111111 +1.1111111111111 +11.111111111111 +111.11111111111 +1111.1111111111 +11111.111111111 +111111.11111111 +1111111.1111111 +11111111.111111 +111111111.11111 +1111111111.1111 +11111111111.111 +111111111111.11 +1111111111111.1 +11111111111111.0 +111111111111110.0 +1111111111111100.0 +11111111111111000.0 +111111111111110000.0 +1111111111111100000.0 +11111111111111000000.0 +111111111111110000000.0 +1111111111111100000000.0 +11111111111111000000000.0 +111111111111110000000000.0 +1111111111111100000000000.0 +11111111111111000000000000.0 +111111111111110000000000000.0 +1111111111111100000000000000.0 +11111111111111000000000000000.0 +111111111111110000000000000000.0 +1111111111111100000000000000000.0 +11111111111111000000000000000000.0 +111111111111110000000000000000000.0 +1111111111111100000000000000000000.0 +11111111111111000000000000000000000.0 +111111111111110000000000000000000000.0 +1111111111111100000000000000000000000.0 +11111111111111000000000000000000000000.0 +0.000000000000000000000000111111111111111 +0.00000000000000000000000111111111111111 +0.0000000000000000000000111111111111111 +0.000000000000000000000111111111111111 +0.00000000000000000000111111111111111 +0.0000000000000000000111111111111111 +0.000000000000000000111111111111111 +0.00000000000000000111111111111111 +0.0000000000000000111111111111111 +0.000000000000000111111111111111 +0.00000000000000111111111111111 +0.0000000000000111111111111111 +0.000000000000111111111111111 +0.00000000000111111111111111 +0.0000000000111111111111111 +0.000000000111111111111111 +0.00000000111111111111111 +0.0000000111111111111111 +0.000000111111111111111 +0.00000111111111111111 +0.0000111111111111111 +0.000111111111111111 +0.00111111111111111 +0.0111111111111111 +0.111111111111111 +1.11111111111111 +11.1111111111111 +111.111111111111 +1111.11111111111 +11111.1111111111 +111111.111111111 +1111111.11111111 +11111111.1111111 +111111111.111111 +1111111111.11111 +11111111111.1111 +111111111111.111 +1111111111111.11 +11111111111111.1 +111111111111111.0 +1111111111111110.0 +11111111111111100.0 +111111111111111000.0 +1111111111111110000.0 +11111111111111100000.0 +111111111111111000000.0 +1111111111111110000000.0 +11111111111111100000000.0 +111111111111111000000000.0 +1111111111111110000000000.0 +11111111111111100000000000.0 +111111111111111000000000000.0 +1111111111111110000000000000.0 +11111111111111100000000000000.0 +111111111111111000000000000000.0 +1111111111111110000000000000000.0 +11111111111111100000000000000000.0 +111111111111111000000000000000000.0 +1111111111111110000000000000000000.0 +11111111111111100000000000000000000.0 +111111111111111000000000000000000000.0 +1111111111111110000000000000000000000.0 +11111111111111100000000000000000000000.0 +111111111111111000000000000000000000000.0 +0.0000000000000000000000001111111111111111 +0.000000000000000000000001111111111111111 +0.00000000000000000000001111111111111111 +0.0000000000000000000001111111111111111 +0.000000000000000000001111111111111111 +0.00000000000000000001111111111111111 +0.0000000000000000001111111111111111 +0.000000000000000001111111111111111 +0.00000000000000001111111111111111 +0.0000000000000001111111111111111 +0.000000000000001111111111111111 +0.00000000000001111111111111111 +0.0000000000001111111111111111 +0.000000000001111111111111111 +0.00000000001111111111111111 +0.0000000001111111111111111 +0.000000001111111111111111 +0.00000001111111111111111 +0.0000001111111111111111 +0.000001111111111111111 +0.00001111111111111111 +0.0001111111111111111 +0.001111111111111111 +0.01111111111111111 +0.1111111111111111 +1.111111111111111 +11.11111111111111 +111.1111111111111 +1111.111111111111 +11111.11111111111 +111111.1111111111 +1111111.111111111 +11111111.11111111 +111111111.1111111 +1111111111.111111 +11111111111.11111 +111111111111.1111 +1111111111111.111 +11111111111111.11 +111111111111111.1 +1111111111111111.0 +11111111111111110.0 +111111111111111100.0 +1111111111111111000.0 +11111111111111110000.0 +111111111111111100000.0 +1111111111111111000000.0 +11111111111111110000000.0 +111111111111111100000000.0 +1111111111111111000000000.0 +11111111111111110000000000.0 +111111111111111100000000000.0 +1111111111111111000000000000.0 +11111111111111110000000000000.0 +111111111111111100000000000000.0 +1111111111111111000000000000000.0 +11111111111111110000000000000000.0 +111111111111111100000000000000000.0 +1111111111111111000000000000000000.0 +11111111111111110000000000000000000.0 +111111111111111100000000000000000000.0 +1111111111111111000000000000000000000.0 +11111111111111110000000000000000000000.0 +111111111111111100000000000000000000000.0 +1111111111111111000000000000000000000000.0 +0.00000000000000000000000011111111111111111 +0.0000000000000000000000011111111111111111 +0.000000000000000000000011111111111111111 +0.00000000000000000000011111111111111111 +0.0000000000000000000011111111111111111 +0.000000000000000000011111111111111111 +0.00000000000000000011111111111111111 +0.0000000000000000011111111111111111 +0.000000000000000011111111111111111 +0.00000000000000011111111111111111 +0.0000000000000011111111111111111 +0.000000000000011111111111111111 +0.00000000000011111111111111111 +0.0000000000011111111111111111 +0.000000000011111111111111111 +0.00000000011111111111111111 +0.0000000011111111111111111 +0.000000011111111111111111 +0.00000011111111111111111 +0.0000011111111111111111 +0.000011111111111111111 +0.00011111111111111111 +0.0011111111111111111 +0.011111111111111111 +0.11111111111111111 +1.1111111111111111 +11.111111111111111 +111.11111111111111 +1111.1111111111111 +11111.111111111111 +111111.11111111111 +1111111.1111111111 +11111111.111111111 +111111111.11111111 +1111111111.1111111 +11111111111.111111 +111111111111.11111 +1111111111111.1111 +11111111111111.111 +111111111111111.11 +1111111111111111.1 +11111111111111111.0 +111111111111111110.0 +1111111111111111100.0 +11111111111111111000.0 +111111111111111110000.0 +1111111111111111100000.0 +11111111111111111000000.0 +111111111111111110000000.0 +1111111111111111100000000.0 +11111111111111111000000000.0 +111111111111111110000000000.0 +1111111111111111100000000000.0 +11111111111111111000000000000.0 +111111111111111110000000000000.0 +1111111111111111100000000000000.0 +11111111111111111000000000000000.0 +111111111111111110000000000000000.0 +1111111111111111100000000000000000.0 +11111111111111111000000000000000000.0 +111111111111111110000000000000000000.0 +1111111111111111100000000000000000000.0 +11111111111111111000000000000000000000.0 +111111111111111110000000000000000000000.0 +1111111111111111100000000000000000000000.0 +11111111111111111000000000000000000000000.0 +0.000000000000000000000000111111111111111111 +0.00000000000000000000000111111111111111111 +0.0000000000000000000000111111111111111111 +0.000000000000000000000111111111111111111 +0.00000000000000000000111111111111111111 +0.0000000000000000000111111111111111111 +0.000000000000000000111111111111111111 +0.00000000000000000111111111111111111 +0.0000000000000000111111111111111111 +0.000000000000000111111111111111111 +0.00000000000000111111111111111111 +0.0000000000000111111111111111111 +0.000000000000111111111111111111 +0.00000000000111111111111111111 +0.0000000000111111111111111111 +0.000000000111111111111111111 +0.00000000111111111111111111 +0.0000000111111111111111111 +0.000000111111111111111111 +0.00000111111111111111111 +0.0000111111111111111111 +0.000111111111111111111 +0.00111111111111111111 +0.0111111111111111111 +0.111111111111111111 +1.11111111111111111 +11.1111111111111111 +111.111111111111111 +1111.11111111111111 +11111.1111111111111 +111111.111111111111 +1111111.11111111111 +11111111.1111111111 +111111111.111111111 +1111111111.11111111 +11111111111.1111111 +111111111111.111111 +1111111111111.11111 +11111111111111.1111 +111111111111111.111 +1111111111111111.11 +11111111111111111.1 +111111111111111111.0 +1111111111111111110.0 +11111111111111111100.0 +111111111111111111000.0 +1111111111111111110000.0 +11111111111111111100000.0 +111111111111111111000000.0 +1111111111111111110000000.0 +11111111111111111100000000.0 +111111111111111111000000000.0 +1111111111111111110000000000.0 +11111111111111111100000000000.0 +111111111111111111000000000000.0 +1111111111111111110000000000000.0 +11111111111111111100000000000000.0 +111111111111111111000000000000000.0 +1111111111111111110000000000000000.0 +11111111111111111100000000000000000.0 +111111111111111111000000000000000000.0 +1111111111111111110000000000000000000.0 +11111111111111111100000000000000000000.0 +111111111111111111000000000000000000000.0 +1111111111111111110000000000000000000000.0 +11111111111111111100000000000000000000000.0 +111111111111111111000000000000000000000000.0 +0.0000000000000000000000001111111111111111111 +0.000000000000000000000001111111111111111111 +0.00000000000000000000001111111111111111111 +0.0000000000000000000001111111111111111111 +0.000000000000000000001111111111111111111 +0.00000000000000000001111111111111111111 +0.0000000000000000001111111111111111111 +0.000000000000000001111111111111111111 +0.00000000000000001111111111111111111 +0.0000000000000001111111111111111111 +0.000000000000001111111111111111111 +0.00000000000001111111111111111111 +0.0000000000001111111111111111111 +0.000000000001111111111111111111 +0.00000000001111111111111111111 +0.0000000001111111111111111111 +0.000000001111111111111111111 +0.00000001111111111111111111 +0.0000001111111111111111111 +0.000001111111111111111111 +0.00001111111111111111111 +0.0001111111111111111111 +0.001111111111111111111 +0.01111111111111111111 +0.1111111111111111111 +1.111111111111111111 +11.11111111111111111 +111.1111111111111111 +1111.111111111111111 +11111.11111111111111 +111111.1111111111111 +1111111.111111111111 +11111111.11111111111 +111111111.1111111111 +1111111111.111111111 +11111111111.11111111 +111111111111.1111111 +1111111111111.111111 +11111111111111.11111 +111111111111111.1111 +1111111111111111.111 +11111111111111111.11 +111111111111111111.1 +1111111111111111111.0 +11111111111111111110.0 +111111111111111111100.0 +1111111111111111111000.0 +11111111111111111110000.0 +111111111111111111100000.0 +1111111111111111111000000.0 +11111111111111111110000000.0 +111111111111111111100000000.0 +1111111111111111111000000000.0 +11111111111111111110000000000.0 +111111111111111111100000000000.0 +1111111111111111111000000000000.0 +11111111111111111110000000000000.0 +111111111111111111100000000000000.0 +1111111111111111111000000000000000.0 +11111111111111111110000000000000000.0 +111111111111111111100000000000000000.0 +1111111111111111111000000000000000000.0 +11111111111111111110000000000000000000.0 +111111111111111111100000000000000000000.0 +1111111111111111111000000000000000000000.0 +11111111111111111110000000000000000000000.0 +111111111111111111100000000000000000000000.0 +1111111111111111111000000000000000000000000.0 +0.00000000000000000000000011111111111111111111 +0.0000000000000000000000011111111111111111111 +0.000000000000000000000011111111111111111111 +0.00000000000000000000011111111111111111111 +0.0000000000000000000011111111111111111111 +0.000000000000000000011111111111111111111 +0.00000000000000000011111111111111111111 +0.0000000000000000011111111111111111111 +0.000000000000000011111111111111111111 +0.00000000000000011111111111111111111 +0.0000000000000011111111111111111111 +0.000000000000011111111111111111111 +0.00000000000011111111111111111111 +0.0000000000011111111111111111111 +0.000000000011111111111111111111 +0.00000000011111111111111111111 +0.0000000011111111111111111111 +0.000000011111111111111111111 +0.00000011111111111111111111 +0.0000011111111111111111111 +0.000011111111111111111111 +0.00011111111111111111111 +0.0011111111111111111111 +0.011111111111111111111 +0.11111111111111111111 +1.1111111111111111111 +11.111111111111111111 +111.11111111111111111 +1111.1111111111111111 +11111.111111111111111 +111111.11111111111111 +1111111.1111111111111 +11111111.111111111111 +111111111.11111111111 +1111111111.1111111111 +11111111111.111111111 +111111111111.11111111 +1111111111111.1111111 +11111111111111.111111 +111111111111111.11111 +1111111111111111.1111 +11111111111111111.111 +111111111111111111.11 +1111111111111111111.1 +11111111111111111111.0 +111111111111111111110.0 +1111111111111111111100.0 +11111111111111111111000.0 +111111111111111111110000.0 +1111111111111111111100000.0 +11111111111111111111000000.0 +111111111111111111110000000.0 +1111111111111111111100000000.0 +11111111111111111111000000000.0 +111111111111111111110000000000.0 +1111111111111111111100000000000.0 +11111111111111111111000000000000.0 +111111111111111111110000000000000.0 +1111111111111111111100000000000000.0 +11111111111111111111000000000000000.0 +111111111111111111110000000000000000.0 +1111111111111111111100000000000000000.0 +11111111111111111111000000000000000000.0 +111111111111111111110000000000000000000.0 +1111111111111111111100000000000000000000.0 +11111111111111111111000000000000000000000.0 +111111111111111111110000000000000000000000.0 +1111111111111111111100000000000000000000000.0 +11111111111111111111000000000000000000000000.0 +0.000000000000000000000000111111111111111111111 +0.00000000000000000000000111111111111111111111 +0.0000000000000000000000111111111111111111111 +0.000000000000000000000111111111111111111111 +0.00000000000000000000111111111111111111111 +0.0000000000000000000111111111111111111111 +0.000000000000000000111111111111111111111 +0.00000000000000000111111111111111111111 +0.0000000000000000111111111111111111111 +0.000000000000000111111111111111111111 +0.00000000000000111111111111111111111 +0.0000000000000111111111111111111111 +0.000000000000111111111111111111111 +0.00000000000111111111111111111111 +0.0000000000111111111111111111111 +0.000000000111111111111111111111 +0.00000000111111111111111111111 +0.0000000111111111111111111111 +0.000000111111111111111111111 +0.00000111111111111111111111 +0.0000111111111111111111111 +0.000111111111111111111111 +0.00111111111111111111111 +0.0111111111111111111111 +0.111111111111111111111 +1.11111111111111111111 +11.1111111111111111111 +111.111111111111111111 +1111.11111111111111111 +11111.1111111111111111 +111111.111111111111111 +1111111.11111111111111 +11111111.1111111111111 +111111111.111111111111 +1111111111.11111111111 +11111111111.1111111111 +111111111111.111111111 +1111111111111.11111111 +11111111111111.1111111 +111111111111111.111111 +1111111111111111.11111 +11111111111111111.1111 +111111111111111111.111 +1111111111111111111.11 +11111111111111111111.1 +111111111111111111111.0 +1111111111111111111110.0 +11111111111111111111100.0 +111111111111111111111000.0 +1111111111111111111110000.0 +11111111111111111111100000.0 +111111111111111111111000000.0 +1111111111111111111110000000.0 +11111111111111111111100000000.0 +111111111111111111111000000000.0 +1111111111111111111110000000000.0 +11111111111111111111100000000000.0 +111111111111111111111000000000000.0 +1111111111111111111110000000000000.0 +11111111111111111111100000000000000.0 +111111111111111111111000000000000000.0 +1111111111111111111110000000000000000.0 +11111111111111111111100000000000000000.0 +111111111111111111111000000000000000000.0 +1111111111111111111110000000000000000000.0 +11111111111111111111100000000000000000000.0 +111111111111111111111000000000000000000000.0 +1111111111111111111110000000000000000000000.0 +11111111111111111111100000000000000000000000.0 +111111111111111111111000000000000000000000000.0 +0.0000000000000000000000001111111111111111111111 +0.000000000000000000000001111111111111111111111 +0.00000000000000000000001111111111111111111111 +0.0000000000000000000001111111111111111111111 +0.000000000000000000001111111111111111111111 +0.00000000000000000001111111111111111111111 +0.0000000000000000001111111111111111111111 +0.000000000000000001111111111111111111111 +0.00000000000000001111111111111111111111 +0.0000000000000001111111111111111111111 +0.000000000000001111111111111111111111 +0.00000000000001111111111111111111111 +0.0000000000001111111111111111111111 +0.000000000001111111111111111111111 +0.00000000001111111111111111111111 +0.0000000001111111111111111111111 +0.000000001111111111111111111111 +0.00000001111111111111111111111 +0.0000001111111111111111111111 +0.000001111111111111111111111 +0.00001111111111111111111111 +0.0001111111111111111111111 +0.001111111111111111111111 +0.01111111111111111111111 +0.1111111111111111111111 +1.111111111111111111111 +11.11111111111111111111 +111.1111111111111111111 +1111.111111111111111111 +11111.11111111111111111 +111111.1111111111111111 +1111111.111111111111111 +11111111.11111111111111 +111111111.1111111111111 +1111111111.111111111111 +11111111111.11111111111 +111111111111.1111111111 +1111111111111.111111111 +11111111111111.11111111 +111111111111111.1111111 +1111111111111111.111111 +11111111111111111.11111 +111111111111111111.1111 +1111111111111111111.111 +11111111111111111111.11 +111111111111111111111.1 +1111111111111111111111.0 +11111111111111111111110.0 +111111111111111111111100.0 +1111111111111111111111000.0 +11111111111111111111110000.0 +111111111111111111111100000.0 +1111111111111111111111000000.0 +11111111111111111111110000000.0 +111111111111111111111100000000.0 +1111111111111111111111000000000.0 +11111111111111111111110000000000.0 +111111111111111111111100000000000.0 +1111111111111111111111000000000000.0 +11111111111111111111110000000000000.0 +111111111111111111111100000000000000.0 +1111111111111111111111000000000000000.0 +11111111111111111111110000000000000000.0 +111111111111111111111100000000000000000.0 +1111111111111111111111000000000000000000.0 +11111111111111111111110000000000000000000.0 +111111111111111111111100000000000000000000.0 +1111111111111111111111000000000000000000000.0 +11111111111111111111110000000000000000000000.0 +111111111111111111111100000000000000000000000.0 +1111111111111111111111000000000000000000000000.0 +0.00000000000000000000000011111111111111111111111 +0.0000000000000000000000011111111111111111111111 +0.000000000000000000000011111111111111111111111 +0.00000000000000000000011111111111111111111111 +0.0000000000000000000011111111111111111111111 +0.000000000000000000011111111111111111111111 +0.00000000000000000011111111111111111111111 +0.0000000000000000011111111111111111111111 +0.000000000000000011111111111111111111111 +0.00000000000000011111111111111111111111 +0.0000000000000011111111111111111111111 +0.000000000000011111111111111111111111 +0.00000000000011111111111111111111111 +0.0000000000011111111111111111111111 +0.000000000011111111111111111111111 +0.00000000011111111111111111111111 +0.0000000011111111111111111111111 +0.000000011111111111111111111111 +0.00000011111111111111111111111 +0.0000011111111111111111111111 +0.000011111111111111111111111 +0.00011111111111111111111111 +0.0011111111111111111111111 +0.011111111111111111111111 +0.11111111111111111111111 +1.1111111111111111111111 +11.111111111111111111111 +111.11111111111111111111 +1111.1111111111111111111 +11111.111111111111111111 +111111.11111111111111111 +1111111.1111111111111111 +11111111.111111111111111 +111111111.11111111111111 +1111111111.1111111111111 +11111111111.111111111111 +111111111111.11111111111 +1111111111111.1111111111 +11111111111111.111111111 +111111111111111.11111111 +1111111111111111.1111111 +11111111111111111.111111 +111111111111111111.11111 +1111111111111111111.1111 +11111111111111111111.111 +111111111111111111111.11 +1111111111111111111111.1 +11111111111111111111111.0 +111111111111111111111110.0 +1111111111111111111111100.0 +11111111111111111111111000.0 +111111111111111111111110000.0 +1111111111111111111111100000.0 +11111111111111111111111000000.0 +111111111111111111111110000000.0 +1111111111111111111111100000000.0 +11111111111111111111111000000000.0 +111111111111111111111110000000000.0 +1111111111111111111111100000000000.0 +11111111111111111111111000000000000.0 +111111111111111111111110000000000000.0 +1111111111111111111111100000000000000.0 +11111111111111111111111000000000000000.0 +111111111111111111111110000000000000000.0 +1111111111111111111111100000000000000000.0 +11111111111111111111111000000000000000000.0 +111111111111111111111110000000000000000000.0 +1111111111111111111111100000000000000000000.0 +11111111111111111111111000000000000000000000.0 +111111111111111111111110000000000000000000000.0 +1111111111111111111111100000000000000000000000.0 +11111111111111111111111000000000000000000000000.0 +0.000000000000000000000000111111111111111111111111 +0.00000000000000000000000111111111111111111111111 +0.0000000000000000000000111111111111111111111111 +0.000000000000000000000111111111111111111111111 +0.00000000000000000000111111111111111111111111 +0.0000000000000000000111111111111111111111111 +0.000000000000000000111111111111111111111111 +0.00000000000000000111111111111111111111111 +0.0000000000000000111111111111111111111111 +0.000000000000000111111111111111111111111 +0.00000000000000111111111111111111111111 +0.0000000000000111111111111111111111111 +0.000000000000111111111111111111111111 +0.00000000000111111111111111111111111 +0.0000000000111111111111111111111111 +0.000000000111111111111111111111111 +0.00000000111111111111111111111111 +0.0000000111111111111111111111111 +0.000000111111111111111111111111 +0.00000111111111111111111111111 +0.0000111111111111111111111111 +0.000111111111111111111111111 +0.00111111111111111111111111 +0.0111111111111111111111111 +0.111111111111111111111111 +1.11111111111111111111111 +11.1111111111111111111111 +111.111111111111111111111 +1111.11111111111111111111 +11111.1111111111111111111 +111111.111111111111111111 +1111111.11111111111111111 +11111111.1111111111111111 +111111111.111111111111111 +1111111111.11111111111111 +11111111111.1111111111111 +111111111111.111111111111 +1111111111111.11111111111 +11111111111111.1111111111 +111111111111111.111111111 +1111111111111111.11111111 +11111111111111111.1111111 +111111111111111111.111111 +1111111111111111111.11111 +11111111111111111111.1111 +111111111111111111111.111 +1111111111111111111111.11 +11111111111111111111111.1 +111111111111111111111111.0 +1111111111111111111111110.0 +11111111111111111111111100.0 +111111111111111111111111000.0 +1111111111111111111111110000.0 +11111111111111111111111100000.0 +111111111111111111111111000000.0 +1111111111111111111111110000000.0 +11111111111111111111111100000000.0 +111111111111111111111111000000000.0 +1111111111111111111111110000000000.0 +11111111111111111111111100000000000.0 +111111111111111111111111000000000000.0 +1111111111111111111111110000000000000.0 +11111111111111111111111100000000000000.0 +111111111111111111111111000000000000000.0 +1111111111111111111111110000000000000000.0 +11111111111111111111111100000000000000000.0 +111111111111111111111111000000000000000000.0 +1111111111111111111111110000000000000000000.0 +11111111111111111111111100000000000000000000.0 +111111111111111111111111000000000000000000000.0 +1111111111111111111111110000000000000000000000.0 +11111111111111111111111100000000000000000000000.0 +111111111111111111111111000000000000000000000000.0 + + +# ============================================================================== +# Sequence with 9 + +0.0000000000000000000000009 +0.000000000000000000000009 +0.00000000000000000000009 +0.0000000000000000000009 +0.000000000000000000009 +0.00000000000000000009 +0.0000000000000000009 +0.000000000000000009 +0.00000000000000009 +0.0000000000000009 +0.000000000000009 +0.00000000000009 +0.0000000000009 +0.000000000009 +0.00000000009 +0.0000000009 +0.000000009 +0.00000009 +0.0000009 +0.000009 +0.00009 +0.0009 +0.009 +0.09 +0.9 +9.0 +90.0 +900.0 +9000.0 +90000.0 +900000.0 +9000000.0 +90000000.0 +900000000.0 +9000000000.0 +90000000000.0 +900000000000.0 +9000000000000.0 +90000000000000.0 +900000000000000.0 +9000000000000000.0 +90000000000000000.0 +900000000000000000.0 +9000000000000000000.0 +90000000000000000000.0 +900000000000000000000.0 +9000000000000000000000.0 +90000000000000000000000.0 +900000000000000000000000.0 +9000000000000000000000000.0 +0.00000000000000000000000099 +0.0000000000000000000000099 +0.000000000000000000000099 +0.00000000000000000000099 +0.0000000000000000000099 +0.000000000000000000099 +0.00000000000000000099 +0.0000000000000000099 +0.000000000000000099 +0.00000000000000099 +0.0000000000000099 +0.000000000000099 +0.00000000000099 +0.0000000000099 +0.000000000099 +0.00000000099 +0.0000000099 +0.000000099 +0.00000099 +0.0000099 +0.000099 +0.00099 +0.0099 +0.099 +0.99 +9.9 +99.0 +990.0 +9900.0 +99000.0 +990000.0 +9900000.0 +99000000.0 +990000000.0 +9900000000.0 +99000000000.0 +990000000000.0 +9900000000000.0 +99000000000000.0 +990000000000000.0 +9900000000000000.0 +99000000000000000.0 +990000000000000000.0 +9900000000000000000.0 +99000000000000000000.0 +990000000000000000000.0 +9900000000000000000000.0 +99000000000000000000000.0 +990000000000000000000000.0 +9900000000000000000000000.0 +99000000000000000000000000.0 +0.000000000000000000000000999 +0.00000000000000000000000999 +0.0000000000000000000000999 +0.000000000000000000000999 +0.00000000000000000000999 +0.0000000000000000000999 +0.000000000000000000999 +0.00000000000000000999 +0.0000000000000000999 +0.000000000000000999 +0.00000000000000999 +0.0000000000000999 +0.000000000000999 +0.00000000000999 +0.0000000000999 +0.000000000999 +0.00000000999 +0.0000000999 +0.000000999 +0.00000999 +0.0000999 +0.000999 +0.00999 +0.0999 +0.999 +9.99 +99.9 +999.0 +9990.0 +99900.0 +999000.0 +9990000.0 +99900000.0 +999000000.0 +9990000000.0 +99900000000.0 +999000000000.0 +9990000000000.0 +99900000000000.0 +999000000000000.0 +9990000000000000.0 +99900000000000000.0 +999000000000000000.0 +9990000000000000000.0 +99900000000000000000.0 +999000000000000000000.0 +9990000000000000000000.0 +99900000000000000000000.0 +999000000000000000000000.0 +9990000000000000000000000.0 +99900000000000000000000000.0 +999000000000000000000000000.0 +0.0000000000000000000000009999 +0.000000000000000000000009999 +0.00000000000000000000009999 +0.0000000000000000000009999 +0.000000000000000000009999 +0.00000000000000000009999 +0.0000000000000000009999 +0.000000000000000009999 +0.00000000000000009999 +0.0000000000000009999 +0.000000000000009999 +0.00000000000009999 +0.0000000000009999 +0.000000000009999 +0.00000000009999 +0.0000000009999 +0.000000009999 +0.00000009999 +0.0000009999 +0.000009999 +0.00009999 +0.0009999 +0.009999 +0.09999 +0.9999 +9.999 +99.99 +999.9 +9999.0 +99990.0 +999900.0 +9999000.0 +99990000.0 +999900000.0 +9999000000.0 +99990000000.0 +999900000000.0 +9999000000000.0 +99990000000000.0 +999900000000000.0 +9999000000000000.0 +99990000000000000.0 +999900000000000000.0 +9999000000000000000.0 +99990000000000000000.0 +999900000000000000000.0 +9999000000000000000000.0 +99990000000000000000000.0 +999900000000000000000000.0 +9999000000000000000000000.0 +99990000000000000000000000.0 +999900000000000000000000000.0 +9999000000000000000000000000.0 +0.00000000000000000000000099999 +0.0000000000000000000000099999 +0.000000000000000000000099999 +0.00000000000000000000099999 +0.0000000000000000000099999 +0.000000000000000000099999 +0.00000000000000000099999 +0.0000000000000000099999 +0.000000000000000099999 +0.00000000000000099999 +0.0000000000000099999 +0.000000000000099999 +0.00000000000099999 +0.0000000000099999 +0.000000000099999 +0.00000000099999 +0.0000000099999 +0.000000099999 +0.00000099999 +0.0000099999 +0.000099999 +0.00099999 +0.0099999 +0.099999 +0.99999 +9.9999 +99.999 +999.99 +9999.9 +99999.0 +999990.0 +9999900.0 +99999000.0 +999990000.0 +9999900000.0 +99999000000.0 +999990000000.0 +9999900000000.0 +99999000000000.0 +999990000000000.0 +9999900000000000.0 +99999000000000000.0 +999990000000000000.0 +9999900000000000000.0 +99999000000000000000.0 +999990000000000000000.0 +9999900000000000000000.0 +99999000000000000000000.0 +999990000000000000000000.0 +9999900000000000000000000.0 +99999000000000000000000000.0 +999990000000000000000000000.0 +9999900000000000000000000000.0 +99999000000000000000000000000.0 +0.000000000000000000000000999999 +0.00000000000000000000000999999 +0.0000000000000000000000999999 +0.000000000000000000000999999 +0.00000000000000000000999999 +0.0000000000000000000999999 +0.000000000000000000999999 +0.00000000000000000999999 +0.0000000000000000999999 +0.000000000000000999999 +0.00000000000000999999 +0.0000000000000999999 +0.000000000000999999 +0.00000000000999999 +0.0000000000999999 +0.000000000999999 +0.00000000999999 +0.0000000999999 +0.000000999999 +0.00000999999 +0.0000999999 +0.000999999 +0.00999999 +0.0999999 +0.999999 +9.99999 +99.9999 +999.999 +9999.99 +99999.9 +999999.0 +9999990.0 +99999900.0 +999999000.0 +9999990000.0 +99999900000.0 +999999000000.0 +9999990000000.0 +99999900000000.0 +999999000000000.0 +9999990000000000.0 +99999900000000000.0 +999999000000000000.0 +9999990000000000000.0 +99999900000000000000.0 +999999000000000000000.0 +9999990000000000000000.0 +99999900000000000000000.0 +999999000000000000000000.0 +9999990000000000000000000.0 +99999900000000000000000000.0 +999999000000000000000000000.0 +9999990000000000000000000000.0 +99999900000000000000000000000.0 +999999000000000000000000000000.0 +0.0000000000000000000000009999999 +0.000000000000000000000009999999 +0.00000000000000000000009999999 +0.0000000000000000000009999999 +0.000000000000000000009999999 +0.00000000000000000009999999 +0.0000000000000000009999999 +0.000000000000000009999999 +0.00000000000000009999999 +0.0000000000000009999999 +0.000000000000009999999 +0.00000000000009999999 +0.0000000000009999999 +0.000000000009999999 +0.00000000009999999 +0.0000000009999999 +0.000000009999999 +0.00000009999999 +0.0000009999999 +0.000009999999 +0.00009999999 +0.0009999999 +0.009999999 +0.09999999 +0.9999999 +9.999999 +99.99999 +999.9999 +9999.999 +99999.99 +999999.9 +9999999.0 +99999990.0 +999999900.0 +9999999000.0 +99999990000.0 +999999900000.0 +9999999000000.0 +99999990000000.0 +999999900000000.0 +9999999000000000.0 +99999990000000000.0 +999999900000000000.0 +9999999000000000000.0 +99999990000000000000.0 +999999900000000000000.0 +9999999000000000000000.0 +99999990000000000000000.0 +999999900000000000000000.0 +9999999000000000000000000.0 +99999990000000000000000000.0 +999999900000000000000000000.0 +9999999000000000000000000000.0 +99999990000000000000000000000.0 +999999900000000000000000000000.0 +9999999000000000000000000000000.0 +0.00000000000000000000000099999999 +0.0000000000000000000000099999999 +0.000000000000000000000099999999 +0.00000000000000000000099999999 +0.0000000000000000000099999999 +0.000000000000000000099999999 +0.00000000000000000099999999 +0.0000000000000000099999999 +0.000000000000000099999999 +0.00000000000000099999999 +0.0000000000000099999999 +0.000000000000099999999 +0.00000000000099999999 +0.0000000000099999999 +0.000000000099999999 +0.00000000099999999 +0.0000000099999999 +0.000000099999999 +0.00000099999999 +0.0000099999999 +0.000099999999 +0.00099999999 +0.0099999999 +0.099999999 +0.99999999 +9.9999999 +99.999999 +999.99999 +9999.9999 +99999.999 +999999.99 +9999999.9 +99999999.0 +999999990.0 +9999999900.0 +99999999000.0 +999999990000.0 +9999999900000.0 +99999999000000.0 +999999990000000.0 +9999999900000000.0 +99999999000000000.0 +999999990000000000.0 +9999999900000000000.0 +99999999000000000000.0 +999999990000000000000.0 +9999999900000000000000.0 +99999999000000000000000.0 +999999990000000000000000.0 +9999999900000000000000000.0 +99999999000000000000000000.0 +999999990000000000000000000.0 +9999999900000000000000000000.0 +99999999000000000000000000000.0 +999999990000000000000000000000.0 +9999999900000000000000000000000.0 +99999999000000000000000000000000.0 +0.000000000000000000000000999999999 +0.00000000000000000000000999999999 +0.0000000000000000000000999999999 +0.000000000000000000000999999999 +0.00000000000000000000999999999 +0.0000000000000000000999999999 +0.000000000000000000999999999 +0.00000000000000000999999999 +0.0000000000000000999999999 +0.000000000000000999999999 +0.00000000000000999999999 +0.0000000000000999999999 +0.000000000000999999999 +0.00000000000999999999 +0.0000000000999999999 +0.000000000999999999 +0.00000000999999999 +0.0000000999999999 +0.000000999999999 +0.00000999999999 +0.0000999999999 +0.000999999999 +0.00999999999 +0.0999999999 +0.999999999 +9.99999999 +99.9999999 +999.999999 +9999.99999 +99999.9999 +999999.999 +9999999.99 +99999999.9 +999999999.0 +9999999990.0 +99999999900.0 +999999999000.0 +9999999990000.0 +99999999900000.0 +999999999000000.0 +9999999990000000.0 +99999999900000000.0 +999999999000000000.0 +9999999990000000000.0 +99999999900000000000.0 +999999999000000000000.0 +9999999990000000000000.0 +99999999900000000000000.0 +999999999000000000000000.0 +9999999990000000000000000.0 +99999999900000000000000000.0 +999999999000000000000000000.0 +9999999990000000000000000000.0 +99999999900000000000000000000.0 +999999999000000000000000000000.0 +9999999990000000000000000000000.0 +99999999900000000000000000000000.0 +999999999000000000000000000000000.0 +0.0000000000000000000000009999999999 +0.000000000000000000000009999999999 +0.00000000000000000000009999999999 +0.0000000000000000000009999999999 +0.000000000000000000009999999999 +0.00000000000000000009999999999 +0.0000000000000000009999999999 +0.000000000000000009999999999 +0.00000000000000009999999999 +0.0000000000000009999999999 +0.000000000000009999999999 +0.00000000000009999999999 +0.0000000000009999999999 +0.000000000009999999999 +0.00000000009999999999 +0.0000000009999999999 +0.000000009999999999 +0.00000009999999999 +0.0000009999999999 +0.000009999999999 +0.00009999999999 +0.0009999999999 +0.009999999999 +0.09999999999 +0.9999999999 +9.999999999 +99.99999999 +999.9999999 +9999.999999 +99999.99999 +999999.9999 +9999999.999 +99999999.99 +999999999.9 +9999999999.0 +99999999990.0 +999999999900.0 +9999999999000.0 +99999999990000.0 +999999999900000.0 +9999999999000000.0 +99999999990000000.0 +999999999900000000.0 +9999999999000000000.0 +99999999990000000000.0 +999999999900000000000.0 +9999999999000000000000.0 +99999999990000000000000.0 +999999999900000000000000.0 +9999999999000000000000000.0 +99999999990000000000000000.0 +999999999900000000000000000.0 +9999999999000000000000000000.0 +99999999990000000000000000000.0 +999999999900000000000000000000.0 +9999999999000000000000000000000.0 +99999999990000000000000000000000.0 +999999999900000000000000000000000.0 +9999999999000000000000000000000000.0 +0.00000000000000000000000099999999999 +0.0000000000000000000000099999999999 +0.000000000000000000000099999999999 +0.00000000000000000000099999999999 +0.0000000000000000000099999999999 +0.000000000000000000099999999999 +0.00000000000000000099999999999 +0.0000000000000000099999999999 +0.000000000000000099999999999 +0.00000000000000099999999999 +0.0000000000000099999999999 +0.000000000000099999999999 +0.00000000000099999999999 +0.0000000000099999999999 +0.000000000099999999999 +0.00000000099999999999 +0.0000000099999999999 +0.000000099999999999 +0.00000099999999999 +0.0000099999999999 +0.000099999999999 +0.00099999999999 +0.0099999999999 +0.099999999999 +0.99999999999 +9.9999999999 +99.999999999 +999.99999999 +9999.9999999 +99999.999999 +999999.99999 +9999999.9999 +99999999.999 +999999999.99 +9999999999.9 +99999999999.0 +999999999990.0 +9999999999900.0 +99999999999000.0 +999999999990000.0 +9999999999900000.0 +99999999999000000.0 +999999999990000000.0 +9999999999900000000.0 +99999999999000000000.0 +999999999990000000000.0 +9999999999900000000000.0 +99999999999000000000000.0 +999999999990000000000000.0 +9999999999900000000000000.0 +99999999999000000000000000.0 +999999999990000000000000000.0 +9999999999900000000000000000.0 +99999999999000000000000000000.0 +999999999990000000000000000000.0 +9999999999900000000000000000000.0 +99999999999000000000000000000000.0 +999999999990000000000000000000000.0 +9999999999900000000000000000000000.0 +99999999999000000000000000000000000.0 +0.000000000000000000000000999999999999 +0.00000000000000000000000999999999999 +0.0000000000000000000000999999999999 +0.000000000000000000000999999999999 +0.00000000000000000000999999999999 +0.0000000000000000000999999999999 +0.000000000000000000999999999999 +0.00000000000000000999999999999 +0.0000000000000000999999999999 +0.000000000000000999999999999 +0.00000000000000999999999999 +0.0000000000000999999999999 +0.000000000000999999999999 +0.00000000000999999999999 +0.0000000000999999999999 +0.000000000999999999999 +0.00000000999999999999 +0.0000000999999999999 +0.000000999999999999 +0.00000999999999999 +0.0000999999999999 +0.000999999999999 +0.00999999999999 +0.0999999999999 +0.999999999999 +9.99999999999 +99.9999999999 +999.999999999 +9999.99999999 +99999.9999999 +999999.999999 +9999999.99999 +99999999.9999 +999999999.999 +9999999999.99 +99999999999.9 +999999999999.0 +9999999999990.0 +99999999999900.0 +999999999999000.0 +9999999999990000.0 +99999999999900000.0 +999999999999000000.0 +9999999999990000000.0 +99999999999900000000.0 +999999999999000000000.0 +9999999999990000000000.0 +99999999999900000000000.0 +999999999999000000000000.0 +9999999999990000000000000.0 +99999999999900000000000000.0 +999999999999000000000000000.0 +9999999999990000000000000000.0 +99999999999900000000000000000.0 +999999999999000000000000000000.0 +9999999999990000000000000000000.0 +99999999999900000000000000000000.0 +999999999999000000000000000000000.0 +9999999999990000000000000000000000.0 +99999999999900000000000000000000000.0 +999999999999000000000000000000000000.0 +0.0000000000000000000000009999999999999 +0.000000000000000000000009999999999999 +0.00000000000000000000009999999999999 +0.0000000000000000000009999999999999 +0.000000000000000000009999999999999 +0.00000000000000000009999999999999 +0.0000000000000000009999999999999 +0.000000000000000009999999999999 +0.00000000000000009999999999999 +0.0000000000000009999999999999 +0.000000000000009999999999999 +0.00000000000009999999999999 +0.0000000000009999999999999 +0.000000000009999999999999 +0.00000000009999999999999 +0.0000000009999999999999 +0.000000009999999999999 +0.00000009999999999999 +0.0000009999999999999 +0.000009999999999999 +0.00009999999999999 +0.0009999999999999 +0.009999999999999 +0.09999999999999 +0.9999999999999 +9.999999999999 +99.99999999999 +999.9999999999 +9999.999999999 +99999.99999999 +999999.9999999 +9999999.999999 +99999999.99999 +999999999.9999 +9999999999.999 +99999999999.99 +999999999999.9 +9999999999999.0 +99999999999990.0 +999999999999900.0 +9999999999999000.0 +99999999999990000.0 +999999999999900000.0 +9999999999999000000.0 +99999999999990000000.0 +999999999999900000000.0 +9999999999999000000000.0 +99999999999990000000000.0 +999999999999900000000000.0 +9999999999999000000000000.0 +99999999999990000000000000.0 +999999999999900000000000000.0 +9999999999999000000000000000.0 +99999999999990000000000000000.0 +999999999999900000000000000000.0 +9999999999999000000000000000000.0 +99999999999990000000000000000000.0 +999999999999900000000000000000000.0 +9999999999999000000000000000000000.0 +99999999999990000000000000000000000.0 +999999999999900000000000000000000000.0 +9999999999999000000000000000000000000.0 +0.00000000000000000000000099999999999999 +0.0000000000000000000000099999999999999 +0.000000000000000000000099999999999999 +0.00000000000000000000099999999999999 +0.0000000000000000000099999999999999 +0.000000000000000000099999999999999 +0.00000000000000000099999999999999 +0.0000000000000000099999999999999 +0.000000000000000099999999999999 +0.00000000000000099999999999999 +0.0000000000000099999999999999 +0.000000000000099999999999999 +0.00000000000099999999999999 +0.0000000000099999999999999 +0.000000000099999999999999 +0.00000000099999999999999 +0.0000000099999999999999 +0.000000099999999999999 +0.00000099999999999999 +0.0000099999999999999 +0.000099999999999999 +0.00099999999999999 +0.0099999999999999 +0.099999999999999 +0.99999999999999 +9.9999999999999 +99.999999999999 +999.99999999999 +9999.9999999999 +99999.999999999 +999999.99999999 +9999999.9999999 +99999999.999999 +999999999.99999 +9999999999.9999 +99999999999.999 +999999999999.99 +9999999999999.9 +99999999999999.0 +999999999999990.0 +9999999999999900.0 +99999999999999000.0 +999999999999990000.0 +9999999999999900000.0 +99999999999999000000.0 +999999999999990000000.0 +9999999999999900000000.0 +99999999999999000000000.0 +999999999999990000000000.0 +9999999999999900000000000.0 +99999999999999000000000000.0 +999999999999990000000000000.0 +9999999999999900000000000000.0 +99999999999999000000000000000.0 +999999999999990000000000000000.0 +9999999999999900000000000000000.0 +99999999999999000000000000000000.0 +999999999999990000000000000000000.0 +9999999999999900000000000000000000.0 +99999999999999000000000000000000000.0 +999999999999990000000000000000000000.0 +9999999999999900000000000000000000000.0 +99999999999999000000000000000000000000.0 +0.000000000000000000000000999999999999999 +0.00000000000000000000000999999999999999 +0.0000000000000000000000999999999999999 +0.000000000000000000000999999999999999 +0.00000000000000000000999999999999999 +0.0000000000000000000999999999999999 +0.000000000000000000999999999999999 +0.00000000000000000999999999999999 +0.0000000000000000999999999999999 +0.000000000000000999999999999999 +0.00000000000000999999999999999 +0.0000000000000999999999999999 +0.000000000000999999999999999 +0.00000000000999999999999999 +0.0000000000999999999999999 +0.000000000999999999999999 +0.00000000999999999999999 +0.0000000999999999999999 +0.000000999999999999999 +0.00000999999999999999 +0.0000999999999999999 +0.000999999999999999 +0.00999999999999999 +0.0999999999999999 +0.999999999999999 +9.99999999999999 +99.9999999999999 +999.999999999999 +9999.99999999999 +99999.9999999999 +999999.999999999 +9999999.99999999 +99999999.9999999 +999999999.999999 +9999999999.99999 +99999999999.9999 +999999999999.999 +9999999999999.99 +99999999999999.9 +999999999999999.0 +9999999999999990.0 +99999999999999900.0 +999999999999999000.0 +9999999999999990000.0 +99999999999999900000.0 +999999999999999000000.0 +9999999999999990000000.0 +99999999999999900000000.0 +999999999999999000000000.0 +9999999999999990000000000.0 +99999999999999900000000000.0 +999999999999999000000000000.0 +9999999999999990000000000000.0 +99999999999999900000000000000.0 +999999999999999000000000000000.0 +9999999999999990000000000000000.0 +99999999999999900000000000000000.0 +999999999999999000000000000000000.0 +9999999999999990000000000000000000.0 +99999999999999900000000000000000000.0 +999999999999999000000000000000000000.0 +9999999999999990000000000000000000000.0 +99999999999999900000000000000000000000.0 +999999999999999000000000000000000000000.0 +0.0000000000000000000000009999999999999999 +0.000000000000000000000009999999999999999 +0.00000000000000000000009999999999999999 +0.0000000000000000000009999999999999999 +0.000000000000000000009999999999999999 +0.00000000000000000009999999999999999 +0.0000000000000000009999999999999999 +0.000000000000000009999999999999999 +0.00000000000000009999999999999999 +0.0000000000000009999999999999999 +0.000000000000009999999999999999 +0.00000000000009999999999999999 +0.0000000000009999999999999999 +0.000000000009999999999999999 +0.00000000009999999999999999 +0.0000000009999999999999999 +0.000000009999999999999999 +0.00000009999999999999999 +0.0000009999999999999999 +0.000009999999999999999 +0.00009999999999999999 +0.0009999999999999999 +0.009999999999999999 +0.09999999999999999 +0.9999999999999999 +9.999999999999999 +99.99999999999999 +999.9999999999999 +9999.999999999999 +99999.99999999999 +999999.9999999999 +9999999.999999999 +99999999.99999999 +999999999.9999999 +9999999999.999999 +99999999999.99999 +999999999999.9999 +9999999999999.999 +99999999999999.99 +999999999999999.9 +9999999999999999.0 +99999999999999990.0 +999999999999999900.0 +9999999999999999000.0 +99999999999999990000.0 +999999999999999900000.0 +9999999999999999000000.0 +99999999999999990000000.0 +999999999999999900000000.0 +9999999999999999000000000.0 +99999999999999990000000000.0 +999999999999999900000000000.0 +9999999999999999000000000000.0 +99999999999999990000000000000.0 +999999999999999900000000000000.0 +9999999999999999000000000000000.0 +99999999999999990000000000000000.0 +999999999999999900000000000000000.0 +9999999999999999000000000000000000.0 +99999999999999990000000000000000000.0 +999999999999999900000000000000000000.0 +9999999999999999000000000000000000000.0 +99999999999999990000000000000000000000.0 +999999999999999900000000000000000000000.0 +9999999999999999000000000000000000000000.0 +0.00000000000000000000000099999999999999999 +0.0000000000000000000000099999999999999999 +0.000000000000000000000099999999999999999 +0.00000000000000000000099999999999999999 +0.0000000000000000000099999999999999999 +0.000000000000000000099999999999999999 +0.00000000000000000099999999999999999 +0.0000000000000000099999999999999999 +0.000000000000000099999999999999999 +0.00000000000000099999999999999999 +0.0000000000000099999999999999999 +0.000000000000099999999999999999 +0.00000000000099999999999999999 +0.0000000000099999999999999999 +0.000000000099999999999999999 +0.00000000099999999999999999 +0.0000000099999999999999999 +0.000000099999999999999999 +0.00000099999999999999999 +0.0000099999999999999999 +0.000099999999999999999 +0.00099999999999999999 +0.0099999999999999999 +0.099999999999999999 +0.99999999999999999 +9.9999999999999999 +99.999999999999999 +999.99999999999999 +9999.9999999999999 +99999.999999999999 +999999.99999999999 +9999999.9999999999 +99999999.999999999 +999999999.99999999 +9999999999.9999999 +99999999999.999999 +999999999999.99999 +9999999999999.9999 +99999999999999.999 +999999999999999.99 +9999999999999999.9 +99999999999999999.0 +999999999999999990.0 +9999999999999999900.0 +99999999999999999000.0 +999999999999999990000.0 +9999999999999999900000.0 +99999999999999999000000.0 +999999999999999990000000.0 +9999999999999999900000000.0 +99999999999999999000000000.0 +999999999999999990000000000.0 +9999999999999999900000000000.0 +99999999999999999000000000000.0 +999999999999999990000000000000.0 +9999999999999999900000000000000.0 +99999999999999999000000000000000.0 +999999999999999990000000000000000.0 +9999999999999999900000000000000000.0 +99999999999999999000000000000000000.0 +999999999999999990000000000000000000.0 +9999999999999999900000000000000000000.0 +99999999999999999000000000000000000000.0 +999999999999999990000000000000000000000.0 +9999999999999999900000000000000000000000.0 +99999999999999999000000000000000000000000.0 +0.000000000000000000000000999999999999999999 +0.00000000000000000000000999999999999999999 +0.0000000000000000000000999999999999999999 +0.000000000000000000000999999999999999999 +0.00000000000000000000999999999999999999 +0.0000000000000000000999999999999999999 +0.000000000000000000999999999999999999 +0.00000000000000000999999999999999999 +0.0000000000000000999999999999999999 +0.000000000000000999999999999999999 +0.00000000000000999999999999999999 +0.0000000000000999999999999999999 +0.000000000000999999999999999999 +0.00000000000999999999999999999 +0.0000000000999999999999999999 +0.000000000999999999999999999 +0.00000000999999999999999999 +0.0000000999999999999999999 +0.000000999999999999999999 +0.00000999999999999999999 +0.0000999999999999999999 +0.000999999999999999999 +0.00999999999999999999 +0.0999999999999999999 +0.999999999999999999 +9.99999999999999999 +99.9999999999999999 +999.999999999999999 +9999.99999999999999 +99999.9999999999999 +999999.999999999999 +9999999.99999999999 +99999999.9999999999 +999999999.999999999 +9999999999.99999999 +99999999999.9999999 +999999999999.999999 +9999999999999.99999 +99999999999999.9999 +999999999999999.999 +9999999999999999.99 +99999999999999999.9 +999999999999999999.0 +9999999999999999990.0 +99999999999999999900.0 +999999999999999999000.0 +9999999999999999990000.0 +99999999999999999900000.0 +999999999999999999000000.0 +9999999999999999990000000.0 +99999999999999999900000000.0 +999999999999999999000000000.0 +9999999999999999990000000000.0 +99999999999999999900000000000.0 +999999999999999999000000000000.0 +9999999999999999990000000000000.0 +99999999999999999900000000000000.0 +999999999999999999000000000000000.0 +9999999999999999990000000000000000.0 +99999999999999999900000000000000000.0 +999999999999999999000000000000000000.0 +9999999999999999990000000000000000000.0 +99999999999999999900000000000000000000.0 +999999999999999999000000000000000000000.0 +9999999999999999990000000000000000000000.0 +99999999999999999900000000000000000000000.0 +999999999999999999000000000000000000000000.0 +0.0000000000000000000000009999999999999999999 +0.000000000000000000000009999999999999999999 +0.00000000000000000000009999999999999999999 +0.0000000000000000000009999999999999999999 +0.000000000000000000009999999999999999999 +0.00000000000000000009999999999999999999 +0.0000000000000000009999999999999999999 +0.000000000000000009999999999999999999 +0.00000000000000009999999999999999999 +0.0000000000000009999999999999999999 +0.000000000000009999999999999999999 +0.00000000000009999999999999999999 +0.0000000000009999999999999999999 +0.000000000009999999999999999999 +0.00000000009999999999999999999 +0.0000000009999999999999999999 +0.000000009999999999999999999 +0.00000009999999999999999999 +0.0000009999999999999999999 +0.000009999999999999999999 +0.00009999999999999999999 +0.0009999999999999999999 +0.009999999999999999999 +0.09999999999999999999 +0.9999999999999999999 +9.999999999999999999 +99.99999999999999999 +999.9999999999999999 +9999.999999999999999 +99999.99999999999999 +999999.9999999999999 +9999999.999999999999 +99999999.99999999999 +999999999.9999999999 +9999999999.999999999 +99999999999.99999999 +999999999999.9999999 +9999999999999.999999 +99999999999999.99999 +999999999999999.9999 +9999999999999999.999 +99999999999999999.99 +999999999999999999.9 +9999999999999999999.0 +99999999999999999990.0 +999999999999999999900.0 +9999999999999999999000.0 +99999999999999999990000.0 +999999999999999999900000.0 +9999999999999999999000000.0 +99999999999999999990000000.0 +999999999999999999900000000.0 +9999999999999999999000000000.0 +99999999999999999990000000000.0 +999999999999999999900000000000.0 +9999999999999999999000000000000.0 +99999999999999999990000000000000.0 +999999999999999999900000000000000.0 +9999999999999999999000000000000000.0 +99999999999999999990000000000000000.0 +999999999999999999900000000000000000.0 +9999999999999999999000000000000000000.0 +99999999999999999990000000000000000000.0 +999999999999999999900000000000000000000.0 +9999999999999999999000000000000000000000.0 +99999999999999999990000000000000000000000.0 +999999999999999999900000000000000000000000.0 +9999999999999999999000000000000000000000000.0 +0.00000000000000000000000099999999999999999999 +0.0000000000000000000000099999999999999999999 +0.000000000000000000000099999999999999999999 +0.00000000000000000000099999999999999999999 +0.0000000000000000000099999999999999999999 +0.000000000000000000099999999999999999999 +0.00000000000000000099999999999999999999 +0.0000000000000000099999999999999999999 +0.000000000000000099999999999999999999 +0.00000000000000099999999999999999999 +0.0000000000000099999999999999999999 +0.000000000000099999999999999999999 +0.00000000000099999999999999999999 +0.0000000000099999999999999999999 +0.000000000099999999999999999999 +0.00000000099999999999999999999 +0.0000000099999999999999999999 +0.000000099999999999999999999 +0.00000099999999999999999999 +0.0000099999999999999999999 +0.000099999999999999999999 +0.00099999999999999999999 +0.0099999999999999999999 +0.099999999999999999999 +0.99999999999999999999 +9.9999999999999999999 +99.999999999999999999 +999.99999999999999999 +9999.9999999999999999 +99999.999999999999999 +999999.99999999999999 +9999999.9999999999999 +99999999.999999999999 +999999999.99999999999 +9999999999.9999999999 +99999999999.999999999 +999999999999.99999999 +9999999999999.9999999 +99999999999999.999999 +999999999999999.99999 +9999999999999999.9999 +99999999999999999.999 +999999999999999999.99 +9999999999999999999.9 +99999999999999999999.0 +999999999999999999990.0 +9999999999999999999900.0 +99999999999999999999000.0 +999999999999999999990000.0 +9999999999999999999900000.0 +99999999999999999999000000.0 +999999999999999999990000000.0 +9999999999999999999900000000.0 +99999999999999999999000000000.0 +999999999999999999990000000000.0 +9999999999999999999900000000000.0 +99999999999999999999000000000000.0 +999999999999999999990000000000000.0 +9999999999999999999900000000000000.0 +99999999999999999999000000000000000.0 +999999999999999999990000000000000000.0 +9999999999999999999900000000000000000.0 +99999999999999999999000000000000000000.0 +999999999999999999990000000000000000000.0 +9999999999999999999900000000000000000000.0 +99999999999999999999000000000000000000000.0 +999999999999999999990000000000000000000000.0 +9999999999999999999900000000000000000000000.0 +99999999999999999999000000000000000000000000.0 +0.000000000000000000000000999999999999999999999 +0.00000000000000000000000999999999999999999999 +0.0000000000000000000000999999999999999999999 +0.000000000000000000000999999999999999999999 +0.00000000000000000000999999999999999999999 +0.0000000000000000000999999999999999999999 +0.000000000000000000999999999999999999999 +0.00000000000000000999999999999999999999 +0.0000000000000000999999999999999999999 +0.000000000000000999999999999999999999 +0.00000000000000999999999999999999999 +0.0000000000000999999999999999999999 +0.000000000000999999999999999999999 +0.00000000000999999999999999999999 +0.0000000000999999999999999999999 +0.000000000999999999999999999999 +0.00000000999999999999999999999 +0.0000000999999999999999999999 +0.000000999999999999999999999 +0.00000999999999999999999999 +0.0000999999999999999999999 +0.000999999999999999999999 +0.00999999999999999999999 +0.0999999999999999999999 +0.999999999999999999999 +9.99999999999999999999 +99.9999999999999999999 +999.999999999999999999 +9999.99999999999999999 +99999.9999999999999999 +999999.999999999999999 +9999999.99999999999999 +99999999.9999999999999 +999999999.999999999999 +9999999999.99999999999 +99999999999.9999999999 +999999999999.999999999 +9999999999999.99999999 +99999999999999.9999999 +999999999999999.999999 +9999999999999999.99999 +99999999999999999.9999 +999999999999999999.999 +9999999999999999999.99 +99999999999999999999.9 +999999999999999999999.0 +9999999999999999999990.0 +99999999999999999999900.0 +999999999999999999999000.0 +9999999999999999999990000.0 +99999999999999999999900000.0 +999999999999999999999000000.0 +9999999999999999999990000000.0 +99999999999999999999900000000.0 +999999999999999999999000000000.0 +9999999999999999999990000000000.0 +99999999999999999999900000000000.0 +999999999999999999999000000000000.0 +9999999999999999999990000000000000.0 +99999999999999999999900000000000000.0 +999999999999999999999000000000000000.0 +9999999999999999999990000000000000000.0 +99999999999999999999900000000000000000.0 +999999999999999999999000000000000000000.0 +9999999999999999999990000000000000000000.0 +99999999999999999999900000000000000000000.0 +999999999999999999999000000000000000000000.0 +9999999999999999999990000000000000000000000.0 +99999999999999999999900000000000000000000000.0 +999999999999999999999000000000000000000000000.0 +0.0000000000000000000000009999999999999999999999 +0.000000000000000000000009999999999999999999999 +0.00000000000000000000009999999999999999999999 +0.0000000000000000000009999999999999999999999 +0.000000000000000000009999999999999999999999 +0.00000000000000000009999999999999999999999 +0.0000000000000000009999999999999999999999 +0.000000000000000009999999999999999999999 +0.00000000000000009999999999999999999999 +0.0000000000000009999999999999999999999 +0.000000000000009999999999999999999999 +0.00000000000009999999999999999999999 +0.0000000000009999999999999999999999 +0.000000000009999999999999999999999 +0.00000000009999999999999999999999 +0.0000000009999999999999999999999 +0.000000009999999999999999999999 +0.00000009999999999999999999999 +0.0000009999999999999999999999 +0.000009999999999999999999999 +0.00009999999999999999999999 +0.0009999999999999999999999 +0.009999999999999999999999 +0.09999999999999999999999 +0.9999999999999999999999 +9.999999999999999999999 +99.99999999999999999999 +999.9999999999999999999 +9999.999999999999999999 +99999.99999999999999999 +999999.9999999999999999 +9999999.999999999999999 +99999999.99999999999999 +999999999.9999999999999 +9999999999.999999999999 +99999999999.99999999999 +999999999999.9999999999 +9999999999999.999999999 +99999999999999.99999999 +999999999999999.9999999 +9999999999999999.999999 +99999999999999999.99999 +999999999999999999.9999 +9999999999999999999.999 +99999999999999999999.99 +999999999999999999999.9 +9999999999999999999999.0 +99999999999999999999990.0 +999999999999999999999900.0 +9999999999999999999999000.0 +99999999999999999999990000.0 +999999999999999999999900000.0 +9999999999999999999999000000.0 +99999999999999999999990000000.0 +999999999999999999999900000000.0 +9999999999999999999999000000000.0 +99999999999999999999990000000000.0 +999999999999999999999900000000000.0 +9999999999999999999999000000000000.0 +99999999999999999999990000000000000.0 +999999999999999999999900000000000000.0 +9999999999999999999999000000000000000.0 +99999999999999999999990000000000000000.0 +999999999999999999999900000000000000000.0 +9999999999999999999999000000000000000000.0 +99999999999999999999990000000000000000000.0 +999999999999999999999900000000000000000000.0 +9999999999999999999999000000000000000000000.0 +99999999999999999999990000000000000000000000.0 +999999999999999999999900000000000000000000000.0 +9999999999999999999999000000000000000000000000.0 +0.00000000000000000000000099999999999999999999999 +0.0000000000000000000000099999999999999999999999 +0.000000000000000000000099999999999999999999999 +0.00000000000000000000099999999999999999999999 +0.0000000000000000000099999999999999999999999 +0.000000000000000000099999999999999999999999 +0.00000000000000000099999999999999999999999 +0.0000000000000000099999999999999999999999 +0.000000000000000099999999999999999999999 +0.00000000000000099999999999999999999999 +0.0000000000000099999999999999999999999 +0.000000000000099999999999999999999999 +0.00000000000099999999999999999999999 +0.0000000000099999999999999999999999 +0.000000000099999999999999999999999 +0.00000000099999999999999999999999 +0.0000000099999999999999999999999 +0.000000099999999999999999999999 +0.00000099999999999999999999999 +0.0000099999999999999999999999 +0.000099999999999999999999999 +0.00099999999999999999999999 +0.0099999999999999999999999 +0.099999999999999999999999 +0.99999999999999999999999 +9.9999999999999999999999 +99.999999999999999999999 +999.99999999999999999999 +9999.9999999999999999999 +99999.999999999999999999 +999999.99999999999999999 +9999999.9999999999999999 +99999999.999999999999999 +999999999.99999999999999 +9999999999.9999999999999 +99999999999.999999999999 +999999999999.99999999999 +9999999999999.9999999999 +99999999999999.999999999 +999999999999999.99999999 +9999999999999999.9999999 +99999999999999999.999999 +999999999999999999.99999 +9999999999999999999.9999 +99999999999999999999.999 +999999999999999999999.99 +9999999999999999999999.9 +99999999999999999999999.0 +999999999999999999999990.0 +9999999999999999999999900.0 +99999999999999999999999000.0 +999999999999999999999990000.0 +9999999999999999999999900000.0 +99999999999999999999999000000.0 +999999999999999999999990000000.0 +9999999999999999999999900000000.0 +99999999999999999999999000000000.0 +999999999999999999999990000000000.0 +9999999999999999999999900000000000.0 +99999999999999999999999000000000000.0 +999999999999999999999990000000000000.0 +9999999999999999999999900000000000000.0 +99999999999999999999999000000000000000.0 +999999999999999999999990000000000000000.0 +9999999999999999999999900000000000000000.0 +99999999999999999999999000000000000000000.0 +999999999999999999999990000000000000000000.0 +9999999999999999999999900000000000000000000.0 +99999999999999999999999000000000000000000000.0 +999999999999999999999990000000000000000000000.0 +9999999999999999999999900000000000000000000000.0 +99999999999999999999999000000000000000000000000.0 +0.000000000000000000000000999999999999999999999999 +0.00000000000000000000000999999999999999999999999 +0.0000000000000000000000999999999999999999999999 +0.000000000000000000000999999999999999999999999 +0.00000000000000000000999999999999999999999999 +0.0000000000000000000999999999999999999999999 +0.000000000000000000999999999999999999999999 +0.00000000000000000999999999999999999999999 +0.0000000000000000999999999999999999999999 +0.000000000000000999999999999999999999999 +0.00000000000000999999999999999999999999 +0.0000000000000999999999999999999999999 +0.000000000000999999999999999999999999 +0.00000000000999999999999999999999999 +0.0000000000999999999999999999999999 +0.000000000999999999999999999999999 +0.00000000999999999999999999999999 +0.0000000999999999999999999999999 +0.000000999999999999999999999999 +0.00000999999999999999999999999 +0.0000999999999999999999999999 +0.000999999999999999999999999 +0.00999999999999999999999999 +0.0999999999999999999999999 +0.999999999999999999999999 +9.99999999999999999999999 +99.9999999999999999999999 +999.999999999999999999999 +9999.99999999999999999999 +99999.9999999999999999999 +999999.999999999999999999 +9999999.99999999999999999 +99999999.9999999999999999 +999999999.999999999999999 +9999999999.99999999999999 +99999999999.9999999999999 +999999999999.999999999999 +9999999999999.99999999999 +99999999999999.9999999999 +999999999999999.999999999 +9999999999999999.99999999 +99999999999999999.9999999 +999999999999999999.999999 +9999999999999999999.99999 +99999999999999999999.9999 +999999999999999999999.999 +9999999999999999999999.99 +99999999999999999999999.9 +999999999999999999999999.0 +9999999999999999999999990.0 +99999999999999999999999900.0 +999999999999999999999999000.0 +9999999999999999999999990000.0 +99999999999999999999999900000.0 +999999999999999999999999000000.0 +9999999999999999999999990000000.0 +99999999999999999999999900000000.0 +999999999999999999999999000000000.0 +9999999999999999999999990000000000.0 +99999999999999999999999900000000000.0 +999999999999999999999999000000000000.0 +9999999999999999999999990000000000000.0 +99999999999999999999999900000000000000.0 +999999999999999999999999000000000000000.0 +9999999999999999999999990000000000000000.0 +99999999999999999999999900000000000000000.0 +999999999999999999999999000000000000000000.0 +9999999999999999999999990000000000000000000.0 +99999999999999999999999900000000000000000000.0 +999999999999999999999999000000000000000000000.0 +9999999999999999999999990000000000000000000000.0 +99999999999999999999999900000000000000000000000.0 +999999999999999999999999000000000000000000000000.0 diff --git a/lib/yyjson-0.12.0/test/data/num/real_2.txt b/lib/yyjson-0.12.0/test/data/num/real_2.txt new file mode 100644 index 00000000000..fc58e78dae6 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/real_2.txt @@ -0,0 +1,95 @@ +# ============================================================================== +# From https://www.exploringbinary.com/topics/ + +# decimal-to-floating-point-needs-arbitrary-precision +7.8459735791271921e65 +3.571e266 +3.08984926168550152811e-32 + +# incorrectly-rounded-conversions-in-visual-c-plus-plus +9214843084008499.0 +0.500000000000000166533453693773481063544750213623046875 +30078505129381147446200.0 +1777820000000000000001.0 +0.500000000000000166547006220929549868969843373633921146392822265625 +0.50000000000000016656055874808561867439493653364479541778564453125 +0.3932922657273 + +# incorrectly-rounded-conversions-in-gcc-and-glibc +0.500000000000000166533453693773481063544750213623046875 +3.518437208883201171875e13 +62.5364939768271845828 +8.10109172351e-10 +1.50000000000000011102230246251565404236316680908203125 +9007199254740991.4999999999999999999999999999999995 + +# glibc-strtod-incorrectly-converts-2-to-the-negative-1075 +0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328125 + +# incorrect-directed-conversions-in-david-gays-strtod +1.100000000000000088817841970012523233890533447265626 +-0.91276999999999997026378650843980722129344940185546876 +-266.240000000000009094947017729282379150390624 +8.255628858767918002472043289952338102302250764062685473021474535926245152950286865234374e-17 + +# a-bug-in-the-bigcomp-function-of-david-gays-strtod +1.8254370818746402660437411213933955878019332885742187 + +# gays-strtod-returns-zero-for-inputs-just-above-2-1075 +2.4703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328125001e-324 +2.47032822920623272088284396434110686182529901307162382212792841250337753635104375932649918180817996189898282347722858865463328355177969898199387398005390939063150356595155702263922908583924491051844359318028499365361525003193704576782492193656236698636584807570015857692699037063119282795585513329278343384093519780155312465972635795746227664652728272200563740064854999770965994704540208281662262378573934507363390079677619305775067401763246736009689513405355374585166611342237666786041621596804619144672918403005300575308490487653917113865916462395249126236538818796362393732804238910186723484976682350898633885879256283027559956575244555072551893136908362547791869486679949683240497058210285131854513962138377228261454376934125320985913276672363281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e-324 +2.470328229206232720882843964341106861825299013071623822127928412503377536351043759326499181808179961898982823477228588654633283551779698981993873980053909390631503565951557022639229085839244910518443593180284993653615250031937045767824921936562366986365848075700158576926990370631192827955855133292783433840935197801553124659726357957462276646527282722005637400648549997709659947045402082816622623785739345073633900796776193057750674017632467360096895134053553745851666113422376667860416215968046191446729184030053005753084904876539171138659164623952491262365388187963623937328042389101867234849766823508986338858792562830275599565752445550725518931369083625477918694866799496832404970582102851318545139621383772282614543769341253209859132766723632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e-324 +2.470328229206232720882843964341106861825299013071623822127928412503377536351043759326499181808179961898982823477228588654633283551779698981993873980053909390631503565951557022639229085839244910518443593180284993653615250031937045767824921936562366986365848075700158576926990370631192827955855133292783433840935197801553124659726357957462276646527282722005637400648549997709659947045402082816622623785739345073633900796776193057750674017632467360096895134053553745851666113422376667860416215968046191446729184030053005753084904876539171138659164623952491262365388187963623937328042389101867234849766823508986338858792562830275599565752445550725518931369083625477918694866799496832404970582102851318545139621383772282614543769341253209859132766723632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e-324 + +# incorrect-decimal-to-floating-point-conversion-in-sqlite +1e-23 +8.533e+68 +4.1006e-184 +9.998e+307 +9.9538452227e-280 +6.47660115e-260 +7.4e+47 +5.92e+48 +7.35e+66 +8.32116e+55 + +# php-hangs-on-numeric-value-2-2250738585072011e-308 +2.2250738585072007e-308 +2.2250738585072008e-308 +2.2250738585072009e-308 +2.2250738585072010e-308 +2.2250738585072011e-308 + +0.22250738585072011e-307 +22.250738585072011e-309 +22250738585072011e-324 +2.22507385850720110e-308 +2.2250738585072011e-0308 +2.22507385850720111e-308 +2.225073858507201123e-308 +2.22507385850720113099e-308 +2.225073858507201100001e-308 +2.2250738585072011123456789012345678901234567890123456789e-308 + +# java-hangs-when-converting-2-2250738585072012e-308 +2.2250738585072012e-308 +0.00022250738585072012e-304 +2.225073858507201200000e-308 +2.2250738585072012e-00308 +2.2250738585072012997800001e-308 + +# php-converts-2-2250738585072012e-308-incorrectly +2.2250738585072012e-308 + +# incorrectly-rounded-subnormal-conversions-in-java +6.631236871469758276785396630275967243399099947355303144249971758736286630139265439618068200788048744105960420552601852889715006376325666595539603330361800519107591783233358492337208057849499360899425128640718856616503093444922854759159988160304439909868291973931426625698663157749836252274523485312442358651207051292453083278116143932569727918709786004497872322193856150225415211997283078496319412124640111777216148110752815101775295719811974338451936095907419622417538473679495148632480391435931767981122396703443803335529756003353209830071832230689201383015598792184172909927924176339315507402234836120730914783168400715462440053817592702766213559042115986763819482654128770595766806872783349146967171293949598850675682115696218943412532098591327667236328125E-316 +3.237883913302901289588352412501532174863037669423108059901297049552301970670676565786835742587799557860615776559838283435514391084153169252689190564396459577394618038928365305143463955100356696665629202017331344031730044369360205258345803431471660032699580731300954848363975548690010751530018881758184174569652173110473696022749934638425380623369774736560008997404060967498028389191878963968575439222206416981462690113342524002724385941651051293552601421155333430225237291523843322331326138431477823591142408800030775170625915670728657003151953664260769822494937951845801530895238439819708403389937873241463484205608000027270531106827387907791444918534771598750162812548862768493201518991668028251730299953143924168545708663913273994694463908672332763671875E-319 +6.953355807847677105972805215521891690222119817145950754416205607980030131549636688806115726399441880065386399864028691275539539414652831584795668560082999889551357784961446896042113198284213107935110217162654939802416034676213829409720583759540476786936413816541621287843248433202369209916612249676005573022703244799714622116542188837770376022371172079559125853382801396219552418839469770514904192657627060319372847562301074140442660237844114174497210955449896389180395827191602886654488182452409583981389442783377001505462015745017848754574668342161759496661766020028752888783387074850773192997102997936619876226688096314989645766000479009083731736585750335262099860150896718774401964796827166283225641992040747894382698751809812609536720628966577351093292236328125E-310 +3.339068557571188581835713701280943911923401916998521771655656997328440314559615318168849149074662609099998113009465566426808170378434065722991659642619467706034884424989741080790766778456332168200464651593995817371782125010668346652995912233993254584461125868481633343674905074271064409763090708017856584019776878812425312008812326260363035474811532236853359905334625575404216060622858633280744301892470300555678734689978476870369853549413277156622170245846166991655321535529623870646888786637528995592800436177901746286272273374471701452991433047257863864601424252024791567368195056077320885329384322332391564645264143400798619665040608077549162173963649264049738362290606875883456826586710961041737908872035803481241600376705491726170293986797332763671875E-319 + +# nondeterministic-floating-point-conversions-in-java +6.631236871469758276785396630275967243399099947355303144249971758736286630139265439618068200788048744105960420552601852889715006376325666595539603330361800519107591783233358492337208057849499360899425128640718856616503093444922854759159988160304439909868291973931426625698663157749836252274523485312442358651207051292453083278116143932569727918709786004497872322193856150225415211997283078496319412124640111777216148110752815101775295719811974338451936095907419622417538473679495148632480391435931767981122396703443803335529756003353209830071832230689201383015598792184172909927924176339315507402234836120730914783168400715462440053817592702766213559042115986763819482654128770595766806872783349146967171293949598850675682115696218943412532098591327667236328125E-316 + +# visual-c-plus-plus-strtod-still-broken +6.9294956446009195e15 +3.7455744005952583e15 diff --git a/lib/yyjson-0.12.0/test/data/num/real_3.txt b/lib/yyjson-0.12.0/test/data/num/real_3.txt new file mode 100644 index 00000000000..c382a6b5f93 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/real_3.txt @@ -0,0 +1,4389 @@ +# ============================================================================== +# From OpenJDK: +# https://github.com/openjdk/jdk/blob/master/test/jdk/java/lang/Double/ParseDouble.java + + +# ============================================================================== +# rudimentaryTest +4.9E-324 +1.7976931348623157E308 +10.0 +10.01 +-10.00 +-10.01 + + +# ============================================================================== +# goodStrings +1.1e-23 +1e-23 +1234.0 +-1234.0 +2147483647.0 +2147483648.0 +-2147483648.0 +-2147483649.0 +16777215.0 +16777216.0 +16777217.0 +-16777215.0 +-16777216.0 +-16777217.0 +9007199254740991.0 +9007199254740992.0 +9007199254740993.0 +-9007199254740991.0 +-9007199254740992.0 +-9007199254740993.0 +9223372036854775807.0 +9223372036854775808.0 +9223372036854775809.0 +-9223372036854775808.0 +-9223372036854775809.0 +-9223372036854775810.0 +54.07140 +7.01e-324 +2147483647.01 +1.2147483647 +1.00000000000000000000000000e-2 +122112217090.0 +7090e-5 +122112217090.0E+100 +2.0E-20 +5149236780.1102E-209 +1290873.12301e100 +1.1E-10 +0.0E-10 +1E10 +1.7976931348623157E308 +4.9e-324 +2.2250738585072014e-308 +2.2250738585072012e-308 +1.7976931348623158e+308 +1.7976931348623159e+308 +2.4703282292062329e-324 +2.4703282292062327e-324 +2.4703282292062325e-324 +0.0000000000001e321 +0.00000000000000000001e328 + + +# ============================================================================== +# testSubnormalPowers +7.4109846876186981626485318930233205854758970392148714663837852375101326090531312779794975454245398856969484704316857659638998506553390969459816219401617281718945106978546710679176872575177347315553307795408549809608457500958111373034747658096871009590975442271004757307809711118935784838675653998783503015228055934046593739791790738723868299395818481660169122019456499931289798411362062484498678713572180352209017023903285791732520220528974020802906854021606612375549983402671300035812486479041385743401875520901590172592547146296175134159774938718574737870961645638908718119841271673056017045493004705269590165763776884908267986972573366521765567941072508764337560846003984904972149117463085539556354188641513168478436313080237596295773983001708984375E-324 +1.23516411460311636044142198217055343091264950653581191106396420625168876817552187966324959090408998094949141173861429432731664177588984949099693699002695469531575178297577851131961454291962245525922179659014249682680762501596852288391246096828118349318292403785007928846349518531559641397792756664639171692046759890077656232986317897873113832326364136100281870032427499885482997352270104140831131189286967253681695039838809652887533700881623368004844756702677687292583305671118833393020810798402309572336459201502650287654245243826958556932958231197624563118269409398181196866402119455093361742488341175449316942939628141513779978287622277536275946568454181273895934743339974841620248529105142565927256981069188614130727188467062660492956638336181640625E-323 +1.72922976044436290461799077503877480327770930915013667548954988875236427544573063152854942726572597332928797643406001205824329848624578928739571178603773657344205249616608991584746036008747143736291051522619949555753067502235593203747744535559365689045609365299011100384889325944183497956909859330494840368865463846108718726180845057022359365256909790540394618045398499839676196293178145797163583665001754155154373055774333514042547181234272715206782659383748762209616627939566366750229135117763233401271042882103710402715943341357741979706141523676674388365577173157453675612962967237130706439483677645629043720115479398119291969602671188550786325195835853783454308640675964778268347940747199592298159773496864059783018063853887724690139293670654296875E-323 +2.22329540628560944879455956790699617564276911176446143991513557125303978271593938339384926362736196570908454112950572978916995519660172908379448658204851845156835320935640132037530617725532041946659923386225649428825372502874334119104242974290613028772926326813014271923429133356807354516026961996350509045684167802139781219375372216171604898187455444980507366058369499793869395234086187453496036140716541056627051071709857375197560661586922062408720562064819837126649950208013900107437459437124157230205626562704770517777641438888525402479324816155724213612884936916726154359523815019168051136479014115808770497291330654724803960917720099565296703823217526293012682538011954714916447352389256618669062565924539505435308939240712788887321949005126953125E-323 +3.70549234380934908132426594651166029273794851960743573319189261875506630452656563898974877271226994284847423521584288298194992532766954847299081097008086408594725534892733553395884362875886736577766538977042749048042287504790556865173738290484355047954877211355023786539048555594678924193378269993917515076140279670232968698958953693619341496979092408300845610097282499656448992056810312422493393567860901761045085119516428958662601102644870104014534270108033061877749917013356500179062432395206928717009377604507950862962735731480875670798874693592873689354808228194543590599206358365280085227465023526347950828818884424541339934862866832608827839705362543821687804230019924524860745587315427697781770943207565842392181565401187981478869915008544921875E-323 +4.19955798965059562550083473937988166510300832222176049761747830125574181179677439085504860907390593522827079991128860071287658203802548826938958576609164596407355606211764693848668944592671634788135410840648448921114592505429297780530236729215602387682194172869026958077588363007302780752495372659773183752958983626264031192153480852768587029909638062740958358110253499610642190997718354078825846043575688662517763135451952819817614582997519451216472172789104136794783239281804033536270756714567852545943961285109010978024433829011659093572057986071923514602115991953816069345767206147317429924460359996527677605994735681146851926177915743623338218332744216331246178127355914461508844998957484724152673735635241288044472440788013045676052570343017578125E-323 +7.65801751053932143473681628945743127165842694052203384859657807876047036268823565391214746360535788188684675277940862482936317901051706684418100933816711911095766105444982677018161016610165922260717513885888348032620727509900484188025725800334333765773412903467049158847367014895669776666315091320762864490689911318481468644515170966813305760423457643821747594201050499289994583584074645673153013373579196972826509247000619847902708945466064881630037491556601661214016495160936767036729026950094319348486047049316431783456320511727143052984341033425272291333270338268723420571693140621578842803427715287785765046225694477385435865383258120724910868724415923898154795408707844018045540880451883908748993282628969407610508568495788495056331157684326171875E-323 +8.15208315638056797891338508232565264402348674313635861302216376126114586995844440577744729996699387426664331747485434256028983572087300664057978413417790098908396176764013817470945598326950820471086385749494047905693032510539225103382224239065581105500729864981052330385906822308293633225432193986618533167508615274512531137709698125962551293354003298261860342214021499244187782524982687329485465849293983874299187262936143709057722425818714228831975394237672736131049817429384300393937351269455243177420630729917491898518018609257926475757524325904322116580578102027995899318253988403616187500423051757965491823401545733990947856698307031739421247351797596407713169306043833954693640292093940935119896075056644853262799443882613559253513813018798828125E-323 +1.556306784399926614156191697534897322949938378235123007940594899877127847901157568375694484539153375996359178790654010852418968637621210358656140607433962916097847246549480924262714324078724293626619463703579546001777607520120338833729700820034291201410484287691099903464003933497651481612188733974453563319789174614978468535627605513201234287312188114863551562408586498557085766638603312174472252985015787396389357501969001626382924631108454436861043934453738859886549651456097300752062216059869100611439385938933393624443490072219677817355273713090069495290194558417083080516666705134176357955353098810661393481039314583073627726424040696957076926762522684051088777766083683004415131466724796330683437961471776538047162574684989522211253643035888671875E-322 +1.605713348984051268573848576821719460186444358496555484383153468127195398628178443562224468175316975234338835260198582625511634308656804338296018087035041103910477317868512064715498905795509191836988335567185245874849912520759079749086199258765538541137801249205103075002543740910275338171305836640309231996607878571009531028822132672350479820242733769303664310421557498511278965579511353830804705460730574297862035517904525487537938111461103784062981837134809934803582973724544834109270540379230024440373969619534453739505188169750461240128457005569119320537502322176355559263227552916213702652348435280841120258215165839679139717739089607971587305389904356560647151663419672941063230878366853357054340753899451983699453450071814586408436298370361328125E-322 +3.137316851091915555521211834713205714518129746600962254102469083879289471165825574344653960896388551611708185816080307591384270110760217707132219954668464926102009528758477418751820939015841036358423363338961941940091367540560048125137650859434206072684627056139201392697277770701614891503936019281834960977987701207972468317852474605977091341089649056947159498823658497091268132747660645177110732207888968243515054011905765183343356002393233547323056820248013257231615964046418368182728594279418663137346063718167317306417829193204747346097139072419663903204042998713802400406613834159371388259203865856412650350666554794450011448505605849421409042838736204356956742480835360977154312639270621174552327319157390798920470587063391576521098613739013671875E-322 +3.186723415676040209938868714000027851754635726862394730545027652129357021892846449531183944532552150849687842285624879364476935781795811686772097434269543113914639600077508559204605520732625934568792235202567641813163672541198789040494149298165453412411944017653204564235817578114238748063053121947690629654806405164003530811047001765126336874020194711387272246836629497045461331688568686833443184683603755144987732027841289044498369482745882894524994722929084332148649286314865901539936918598779586966280647398768377421479527290735530768870322364898713728451350762473074879153174681941408732956199202326592377127842406051055523439820654760435919421466117876866515116378171350913802412050912678200923230111585066244572761462450216640718281269073486328125E-322 +6.299336984475893438251252109069822497654512483332640746426217451883612717695161586282572913610858902842406199866932901069314873057038232404084378649137468946110334093176470407730034168890074521822031162609726733816718887581439466707953550938234035815232912593035404371163825445109541711287430589896597756294384754393960467882302212791528805448644570941114375371653802494159632864965775311182387690653635329937766447031779292297264218744962791768247082591836562051921748589227060503044061350718517788189159419276635164670366507435174886403580869791078852719031739879307241040186508092209761448866905399947915164089921035217202778892668736154350073274991163244968692671910338716922632674984362270862290106034528619320667086611820195685140788555145263671875E-322 +6.348743549060018092668908988356644634891018463594073222868776020133680268422182461469102897247022502080385856336477472842407538728073826383724256128738547133922964164495501548182818750606859420032400034473332433689791192582078207623310049376965283154960229554549407542702365252522165567846547692562453424971203458349991530375496739950678050981575116595554488119666773494113826063906683352838720143129350116839239125047714816158419232225315441115449020494517633126838781911495508036401269675037878712018094002957236224785428205532705669826354053083557902544279047643066513518933068939991798793563900736418094890867096886473808290883983785065364583653618544917478251045807674706859280774396004327888661008826956294766319377487207020749337971210479736328125E-322 +1.2623377251243849203711332657783056063927277956795997731073714187892259210753833610158410819039799605303802227968638088025176078949594261797988696038075476986126983222012456385686460628638541492749246761151256317569973927663198303873585351095833695300329483666827810328096920793925395350854419731126123346927178860765936467011201689162632233663754414709448807117314090488296362329402004643192941607545128053326269233071526346525105944230101908210095134135013659641302013839588344772766726863596716038292786130393570859398263863919115164518548331228397230350687133640494118319746296608310541570082308468130920191568429996062708313780994996764207401739296017326192164530769345428813589399674545570237765663465271076364160318661333803902380168437957763671875E-321 +1.2672783815827973858128989537069878201163783937057430207516272756142326761480854485344940802675963204541781884438182659798268744620629855777628573517676555173939613293331487526139245210355326390959615633014862017443046232663837044788941849534564942640056800628341813499635460601338019207413536833791979015603997564721967529504396216321781479196684960363888919865327061488250555528342912684849274060020842840227741911087461870386260957710454557557297072037694730716219047161856792306123935187916076962121720714074171919513325562016645947941321514520876280175934441404253390798492857456092578914779303804601099918345605847319313825772310045675221912117923398998701722904666681418750237499086187627264136566257698751809812609536720628966577351093292236328125E-321 +2.5271457784779760734631493755209523196472808903722711700368707659909552196871177657910086629897681010226594284172048461936898490734706320585797330815951493066160281479684428341599313548135475434603677958234315485076484007826715978204848951411033014270522625814412622241963111491557102629988398013585174528192767073509888465269000641904839090093974102246117670608634666476569821258274463307214049441328113500103274805151020454980789395200380141093791237221367854820062544340310913312212057889353112538500039552627442248854058576886995720748483254103033985613997921162867872878865873640512101812513114604496930246525447917753719383557647517983922058667905725488639108248487358852595502849054912168988716778326755990451146782760361020336858928203582763671875E-321 +2.5320864349363885389049150634496345333709314883984144176811266228159619747598198533096616613533844609464573940641593033709991156405741914565437208295552571253972911551003459482052098129852260332814046830097921184949556312827354719120205449849764261610249942775926625413501651298969726486547515116251030196869585777465919527762195169063988335626904647900557783356647637476524014457215371348870381893803828287004747483166955978841944408680732790440993175124048925894979577662579360845569266213672473462328974136308043308969120274984526504171256437395513035439245228926627145357612434488294139157210109940967109973302623769010324895548962566894936569046533107161148666622384694842532150948466554226015087681119183665896799073635747845401056110858917236328125E-321 +5.0567618851851583796471815950062457461563870797576139638958694603944138169105865753413438251613443820072178396578869209760343314304930438161414600371703525226226877995028372253425019387129343318312540352400433820089504168153751326867376152041431652210908910109582246069695492886820517188256354578503276890723943498997792461784598547389252802954413477319455397591275818453116739116019380635256265108894084393657285949310008671892156297140936606861183443394076245177583605341756050391102719940865905538914546397095185027765648002822756833208353099852307496140619496207615381997105027704915222297374726877228950356439483761135741523110952560423351372525125141813532995683923385700159329747815645366490619008049725818625119710958415453205816447734832763671875E-321 +5.0617025416435708450889472829349279598800376777837572115401253172194205719832886628599968235249607419310158053048413781533435979975966032141054477851304603414039508066347403393877803968846128216522909224264039519962576473154390067782732650480162899550636227071096249241234032694233141044815471681169132559400762202953823524277793074548402048487344022973895510339288789453070932314960288676912597561369799180558758627325944195753311310621289256208385381296757316252500638664024497924459928265185266462743480980775786087880709700920287616631126283144786545965866803971374654475851588552697259642071722213699130083216659612392347035102267609334365882903752523486042554057820721690095977847227287423516989910842153494070772001833802278270013630390167236328125E-321 +1.01159940985995229920152460339768325991745994585282995516138668492013310113575241944420141495044969439763346621392510705407232961445378673312649139483207589546360071025716260077076431065117079085730265140732670490115544488807822024192430553302228928091681478699921493725160255677347346304792267708339481615786296349973600454815794358358080228675292227466130851556558122406210574831509215291340696444026026180765308237627985105714890101022049538395967855739493025892625727344646324548884044043891491539743560086030670585588826854694279058128092791350854517193862646297110400233583335833721463267097951422692990576267555447899785802217562645302210000239563974463320770554795439395286983545337111761494423467495665474973065567354524318943731486797332763671875E-320 +1.01209347550579354574570117219055148128982500565544427992581227060263377664302262819606671478681133039001326277862055277180325627116414267292289016962808667734172701097035291217529215646833863983940634012596276189988616793808460765107787051740960175431408795661435496896698795484759970161351384811005337284463115053929631517308988885517229474208222773120570964304571093406164768030450123332997028896501740967666780915643920629576045114502402187743169793642174096967542760666914772082241252368210852463572494669711271645703888552791809841550865974643333567019109954060869672712329896681503500611794946759163170303044731299156391314208877694213224510618191356135830328928692775385223631644748753818520794370288093150418717858229911144007928669452667236328125E-320 +2.02344585254282522167513749119180063052110242160696707270498616268151654002513994326433547981908020679145683071019793696701012255726275143615118217706215718186626457087092035724379254421092550620565714717397143830167625130115963418842539355823823479853226615880599989036089781258401004537864093968011891065911002051925216440878185980295735080117049727759481759487122730312398246262488884603509559114289909754981352814263937973360357708784275401465536680430326587322709971350426872864446692249942663541401587463901641701235184558437323507967572174347948559300348946476100436706539952091333945206544400513621071015923698821427874360430782815059927255668441639762896320296539546785542291140380044551502032386387544787668957280146742050419561564922332763671875E-320 +2.02393991818866646821931405998466885189346748140958139746941174836401721553241015201620077965544184278383662727489338268474104921397310737594758095185816796374439087158411066864832039002809335518776083589260749530040697435116602159757895854262554727192953932842113992207628321065813628394423211070677746734587820755881247503371380507454884325649980273413921872235135701312352439461429792645165891566765624541882825492279873497221512722264628050812738618333007658397627004672695320397803900574262024465230522047582242761350246256534854291390345357640427609125596254239859709185286512939115982551241395850091250742700874672684479872422097863970941766047069021435405878670436882775478939239791686608528403289179972463114609571022128875483758747577667236328125E-320 +4.04713873790857106662236326678003537172838737311524130779218511820428341780391499090460360955634123157910355970274359679288570844288068084220056374152231975467159229209843587018984901133043493690236613870726090510271786412732246208142756960867012583376316890241956979657948832420508321004007746487356709966160413455828448413002969224171044783000564728346183575348251946124773589124448223227847284454817676903413441967535843708651292924308727127604674329811993710182878459361987969495571988662045007544717642219643583932527899965923412407646530940342136643513321546834080509652453184606558909085437298695477231895235985568484051476857223154575361766526196970362047419780027761566052906330465910131517250224171303413060740705731177513371221721172332763671875E-320 +4.04763280355441231316653983557290359310075243291785563255661070388678409331118519965646890939270286757148335626743904251061663509959103678199696251631833053654971859281162618159437685714760278588446982742589696210144858717732884949058113459305743830716044207203470982829487372227920944860566863590022565634837232159784479475496163751330194028533495274000623688096264917124727782323389131269503616907293391690314914645551779232512447937789079776951876267714674781257795492684256417028929196986364368468546576803324184992642961664020943191069304123634615693338568854597839782131199745454340946430134294031947411622013161419740656988848538203486376276904824352034556978153925097555989554429877552188543621126963731088506392996606564338435418903827667236328125E-320 +8.09452450864006275651681481795650485414295727613178977796658302924981717336146508618513986903086328115439701768783491644463688021411653965429932687044264490028224773455346689608196194556945379829578412177383983870480108977964811786743192170953390790422497438964670960901666934744722953936295051526046347766659236263634912357252535711921664188767594729519587207070510377749524274848366900476522735135873211200277620274079655179233163355357630579882949628575327955903215435385110162757822581486249695551349751731127468395113330780895590207004448472330512811939266747550040655544279649637008836843223095059189553653860559062596405709710103833606230788241707631560349618747004191127074136710637641291547685899738820663844307556900048439274542033672332763671875E-320 +8.09501857428590400306099138674937307551532233593440410273100861493231784886873529493700516886722491714677681425253036216236780687082689559409572564523865568216037403526665720748648979138662164727788781049247589570353181282965450527658548669392122037762224755926184964073205474552135577792854168628712203435336054967590943419745730239080813434300525275174027319818523348749478468047307808518179067588348925987179092952095590703094318368837983229230151566478009026978132468707378610291179789810569056475178686314808069455228392478993120990427221655622991861764514055313799928023026210484790874187920090395659733380637734913853011221701418882517245298620335013232859177120901527117010784810049283348574056802531248339289959847775435264338739216327667236328125E-320 +1.618929605010304613630571792030944381897209708216488671831537885134088468447656527674621238797990738030498393365801755574813922375658825727849685312828329519150355861946352894786618781404749152108262008790699770590896754108429942943944062591126147204514858536410098923389103139393152219800869661603425623367656881879247840245751668687422903000301654731866394470515027240999025646296204254973873636497984279794005976887167278120396904217455437484439500226101996447343889387431354549282323767134659071564613970754095237320284192410839945805720283536307265148791157148981960947327932579697908692358794687786614197171109706050821114175415865191667968831672728953956954016680957050249116597470981103611608557250873855165411441259237790291081182658672332763671875E-319 +1.618979011574888738284989448910231204034446214196750104307980443702338535998383548549807768781626901629736373022271300146587015041329861321829325190307930597338168492017671925927071565986465937006472377662563376290769826413430581684859419089564878451854585853371612926560641679200564843657428778706091479036333700583203871308244863214582052245834585277520834583263040211998979839495145163015529968950459994580907449565183213644258059230935790133786702164004677518418806420753622996815680975458978432488442905337775838380399254108937476589143056719599744198616404456745720219806679140545690729703491683123084376897886881902077719687407180240578983342051356335629463575054854386239053245570392745668634928153666282840857093550113177116145379841327667236328125E-319 +3.237883913302901289588352412501532174863037669423108059901297049552301970670676565786835742587799557860615776559838283435514391084153169252689190564396459577394618038928365305143463955100356696665629202017331344031730044369360205258345803431471660032699580731300954848363975548690010751530018881758184174569652173110473696022749934638425380623369774736560008997404060967498028389191878963968575439222206416981462690113342524002724385941651051293552601421155333430225237291523843322331326138431477823591142408800030775170625915670728657003151953664260769822494937951845801530895238439819708403389937873241463484205608000027270531106827387907791444918534771598750162812548862768493201518991668028251730299953143924168545708663913273994694463908672332763671875E-319 +3.237933319867485414242770069380818997000274175403369492377739608120552038221403586662022272571435721459853756216307828007287483749824204846668830441876060655582430668999684336283916739682073481563839570889194949731603116674360843999261159929910391280039308048262468851535514088497423375386577998860850030238328991814429727085243129165584529868902705282214449110152073938497982582390819872010231771674682131768364162791358459526585540955131403942899803359058014501300154324846111769864683346755797184514971343383711376230740977368826187786574726847553248872320185259609560803373985000667490440734634868577933663932385175878527136618818702956702459428913398980422672370922760104483138167091079670308756670855936351843991360954788660819758661091327667236328125E-319 +6.475792529888094641503913653442707760794693591836346836040815378388728975116716642011264750167417197520850542947911339156915328501141856302368201067532719693883142392892390125857154302491571785780363588470594490913396624891220729887149285112162685689069025121082666698313720367283727814988317322067701276973642755572925407576746466540430335869506014745947238051182128420496033874983228381957979044670650691356376116565693015767379349390042278911778803811262007395987933099708820868429330881025115327644199284891901850871309362190506079398015293920167779169902499557573482698029850160063307825452224244151162058274604587980169364969650433340038397092258856888336580404284674204981371362033041877531973785357684062174814243473264241401921026408672332763671875E-319 +6.475841936452678766158331310321994582931930097816608268517257936956979042667443662886451280151053361120088522604380883728688421166812891896347840945012320772070955022963709156997607087073288570678573957342458096613269697196221368628064641610601416936408752438044180701485258907091140438844876439170367132642319574276881438639239661067589485115038945291601678163930141391495988068182169289999635377123126406143277589243708951291240504403522631561126005749164688467062850133031089315962688089349434688568028219475582451931424423888603610181438067103460258219727746865337241970508596720911089862796921239487632238001381763831425970481641748388949411602637484270009089962658571540971308010132453519589000156260476489850259895764139628226985223591327667236328125E-319 +1.2951609763058481345335036135325058932658005436662824388319852036061582984008796794460122765326652476841320075724057450599717203335119230401726222073805239926860191100820439767284534997274001964009832361377120784676729785934941779144756248473544737001807913900646090398213210004471161941904914202686735481781623920497828830684739530344440246361778494764721696158738263326492044846565927217936786255567539240106202969470393999296689276286824734148231208591475355327513324716078775960625340366212390335750313037075644002272676255230060924187741974431981797864717622769028845032299073600550506669576796985970559206412597763885967032695296524204532301439707027467509415587756297077957711048115789576092460756166764338187351313091966176216374151408672332763671875E-318 +1.2951659169623065469989453792204345754795241942643085820796294594629833051559523815335309295310288640440558055380526995171490296000790265995705861951284841005048003730891758798424987781855718748908042730248984390376602858239942417885671604971983468249147641217607604401384748544278574565761473319789401337450300739201784861747232724871599395607311425310376136271486276297491999039764868125978442588020014954893104442148409934820550431300305086797578410529378036398588241749401044408158697574536709696674141971659324603332791316928158454971164747615274276914542870076792604304777820161398288706921493981307029386139374939737223638207287839253443315950085654849181925146130194413947647696215201218149487127069556765862796965382841563041438348591327667236328125E-318 +2.5903244229399254752997281099089761276384629126315779492877925351407291001792957099357838795645123035482259141276349673485320953003073978600442264086350280392814288516676539050139296386838862320468769907190173372203396108022383877659970175196308839627285691459772937798012189278846030195738107963924803891397586250347635676900725657952460067346323454802270612373850533138484066789731324889894400677361316337605856675279795966355309130080389644621136018151902051190564107948818686145017359336586940351962540541443128305075410041309170613767195335455609835254347869191939569700837520481524904357825942469609353502688584115697562368146588705933520110134603368625855085954699542823910390420281284973213434697784924890212425452329370045845280401408672332763671875E-318 +2.5903293635963838877651698755969048098521865632296040925354367909975541069343684120233025325628759199081497120932819218057094045668745014194421903963829881471002101146747858081279749171420579105366980276062036977903269180327384516400885531694747570874625418776734451801183727818653442819594667081027469747066263069051591707963218852479619216591856385347925052486598546109484020982930265797936057009813792052392758147957811901879170285093869997270483220089804732261639024982140954592550716544911259712886369476026808906135525103007268144550618108638902314304173116499703328973316267042372686395170639464945823682415361291548818973658580020982431124644981996007527595513073440159900327068380696615270461068687717317887871104620245432670344598591327667236328125E-318 +5.1806513162080801568321771026619165963837876505621689701994071982098707037361277709153270856282064152764137272380934119256528452338983474997874348111440361324722483348388737615848819165968583033386644998816278547256728752197268074690398028641837044878241246578026632597610147827595766703404495486400940710629510910047249369332697913168499709315413374877368444804075072762468110676062120233809629520948870532605164086898599900472548837667519465566945637272755442916665674414298506513801397277336040384386995550178096910680877613467389992926102057502865910033608362037761019037914414243473699734324233436886942095240556819320753039049173069391495727524396050942546426688586034315815749164612275767455382581021245994262573730804177785103092901408672332763671875E-318 +5.1806562568645385692976188683498452785975113011601951134470514540666957104912004730028457386265700316363375252037403663828301545004654510591853987988919962402910295978460056646989271950550299818284855367688142152956601824502268713431313385140275776125580973894988146600781686367403179327261054603503606566298187728751205400395191107695658858560946305423022884916823085733468064869261061141851285853401346247392065559576615835996409992680999818216292839210658123987740591447620774961334754485660359745310824484761777511740992675165487523709524830686158389083433609345524778310393160804321481771668930432223412274967333995172009644561164384440406742034774678324218936246959931651805685812711687409512408951924038421938019383095053171928157098591327667236328125E-318 +1.03613051027443895198970750881677975338744371264233510120226365243481539108497918928744134977555946387327893534590103010798943451010802467792738516161620523188538873011813134747267864724228024459222395182068488897363394040547036468751253735532893455380152356814534022196806064925095239718737270531353214349093360229446476754196642423600578993253593215027564109664524152010436198448723710921640087208123978922603778910136207768707028252841779107458564875514462226368868807345258147251369473158834240449235905567648034121891812757783828751243915501597378059592129347729403917712068201767371290487320815371442119280344502226567134380854341796307446962303981415575929108156359017299626466653274257355939278347493888202362870287753793263618717901408672332763671875E-317 +1.03613100434008479323625168538557262160881607770213771552702807802049789176048645949619321507539582550927131514246572555370716543676473503386718156039100124266726685641884453778408317508809741244120605550940352503063267112852037107492169092031332186627492084131495536199977603464902652342593829648455880204762037048150432785259135618127738142499126145573218549777272164981436152641922651829681743540576454637390680382814223704230889407855259460107912077452364907439943724378580415698902830367158559810159734502231714722951927819481926282027338274780670538641954595037167676984546948328219072524665512366778589460071279402418390986366333111356357976814360042957601617714732914635616403301373668997996304718396680630038315940044668650443782098591327667236328125E-317 +2.07226126758170082460268710591795594088557360781457150956690951766247203250771201367925863220103710856455406059008440793883773448354440453382466852261980846916171652338661929010105955840746907310893895548572909597576724617246573256872965149315006276383974577287548801395197899120094185749402820621257761626021058868244931523924531444464737561129952895327955439385422310506372373994046892297301002582474195702601008556611423505175987083190298391241803351997875793273275073207177428726505624921830640578933725602587908544313683046416706267879542389786402358709171319112689715060375776815166471993313979240552473650552393041059897064464679250139349431863152144842694471091904983267247901630598220532907069880439172618563463401653024220649967901408672332763671875E-317 +2.07226176164734666584923128248674880910694597287437412389167394324815453318321928388801049750087347020054644038664910338455546541020111488976446492139460447994359464968733248041246408625328624095792105917444773203276597689551573895613880505813445007631314304604510315398369437659901598373259379738360427481689735686948887554987024638991896710375485825873609879498170323477372328187245833205342658914926671417387910029289439440699848238203778743891150553935778474344349990240499697174038982130154959939857554537171589145373798108114803798662965162969694837758996566420453474332854523376014254030658676235888943830279170216911153669976670565188260446373530772224366980650278880603237838278697632174964096251341965046238909053943899607475032098591327667236328125E-317 +4.14452278219622456982864630012030831588183339815904432629620124811778531535317766246289319705199239794710431107845116360053433443041716424561923524462701494371437210992359517535782138073784673014236896281581750998003385770645646833116387976879231918391619018233578359791981567510092077810733920801066856179876456145841841063380309486193054696882672255928738098827218627498244725084693255048622833331174629262595467849561854978113904743887336958808280304964702927082087604931015991676777928447823440838329365672467657389157423623682461301150796166164450956943255261879261309756990926910756835005300306978773182390968174670045422431685354157803154370981493603376225196962996915202490771585246146886842652946329741450964649629451486134712467901408672332763671875E-317 +4.14452327626187041107519047668910118410320576321884694062096567370346781602868493267164506235182875958309669087501585904625206535707387460155903164340181095449625023622430836566922590858366389799135106650453614603703258842950647471857303333377670649638958745550539873795153106049899490434590479918169522035545132964545797094442802680720213846128205186474392538939966640469244679277892195956664489663627104977382369322239870913637765898900817311457627506902605608153162521964338260124311285656147760199253194607051337990217538685380558831934218939347743435993080509187025069029469673471604617042645003974109652570694951845896679037197345472852065385491872230757897706521370812538480708233345558528899679317232533878640095281742361521537532098591327667236328125E-317 +8.28904581142527206028056468852501306587435297884798995975478470902841188104410896003016232675390297671220481205518467492392753432416268366920836868864142789281968328299754694587134502539860204420922897747599433798856708077443793985603233632007683202406907900125637476585548904290087861933396121160685045287587250701035660142291865569649688968388110977130303417710811261481989427265985980551266494828575496382584386435462717923989740065281414093941234210898357194699712668378693117577322535499809041357120645812227155078844904778213971367693303718920548153411423147412404499150221227101937561029272962455214599871799737928016473166126703973130764249218176520443286648705180779072976511494541999594713819078110879115767022085048409962837467901408672332763671875E-317 +8.28904630549091790152710886509380593409572534390779257407954913461409438171961623023891419205373933834819719185174937036964526525081939402514816508741622390360156140929826013618274955324441921205821108116471297404556581149748794624344148988506121933654247627442598990588720442829895274557252680277787711143255927519739616173354358764176848117633643907675957857823559274452989381459184921459308151161027972097371287908140733859513601220294894446590581412836259875770787585412015386024855892708133360718044474746810835679905019839912068898476726492103840632461248394720168258422699973662785343066617659450551070051526515103867729771638695288179675263728555147824959158263554676408966448142641411236770845449013671543442467737339285349662532098591327667236328125E-317 +1.657809186988336704118440146533442256585939214022588122667195163084966501242597155516470058615772413424240581400865169757071393411165372251638663557667025379103030562914545048689839231472011267234294900679634799400563352691040088290576924942264585770437485663909755710172683577850079430178720521879921423503008839811423298300114977736562957511398988419533434055477996529449478831628571431556553817823377230622562223607264443815741410708069568364207142022765665729934962795274047369378411749603780242394703206091746150458219867087276991500778318824432742546347758918478690877936681827484299013077218273408097434833462864443958574635009403603785984005691542354577409552189548506813947991313133705010456151341673154445371766996242257619087467901408672332763671875E-316 +1.657809236394901288243094564190321543408076450528568384099671605643534751310147882537345245145756049587839819380521639301643166503831043287232643197544504980181218375544616367720979684256592984019193111048506663006263225763345088929317840298763024501684825391226717224175855116389886842802577080997024089358677516630127254331177470931090116660644521350079088495590744542420478785821770372464595474155829706337349125079942459751265271863083048716856489224703568411006037712307369637825945106812104561755627035026329831059279982148975089031561741597616035025397584165786454637209160574045146795114562970403433905013189641619809831240521394918834895020201920981959082061747922404149937927961233116652513177712575946873047212648533133005912532098591327667236328125E-316 +3.315618398679955700299207501895324156582947046298166376050628547449217127518969674543377710496536644930280781791558574286428673368663580021074316935272790558745155032144125756895248689336313392861038906543705530603976641918232676900524307562778390906498641191477992177346952924970062566669369323318394179933852018032198574615761202070389494597420743304339695331012367065384457640353742333567128463812980699102517897950867895599244751993645876904738957646500282800405463049064755872980590177811722644469868326650784141216969791705403031766948349035457131332220430460611263635509603028249021917173108895313863104756789117475842777572774802865096423518638274022845655359158283962295890950950317115841940815868797705104581256818629952931587467901408672332763671875E-316 +3.315618448086520284423861919552203443405084282804146637483104990007785377586520401564252897026520281093880019771215043831000446461329251056668296575150270159823342844774197075926389142120895109645937116912577394209676514990537677539265222919276829637745980918794953691350124463509869979293225882435496845789520694850902530646823695264916653746666276234885349771125115078355457594546941274475170120145433174817304799423545911534768613148659357257388304848438185481476537966098078141428123535020046963830792155585367821818029906767101129297731771808640423811270255707919027394782081774809869699210453592309199574936515894651694034178286794180145334533148652650227327868716657859631880887598416527483997842239700497532256702470920828318412532098591327667236328125E-316 +6.631236822063193692660742212619087956576962710849322882817495316177718380071714712597193014258065107942361182572945383345143233283659995559945623690484320918029403970603287173306067605064917644114526918271846993010803220372617854120419072803806001178620952246614465111695491619210028839650666926195339692795538374473749127247053650738042568769464253073952217882081108137254415257804084137588277755792187636062429246638074799166251434564798493985802588893969516941346463556646172880184947034227607448620198567768860122734469640941655112299288409457505908903965773544876409150655445429778467725364890139125394444603441623539611183448305601387717302544531737359382146973095754873259776870224683937504910144923046806423000236463405343556587467901408672332763671875E-316 +6.631236871469758276785396630275967243399099947355303144249971758736286630139265439618068200788048744105960420552601852889715006376325666595539603330361800519107591783233358492337208057849499360899425128640718856616503093444922854759159988160304439909868291973931426625698663157749836252274523485312442358651207051292453083278116143932569727918709786004497872322193856150225415211997283078496319412124640111777216148110752815101775295719811974338451936095907419622417538473679495148632480391435931767981122396703443803335529756003353209830071832230689201383015598792184172909927924176339315507402234836120730914783168400715462440053817592702766213559042115986763819482654128770595766806872783349146967171293949598850675682115696218943412532098591327667236328125E-316 +1.3262473668829669677383811634066615556564994039951635896351228853634720885177204788704823621781122033966521984135719001462572353113652826637688237200907381636597901847521610006127705436522126146621502941728129917824456377281388208560208603285861221722865574356887410980392569007689961385613262131949230718518911087356850232509638548073348717113551272613177262984218590280994330492704767745630576339750601509982251944012488606300264799707103728147929851388907985223228464571809006894593660747059377056920859050005012085769469339414159273363968530301603464047456459713406700180947130232837359341748452626748457124296746635667147995199367198432959060596318664032455130200970696695187548708773417580830848803031545009059838195752956124806587467901408672332763671875E-315 +1.3262473718236234261508466051723494843387131276457616157783705296193289135244755515725698808311105670130121222115375471007144126206318497673282216840784861237676089660151681325158845889306707863406401152097001781430156250353693209198949518642359660454112914084204372494395740546229768798237118691066333384374579764175554188540701041267875876262796805543722917424331338293965330446897966686538617996083053985697038845485166622235788660862117208500579198590845887904299539488842329163041194104267701376281782878939595766370529454475857370894751953074786756526506284960714463940219608979398207123785797323743793594476473412842999251804879189748007971610829042659836802710529070592523538645421516992472905829402447801487513641405247000193412532098591327667236328125E-315 +2.6524947362362621646829950476961670756541056698156261923418695928548725895388184940920084836827235886014843587261266237697430592773638488793173464221753503073734897601358255671770981099436543151635454988640695767451762691098928917439787664249971662811354818577433302717786723784649826477538452543457012769965656513123052443034808342743961013801725311691627353188493554568474160962506134961715173507667429257821897338761316220568291529991714196472184376378784921786992466602134674923411088172722916273522180014477316011839468736359167595493328771989798574334437832050467282241530499838955142574515577601994582483683356659922221618701490392523442576699892517378601096656720580339043092385870884867482726119248541414333514114332057687306587467901408672332763671875E-315 +2.6524947411769186230954604894618550043363193934662242184851172371107294145455735667940960023357219522178442825240922707242002365866304159828767443861630982674813085413988326990802121552221124868420353199009567631057462564171233918078528579606470101542602158304750264231789895323189633890162309102574115435821325189941756399065870835938488172950970844622173007628606302581445160916699333902623215163999881733536684240233994236503815391146727676824833723580722824468063541519167997191858621529931240592883103843411899692440528851420865693024112194762981866813487657297775046000802978585515990356552922298989918953863083437098072875307002383838491487714402896005982769166278954236379082322518984279124783145619444206761189559984348562693412532098591327667236328125E-315 +5.3049894749428525585722228162751781156493182014565513977553630078376735915810145245350607266919463590111486793512360710167147072093609813104143918263445745948008889109031547003057532425265377161663359082465827466706375318734010335198945786178192544988333307018525086192575033338569556661388833366472576872859147364655456864085147932085185607178073389848527533597043483143433821902108869393884367843501084753501188128258971449104344990560935133120693426358538794914520470662786010981045943024049994706724821943421923863979467530249184239752049255366188794908400576724588446362697239051190709040049827552486833202456576708432368865705736780704409608907040224070893029568220347626754179740065819440786480751682534224880865951490260812306587467901408672332763671875E-315 +5.3049894798835090169846882580408660443315319251071494238986106520935304165877695972371482453449447226275086031492017179711718845186275484139737897903323225549087076921661618322088672878049958878448257292834699330312075191806315335837686701534690983719580646745842047706578204877109364074012689925589679538714816041474160820116210425279712766327318922779073188037156231156404821856302068334792409499833537229215975029731649465039868851715948613473342773560476697595591545579819333249493476381258319026085745772356507544580527645310882337282832678139372087387450401971896210121969717797751556822087172249482169672636303485608220122311248772019458519921550602698274702077778721524090169676713918852428537778053437017308541397142551687693412532098591327667236328125E-315 +1.06099789523560333463506783534332001956397432647384018085823498378032755956654065854211652127103918998304773206014549655106580030733552461726084826346830231696556872124378129665630635076923045181719167270116090865215600574004173170717262030034634309342290283900708653142151652446409017029089595012503705078646129067720265706185827110767634793930769546162327894414143340293353143781314338258222756515168395744859769707254281906176451911699377006417711526318046541169576478784088683096315652726704151573130105801311139568259465118029217528269490222118969236056326066072830774605030717475661841971118327453471334640003016805452663359714229557066343673321335637455476895391219882202176354448455688587393990016550519845975569625806667062306587467901408672332763671875E-314 +1.06099789572966898047631437951988881243219569883889998347255974820591324206721616581232527313633902634468372443994206124651151803826218132761678805986707711297635059937008200984661775529707626898504065480484962728821300447076478171356002945391132748073537623628025614656154823984948824441713451571620807744501797744538969662216889603962161953080015079092873548854256088306324143735507537199130798171500848220574556608726959922111975772854390486770360873519984443850647553701122005364763186083912475892491029630245723248860525233090915625800273644892152528535375891320138538364303196222222689753155672150466671110182743582628514616319741548381392584335846016082858567900778256099512344385103787999036047042921422638403245071458957937693412532098591327667236328125E-314 +2.12199579071823949219075894277492443556205933913021026302363234977344796038341907071933741847472829814691346031018927544985445948013437758969966642513599203193652838155071294990776840380238381221830783645416617662234051084544498841753894517747517838050204237665075787041304890662087937764491118304565961490220092473849883390387185468132533167436161858789928616048343054593191787539725275986899533858503017727576932865244902820320665753976260753011747726237062033679688495026694027326855072132012465305940673517089570976819460293589284105304372155624530118352177044769315431089697674324604107833255327255440337515095896999493252347731215109790211802149926464224644627037218951353020703865235426880609008546286491088164976974439479562306587467901408672332763671875E-314 +2.12199579121230513803200548695149322843028071149527006563795711419903364288409457798954617034002813450854945268998584014530017721106103430005560622153476682794731025967701366309807980833022962938615681855785489525839750957616803842392635433104016276781451577392392748555308062200627745177114974863683064156075761150668587346418247961327060326585407391720474270488455802606162787493918474927807575514835470203291719766717580836256189615131274233364397073438999936360759569943727349595302605489220789625301597346024154657420520408650982202835155578397713410831226870016623194848970153071164955615292671952435673985275623776669103604336727101105260713164436842852026299546777325250356693801883526292251065572657393880592652420091770437693412532098591327667236328125E-314 +4.24399158168351180730214115763813326755822936444295042735442708175968876201717589507377921288210651447464491681027683324743177782573208353457730274847137146187844770216457625641069250986869053302054016396017671256270952105625150183827159493173284895466032145193810054839611367093445779235294164888690474313368019286109118758789902182862329914446946484045130059316742483192869075056547151444253088545172261693011259181226144648609093438530028246199820126075093018699912527511904715787933910942629092771561808948646433793939450644709417259374136022635651882943879002162284744059031588022488639557529326859378343265281657387574430323765186215237948059807108117762980090329217089654709402698794903467039045605758433572543791671705104562306587467901408672332763671875E-314 +4.24399158217757745314338770181470206042645073680801022996875184618527444451785140234398796474740635083628090919007339794287749555665874024493324254487014625788922958029087696960100391439653635018838914606386543119876651978697455184465900408529783334197279484921127016353614538631985586647918021447807576979223687962927822714820964676056857073596192016975675713756855231205840075010740350385161130201504714168726046082698822664544617299685041726552469473277030921380983602428938038056381444299837417090922732777581017474540510759771115356904919445408835175422928827409592507818304066769049487339566671556373679735461384164750281580370698206552996970821618496390361762838775463552045392635443002878681102632129336364971467117357395437693412532098591327667236328125E-314 +8.48798316361405643752490558736455093155056941506843075601601654573217036528468954378266280169686294713010782981045194884258641451692749542433257539514213032176228634339230286941654072200130397462500481897219778444344754147786452867973689444024819010297687960251278590436224319956161462176900258056939499959663872910627589495595335612321923408468515734555532945853541340392223650090190902358960197918510749623879911813188628305185948807637563232575964925751154988740360592482326092710091588563862347702804079811760159428179431346949683567513663756657895412127282916948223369997699415418257703006077326067254354765653178163736786275833128426133420575121471424839651016913213366258086800365913856639899119724702318541301421066236354562306587467901408672332763671875E-314 +8.48798316410812208336615213154111972441879078743349055863034131015775604778536505105287155356216278349174382219024851353803213224785415213468851519154090511777306822151860358260685212652914979179285380107588650307950454020858757868612430359381317449028935299978595551950227491494701269589524114616056602625519541587446293451626398105516450567617761267486078600293654088405194650044384101299868239574843202099594698714661306321121472668792576712928614272953092891421431667399359414978539121921070672022165003640694743108780491462011381665044447179431078704606332742195531133756971894164818550788114670764249691235832904940912637532438640417448469486135981803467032689422771740155422790302561956051541176751073221333729096511888645437693412532098591327667236328125E-314 +1.697596632747514569797043444681738625953524951631939141333919547367713357181971684120042997932637581244103365581080218003289568789931831920384312068848364804152996362584775609542823714626653085783393412899623992820492358232109058236266749345727887239960999590366215661629450225681592828060112444393437551252255580159664530969206202471241110396511654235576338718927139054790932800157478404188374416665187725485617217077113595618339659545852633205328254525103278928821256722423168846554406943806328857565288621537987610696659392751430216183792719224702382470494090746520100621875035070209795829903173324483006377766396219716061498179969012847924365605750198038992992870081205919464841595700151762985619267962590088478816679855298854562306587467901408672332763671875E-313 +1.697596632796921134381168099099395505240347088868445121595352023810271925432039234847063873119167564880266964819059874472834140563024497591419906048488242283754074550397405680861854855079437667500178311109992864684098058105181363236905490261084385678692246930093532623143453397220132635472736300952554653918111248836483234925237264964435637555660899768506884373367251802803903800111671603129282458321520177961332003978586273634275183407007646685680903872305216831502327797340202168822854477163537181884649545366922194377260452866491914281323502647475565762973140571767408385634307548956356677685210669180001714236575946493237349436574524839239414516764708417620374542590764293362177585636799862397261324988960991271244355300951145437693412532098591327667236328125E-313 +3.395193265519732421886149216572305691550460971882131272798555332956705998488977143603596433458540154306288530781150264241351423466409996676286421127516668348106531819075866254745162999479698462425179274904432421572787566400754268972852869149134023699287622850596089804015902037132455559826536817066433653837438994657738413916427936189079484372597931237617950265074334483588351100292053407847202854158541677209091827604963530244647081022282773150832833723807526808983048982304854354243037654291261877290257704990442513233619315560391281416350830160791356587227706405663855125629706379792872083697365321314510423767882302820710921988240781691506255667007651267299676576417191025878351186368627575677059564438365628353847197433423854562306587467901408672332763671875E-313 +3.395193265569138986470273870989962570837283109118637253059987809399264566739044694330617308645070137942452130019129920710895995239502662347322015107156545827707610006888496326064194139932483044141964173114801293436393266273826573973491610064490522138018870190323406765529905208670995367239160673625550756503294663334557117872458998682274011531747176770548495919514447231601322100246246606788110895814874129684806614506436208260582604883437786631185483071009464711664120057221887676511485187648470201609618628819377096914220375675452979513881613583564539879706756230911162889388978858539432931479402666011505760238062029597886773244846293682821304578022161645927058248926749399775687176305275675088701621464736531146274872879076145437693412532098591327667236328125E-313 +6.790386531064168126064360760353439822744333012382515535727826904134691281102988062570703304510345300430658861181290356717475132819366326188090639244853275436013602732058047545149841569185789215708750998914049279077377982738044690446025108755946296617940869371055838088788805660034181023359385562412425859007805823653886179810871403624756232324770485241701173357368725341183187700561203415164859729145249580656041048660663399497261923975143053041841992121216022569306633502068225369620299075261127916740195871895352318307539161178313411881467052032969304820694937723951364133139048998959024591285749314977518515770854469030009769604784319378670035789522557723913043989089161238705370367705579201059940157389916708103908232589673854562306587467901408672332763671875E-313 +6.790386531113574690648485414771096702031155149619021515989259380577249849353055613297724179696875284066822460419270013187019704592458991859126233224493152915614680919870677616468872709638573797425535897124418150940983682611116995446663849671302795056672116710783155050302808831572720830772009418971542961673661492330704883766902466117950759483919730774631719011808838089196158700515396614105767770801582033131755835562136077513197447836298066522194641468417960471987704576985258691888746608618336241059556795724286901988140221293375109978997835455742488113173987549198671896898321477705585439067786659674513852241034195807185620861389831369985084700537068102540425661598719612602706357642227300471582214416287610896335908035326145437693412532098591327667236328125E-313 +1.3580773062153039534420783847915708085132077093383284061586370046490661846331009900504917046613955592679399521981570541669722551525278985211699075479526489611827744558022410125959198708597970722275894446933282994086558815412625533392369587969570842455247362411975334658334612905837631950425083053104410269348539481646181711599758338496109728229115593249867619541957507056372860901099503429800173479118665387549939490772063138002491609880863612823860308916033014089953802541594967400374821917200859995640072205705171928455378852414157672811699495777325201287629400360526382148157734237291329606462517302303534699776798801448607464837871394752997596034552370637139778814433101664359408730379482451825701343293018867604030302902173854562306587467901408672332763671875E-312 +1.3580773062202446099004908502333364964418899230619790041847802522933220414581077451231937921800485576315563121219550198139267123298371650882734669459166367091428822745835040197278229849050755303992679345143651865950164515285697838393008328884927340893978609751702651619848616077376171757837706909663527372014395150323000415555789400989304255388264838782798165196397619804385831901053696628741081520774997840025654277673535816018427133742018626304212958263234951992634873616512000722643269450558068319959433129534106512135979912529219370909230279200098384580108450185773689911917006716037890454244554647000530036246978528225783316094476906744312644945566881015767160486942660038256744720316130551237343400319389770396457978347826145437693412532098591327667236328125E-312 +2.7161546124330782351133630023040244609907565255384821113303456331202602976787053576373344530821176177176880843582130911574217388937104303258915947948872917963456028209951135287577912987422333735410181342971750424104920480761787219285058546396819934129860348493814327797426227397444533804556478034488379090030006797630772775177532208238816720037805809266200511911135070486752207302176103459070800979065497001337736374994862615012950981692304732387896942505666997131248140620648451461883867601080324153439824873324811148751058234885846194672164383266036994221498325633676418178195104713955939636816053276955567067788687466285802855304045545501652716524611996463593248465120982515667485455727288953357223715099223186604274443527173854562306587467901408672332763671875E-312 +2.7161546124380188915717754677457901489194387392621327093564888807645161545037121127100365406007706160813044442820110568043761960710196968929951541928512795443057106397763765358896944127875118317126966241182119295968526180634859524285697287312176432568591595833541644758940230568983073611969101891047496192695862466307591479133563270732011247196955054799131057565575183234765178302130296658011709020721829453813451161896335293028886505553459745868249591852868935033929211695565484784152315134437532477759185797153745732431659295000907892769695166688810177513977375458923725941954377192702500484598090621652562404258867193062978706560651057492967765435626506842220630137630540889564821445663937052768865772125594089396702118972826145437693412532098591327667236328125E-312 +5.4323092248686267984559322373289317659458541579387895216737628900626485237699140928110199499235617346171843486783251651383207063760754939353349692887565774666712595513808585610815341545071059761678755135048685284141643811460110591070436463251318117479086320657492314075609456380658337512819267997256316731392941429599954902333079947724230703655186241298866296649490197347510900104329303517612055978959160228913330143440461569033869725315186971515970209684934963213836816778755419584901958968839252469039330208564089589342416999829223238393094158243460580089236176179976490238269845667285159697523125226259631803812464795960193636236393846998962957504731248116500187766496744218283638906422901956420268458711631824604762724777173854562306587467901408672332763671875E-312 +5.4323092248735674549143447027706974538745363716624401196999061377069043805949208478837220374422147329808007086021231307852751635533847605024385286867205652146313673701621215682134372685523844343395540033259054156005249511333182896071075204166674615917817567997219631037123459552196877320231891853815433834058797098276773606289111010217425230814335486831796842303930310095523871104283496716552964020615492681389044930341934247049805249176341984996322859032136901116517887853672452907170406502196460793358691132393024173023018059944284936490624941666233763381715226005223798002029118146031720545305162570956627140282644522737369487492999358990278006415745758495127569439006302592180974896359550055831910515738002727397190400222826145437693412532098591327667236328125E-312 +1.08646184497397239251410707073787463758560494227394043423605974039474249759523315631583909436064499684161768773185493131001186413408056211542217182764951488073225730121523486257290198660368511814215902719202555004215090472856757334641192296960314484177538264984848286631975914347085944929344847922792192014118810693538319156644175426695058670889947105364197866126200451069028285708635703634694565978746486684064517680331659477075707212560951449772116744043470895379014169094969355830938141704357109100238340879042646470525134529715977325834953708198307751824711877272576634358419327573943599818937269124867761275860019455308975198101090449993583439464969751422314066369248267623515945807814127962546357945936449100605739287277173854562306587467901408672332763671875E-311 +1.08646184497446645815994831728205120637847316364630549403867406515916808327773383182310930311251029667797932372423472787470730985181148877213252776744591365552826808309336116328609229800821296395932687617412923876078696172729829639641831037875670982616269512324575603593489917518624484736757471779351309116784666362215137860600206489188253198049096350897128411780640563817041256708589896833635474020402819136540232467233132155091642736422106463252469393390672833281695240169886389153206589237714317424557701802871581054205735589831039023932484491621080935117190927097823942122178600052690160666719306469564756612330199182086151049357695961984898488375984261800941448041757825997413281797750776061958000002962820003398166962722826145437693412532098591327667236328125E-311 +2.17292368994819181785113476474783755956764399523406339837342664317169778803171665038531329309722264360141619345989976090237145112702658755919952162519722914886251999336953287550239912890963415919290197887510294444361983795650050821782703964378307217574442153639560231744708830279941159762396007773863942579570549221415047665266366384636714605359468833494861005079620958512063056917248503868859585978321139594366892754114055293159382187052480406284409812760542759709368873727397228323010507175392822362636362219999760232890569589489485500718672808108002095295663279457776922598718291387260480061765556922084020219955128774006538321830483655982824403385446758033941823574751314433980559610596579974798536920386083652607692412277173854562306587467901408672332763671875E-311 +2.17292368994868588349697601129201412836051221660642845817604096793612337371421732589258350184908794343777782945227955746706689684475751421590987756499362792365853077524765917621558944031416200501006982785720663316225589495523123126783342705293663716013173400979287548706222833451479699569808631630423059682236404890091866369222397447129909132518618079027791550734061071260076027917202697067800494019977472046842607541015527971175317710913635419764762462107744697612049944802314261645278954708750030686955723143828694816571170649604547198816203591530775278588142329283024230362477563866007040909547594266781015556425308500783714173087089167974139452296461268412569205247260872807877895600533228074210178977412454555400120087722826145437693412532098591327667236328125E-311 +4.34584737989663066852519015276776340353172210115430932664816044872560836890468363852426169057037793712101320491598942008709062511291863844675422122029265768512304537767812890136139341352153224129438788224125773324655770441236637796065727299214292684368249930948984121970174662145651589428498327476007443710474026277168504682510748300520026474298512289756187282986461973398132599334474104337189625977470445414971642901678846925326732136035538319308995950194686488370078282992252973307155238117464248887432404901913987757621439709036501850486111007927390782237566083828177499079316219013894240547422132516516538108145347411401664569289270067961306331226400771257197337985757408054909787216161483999302894869285352756611598662277173854562306587467901408672332763671875E-311 +4.34584737989712473417103139931193997232459032252667438645077477349003395458718431403153189932224323695737484090836921665178607083064956510346457716008905645991905615955625520207458372492606008711155573122336142196519376141109710101066366040129649182806981178288711438931688665317190129235910951332566560813139881945845323386466779363013221001457661535289117828640902086146145570334428297536130534019126777867447357688580319603342667659896693332789348599541888426272759354067170006629423685650821457211751765825742922341302040769151563548583641791350163965530045133653424806843075491492640801395204169861213533444615527138178840420545875579952621380137415281635824719658266966428807123206098132098714536926311723659404026337722826145437693412532098591327667236328125E-311 +8.69169475979350836987330092880761509145987831299480118319762805983342953065061761480215848551668852416020722782816873845652897308470274022186362041048351475764409614629532095307938198274532840549735968897356731085243343732409811744631773968886263617955865485567831902421106325877072448760702966880294445972280980388675418716999512132286650212176599202278839838800144003170271684168925305273849705975769057056181143196808430189661432034001654145358168225062973945691497101521964463275444700001607101937024490265742442807083179948130534550020987407566168156121371692568978652040512074267161761518735283705381573884525784686191917064206842891918270186908308797703708366807769595296768242427291292048311610767083890964619411162277173854562306587467901408672332763671875E-311 +8.69169475979400243551914217535179166025274653436716624300024238459785511633311829030942869426855382399656886382054853502122441880243366687857397635027991353244010692817344725379257229414985625131452753795567099957106949432282884049632412709801620116394596732907559219382620329048610988568115590736853563074946836057352237420955543194779844739335748447811770384454584115918284655168879498472790614017425389508656857983709902867677367557862809158838520874410175883594178172596881496597713147534964310261343851189571377390763781008245596248118518190988941339413850742394225959804271346745908322366517321050078569220995964412969092915463448403909585235819323308082335748480279153670665578417227940147723252824110261867411838837722826145437693412532098591327667236328125E-311 +1.738338951958726377256952248088731846731619073667578489629656328204907185414248556735795207540930969823859527365252737519540566902827094377208241879086522890268619768352970505651535912119292073390330330243818646606418490314756159641763867308230205485131096594805527463322969653339914167425112245688868450495894888611689246785977039795819897687932773027324144950427508062714549853837827707147169865972366280338600143787067596718330831829933885797456512774799548860334334738581387443212023623769892808036208660993399352906006660426318599949090740206843722903888982910050580957962903784773696803461361586083111645437286659235772422054041988539832197898272124850596730424451793969780485152849550908146329042562680967380635036162277173854562306587467901408672332763671875E-310 +1.738338951958775783821536372743149503610905895804814995609917760681349743982498624286522228416117499807495690964490717176010111474600187042879277473066162767748220846540783135722854943259744857972047115142029015478282096014629231946764506049145561983569827842145254780284483656511452707232524869545427567598560744280366065489933070858313092215091922272857075496081948175462562824837781900346110774014022612791075858573969069396346767353795040810936865424146750798237015809656304476534292071303250016360528021917228287489687261486433661647188270990266496087181461959875828265726663057252443364309143623427808640773756838962549597905298594051823512947183139360975357806124303528154382488839487556245740684619707338283427463837722826145437693412532098591327667236328125E-310 +3.476677903917477457796196558504672521902881558403775232249443372648035650112622147246953925519455204639537136530124464867315906091540735087252001555162865719277040075799847326338731339808810539071519052936742477648768783479448855436028053986918089219481558813280918585126696308265597604753930803306016459543122705057716902923932095122886392639445120677414755173682236181803106193175632510893810185965560726903438144967585929775669631421798349101653201874272698689620010012700233403085181471306464220234577002448713173103853621382694730747230245805398832399424205345013785569807687205786766887346614190838571788542808408334933432033712279835660053320999756956382774539739842718747918973694070140342363906153875120212666286162277173854562306587467901408672332763671875E-310 +3.476677903917526864360780683159090178782168380541011738229704805124478208680872214797680946394641734623173300129362444523785450663313827752923037149142505596756641153987659956410050370949263323653235837834952846520632389179321927741028692727833445717920290060620645902088210311437136144561343427162575576645788560726393721627888126185379587166604269922947685719336676294551119164175586704092751094007217059355913859754487402453685566945659504115133554523619900627522691083775150436407449918839821428558896363372542107687534222442809792445327776588821605582716684394839032877571446478265513448194396228183268783879278588061710607884968885347651368369910771466761401921412352277121816309684006788441775548210901491115458713837722826145437693412532098591327667236328125E-310 +6.953355807834979618874685179336553872245406527876168717489017461534292579509369328269271361476503674270892354859867919562866584468968016507339520907315551377293880690693600967713122195187847470433896498322590139733469369808834247024556427344293856688182483250231700828734149618116964479411567918540312477637578337949772215199842205777019382542469815977595975620191692419980218871851242118387090825951949620033114147328622595890347230605527275710046580073218998348191360560937925322831497166379607044631313685359340813499547543295446992343509257002509051390494650214940194793497254047812907055117119400349492074753851906533255451993052862427315764166455021167954862770315940216682786615383108604734433633336263425876728786162277173854562306587467901408672332763671875E-310 +6.953355807835029025439269303990971529124693350013405223469278894010735138077619395819998382351690204254528518459105899219336129040741109173010556501295191254773481768881413597784441226328300255015613283220800508605332975508707319329557066085209213186621214497571428145695663621288503019218980542396871594740244193618449033903798236839512577069628965223128906165846132532728231842851196311586031733993605952485589862115524068568363166129388430723526932722566200286094041632012842356153765613912964252955633046283169748083228144355562054041606787785931824573787129264765442101261013320291653615964901437694189070090322086260032627844309467939307079215366035678333490151988449775056683951373045252833845275393289796779521213837722826145437693412532098591327667236328125E-310 +1.3906711615669983941031662421000316572930456466820955687968165639306806438302863690313906233390600613533602791519354828953967941223822579347514559611620922693327561920481108250461903905945921333158651389094285463902870542467605030201613174059045391625584332124133265315949056237819698228726842149008904513826489603733882839751662427085285362348519206577958416513210604896334444229202461333373652105924727406292466152050695928119702428972985128926833336471111597665334061657413309162324128556525892693424787051180596094290935387120951515536067279396729489372635539954793013240876387731865187390658129819371332647175938902929899491911734027610627185857365549591099039231468135212552521898761185533518573087701040037204853786162277173854562306587467901408672332763671875E-309 +1.3906711615670033347596246545654734229809743288958192193948427071783248996871113757864633254265787143517238955118592808610437485795595672013185595205600562570807162998668920880533222937086374117740368173992495832774734148167478102506613812799960748124023063371472992632910570240991236768534254772865463630929155459402559658455618458147778556875678355823491347058865045009082457200202415526572593013966383738744941866837597400797718364496846283940313689120458799603236742728488226195646397004059249901749106412104425028874615988181066577234164810180152262555928019004618260548640147004343933951505911856716029642512409082656676667762990633122618500906276564101477666613140644770926419234751122181617984729758066408107646213837722826145437693412532098591327667236328125E-309 +2.7813423231339992585345616904327841974300556344710529628926461994851834155889852414403175977218794492059023664838328647736170654733531705027864637020231665325394924380056122815959467327462069058608161170637676112241672887785146596555726667488548461500388029871936394290378869477225165727357390609946088586204312135302104088855302869701817321960617987778683298299248429849042894943904899763346774665870282978811170161494842592578412825707900835360406849266896796299619463850364076841309391336818463991011733782823106655873711074771960561921183324185170365336917319434498650135634655099969748061740150657415013792020112895723187571749096357977250029239186606437387392153772525204291992465517339391086851996430593259861103786162277173854562306587467901408672332763671875E-309 +2.7813423231340041991910201028982259631179843166847766134906723427328276714458102481953902998093981022042659828437566627392640199305304797693535672614211305202874525458243935446030786358602521843189877955535886481113536493485019668860727306229463817998826761119276121607340383480396704267164803233802647703306977990970780907559258900764310516487777137024216228844902869961790907914904853956545715573911939311263645876281744065256428761231761990373887201916243998237522144921438993874631659784351821199336053143746935590457391675832075623619280854968593138520209798484323897443398414372448494622587932694759710787356583075449964747600352963489241344288097620947766019535445034762665889801507276039186263638487619630763896213837722826145437693412532098591327667236328125E-309 +5.5626846462680009873973525870982892777040756100489677510843054705941889591063829862581715464875182249109865411476276285300576081752949956388564791837453150589529649299206151946954594170494364509507180733724457408919277578420229729263953654347554601249995425367542652239238495956036100724618487531820456730959957198438546587062583754934881241184815550180133061871324079754459796373309776623293019785761394123848578180383135921495833619177732248227553874858467193568190268236265612199279916897403606586185627246108127779039262450073978654691415413762052117265480878393909923925151189836178869403904192333502376081708460881309763731423821018710495716002828720129964097998381305187770933599029647106223409813889699705173603786162277173854562306587467901408672332763671875E-309 +5.5626846462680059280538109995637310433920042922626914016823316138418332149632079930132442485750368779093501575075514264957045626324723049054235827431432790467009250377393964577025913201634817294088897518622667777791141184120102801568954293088469957748434156614882379556200009959207639264425900155677015848062623054107223405766539785997374435711974699425665992416978519867207809344309730816491960693803050456301053895170037394173849554701593403241034227507814395506092949307340529232602185344936963794509946607031956713622943051134093716389512944545474890448773357443735171232914949108657615964751974370847073077044931061036540907275077624222487031051739734640342725380053814746144830935019583754322821455946726076076396213837722826145437693412532098591327667236328125E-309 +1.11253692925360044451229343804292994382521155612047973274676240128122000461411784758938794440187957763211548904752171560429386935791786459109965101471896121117799099137506210208944847856558955411305219859898020002274486959690395994680407628065566880749210216358755168136957748913657970719140681375569193020471247324711431583477145525401009079633210674983032589015475379565293599232119530343185510025543616413923394218159722579330675206117395073961847926041607988105331877008068682915220968018573891776533414172678170025370365200678014840231879592915815621122607996312732471504184259308597112088232275685677100661085156852482916050773270340176987089530112947515117509687598865154728815866054262536496525448807912595798603786162277173854562306587467901408672332763671875E-308 +1.11253692925360093857793927928947412039400442434185209780656501560598443019980034826489521461063144293195185068351409540085856480363559551775636137065875760995278700215694022839016166887699408195886936644796230371146350565390269066985408266806482237247648947606094895453919262916829509258948093999425752137573913180380108402181101556463502274160369824228565519561129819678041612203119484536384450933585272746375869932946624052008691141641256228975328278690955190043234558079143599948543236466107248984857733533601998959954045801738129901929977123699238394305900475362557718811948018581075858649080057723021797656421627032209693226624526945688978404579023962025496137069271374713102713202044199184595937090864938966701396213837722826145437693412532098591327667236328125E-308 +2.22507385850720113605740979670913197593481954635164564802342610972482222202107694551652952390813508791414915891303962110687008643869459464552765720740782062174337998814106326732925355228688137214901298112245145188984905722230728525513315575501591439747639798341180199932396254828901710708185069063066665599493827577257201576306269066333264756530000924588831643303777979186961204949739037782970490505108060994073026293712895895000358379996720725430436028407889577179615094551674824347103070260914462157228988025818254518032570701886087211312807951223342628836862232150377566662250398253433597456888442390026549819838548794829220689472168983109969836584681402285424333066033985088644580400103493397042756718644338377048603786162277173854562306587467901408672332763671875E-308 +2.22507385850720163012305563795567615250361241457301801308322872404958664760675944619203679411688695321398552054903200090343478188441232557218436756334761702051817599892294139362996674259828589999483014897143355557856769327930601597818316214242506796246078529588519927249357768832073249247992481686923224716596493432925878395010225097395757951057160073834364573849432419299709217920738991976169431413149717326525502008499797367678374315520581880443916381057236779117517775622749741380425338708447819365553307386742083452616251302946202273010905482006765402020154711200202813970014157525912344017736224427371246815175018974555997865323425588621961151633592416795802960447706494647018477736093430045142168360701364747951396213837722826145437693412532098591327667236328125E-308 + + +# ============================================================================== +2.4703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328125E-324 +2.47032822925563928955488610223975683825075313028607204245901671443135881701471561216490502500611448891113821261974342300460418902942448352807590938286946753938651115551760560719928058878293671231747736634408280531526902605907773622021915212565490055774142324317176285739934621929266664332301574472636463785506624517729295274366260118660863836029219323513171043552966204750864260101376307037863078272186341055251908512708551508108801689745488069526735449270278409582397426355203982358963233588990525634848244115770970815275109010555867353978342572186166693436117300403071722862355340083843290764615831101299228427291345949708292808225406036401688524974979852948763402190780682189954893639063625933369612197756528003477811220301766530180567324117966872133774348767321082931402997928671538829803466796875E-324 +7.41098468756929159397648975512467060905044292200042324605269693558215132838945942514109170222660535868479308128917093161392894517769431239989958653734617002313950310828862248335763575457404292975629700637705716929919197406867044685108053562059456738772196905962887145030861526323210466850040478844476909750867454602891954589524283064324046822581693765289083916706453794332999718716784526088785971242109396974201651806001925714991467917307498874512022604351143088758269019013746684785203252798227950943843429496250231485958852940059801101485323277394829811510037974782377852068861615556903603175290898302295307116225679182401947018075572183888519047572653597242404075755939116543007094593777514594048443650796980909568006287434734753763085782571486252866225651232678917068597002071328461170196533203125E-324 +7.4109846876186981626485318930233205854758970392148714663837852375101326090531312779794975454245398856969484704316857659638998506553390969459816219401617281718945106978546710679176872575177347315553307795408549809608457500958111373034747658096871009590975442271004757307809711118935784838675653998783503015228055934046593739791790738723868299395818481660169122019456499931289798411362062484498678713572180352209017023903285791732520220528974020802906854021606612375549983402671300035812486479041385743401875520901590172592547146296175134159774938718574737870961645638908718119841271673056017045493004705269590165763776884908267986972573366521765567941072508764337560846003984904972149117463085539556354188641513168478436313080237596295773983001708984375E-324 + + +# ============================================================================== +# testPowers +2.4703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328125E-324 +7.4109846876186981626485318930233205854758970392148714663837852375101326090531312779794975454245398856969484704316857659638998506553390969459816219401617281718945106978546710679176872575177347315553307795408549809608457500958111373034747658096871009590975442271004757307809711118935784838675653998783503015228055934046593739791790738723868299395818481660169122019456499931289798411362062484498678713572180352209017023903285791732520220528974020802906854021606612375549983402671300035812486479041385743401875520901590172592547146296175134159774938718574737870961645638908718119841271673056017045493004705269590165763776884908267986972573366521765567941072508764337560846003984904972149117463085539556354188641513168478436313080237596295773983001708984375E-324 +7.4109846876186981626485318930233205854758970392148714663837852375101326090531312779794975454245398856969484704316857659638998506553390969459816219401617281718945106978546710679176872575177347315553307795408549809608457500958111373034747658096871009590975442271004757307809711118935784838675653998783503015228055934046593739791790738723868299395818481660169122019456499931289798411362062484498678713572180352209017023903285791732520220528974020802906854021606612375549983402671300035812486479041385743401875520901590172592547146296175134159774938718574737870961645638908718119841271673056017045493004705269590165763776884908267986972573366521765567941072508764337560846003984904972149117463085539556354188641513168478436313080237596295773983001708984375E-324 +1.23516411460311636044142198217055343091264950653581191106396420625168876817552187966324959090408998094949141173861429432731664177588984949099693699002695469531575178297577851131961454291962245525922179659014249682680762501596852288391246096828118349318292403785007928846349518531559641397792756664639171692046759890077656232986317897873113832326364136100281870032427499885482997352270104140831131189286967253681695039838809652887533700881623368004844756702677687292583305671118833393020810798402309572336459201502650287654245243826958556932958231197624563118269409398181196866402119455093361742488341175449316942939628141513779978287622277536275946568454181273895934743339974841620248529105142565927256981069188614130727188467062660492956638336181640625E-323 +1.72922976044436290461799077503877480327770930915013667548954988875236427544573063152854942726572597332928797643406001205824329848624578928739571178603773657344205249616608991584746036008747143736291051522619949555753067502235593203747744535559365689045609365299011100384889325944183497956909859330494840368865463846108718726180845057022359365256909790540394618045398499839676196293178145797163583665001754155154373055774333514042547181234272715206782659383748762209616627939566366750229135117763233401271042882103710402715943341357741979706141523676674388365577173157453675612962967237130706439483677645629043720115479398119291969602671188550786325195835853783454308640675964778268347940747199592298159773496864059783018063853887724690139293670654296875E-323 +2.22329540628560944879455956790699617564276911176446143991513557125303978271593938339384926362736196570908454112950572978916995519660172908379448658204851845156835320935640132037530617725532041946659923386225649428825372502874334119104242974290613028772926326813014271923429133356807354516026961996350509045684167802139781219375372216171604898187455444980507366058369499793869395234086187453496036140716541056627051071709857375197560661586922062408720562064819837126649950208013900107437459437124157230205626562704770517777641438888525402479324816155724213612884936916726154359523815019168051136479014115808770497291330654724803960917720099565296703823217526293012682538011954714916447352389256618669062565924539505435308939240712788887321949005126953125E-323 +3.70549234380934908132426594651166029273794851960743573319189261875506630452656563898974877271226994284847423521584288298194992532766954847299081097008086408594725534892733553395884362875886736577766538977042749048042287504790556865173738290484355047954877211355023786539048555594678924193378269993917515076140279670232968698958953693619341496979092408300845610097282499656448992056810312422493393567860901761045085119516428958662601102644870104014534270108033061877749917013356500179062432395206928717009377604507950862962735731480875670798874693592873689354808228194543590599206358365280085227465023526347950828818884424541339934862866832608827839705362543821687804230019924524860745587315427697781770943207565842392181565401187981478869915008544921875E-323 +4.19955798965059562550083473937988166510300832222176049761747830125574181179677439085504860907390593522827079991128860071287658203802548826938958576609164596407355606211764693848668944592671634788135410840648448921114592505429297780530236729215602387682194172869026958077588363007302780752495372659773183752958983626264031192153480852768587029909638062740958358110253499610642190997718354078825846043575688662517763135451952819817614582997519451216472172789104136794783239281804033536270756714567852545943961285109010978024433829011659093572057986071923514602115991953816069345767206147317429924460359996527677605994735681146851926177915743623338218332744216331246178127355914461508844998957484724152673735635241288044472440788013045676052570343017578125E-323 +7.65801751053932143473681628945743127165842694052203384859657807876047036268823565391214746360535788188684675277940862482936317901051706684418100933816711911095766105444982677018161016610165922260717513885888348032620727509900484188025725800334333765773412903467049158847367014895669776666315091320762864490689911318481468644515170966813305760423457643821747594201050499289994583584074645673153013373579196972826509247000619847902708945466064881630037491556601661214016495160936767036729026950094319348486047049316431783456320511727143052984341033425272291333270338268723420571693140621578842803427715287785765046225694477385435865383258120724910868724415923898154795408707844018045540880451883908748993282628969407610508568495788495056331157684326171875E-323 +8.15208315638056797891338508232565264402348674313635861302216376126114586995844440577744729996699387426664331747485434256028983572087300664057978413417790098908396176764013817470945598326950820471086385749494047905693032510539225103382224239065581105500729864981052330385906822308293633225432193986618533167508615274512531137709698125962551293354003298261860342214021499244187782524982687329485465849293983874299187262936143709057722425818714228831975394237672736131049817429384300393937351269455243177420630729917491898518018609257926475757524325904322116580578102027995899318253988403616187500423051757965491823401545733990947856698307031739421247351797596407713169306043833954693640292093940935119896075056644853262799443882613559253513813018798828125E-323 +1.556306784399926614156191697534897322949938378235123007940594899877127847901157568375694484539153375996359178790654010852418968637621210358656140607433962916097847246549480924262714324078724293626619463703579546001777607520120338833729700820034291201410484287691099903464003933497651481612188733974453563319789174614978468535627605513201234287312188114863551562408586498557085766638603312174472252985015787396389357501969001626382924631108454436861043934453738859886549651456097300752062216059869100611439385938933393624443490072219677817355273713090069495290194558417083080516666705134176357955353098810661393481039314583073627726424040696957076926762522684051088777766083683004415131466724796330683437961471776538047162574684989522211253643035888671875E-322 +1.605713348984051268573848576821719460186444358496555484383153468127195398628178443562224468175316975234338835260198582625511634308656804338296018087035041103910477317868512064715498905795509191836988335567185245874849912520759079749086199258765538541137801249205103075002543740910275338171305836640309231996607878571009531028822132672350479820242733769303664310421557498511278965579511353830804705460730574297862035517904525487537938111461103784062981837134809934803582973724544834109270540379230024440373969619534453739505188169750461240128457005569119320537502322176355559263227552916213702652348435280841120258215165839679139717739089607971587305389904356560647151663419672941063230878366853357054340753899451983699453450071814586408436298370361328125E-322 +3.137316851091915555521211834713205714518129746600962254102469083879289471165825574344653960896388551611708185816080307591384270110760217707132219954668464926102009528758477418751820939015841036358423363338961941940091367540560048125137650859434206072684627056139201392697277770701614891503936019281834960977987701207972468317852474605977091341089649056947159498823658497091268132747660645177110732207888968243515054011905765183343356002393233547323056820248013257231615964046418368182728594279418663137346063718167317306417829193204747346097139072419663903204042998713802400406613834159371388259203865856412650350666554794450011448505605849421409042838736204356956742480835360977154312639270621174552327319157390798920470587063391576521098613739013671875E-322 +3.186723415676040209938868714000027851754635726862394730545027652129357021892846449531183944532552150849687842285624879364476935781795811686772097434269543113914639600077508559204605520732625934568792235202567641813163672541198789040494149298165453412411944017653204564235817578114238748063053121947690629654806405164003530811047001765126336874020194711387272246836629497045461331688568686833443184683603755144987732027841289044498369482745882894524994722929084332148649286314865901539936918598779586966280647398768377421479527290735530768870322364898713728451350762473074879153174681941408732956199202326592377127842406051055523439820654760435919421466117876866515116378171350913802412050912678200923230111585066244572761462450216640718281269073486328125E-322 +6.299336984475893438251252109069822497654512483332640746426217451883612717695161586282572913610858902842406199866932901069314873057038232404084378649137468946110334093176470407730034168890074521822031162609726733816718887581439466707953550938234035815232912593035404371163825445109541711287430589896597756294384754393960467882302212791528805448644570941114375371653802494159632864965775311182387690653635329937766447031779292297264218744962791768247082591836562051921748589227060503044061350718517788189159419276635164670366507435174886403580869791078852719031739879307241040186508092209761448866905399947915164089921035217202778892668736154350073274991163244968692671910338716922632674984362270862290106034528619320667086611820195685140788555145263671875E-322 +6.348743549060018092668908988356644634891018463594073222868776020133680268422182461469102897247022502080385856336477472842407538728073826383724256128738547133922964164495501548182818750606859420032400034473332433689791192582078207623310049376965283154960229554549407542702365252522165567846547692562453424971203458349991530375496739950678050981575116595554488119666773494113826063906683352838720143129350116839239125047714816158419232225315441115449020494517633126838781911495508036401269675037878712018094002957236224785428205532705669826354053083557902544279047643066513518933068939991798793563900736418094890867096886473808290883983785065364583653618544917478251045807674706859280774396004327888661008826956294766319377487207020749337971210479736328125E-322 +1.2623377251243849203711332657783056063927277956795997731073714187892259210753833610158410819039799605303802227968638088025176078949594261797988696038075476986126983222012456385686460628638541492749246761151256317569973927663198303873585351095833695300329483666827810328096920793925395350854419731126123346927178860765936467011201689162632233663754414709448807117314090488296362329402004643192941607545128053326269233071526346525105944230101908210095134135013659641302013839588344772766726863596716038292786130393570859398263863919115164518548331228397230350687133640494118319746296608310541570082308468130920191568429996062708313780994996764207401739296017326192164530769345428813589399674545570237765663465271076364160318661333803902380168437957763671875E-321 +1.2672783815827973858128989537069878201163783937057430207516272756142326761480854485344940802675963204541781884438182659798268744620629855777628573517676555173939613293331487526139245210355326390959615633014862017443046232663837044788941849534564942640056800628341813499635460601338019207413536833791979015603997564721967529504396216321781479196684960363888919865327061488250555528342912684849274060020842840227741911087461870386260957710454557557297072037694730716219047161856792306123935187916076962121720714074171919513325562016645947941321514520876280175934441404253390798492857456092578914779303804601099918345605847319313825772310045675221912117923398998701722904666681418750237499086187627264136566257698751809812609536720628966577351093292236328125E-321 +2.5271457784779760734631493755209523196472808903722711700368707659909552196871177657910086629897681010226594284172048461936898490734706320585797330815951493066160281479684428341599313548135475434603677958234315485076484007826715978204848951411033014270522625814412622241963111491557102629988398013585174528192767073509888465269000641904839090093974102246117670608634666476569821258274463307214049441328113500103274805151020454980789395200380141093791237221367854820062544340310913312212057889353112538500039552627442248854058576886995720748483254103033985613997921162867872878865873640512101812513114604496930246525447917753719383557647517983922058667905725488639108248487358852595502849054912168988716778326755990451146782760361020336858928203582763671875E-321 +2.5320864349363885389049150634496345333709314883984144176811266228159619747598198533096616613533844609464573940641593033709991156405741914565437208295552571253972911551003459482052098129852260332814046830097921184949556312827354719120205449849764261610249942775926625413501651298969726486547515116251030196869585777465919527762195169063988335626904647900557783356647637476524014457215371348870381893803828287004747483166955978841944408680732790440993175124048925894979577662579360845569266213672473462328974136308043308969120274984526504171256437395513035439245228926627145357612434488294139157210109940967109973302623769010324895548962566894936569046533107161148666622384694842532150948466554226015087681119183665896799073635747845401056110858917236328125E-321 +5.0567618851851583796471815950062457461563870797576139638958694603944138169105865753413438251613443820072178396578869209760343314304930438161414600371703525226226877995028372253425019387129343318312540352400433820089504168153751326867376152041431652210908910109582246069695492886820517188256354578503276890723943498997792461784598547389252802954413477319455397591275818453116739116019380635256265108894084393657285949310008671892156297140936606861183443394076245177583605341756050391102719940865905538914546397095185027765648002822756833208353099852307496140619496207615381997105027704915222297374726877228950356439483761135741523110952560423351372525125141813532995683923385700159329747815645366490619008049725818625119710958415453205816447734832763671875E-321 +5.0617025416435708450889472829349279598800376777837572115401253172194205719832886628599968235249607419310158053048413781533435979975966032141054477851304603414039508066347403393877803968846128216522909224264039519962576473154390067782732650480162899550636227071096249241234032694233141044815471681169132559400762202953823524277793074548402048487344022973895510339288789453070932314960288676912597561369799180558758627325944195753311310621289256208385381296757316252500638664024497924459928265185266462743480980775786087880709700920287616631126283144786545965866803971374654475851588552697259642071722213699130083216659612392347035102267609334365882903752523486042554057820721690095977847227287423516989910842153494070772001833802278270013630390167236328125E-321 +1.01159940985995229920152460339768325991745994585282995516138668492013310113575241944420141495044969439763346621392510705407232961445378673312649139483207589546360071025716260077076431065117079085730265140732670490115544488807822024192430553302228928091681478699921493725160255677347346304792267708339481615786296349973600454815794358358080228675292227466130851556558122406210574831509215291340696444026026180765308237627985105714890101022049538395967855739493025892625727344646324548884044043891491539743560086030670585588826854694279058128092791350854517193862646297110400233583335833721463267097951422692990576267555447899785802217562645302210000239563974463320770554795439395286983545337111761494423467495665474973065567354524318943731486797332763671875E-320 +1.01209347550579354574570117219055148128982500565544427992581227060263377664302262819606671478681133039001326277862055277180325627116414267292289016962808667734172701097035291217529215646833863983940634012596276189988616793808460765107787051740960175431408795661435496896698795484759970161351384811005337284463115053929631517308988885517229474208222773120570964304571093406164768030450123332997028896501740967666780915643920629576045114502402187743169793642174096967542760666914772082241252368210852463572494669711271645703888552791809841550865974643333567019109954060869672712329896681503500611794946759163170303044731299156391314208877694213224510618191356135830328928692775385223631644748753818520794370288093150418717858229911144007928669452667236328125E-320 +2.02344585254282522167513749119180063052110242160696707270498616268151654002513994326433547981908020679145683071019793696701012255726275143615118217706215718186626457087092035724379254421092550620565714717397143830167625130115963418842539355823823479853226615880599989036089781258401004537864093968011891065911002051925216440878185980295735080117049727759481759487122730312398246262488884603509559114289909754981352814263937973360357708784275401465536680430326587322709971350426872864446692249942663541401587463901641701235184558437323507967572174347948559300348946476100436706539952091333945206544400513621071015923698821427874360430782815059927255668441639762896320296539546785542291140380044551502032386387544787668957280146742050419561564922332763671875E-320 +2.02393991818866646821931405998466885189346748140958139746941174836401721553241015201620077965544184278383662727489338268474104921397310737594758095185816796374439087158411066864832039002809335518776083589260749530040697435116602159757895854262554727192953932842113992207628321065813628394423211070677746734587820755881247503371380507454884325649980273413921872235135701312352439461429792645165891566765624541882825492279873497221512722264628050812738618333007658397627004672695320397803900574262024465230522047582242761350246256534854291390345357640427609125596254239859709185286512939115982551241395850091250742700874672684479872422097863970941766047069021435405878670436882775478939239791686608528403289179972463114609571022128875483758747577667236328125E-320 +4.04713873790857106662236326678003537172838737311524130779218511820428341780391499090460360955634123157910355970274359679288570844288068084220056374152231975467159229209843587018984901133043493690236613870726090510271786412732246208142756960867012583376316890241956979657948832420508321004007746487356709966160413455828448413002969224171044783000564728346183575348251946124773589124448223227847284454817676903413441967535843708651292924308727127604674329811993710182878459361987969495571988662045007544717642219643583932527899965923412407646530940342136643513321546834080509652453184606558909085437298695477231895235985568484051476857223154575361766526196970362047419780027761566052906330465910131517250224171303413060740705731177513371221721172332763671875E-320 +4.04763280355441231316653983557290359310075243291785563255661070388678409331118519965646890939270286757148335626743904251061663509959103678199696251631833053654971859281162618159437685714760278588446982742589696210144858717732884949058113459305743830716044207203470982829487372227920944860566863590022565634837232159784479475496163751330194028533495274000623688096264917124727782323389131269503616907293391690314914645551779232512447937789079776951876267714674781257795492684256417028929196986364368468546576803324184992642961664020943191069304123634615693338568854597839782131199745454340946430134294031947411622013161419740656988848538203486376276904824352034556978153925097555989554429877552188543621126963731088506392996606564338435418903827667236328125E-320 +8.09452450864006275651681481795650485414295727613178977796658302924981717336146508618513986903086328115439701768783491644463688021411653965429932687044264490028224773455346689608196194556945379829578412177383983870480108977964811786743192170953390790422497438964670960901666934744722953936295051526046347766659236263634912357252535711921664188767594729519587207070510377749524274848366900476522735135873211200277620274079655179233163355357630579882949628575327955903215435385110162757822581486249695551349751731127468395113330780895590207004448472330512811939266747550040655544279649637008836843223095059189553653860559062596405709710103833606230788241707631560349618747004191127074136710637641291547685899738820663844307556900048439274542033672332763671875E-320 +8.09501857428590400306099138674937307551532233593440410273100861493231784886873529493700516886722491714677681425253036216236780687082689559409572564523865568216037403526665720748648979138662164727788781049247589570353181282965450527658548669392122037762224755926184964073205474552135577792854168628712203435336054967590943419745730239080813434300525275174027319818523348749478468047307808518179067588348925987179092952095590703094318368837983229230151566478009026978132468707378610291179789810569056475178686314808069455228392478993120990427221655622991861764514055313799928023026210484790874187920090395659733380637734913853011221701418882517245298620335013232859177120901527117010784810049283348574056802531248339289959847775435264338739216327667236328125E-320 +1.618929605010304613630571792030944381897209708216488671831537885134088468447656527674621238797990738030498393365801755574813922375658825727849685312828329519150355861946352894786618781404749152108262008790699770590896754108429942943944062591126147204514858536410098923389103139393152219800869661603425623367656881879247840245751668687422903000301654731866394470515027240999025646296204254973873636497984279794005976887167278120396904217455437484439500226101996447343889387431354549282323767134659071564613970754095237320284192410839945805720283536307265148791157148981960947327932579697908692358794687786614197171109706050821114175415865191667968831672728953956954016680957050249116597470981103611608557250873855165411441259237790291081182658672332763671875E-319 +1.618979011574888738284989448910231204034446214196750104307980443702338535998383548549807768781626901629736373022271300146587015041329861321829325190307930597338168492017671925927071565986465937006472377662563376290769826413430581684859419089564878451854585853371612926560641679200564843657428778706091479036333700583203871308244863214582052245834585277520834583263040211998979839495145163015529968950459994580907449565183213644258059230935790133786702164004677518418806420753622996815680975458978432488442905337775838380399254108937476589143056719599744198616404456745720219806679140545690729703491683123084376897886881902077719687407180240578983342051356335629463575054854386239053245570392745668634928153666282840857093550113177116145379841327667236328125E-319 +3.237883913302901289588352412501532174863037669423108059901297049552301970670676565786835742587799557860615776559838283435514391084153169252689190564396459577394618038928365305143463955100356696665629202017331344031730044369360205258345803431471660032699580731300954848363975548690010751530018881758184174569652173110473696022749934638425380623369774736560008997404060967498028389191878963968575439222206416981462690113342524002724385941651051293552601421155333430225237291523843322331326138431477823591142408800030775170625915670728657003151953664260769822494937951845801530895238439819708403389937873241463484205608000027270531106827387907791444918534771598750162812548862768493201518991668028251730299953143924168545708663913273994694463908672332763671875E-319 +3.237933319867485414242770069380818997000274175403369492377739608120552038221403586662022272571435721459853756216307828007287483749824204846668830441876060655582430668999684336283916739682073481563839570889194949731603116674360843999261159929910391280039308048262468851535514088497423375386577998860850030238328991814429727085243129165584529868902705282214449110152073938497982582390819872010231771674682131768364162791358459526585540955131403942899803359058014501300154324846111769864683346755797184514971343383711376230740977368826187786574726847553248872320185259609560803373985000667490440734634868577933663932385175878527136618818702956702459428913398980422672370922760104483138167091079670308756670855936351843991360954788660819758661091327667236328125E-319 +6.475792529888094641503913653442707760794693591836346836040815378388728975116716642011264750167417197520850542947911339156915328501141856302368201067532719693883142392892390125857154302491571785780363588470594490913396624891220729887149285112162685689069025121082666698313720367283727814988317322067701276973642755572925407576746466540430335869506014745947238051182128420496033874983228381957979044670650691356376116565693015767379349390042278911778803811262007395987933099708820868429330881025115327644199284891901850871309362190506079398015293920167779169902499557573482698029850160063307825452224244151162058274604587980169364969650433340038397092258856888336580404284674204981371362033041877531973785357684062174814243473264241401921026408672332763671875E-319 +6.475841936452678766158331310321994582931930097816608268517257936956979042667443662886451280151053361120088522604380883728688421166812891896347840945012320772070955022963709156997607087073288570678573957342458096613269697196221368628064641610601416936408752438044180701485258907091140438844876439170367132642319574276881438639239661067589485115038945291601678163930141391495988068182169289999635377123126406143277589243708951291240504403522631561126005749164688467062850133031089315962688089349434688568028219475582451931424423888603610181438067103460258219727746865337241970508596720911089862796921239487632238001381763831425970481641748388949411602637484270009089962658571540971308010132453519589000156260476489850259895764139628226985223591327667236328125E-319 +1.2951609763058481345335036135325058932658005436662824388319852036061582984008796794460122765326652476841320075724057450599717203335119230401726222073805239926860191100820439767284534997274001964009832361377120784676729785934941779144756248473544737001807913900646090398213210004471161941904914202686735481781623920497828830684739530344440246361778494764721696158738263326492044846565927217936786255567539240106202969470393999296689276286824734148231208591475355327513324716078775960625340366212390335750313037075644002272676255230060924187741974431981797864717622769028845032299073600550506669576796985970559206412597763885967032695296524204532301439707027467509415587756297077957711048115789576092460756166764338187351313091966176216374151408672332763671875E-318 +1.2951659169623065469989453792204345754795241942643085820796294594629833051559523815335309295310288640440558055380526995171490296000790265995705861951284841005048003730891758798424987781855718748908042730248984390376602858239942417885671604971983468249147641217607604401384748544278574565761473319789401337450300739201784861747232724871599395607311425310376136271486276297491999039764868125978442588020014954893104442148409934820550431300305086797578410529378036398588241749401044408158697574536709696674141971659324603332791316928158454971164747615274276914542870076792604304777820161398288706921493981307029386139374939737223638207287839253443315950085654849181925146130194413947647696215201218149487127069556765862796965382841563041438348591327667236328125E-318 +2.5903244229399254752997281099089761276384629126315779492877925351407291001792957099357838795645123035482259141276349673485320953003073978600442264086350280392814288516676539050139296386838862320468769907190173372203396108022383877659970175196308839627285691459772937798012189278846030195738107963924803891397586250347635676900725657952460067346323454802270612373850533138484066789731324889894400677361316337605856675279795966355309130080389644621136018151902051190564107948818686145017359336586940351962540541443128305075410041309170613767195335455609835254347869191939569700837520481524904357825942469609353502688584115697562368146588705933520110134603368625855085954699542823910390420281284973213434697784924890212425452329370045845280401408672332763671875E-318 +2.5903293635963838877651698755969048098521865632296040925354367909975541069343684120233025325628759199081497120932819218057094045668745014194421903963829881471002101146747858081279749171420579105366980276062036977903269180327384516400885531694747570874625418776734451801183727818653442819594667081027469747066263069051591707963218852479619216591856385347925052486598546109484020982930265797936057009813792052392758147957811901879170285093869997270483220089804732261639024982140954592550716544911259712886369476026808906135525103007268144550618108638902314304173116499703328973316267042372686395170639464945823682415361291548818973658580020982431124644981996007527595513073440159900327068380696615270461068687717317887871104620245432670344598591327667236328125E-318 +5.1806513162080801568321771026619165963837876505621689701994071982098707037361277709153270856282064152764137272380934119256528452338983474997874348111440361324722483348388737615848819165968583033386644998816278547256728752197268074690398028641837044878241246578026632597610147827595766703404495486400940710629510910047249369332697913168499709315413374877368444804075072762468110676062120233809629520948870532605164086898599900472548837667519465566945637272755442916665674414298506513801397277336040384386995550178096910680877613467389992926102057502865910033608362037761019037914414243473699734324233436886942095240556819320753039049173069391495727524396050942546426688586034315815749164612275767455382581021245994262573730804177785103092901408672332763671875E-318 +5.1806562568645385692976188683498452785975113011601951134470514540666957104912004730028457386265700316363375252037403663828301545004654510591853987988919962402910295978460056646989271950550299818284855367688142152956601824502268713431313385140275776125580973894988146600781686367403179327261054603503606566298187728751205400395191107695658858560946305423022884916823085733468064869261061141851285853401346247392065559576615835996409992680999818216292839210658123987740591447620774961334754485660359745310824484761777511740992675165487523709524830686158389083433609345524778310393160804321481771668930432223412274967333995172009644561164384440406742034774678324218936246959931651805685812711687409512408951924038421938019383095053171928157098591327667236328125E-318 +1.03613051027443895198970750881677975338744371264233510120226365243481539108497918928744134977555946387327893534590103010798943451010802467792738516161620523188538873011813134747267864724228024459222395182068488897363394040547036468751253735532893455380152356814534022196806064925095239718737270531353214349093360229446476754196642423600578993253593215027564109664524152010436198448723710921640087208123978922603778910136207768707028252841779107458564875514462226368868807345258147251369473158834240449235905567648034121891812757783828751243915501597378059592129347729403917712068201767371290487320815371442119280344502226567134380854341796307446962303981415575929108156359017299626466653274257355939278347493888202362870287753793263618717901408672332763671875E-317 +1.03613100434008479323625168538557262160881607770213771552702807802049789176048645949619321507539582550927131514246572555370716543676473503386718156039100124266726685641884453778408317508809741244120605550940352503063267112852037107492169092031332186627492084131495536199977603464902652342593829648455880204762037048150432785259135618127738142499126145573218549777272164981436152641922651829681743540576454637390680382814223704230889407855259460107912077452364907439943724378580415698902830367158559810159734502231714722951927819481926282027338274780670538641954595037167676984546948328219072524665512366778589460071279402418390986366333111356357976814360042957601617714732914635616403301373668997996304718396680630038315940044668650443782098591327667236328125E-317 +2.07226126758170082460268710591795594088557360781457150956690951766247203250771201367925863220103710856455406059008440793883773448354440453382466852261980846916171652338661929010105955840746907310893895548572909597576724617246573256872965149315006276383974577287548801395197899120094185749402820621257761626021058868244931523924531444464737561129952895327955439385422310506372373994046892297301002582474195702601008556611423505175987083190298391241803351997875793273275073207177428726505624921830640578933725602587908544313683046416706267879542389786402358709171319112689715060375776815166471993313979240552473650552393041059897064464679250139349431863152144842694471091904983267247901630598220532907069880439172618563463401653024220649967901408672332763671875E-317 +2.07226176164734666584923128248674880910694597287437412389167394324815453318321928388801049750087347020054644038664910338455546541020111488976446492139460447994359464968733248041246408625328624095792105917444773203276597689551573895613880505813445007631314304604510315398369437659901598373259379738360427481689735686948887554987024638991896710375485825873609879498170323477372328187245833205342658914926671417387910029289439440699848238203778743891150553935778474344349990240499697174038982130154959939857554537171589145373798108114803798662965162969694837758996566420453474332854523376014254030658676235888943830279170216911153669976670565188260446373530772224366980650278880603237838278697632174964096251341965046238909053943899607475032098591327667236328125E-317 +4.14452278219622456982864630012030831588183339815904432629620124811778531535317766246289319705199239794710431107845116360053433443041716424561923524462701494371437210992359517535782138073784673014236896281581750998003385770645646833116387976879231918391619018233578359791981567510092077810733920801066856179876456145841841063380309486193054696882672255928738098827218627498244725084693255048622833331174629262595467849561854978113904743887336958808280304964702927082087604931015991676777928447823440838329365672467657389157423623682461301150796166164450956943255261879261309756990926910756835005300306978773182390968174670045422431685354157803154370981493603376225196962996915202490771585246146886842652946329741450964649629451486134712467901408672332763671875E-317 +4.14452327626187041107519047668910118410320576321884694062096567370346781602868493267164506235182875958309669087501585904625206535707387460155903164340181095449625023622430836566922590858366389799135106650453614603703258842950647471857303333377670649638958745550539873795153106049899490434590479918169522035545132964545797094442802680720213846128205186474392538939966640469244679277892195956664489663627104977382369322239870913637765898900817311457627506902605608153162521964338260124311285656147760199253194607051337990217538685380558831934218939347743435993080509187025069029469673471604617042645003974109652570694951845896679037197345472852065385491872230757897706521370812538480708233345558528899679317232533878640095281742361521537532098591327667236328125E-317 +8.28904581142527206028056468852501306587435297884798995975478470902841188104410896003016232675390297671220481205518467492392753432416268366920836868864142789281968328299754694587134502539860204420922897747599433798856708077443793985603233632007683202406907900125637476585548904290087861933396121160685045287587250701035660142291865569649688968388110977130303417710811261481989427265985980551266494828575496382584386435462717923989740065281414093941234210898357194699712668378693117577322535499809041357120645812227155078844904778213971367693303718920548153411423147412404499150221227101937561029272962455214599871799737928016473166126703973130764249218176520443286648705180779072976511494541999594713819078110879115767022085048409962837467901408672332763671875E-317 +8.28904630549091790152710886509380593409572534390779257407954913461409438171961623023891419205373933834819719185174937036964526525081939402514816508741622390360156140929826013618274955324441921205821108116471297404556581149748794624344148988506121933654247627442598990588720442829895274557252680277787711143255927519739616173354358764176848117633643907675957857823559274452989381459184921459308151161027972097371287908140733859513601220294894446590581412836259875770787585412015386024855892708133360718044474746810835679905019839912068898476726492103840632461248394720168258422699973662785343066617659450551070051526515103867729771638695288179675263728555147824959158263554676408966448142641411236770845449013671543442467737339285349662532098591327667236328125E-317 +1.657809186988336704118440146533442256585939214022588122667195163084966501242597155516470058615772413424240581400865169757071393411165372251638663557667025379103030562914545048689839231472011267234294900679634799400563352691040088290576924942264585770437485663909755710172683577850079430178720521879921423503008839811423298300114977736562957511398988419533434055477996529449478831628571431556553817823377230622562223607264443815741410708069568364207142022765665729934962795274047369378411749603780242394703206091746150458219867087276991500778318824432742546347758918478690877936681827484299013077218273408097434833462864443958574635009403603785984005691542354577409552189548506813947991313133705010456151341673154445371766996242257619087467901408672332763671875E-316 +1.657809236394901288243094564190321543408076450528568384099671605643534751310147882537345245145756049587839819380521639301643166503831043287232643197544504980181218375544616367720979684256592984019193111048506663006263225763345088929317840298763024501684825391226717224175855116389886842802577080997024089358677516630127254331177470931090116660644521350079088495590744542420478785821770372464595474155829706337349125079942459751265271863083048716856489224703568411006037712307369637825945106812104561755627035026329831059279982148975089031561741597616035025397584165786454637209160574045146795114562970403433905013189641619809831240521394918834895020201920981959082061747922404149937927961233116652513177712575946873047212648533133005912532098591327667236328125E-316 +3.315618398679955700299207501895324156582947046298166376050628547449217127518969674543377710496536644930280781791558574286428673368663580021074316935272790558745155032144125756895248689336313392861038906543705530603976641918232676900524307562778390906498641191477992177346952924970062566669369323318394179933852018032198574615761202070389494597420743304339695331012367065384457640353742333567128463812980699102517897950867895599244751993645876904738957646500282800405463049064755872980590177811722644469868326650784141216969791705403031766948349035457131332220430460611263635509603028249021917173108895313863104756789117475842777572774802865096423518638274022845655359158283962295890950950317115841940815868797705104581256818629952931587467901408672332763671875E-316 +3.315618448086520284423861919552203443405084282804146637483104990007785377586520401564252897026520281093880019771215043831000446461329251056668296575150270159823342844774197075926389142120895109645937116912577394209676514990537677539265222919276829637745980918794953691350124463509869979293225882435496845789520694850902530646823695264916653746666276234885349771125115078355457594546941274475170120145433174817304799423545911534768613148659357257388304848438185481476537966098078141428123535020046963830792155585367821818029906767101129297731771808640423811270255707919027394782081774809869699210453592309199574936515894651694034178286794180145334533148652650227327868716657859631880887598416527483997842239700497532256702470920828318412532098591327667236328125E-316 +6.631236822063193692660742212619087956576962710849322882817495316177718380071714712597193014258065107942361182572945383345143233283659995559945623690484320918029403970603287173306067605064917644114526918271846993010803220372617854120419072803806001178620952246614465111695491619210028839650666926195339692795538374473749127247053650738042568769464253073952217882081108137254415257804084137588277755792187636062429246638074799166251434564798493985802588893969516941346463556646172880184947034227607448620198567768860122734469640941655112299288409457505908903965773544876409150655445429778467725364890139125394444603441623539611183448305601387717302544531737359382146973095754873259776870224683937504910144923046806423000236463405343556587467901408672332763671875E-316 +6.631236871469758276785396630275967243399099947355303144249971758736286630139265439618068200788048744105960420552601852889715006376325666595539603330361800519107591783233358492337208057849499360899425128640718856616503093444922854759159988160304439909868291973931426625698663157749836252274523485312442358651207051292453083278116143932569727918709786004497872322193856150225415211997283078496319412124640111777216148110752815101775295719811974338451936095907419622417538473679495148632480391435931767981122396703443803335529756003353209830071832230689201383015598792184172909927924176339315507402234836120730914783168400715462440053817592702766213559042115986763819482654128770595766806872783349146967171293949598850675682115696218943412532098591327667236328125E-316 +1.3262473668829669677383811634066615556564994039951635896351228853634720885177204788704823621781122033966521984135719001462572353113652826637688237200907381636597901847521610006127705436522126146621502941728129917824456377281388208560208603285861221722865574356887410980392569007689961385613262131949230718518911087356850232509638548073348717113551272613177262984218590280994330492704767745630576339750601509982251944012488606300264799707103728147929851388907985223228464571809006894593660747059377056920859050005012085769469339414159273363968530301603464047456459713406700180947130232837359341748452626748457124296746635667147995199367198432959060596318664032455130200970696695187548708773417580830848803031545009059838195752956124806587467901408672332763671875E-315 +1.3262473718236234261508466051723494843387131276457616157783705296193289135244755515725698808311105670130121222115375471007144126206318497673282216840784861237676089660151681325158845889306707863406401152097001781430156250353693209198949518642359660454112914084204372494395740546229768798237118691066333384374579764175554188540701041267875876262796805543722917424331338293965330446897966686538617996083053985697038845485166622235788660862117208500579198590845887904299539488842329163041194104267701376281782878939595766370529454475857370894751953074786756526506284960714463940219608979398207123785797323743793594476473412842999251804879189748007971610829042659836802710529070592523538645421516992472905829402447801487513641405247000193412532098591327667236328125E-315 +2.6524947362362621646829950476961670756541056698156261923418695928548725895388184940920084836827235886014843587261266237697430592773638488793173464221753503073734897601358255671770981099436543151635454988640695767451762691098928917439787664249971662811354818577433302717786723784649826477538452543457012769965656513123052443034808342743961013801725311691627353188493554568474160962506134961715173507667429257821897338761316220568291529991714196472184376378784921786992466602134674923411088172722916273522180014477316011839468736359167595493328771989798574334437832050467282241530499838955142574515577601994582483683356659922221618701490392523442576699892517378601096656720580339043092385870884867482726119248541414333514114332057687306587467901408672332763671875E-315 +2.6524947411769186230954604894618550043363193934662242184851172371107294145455735667940960023357219522178442825240922707242002365866304159828767443861630982674813085413988326990802121552221124868420353199009567631057462564171233918078528579606470101542602158304750264231789895323189633890162309102574115435821325189941756399065870835938488172950970844622173007628606302581445160916699333902623215163999881733536684240233994236503815391146727676824833723580722824468063541519167997191858621529931240592883103843411899692440528851420865693024112194762981866813487657297775046000802978585515990356552922298989918953863083437098072875307002383838491487714402896005982769166278954236379082322518984279124783145619444206761189559984348562693412532098591327667236328125E-315 +5.3049894749428525585722228162751781156493182014565513977553630078376735915810145245350607266919463590111486793512360710167147072093609813104143918263445745948008889109031547003057532425265377161663359082465827466706375318734010335198945786178192544988333307018525086192575033338569556661388833366472576872859147364655456864085147932085185607178073389848527533597043483143433821902108869393884367843501084753501188128258971449104344990560935133120693426358538794914520470662786010981045943024049994706724821943421923863979467530249184239752049255366188794908400576724588446362697239051190709040049827552486833202456576708432368865705736780704409608907040224070893029568220347626754179740065819440786480751682534224880865951490260812306587467901408672332763671875E-315 +5.3049894798835090169846882580408660443315319251071494238986106520935304165877695972371482453449447226275086031492017179711718845186275484139737897903323225549087076921661618322088672878049958878448257292834699330312075191806315335837686701534690983719580646745842047706578204877109364074012689925589679538714816041474160820116210425279712766327318922779073188037156231156404821856302068334792409499833537229215975029731649465039868851715948613473342773560476697595591545579819333249493476381258319026085745772356507544580527645310882337282832678139372087387450401971896210121969717797751556822087172249482169672636303485608220122311248772019458519921550602698274702077778721524090169676713918852428537778053437017308541397142551687693412532098591327667236328125E-315 +1.06099789523560333463506783534332001956397432647384018085823498378032755956654065854211652127103918998304773206014549655106580030733552461726084826346830231696556872124378129665630635076923045181719167270116090865215600574004173170717262030034634309342290283900708653142151652446409017029089595012503705078646129067720265706185827110767634793930769546162327894414143340293353143781314338258222756515168395744859769707254281906176451911699377006417711526318046541169576478784088683096315652726704151573130105801311139568259465118029217528269490222118969236056326066072830774605030717475661841971118327453471334640003016805452663359714229557066343673321335637455476895391219882202176354448455688587393990016550519845975569625806667062306587467901408672332763671875E-314 +1.06099789572966898047631437951988881243219569883889998347255974820591324206721616581232527313633902634468372443994206124651151803826218132761678805986707711297635059937008200984661775529707626898504065480484962728821300447076478171356002945391132748073537623628025614656154823984948824441713451571620807744501797744538969662216889603962161953080015079092873548854256088306324143735507537199130798171500848220574556608726959922111975772854390486770360873519984443850647553701122005364763186083912475892491029630245723248860525233090915625800273644892152528535375891320138538364303196222222689753155672150466671110182743582628514616319741548381392584335846016082858567900778256099512344385103787999036047042921422638403245071458957937693412532098591327667236328125E-314 +2.12199579071823949219075894277492443556205933913021026302363234977344796038341907071933741847472829814691346031018927544985445948013437758969966642513599203193652838155071294990776840380238381221830783645416617662234051084544498841753894517747517838050204237665075787041304890662087937764491118304565961490220092473849883390387185468132533167436161858789928616048343054593191787539725275986899533858503017727576932865244902820320665753976260753011747726237062033679688495026694027326855072132012465305940673517089570976819460293589284105304372155624530118352177044769315431089697674324604107833255327255440337515095896999493252347731215109790211802149926464224644627037218951353020703865235426880609008546286491088164976974439479562306587467901408672332763671875E-314 +2.12199579121230513803200548695149322843028071149527006563795711419903364288409457798954617034002813450854945268998584014530017721106103430005560622153476682794731025967701366309807980833022962938615681855785489525839750957616803842392635433104016276781451577392392748555308062200627745177114974863683064156075761150668587346418247961327060326585407391720474270488455802606162787493918474927807575514835470203291719766717580836256189615131274233364397073438999936360759569943727349595302605489220789625301597346024154657420520408650982202835155578397713410831226870016623194848970153071164955615292671952435673985275623776669103604336727101105260713164436842852026299546777325250356693801883526292251065572657393880592652420091770437693412532098591327667236328125E-314 +4.24399158168351180730214115763813326755822936444295042735442708175968876201717589507377921288210651447464491681027683324743177782573208353457730274847137146187844770216457625641069250986869053302054016396017671256270952105625150183827159493173284895466032145193810054839611367093445779235294164888690474313368019286109118758789902182862329914446946484045130059316742483192869075056547151444253088545172261693011259181226144648609093438530028246199820126075093018699912527511904715787933910942629092771561808948646433793939450644709417259374136022635651882943879002162284744059031588022488639557529326859378343265281657387574430323765186215237948059807108117762980090329217089654709402698794903467039045605758433572543791671705104562306587467901408672332763671875E-314 +4.24399158217757745314338770181470206042645073680801022996875184618527444451785140234398796474740635083628090919007339794287749555665874024493324254487014625788922958029087696960100391439653635018838914606386543119876651978697455184465900408529783334197279484921127016353614538631985586647918021447807576979223687962927822714820964676056857073596192016975675713756855231205840075010740350385161130201504714168726046082698822664544617299685041726552469473277030921380983602428938038056381444299837417090922732777581017474540510759771115356904919445408835175422928827409592507818304066769049487339566671556373679735461384164750281580370698206552996970821618496390361762838775463552045392635443002878681102632129336364971467117357395437693412532098591327667236328125E-314 +8.48798316361405643752490558736455093155056941506843075601601654573217036528468954378266280169686294713010782981045194884258641451692749542433257539514213032176228634339230286941654072200130397462500481897219778444344754147786452867973689444024819010297687960251278590436224319956161462176900258056939499959663872910627589495595335612321923408468515734555532945853541340392223650090190902358960197918510749623879911813188628305185948807637563232575964925751154988740360592482326092710091588563862347702804079811760159428179431346949683567513663756657895412127282916948223369997699415418257703006077326067254354765653178163736786275833128426133420575121471424839651016913213366258086800365913856639899119724702318541301421066236354562306587467901408672332763671875E-314 +8.48798316410812208336615213154111972441879078743349055863034131015775604778536505105287155356216278349174382219024851353803213224785415213468851519154090511777306822151860358260685212652914979179285380107588650307950454020858757868612430359381317449028935299978595551950227491494701269589524114616056602625519541587446293451626398105516450567617761267486078600293654088405194650044384101299868239574843202099594698714661306321121472668792576712928614272953092891421431667399359414978539121921070672022165003640694743108780491462011381665044447179431078704606332742195531133756971894164818550788114670764249691235832904940912637532438640417448469486135981803467032689422771740155422790302561956051541176751073221333729096511888645437693412532098591327667236328125E-314 +1.697596632747514569797043444681738625953524951631939141333919547367713357181971684120042997932637581244103365581080218003289568789931831920384312068848364804152996362584775609542823714626653085783393412899623992820492358232109058236266749345727887239960999590366215661629450225681592828060112444393437551252255580159664530969206202471241110396511654235576338718927139054790932800157478404188374416665187725485617217077113595618339659545852633205328254525103278928821256722423168846554406943806328857565288621537987610696659392751430216183792719224702382470494090746520100621875035070209795829903173324483006377766396219716061498179969012847924365605750198038992992870081205919464841595700151762985619267962590088478816679855298854562306587467901408672332763671875E-313 +1.697596632796921134381168099099395505240347088868445121595352023810271925432039234847063873119167564880266964819059874472834140563024497591419906048488242283754074550397405680861854855079437667500178311109992864684098058105181363236905490261084385678692246930093532623143453397220132635472736300952554653918111248836483234925237264964435637555660899768506884373367251802803903800111671603129282458321520177961332003978586273634275183407007646685680903872305216831502327797340202168822854477163537181884649545366922194377260452866491914281323502647475565762973140571767408385634307548956356677685210669180001714236575946493237349436574524839239414516764708417620374542590764293362177585636799862397261324988960991271244355300951145437693412532098591327667236328125E-313 +3.395193265519732421886149216572305691550460971882131272798555332956705998488977143603596433458540154306288530781150264241351423466409996676286421127516668348106531819075866254745162999479698462425179274904432421572787566400754268972852869149134023699287622850596089804015902037132455559826536817066433653837438994657738413916427936189079484372597931237617950265074334483588351100292053407847202854158541677209091827604963530244647081022282773150832833723807526808983048982304854354243037654291261877290257704990442513233619315560391281416350830160791356587227706405663855125629706379792872083697365321314510423767882302820710921988240781691506255667007651267299676576417191025878351186368627575677059564438365628353847197433423854562306587467901408672332763671875E-313 +3.395193265569138986470273870989962570837283109118637253059987809399264566739044694330617308645070137942452130019129920710895995239502662347322015107156545827707610006888496326064194139932483044141964173114801293436393266273826573973491610064490522138018870190323406765529905208670995367239160673625550756503294663334557117872458998682274011531747176770548495919514447231601322100246246606788110895814874129684806614506436208260582604883437786631185483071009464711664120057221887676511485187648470201609618628819377096914220375675452979513881613583564539879706756230911162889388978858539432931479402666011505760238062029597886773244846293682821304578022161645927058248926749399775687176305275675088701621464736531146274872879076145437693412532098591327667236328125E-313 +6.790386531064168126064360760353439822744333012382515535727826904134691281102988062570703304510345300430658861181290356717475132819366326188090639244853275436013602732058047545149841569185789215708750998914049279077377982738044690446025108755946296617940869371055838088788805660034181023359385562412425859007805823653886179810871403624756232324770485241701173357368725341183187700561203415164859729145249580656041048660663399497261923975143053041841992121216022569306633502068225369620299075261127916740195871895352318307539161178313411881467052032969304820694937723951364133139048998959024591285749314977518515770854469030009769604784319378670035789522557723913043989089161238705370367705579201059940157389916708103908232589673854562306587467901408672332763671875E-313 +6.790386531113574690648485414771096702031155149619021515989259380577249849353055613297724179696875284066822460419270013187019704592458991859126233224493152915614680919870677616468872709638573797425535897124418150940983682611116995446663849671302795056672116710783155050302808831572720830772009418971542961673661492330704883766902466117950759483919730774631719011808838089196158700515396614105767770801582033131755835562136077513197447836298066522194641468417960471987704576985258691888746608618336241059556795724286901988140221293375109978997835455742488113173987549198671896898321477705585439067786659674513852241034195807185620861389831369985084700537068102540425661598719612602706357642227300471582214416287610896335908035326145437693412532098591327667236328125E-313 +1.3580773062153039534420783847915708085132077093383284061586370046490661846331009900504917046613955592679399521981570541669722551525278985211699075479526489611827744558022410125959198708597970722275894446933282994086558815412625533392369587969570842455247362411975334658334612905837631950425083053104410269348539481646181711599758338496109728229115593249867619541957507056372860901099503429800173479118665387549939490772063138002491609880863612823860308916033014089953802541594967400374821917200859995640072205705171928455378852414157672811699495777325201287629400360526382148157734237291329606462517302303534699776798801448607464837871394752997596034552370637139778814433101664359408730379482451825701343293018867604030302902173854562306587467901408672332763671875E-312 +1.3580773062202446099004908502333364964418899230619790041847802522933220414581077451231937921800485576315563121219550198139267123298371650882734669459166367091428822745835040197278229849050755303992679345143651865950164515285697838393008328884927340893978609751702651619848616077376171757837706909663527372014395150323000415555789400989304255388264838782798165196397619804385831901053696628741081520774997840025654277673535816018427133742018626304212958263234951992634873616512000722643269450558068319959433129534106512135979912529219370909230279200098384580108450185773689911917006716037890454244554647000530036246978528225783316094476906744312644945566881015767160486942660038256744720316130551237343400319389770396457978347826145437693412532098591327667236328125E-312 +2.7161546124330782351133630023040244609907565255384821113303456331202602976787053576373344530821176177176880843582130911574217388937104303258915947948872917963456028209951135287577912987422333735410181342971750424104920480761787219285058546396819934129860348493814327797426227397444533804556478034488379090030006797630772775177532208238816720037805809266200511911135070486752207302176103459070800979065497001337736374994862615012950981692304732387896942505666997131248140620648451461883867601080324153439824873324811148751058234885846194672164383266036994221498325633676418178195104713955939636816053276955567067788687466285802855304045545501652716524611996463593248465120982515667485455727288953357223715099223186604274443527173854562306587467901408672332763671875E-312 +2.7161546124380188915717754677457901489194387392621327093564888807645161545037121127100365406007706160813044442820110568043761960710196968929951541928512795443057106397763765358896944127875118317126966241182119295968526180634859524285697287312176432568591595833541644758940230568983073611969101891047496192695862466307591479133563270732011247196955054799131057565575183234765178302130296658011709020721829453813451161896335293028886505553459745868249591852868935033929211695565484784152315134437532477759185797153745732431659295000907892769695166688810177513977375458923725941954377192702500484598090621652562404258867193062978706560651057492967765435626506842220630137630540889564821445663937052768865772125594089396702118972826145437693412532098591327667236328125E-312 +5.4323092248686267984559322373289317659458541579387895216737628900626485237699140928110199499235617346171843486783251651383207063760754939353349692887565774666712595513808585610815341545071059761678755135048685284141643811460110591070436463251318117479086320657492314075609456380658337512819267997256316731392941429599954902333079947724230703655186241298866296649490197347510900104329303517612055978959160228913330143440461569033869725315186971515970209684934963213836816778755419584901958968839252469039330208564089589342416999829223238393094158243460580089236176179976490238269845667285159697523125226259631803812464795960193636236393846998962957504731248116500187766496744218283638906422901956420268458711631824604762724777173854562306587467901408672332763671875E-312 +5.4323092248735674549143447027706974538745363716624401196999061377069043805949208478837220374422147329808007086021231307852751635533847605024385286867205652146313673701621215682134372685523844343395540033259054156005249511333182896071075204166674615917817567997219631037123459552196877320231891853815433834058797098276773606289111010217425230814335486831796842303930310095523871104283496716552964020615492681389044930341934247049805249176341984996322859032136901116517887853672452907170406502196460793358691132393024173023018059944284936490624941666233763381715226005223798002029118146031720545305162570956627140282644522737369487492999358990278006415745758495127569439006302592180974896359550055831910515738002727397190400222826145437693412532098591327667236328125E-312 +1.08646184497397239251410707073787463758560494227394043423605974039474249759523315631583909436064499684161768773185493131001186413408056211542217182764951488073225730121523486257290198660368511814215902719202555004215090472856757334641192296960314484177538264984848286631975914347085944929344847922792192014118810693538319156644175426695058670889947105364197866126200451069028285708635703634694565978746486684064517680331659477075707212560951449772116744043470895379014169094969355830938141704357109100238340879042646470525134529715977325834953708198307751824711877272576634358419327573943599818937269124867761275860019455308975198101090449993583439464969751422314066369248267623515945807814127962546357945936449100605739287277173854562306587467901408672332763671875E-311 +1.08646184497446645815994831728205120637847316364630549403867406515916808327773383182310930311251029667797932372423472787470730985181148877213252776744591365552826808309336116328609229800821296395932687617412923876078696172729829639641831037875670982616269512324575603593489917518624484736757471779351309116784666362215137860600206489188253198049096350897128411780640563817041256708589896833635474020402819136540232467233132155091642736422106463252469393390672833281695240169886389153206589237714317424557701802871581054205735589831039023932484491621080935117190927097823942122178600052690160666719306469564756612330199182086151049357695961984898488375984261800941448041757825997413281797750776061958000002962820003398166962722826145437693412532098591327667236328125E-311 +2.17292368994819181785113476474783755956764399523406339837342664317169778803171665038531329309722264360141619345989976090237145112702658755919952162519722914886251999336953287550239912890963415919290197887510294444361983795650050821782703964378307217574442153639560231744708830279941159762396007773863942579570549221415047665266366384636714605359468833494861005079620958512063056917248503868859585978321139594366892754114055293159382187052480406284409812760542759709368873727397228323010507175392822362636362219999760232890569589489485500718672808108002095295663279457776922598718291387260480061765556922084020219955128774006538321830483655982824403385446758033941823574751314433980559610596579974798536920386083652607692412277173854562306587467901408672332763671875E-311 +2.17292368994868588349697601129201412836051221660642845817604096793612337371421732589258350184908794343777782945227955746706689684475751421590987756499362792365853077524765917621558944031416200501006982785720663316225589495523123126783342705293663716013173400979287548706222833451479699569808631630423059682236404890091866369222397447129909132518618079027791550734061071260076027917202697067800494019977472046842607541015527971175317710913635419764762462107744697612049944802314261645278954708750030686955723143828694816571170649604547198816203591530775278588142329283024230362477563866007040909547594266781015556425308500783714173087089167974139452296461268412569205247260872807877895600533228074210178977412454555400120087722826145437693412532098591327667236328125E-311 +4.34584737989663066852519015276776340353172210115430932664816044872560836890468363852426169057037793712101320491598942008709062511291863844675422122029265768512304537767812890136139341352153224129438788224125773324655770441236637796065727299214292684368249930948984121970174662145651589428498327476007443710474026277168504682510748300520026474298512289756187282986461973398132599334474104337189625977470445414971642901678846925326732136035538319308995950194686488370078282992252973307155238117464248887432404901913987757621439709036501850486111007927390782237566083828177499079316219013894240547422132516516538108145347411401664569289270067961306331226400771257197337985757408054909787216161483999302894869285352756611598662277173854562306587467901408672332763671875E-311 +4.34584737989712473417103139931193997232459032252667438645077477349003395458718431403153189932224323695737484090836921665178607083064956510346457716008905645991905615955625520207458372492606008711155573122336142196519376141109710101066366040129649182806981178288711438931688665317190129235910951332566560813139881945845323386466779363013221001457661535289117828640902086146145570334428297536130534019126777867447357688580319603342667659896693332789348599541888426272759354067170006629423685650821457211751765825742922341302040769151563548583641791350163965530045133653424806843075491492640801395204169861213533444615527138178840420545875579952621380137415281635824719658266966428807123206098132098714536926311723659404026337722826145437693412532098591327667236328125E-311 +8.69169475979350836987330092880761509145987831299480118319762805983342953065061761480215848551668852416020722782816873845652897308470274022186362041048351475764409614629532095307938198274532840549735968897356731085243343732409811744631773968886263617955865485567831902421106325877072448760702966880294445972280980388675418716999512132286650212176599202278839838800144003170271684168925305273849705975769057056181143196808430189661432034001654145358168225062973945691497101521964463275444700001607101937024490265742442807083179948130534550020987407566168156121371692568978652040512074267161761518735283705381573884525784686191917064206842891918270186908308797703708366807769595296768242427291292048311610767083890964619411162277173854562306587467901408672332763671875E-311 +8.69169475979400243551914217535179166025274653436716624300024238459785511633311829030942869426855382399656886382054853502122441880243366687857397635027991353244010692817344725379257229414985625131452753795567099957106949432282884049632412709801620116394596732907559219382620329048610988568115590736853563074946836057352237420955543194779844739335748447811770384454584115918284655168879498472790614017425389508656857983709902867677367557862809158838520874410175883594178172596881496597713147534964310261343851189571377390763781008245596248118518190988941339413850742394225959804271346745908322366517321050078569220995964412969092915463448403909585235819323308082335748480279153670665578417227940147723252824110261867411838837722826145437693412532098591327667236328125E-311 +1.738338951958726377256952248088731846731619073667578489629656328204907185414248556735795207540930969823859527365252737519540566902827094377208241879086522890268619768352970505651535912119292073390330330243818646606418490314756159641763867308230205485131096594805527463322969653339914167425112245688868450495894888611689246785977039795819897687932773027324144950427508062714549853837827707147169865972366280338600143787067596718330831829933885797456512774799548860334334738581387443212023623769892808036208660993399352906006660426318599949090740206843722903888982910050580957962903784773696803461361586083111645437286659235772422054041988539832197898272124850596730424451793969780485152849550908146329042562680967380635036162277173854562306587467901408672332763671875E-310 +1.738338951958775783821536372743149503610905895804814995609917760681349743982498624286522228416117499807495690964490717176010111474600187042879277473066162767748220846540783135722854943259744857972047115142029015478282096014629231946764506049145561983569827842145254780284483656511452707232524869545427567598560744280366065489933070858313092215091922272857075496081948175462562824837781900346110774014022612791075858573969069396346767353795040810936865424146750798237015809656304476534292071303250016360528021917228287489687261486433661647188270990266496087181461959875828265726663057252443364309143623427808640773756838962549597905298594051823512947183139360975357806124303528154382488839487556245740684619707338283427463837722826145437693412532098591327667236328125E-310 +3.476677903917477457796196558504672521902881558403775232249443372648035650112622147246953925519455204639537136530124464867315906091540735087252001555162865719277040075799847326338731339808810539071519052936742477648768783479448855436028053986918089219481558813280918585126696308265597604753930803306016459543122705057716902923932095122886392639445120677414755173682236181803106193175632510893810185965560726903438144967585929775669631421798349101653201874272698689620010012700233403085181471306464220234577002448713173103853621382694730747230245805398832399424205345013785569807687205786766887346614190838571788542808408334933432033712279835660053320999756956382774539739842718747918973694070140342363906153875120212666286162277173854562306587467901408672332763671875E-310 +3.476677903917526864360780683159090178782168380541011738229704805124478208680872214797680946394641734623173300129362444523785450663313827752923037149142505596756641153987659956410050370949263323653235837834952846520632389179321927741028692727833445717920290060620645902088210311437136144561343427162575576645788560726393721627888126185379587166604269922947685719336676294551119164175586704092751094007217059355913859754487402453685566945659504115133554523619900627522691083775150436407449918839821428558896363372542107687534222442809792445327776588821605582716684394839032877571446478265513448194396228183268783879278588061710607884968885347651368369910771466761401921412352277121816309684006788441775548210901491115458713837722826145437693412532098591327667236328125E-310 +6.953355807834979618874685179336553872245406527876168717489017461534292579509369328269271361476503674270892354859867919562866584468968016507339520907315551377293880690693600967713122195187847470433896498322590139733469369808834247024556427344293856688182483250231700828734149618116964479411567918540312477637578337949772215199842205777019382542469815977595975620191692419980218871851242118387090825951949620033114147328622595890347230605527275710046580073218998348191360560937925322831497166379607044631313685359340813499547543295446992343509257002509051390494650214940194793497254047812907055117119400349492074753851906533255451993052862427315764166455021167954862770315940216682786615383108604734433633336263425876728786162277173854562306587467901408672332763671875E-310 +6.953355807835029025439269303990971529124693350013405223469278894010735138077619395819998382351690204254528518459105899219336129040741109173010556501295191254773481768881413597784441226328300255015613283220800508605332975508707319329557066085209213186621214497571428145695663621288503019218980542396871594740244193618449033903798236839512577069628965223128906165846132532728231842851196311586031733993605952485589862115524068568363166129388430723526932722566200286094041632012842356153765613912964252955633046283169748083228144355562054041606787785931824573787129264765442101261013320291653615964901437694189070090322086260032627844309467939307079215366035678333490151988449775056683951373045252833845275393289796779521213837722826145437693412532098591327667236328125E-310 +1.3906711615669983941031662421000316572930456466820955687968165639306806438302863690313906233390600613533602791519354828953967941223822579347514559611620922693327561920481108250461903905945921333158651389094285463902870542467605030201613174059045391625584332124133265315949056237819698228726842149008904513826489603733882839751662427085285362348519206577958416513210604896334444229202461333373652105924727406292466152050695928119702428972985128926833336471111597665334061657413309162324128556525892693424787051180596094290935387120951515536067279396729489372635539954793013240876387731865187390658129819371332647175938902929899491911734027610627185857365549591099039231468135212552521898761185533518573087701040037204853786162277173854562306587467901408672332763671875E-309 +1.3906711615670033347596246545654734229809743288958192193948427071783248996871113757864633254265787143517238955118592808610437485795595672013185595205600562570807162998668920880533222937086374117740368173992495832774734148167478102506613812799960748124023063371472992632910570240991236768534254772865463630929155459402559658455618458147778556875678355823491347058865045009082457200202415526572593013966383738744941866837597400797718364496846283940313689120458799603236742728488226195646397004059249901749106412104425028874615988181066577234164810180152262555928019004618260548640147004343933951505911856716029642512409082656676667762990633122618500906276564101477666613140644770926419234751122181617984729758066408107646213837722826145437693412532098591327667236328125E-309 +2.7813423231339992585345616904327841974300556344710529628926461994851834155889852414403175977218794492059023664838328647736170654733531705027864637020231665325394924380056122815959467327462069058608161170637676112241672887785146596555726667488548461500388029871936394290378869477225165727357390609946088586204312135302104088855302869701817321960617987778683298299248429849042894943904899763346774665870282978811170161494842592578412825707900835360406849266896796299619463850364076841309391336818463991011733782823106655873711074771960561921183324185170365336917319434498650135634655099969748061740150657415013792020112895723187571749096357977250029239186606437387392153772525204291992465517339391086851996430593259861103786162277173854562306587467901408672332763671875E-309 +2.7813423231340041991910201028982259631179843166847766134906723427328276714458102481953902998093981022042659828437566627392640199305304797693535672614211305202874525458243935446030786358602521843189877955535886481113536493485019668860727306229463817998826761119276121607340383480396704267164803233802647703306977990970780907559258900764310516487777137024216228844902869961790907914904853956545715573911939311263645876281744065256428761231761990373887201916243998237522144921438993874631659784351821199336053143746935590457391675832075623619280854968593138520209798484323897443398414372448494622587932694759710787356583075449964747600352963489241344288097620947766019535445034762665889801507276039186263638487619630763896213837722826145437693412532098591327667236328125E-309 +5.5626846462680009873973525870982892777040756100489677510843054705941889591063829862581715464875182249109865411476276285300576081752949956388564791837453150589529649299206151946954594170494364509507180733724457408919277578420229729263953654347554601249995425367542652239238495956036100724618487531820456730959957198438546587062583754934881241184815550180133061871324079754459796373309776623293019785761394123848578180383135921495833619177732248227553874858467193568190268236265612199279916897403606586185627246108127779039262450073978654691415413762052117265480878393909923925151189836178869403904192333502376081708460881309763731423821018710495716002828720129964097998381305187770933599029647106223409813889699705173603786162277173854562306587467901408672332763671875E-309 +5.5626846462680059280538109995637310433920042922626914016823316138418332149632079930132442485750368779093501575075514264957045626324723049054235827431432790467009250377393964577025913201634817294088897518622667777791141184120102801568954293088469957748434156614882379556200009959207639264425900155677015848062623054107223405766539785997374435711974699425665992416978519867207809344309730816491960693803050456301053895170037394173849554701593403241034227507814395506092949307340529232602185344936963794509946607031956713622943051134093716389512944545474890448773357443735171232914949108657615964751974370847073077044931061036540907275077624222487031051739734640342725380053814746144830935019583754322821455946726076076396213837722826145437693412532098591327667236328125E-309 +1.11253692925360044451229343804292994382521155612047973274676240128122000461411784758938794440187957763211548904752171560429386935791786459109965101471896121117799099137506210208944847856558955411305219859898020002274486959690395994680407628065566880749210216358755168136957748913657970719140681375569193020471247324711431583477145525401009079633210674983032589015475379565293599232119530343185510025543616413923394218159722579330675206117395073961847926041607988105331877008068682915220968018573891776533414172678170025370365200678014840231879592915815621122607996312732471504184259308597112088232275685677100661085156852482916050773270340176987089530112947515117509687598865154728815866054262536496525448807912595798603786162277173854562306587467901408672332763671875E-308 +1.11253692925360093857793927928947412039400442434185209780656501560598443019980034826489521461063144293195185068351409540085856480363559551775636137065875760995278700215694022839016166887699408195886936644796230371146350565390269066985408266806482237247648947606094895453919262916829509258948093999425752137573913180380108402181101556463502274160369824228565519561129819678041612203119484536384450933585272746375869932946624052008691141641256228975328278690955190043234558079143599948543236466107248984857733533601998959954045801738129901929977123699238394305900475362557718811948018581075858649080057723021797656421627032209693226624526945688978404579023962025496137069271374713102713202044199184595937090864938966701396213837722826145437693412532098591327667236328125E-308 +2.22507385850720113605740979670913197593481954635164564802342610972482222202107694551652952390813508791414915891303962110687008643869459464552765720740782062174337998814106326732925355228688137214901298112245145188984905722230728525513315575501591439747639798341180199932396254828901710708185069063066665599493827577257201576306269066333264756530000924588831643303777979186961204949739037782970490505108060994073026293712895895000358379996720725430436028407889577179615094551674824347103070260914462157228988025818254518032570701886087211312807951223342628836862232150377566662250398253433597456888442390026549819838548794829220689472168983109969836584681402285424333066033985088644580400103493397042756718644338377048603786162277173854562306587467901408672332763671875E-308 +2.22507385850720163012305563795567615250361241457301801308322872404958664760675944619203679411688695321398552054903200090343478188441232557218436756334761702051817599892294139362996674259828589999483014897143355557856769327930601597818316214242506796246078529588519927249357768832073249247992481686923224716596493432925878395010225097395757951057160073834364573849432419299709217920738991976169431413149717326525502008499797367678374315520581880443916381057236779117517775622749741380425338708447819365553307386742083452616251302946202273010905482006765402020154711200202813970014157525912344017736224427371246815175018974555997865323425588621961151633592416795802960447706494647018477736093430045142168360701364747951396213837722826145437693412532098591327667236328125E-308 +4.45014771701440251914764251404153604015403552681397747857675352661202665683499514137081268292064610847821649864407543211202252060024805475438366959278553944287415798167306559780886369972946500822093454616939395562405743247311393587179131470373640557744498962306030263523273266659389190686273844438061610757538988082348741561964516148197776110323581423800429751880383178430296416384978052662540451464236950154372290444819242526339724727755372028367612233140452755328181529638887107210867274745595602918620135732098423503356981704302231953474664667838396644265370703825667756978382676143106568194200775798725448137345332679521829966869966268975935330693818311826037979822904224956476109468201955118135219258317189939548603786162277173854562306587467901408672332763671875E-308 +4.4501477170144032602461112759113523050072248291460360261664574480991732952135188923840735882337739064279710410980640018068695637688246511443687351266952340410363519978458827872599334851965717999896602979428671111571353865586120319563663242848501359249215705917703985449871553766414649849598496337384644943319298686585175679002045019479151590211432014766872914769886483859941843584147798395233886282629943465305100401699959473535674863104116376088783276211447355823503555124549948276085067741689563873110661477348416690523250260589240454602181096401353080404030942240040562794002831505182468803547244885474249363035003794911199573064685117724392230326718483359160592089541298929403695547218686009028433672140272949590279242767544565229087538682506419718265533447265625E-308 +8.9002954340288050382952850280830720803080710536279549571535070532240533136699902827416253658412922169564329972881508642240450412004961095087673391855710788857483159633461311956177273994589300164418690923387879112481148649462278717435826294074728111548899792461206052704654653331877838137254768887612322151507797616469748312392903229639555222064716284760085950376076635686059283276995610532508090292847390030874458088963848505267944945551074405673522446628090551065636305927777421442173454949119120583724027146419684700671396340860446390694932933567679328853074140765133551395676535228621313638840155159745089627469066535904365993373993253795187066138763662365207595964580844991295221893640391023627043851663437987909720757232455434770912461317493580281734466552734375E-308 +8.900295434028806520492222551822704610014449658292072052332914896198346590427037784768147176467547812855942082196128003613739127537649302288737470253390468082072703995691765574519866970393143599979320595885734222314270773117224063912732648569700271849843141183540797089974310753282929969919699267476928988663859737317035135800409003895830318042286402953374582953977296771988368716829559679046777256525988693061020080339991894707134972620823275217756655242289471164700711024909989655217013548337912774622132295469683338104650052117848090920436219280270616080806188448008112558800566301036493760709448977094849872607000758982239914612937023544878446065343696671832118417908259785880739109443737201805686734428054589918055848553508913045817507736501283943653106689453125E-308 +1.7800590868057610076590570056166144160616142107255909914307014106448106627339980565483250731682584433912865994576301728448090082400992219017534678371142157771496631926692262391235454798917860032883738184677575822496229729892455743487165258814945622309779958492241210540930930666375567627450953777522464430301559523293949662478580645927911044412943256952017190075215327137211856655399122106501618058569478006174891617792769701053588989110214881134704489325618110213127261185555484288434690989823824116744805429283936940134279268172089278138986586713535865770614828153026710279135307045724262727768031031949017925493813307180873198674798650759037413227752732473041519192916168998259044378728078204725408770332687597581944151446491086954182492263498716056346893310546875E-307 +1.780059086805761304098444510364540922002889931658414410466582979239669318085407556953629435293509562571188416439225600722747825507529860457747494050678093616414540799138353114903973394078628719995864119177146844462854154623444812782546529713940054369968628236708159417994862150656585993983939853495385797732771947463407027160081800779166063608457280590674916590795459354397673743365911935809355451305197738612204016067998378941426994524164655043551331048457894232940142204981997931043402709667582554924426459093936667620930010423569618184087243856054123216161237689601622511760113260207298752141889795418969974521400151796447982922587404708975689213068739334366423683581651957176147821888747440361137346885610917983611169710701782609163501547300256788730621337890625E-307 +3.560118173611522015318114011233228832123228421451181982861402821289621325467996113096650146336516886782573198915260345689618016480198443803506935674228431554299326385338452478247090959783572006576747636935515164499245945978491148697433051762989124461955991698448242108186186133275113525490190755504492886060311904658789932495716129185582208882588651390403438015043065427442371331079824421300323611713895601234978323558553940210717797822042976226940897865123622042625452237111096857686938197964764823348961085856787388026855853634417855627797317342707173154122965630605342055827061409144852545553606206389803585098762661436174639734959730151807482645550546494608303838583233799651808875745615640945081754066537519516388830289298217390836498452699743211269378662109375E-307 +3.56011817361152260819688902072908184400577986331682882093316595847933863617081511390725887058701912514237683287845120144549565101505972091549498810135618723282908159827670622980794678815725743999172823835429368892570830924688962556509305942788010873993725647341631883598972430131317198796787970699077159546554389492681405432016360155833212721691456118134983318159091870879534748673182387161871090261039547722440803213599675788285398904832931008710266209691578846588028440996399586208680541933516510984885291818787333524186002084713923636817448771210824643232247537920324502352022652041459750428377959083793994904280030359289596584517480941795137842613747866873284736716330391435229564377749488072227469377122183596722233942140356521832700309460051357746124267578125E-307 +7.12023634722304403063622802246645766424645684290236396572280564257924265093599222619330029267303377356514639783052069137923603296039688760701387134845686310859865277067690495649418191956714401315349527387103032899849189195698229739486610352597824892391198339689648421637237226655022705098038151100898577212062380931757986499143225837116441776517730278080687603008613085488474266215964884260064722342779120246995664711710788042143559564408595245388179573024724408525090447422219371537387639592952964669792217171357477605371170726883571125559463468541434630824593126121068411165412281828970509110721241277960717019752532287234927946991946030361496529110109298921660767716646759930361775149123128189016350813307503903277766057859643478167299690539948642253875732421875E-307 +7.1202363472230452163937780414581636880115597266336576418663319169586772723416302278145177411740382502847536657569024028909913020301194418309899762027123744656581631965534124596158935763145148799834564767085873778514166184937792511301861188557602174798745129468326376719794486026263439759357594139815431909310877898536281086403272031166642544338291223626996663631818374175906949734636477432374218052207909544488160642719935157657079780966586201742053241938315769317605688199279917241736108386703302196977058363757466704837200416942784727363489754242164928646449507584064900470404530408291950085675591816758798980856006071857919316903496188359027568522749573374656947343266078287045912875549897614445493875424436719344446788428071304366540061892010271549224853515625E-307 +1.42404726944460880612724560449329153284929136858047279314456112851584853018719844523866005853460675471302927956610413827584720659207937752140277426969137262171973055413538099129883638391342880263069905477420606579969837839139645947897322070519564978478239667937929684327447445331004541019607630220179715442412476186351597299828645167423288355303546055616137520601722617097694853243192976852012944468555824049399132942342157608428711912881719049077635914604944881705018089484443874307477527918590592933958443434271495521074234145376714225111892693708286926164918625224213682233082456365794101822144248255592143403950506457446985589398389206072299305822021859784332153543329351986072355029824625637803270162661500780655553211571928695633459938107989728450775146484375E-306 +1.4240472694446090432787556082916327376023119453267315283732663833917354544683260455629035482348076500569507331513804805781982604060238883661979952405424748931316326393106824919231787152629029759966912953417174755702833236987558502260372237711520434959749025893665275343958897205252687951871518827963086381862175579707256217280654406233328508867658244725399332726363674835181389946927295486474843610441581908897632128543987031531415956193317240348410648387663153863521137639855983448347221677340660439395411672751493340967440083388556945472697950848432985729289901516812980094080906081658390017135118363351759796171201214371583863380699237671805513704549914674931389468653215657409182575109979522889098775084887343868889357685614260873308012378402054309844970703125E-306 +2.8480945388892176122544912089865830656985827371609455862891222570316970603743968904773201170692135094260585591322082765516944131841587550428055485393827452434394611082707619825976727678268576052613981095484121315993967567827929189579464414103912995695647933587585936865489489066200908203921526044035943088482495237270319459965729033484657671060709211123227504120344523419538970648638595370402588893711164809879826588468431521685742382576343809815527182920988976341003617896888774861495505583718118586791688686854299104214846829075342845022378538741657385232983725044842736446616491273158820364428849651118428680790101291489397117879677841214459861164404371956866430708665870397214471005964925127560654032532300156131110642314385739126691987621597945690155029296875E-306 +2.848094538889218086557511216583265475204623890653463056746532766783470908936652091125807096469615300113901466302760961156396520812047776732395990481084949786263265278621364983846357430525805951993382590683434951140566647397511700452074447542304086991949805178733055068791779441050537590374303765592617276372435115941451243456130881246665701773531648945079866545272734967036277989385459097294968722088316381779526425708797406306283191238663448069682129677532630772704227527971196689669444335468132087879082334550298668193488016677711389094539590169686597145857980303362596018816181216331678003427023672670351959234240242874316772676139847534361102740909982934986277893730643131481836515021995904577819755016977468773777871537122852174661602475680410861968994140625E-306 +5.696189077778435224508982417973166131397165474321891172578244514063394120748793780954640234138427018852117118264416553103388826368317510085611097078765490486878922216541523965195345535653715210522796219096824263198793513565585837915892882820782599139129586717517187373097897813240181640784305208807188617696499047454063891993145806696931534212141842224645500824068904683907794129727719074080517778742232961975965317693686304337148476515268761963105436584197795268200723579377754972299101116743623717358337737370859820842969365815068569004475707748331477046596745008968547289323298254631764072885769930223685736158020258297879423575935568242891972232880874391373286141733174079442894201192985025512130806506460031226222128462877147825338397524319589138031005859375E-306 +5.69618907777843617311502243316653095040924778130692611349306553356694181787330418225161419293923060022780293260552192231279304162409555346479198096216989957252653055724272996769271486105161190398676518136686990228113329479502340090414889508460817398389961035746611013758355888210107518074860753118523455274487023188290248691226176249333140354706329789015973309054546993407255597877091819458993744417663276355905285141759481261256638247732689613936425935506526154540845505594239337933888867093626417575816466910059733638697603335542277818907918033937319429171596060672519203763236243266335600685404734534070391846848048574863354535227969506872220548181996586997255578746128626296367303004399180915563951003395493754755574307424570434932320495136082172393798828125E-306 +1.139237815555687044901796483594633226279433094864378234515648902812678824149758756190928046827685403770423423652883310620677765273663502017122219415753098097375784443308304793039069107130743042104559243819364852639758702713117167583178576564156519827825917343503437474619579562648036328156861041761437723539299809490812778398629161339386306842428368444929100164813780936781558825945543814816103555748446592395193063538737260867429695303053752392621087316839559053640144715875550994459820223348724743471667547474171964168593873163013713800895141549666295409319349001793709457864659650926352814577153986044737147231604051659575884715187113648578394446576174878274657228346634815888578840238597005102426161301292006245244425692575429565067679504863917827606201171875E-305 +1.13923781555568723462300448663330619008184955626138522269861310671338836357466083645032283858784612004556058652110438446255860832481911069295839619243397991450530611144854599353854297221032238079735303627337398045622665895900468018082977901692163479677992207149322202751671177642021503614972150623704691054897404637658049738245235249866628070941265957803194661810909398681451119575418363891798748883532655271181057028351896252251327649546537922787285187101305230908169101118847867586777773418725283515163293382011946727739520667108455563781583606787463885834319212134503840752647248653267120137080946906814078369369609714972670907045593901374444109636399317399451115749225725259273460600879836183112790200679098750951114861484914086986464099027216434478759765625E-305 +2.27847563111137408980359296718926645255886618972875646903129780562535764829951751238185609365537080754084684730576662124135553054732700403424443883150619619475156888661660958607813821426148608420911848763872970527951740542623433516635715312831303965565183468700687494923915912529607265631372208352287544707859961898162555679725832267877261368485673688985820032962756187356311765189108762963220711149689318479038612707747452173485939060610750478524217463367911810728028943175110198891964044669744948694333509494834392833718774632602742760179028309933259081863869800358741891572931930185270562915430797208947429446320810331915176943037422729715678889315234975654931445669326963177715768047719401020485232260258401249048885138515085913013535900972783565521240234375E-305 +2.2784756311113744692460089732666123801636991125227704453972262134267767271493216729006456771756922400911211730422087689251172166496382213859167923848679598290106122228970919870770859444206447615947060725467479609124533179180093603616595580338432695935598441429864440550334235528404300722994430124740938210979480927531609947649047049973325614188253191560638932362181879736290223915083672778359749776706531054236211405670379250450265529909307584557457037420261046181633820223769573517355554683745056703032658676402389345547904133421691112756316721357492777166863842426900768150529449730653424027416189381362815673873921942994534181409118780274888821927279863479890223149845145051854692120175967236622558040135819750190222972296982817397292819805443286895751953125E-305 +4.5569512622227481796071859343785329051177323794575129380625956112507152965990350247637121873107416150816936946115332424827110610946540080684888776630123923895031377732332191721562764285229721684182369752774594105590348108524686703327143062566260793113036693740137498984783182505921453126274441670457508941571992379632511135945166453575452273697134737797164006592551237471262353037821752592644142229937863695807722541549490434697187812122150095704843492673582362145605788635022039778392808933948989738866701898966878566743754926520548552035805661986651816372773960071748378314586386037054112583086159441789485889264162066383035388607484545943135777863046995130986289133865392635543153609543880204097046452051680249809777027703017182602707180194556713104248046875E-305 +4.556951262222748938492017946533224760327398225045540890794452426853553454298643345801291354351384480182242346084417537850234433299276442771833584769735919658021224445794183974154171888841289523189412145093495921824906635836018720723319116067686539187119688285972888110066847105680860144598886024948187642195896185506321989529809409994665122837650638312127786472436375947258044783016734555671949955341306210847242281134075850090053105981861516911491407484052209236326764044753914703471110936749011340606531735280477869109580826684338222551263344271498555433372768485380153630105889946130684805483237876272563134774784388598906836281823756054977764385455972695978044629969029010370938424035193447324511608027163950038044594459396563479458563961088657379150390625E-305 +9.113902524445496359214371868757065810235464758915025876125191222501430593198070049527424374621483230163387389223066484965422122189308016136977755326024784779006275546466438344312552857045944336836473950554918821118069621704937340665428612513252158622607338748027499796956636501184290625254888334091501788314398475926502227189033290715090454739426947559432801318510247494252470607564350518528828445987572739161544508309898086939437562424430019140968698534716472429121157727004407955678561786789797947773340379793375713348750985304109710407161132397330363274554792014349675662917277207410822516617231888357897177852832413276607077721496909188627155572609399026197257826773078527108630721908776040819409290410336049961955405540603436520541436038911342620849609375E-305 +9.11390252444549787698403589306644952065479645009108178158890485370710690859728669160258270870276896036448469216883507570046886659855288554366716953947183931604244889158836794830834377768257904637882429018699184364981327167203744144663823213537307837423937657194577622013369421136172028919777204989637528439179237101264397905961881998933024567530127662425557294487275189451608956603346911134389991068261242169448456226815170018010621196372303382298281496810441847265352808950782940694222187349802268121306347056095573821916165336867644510252668854299711086674553697076030726021177989226136961096647575254512626954956877719781367256364751210995552877091194539195608925993805802074187684807038689464902321605432790007608918891879312695891712792217731475830078125E-305 +1.822780504889099271842874373751413162047092951783005175225038244500286118639614009905484874924296646032677477844613296993084424437861603227395551065204956955801255109293287668862510571409188867367294790110983764223613924340987468133085722502650431724521467749605499959391327300236858125050977666818300357662879695185300445437806658143018090947885389511886560263702049498850494121512870103705765689197514547832308901661979617387887512484886003828193739706943294485824231545400881591135712357357959589554668075958675142669750197060821942081432226479466072654910958402869935132583455441482164503323446377671579435570566482655321415544299381837725431114521879805239451565354615705421726144381755208163881858082067209992391081108120687304108287207782268524169921875E-304 +1.82278050488909957539680717861328990413095929001821635631778097074142138171945733832051654174055379207289693843376701514009377331971057710873343390789436786320848977831767358966166875553651580927576485803739836872996265433440748828932764642707461567484787531438915524402673884227234405783955440997927505687835847420252879581192376399786604913506025532485111458897455037890321791320669382226877998213652248433889691245363034003602124239274460676459656299362088369453070561790156588138844437469960453624261269411219114764383233067373528902050533770859942217334910739415206145204235597845227392219329515050902525390991375543956273451272950242199110575418238907839121785198761160414837536961407737892980464321086558001521783778375862539178342558443546295166015625E-304 +3.64556100977819854368574874750282632409418590356601035045007648900057223727922801981096974984859329206535495568922659398616884887572320645479110213040991391160251021858657533772502114281837773473458958022196752844722784868197493626617144500530086344904293549921099991878265460047371625010195533363660071532575939037060089087561331628603618189577077902377312052740409899770098824302574020741153137839502909566461780332395923477577502496977200765638747941388658897164846309080176318227142471471591917910933615191735028533950039412164388416286445295893214530982191680573987026516691088296432900664689275534315887114113296531064283108859876367545086222904375961047890313070923141084345228876351041632776371616413441998478216221624137460821657441556453704833984375E-304 +3.6455610097781991507936143572265798082619185800364327126355619414828427634389146766410330834811075841457938768675340302801875466394211542174668678157887357264169795566353471793233375110730316185515297160747967374599253086688149765786552928541492313496957506287783104880534776845446881156791088199585501137567169484050575916238475279957320982701205106497022291779491007578064358264133876445375599642730449686777938249072606800720424847854892135291931259872417673890614112358031317627768887493992090724852253882243822952876646613474705780410106754171988443466982147883041229040847119569045478443865903010180505078198275108791254690254590048439822115083647781567824357039752232082967507392281547578596092864217311600304356755675172507835668511688709259033203125E-304 +7.2911220195563970873714974950056526481883718071320207009001529780011444745584560396219394996971865841307099113784531879723376977514464129095822042608198278232050204371731506754500422856367554694691791604439350568944556973639498725323428900106017268980858709984219998375653092009474325002039106672732014306515187807412017817512266325720723637915415580475462410548081979954019764860514804148230627567900581913292356066479184695515500499395440153127749588277731779432969261816035263645428494294318383582186723038347005706790007882432877683257289059178642906196438336114797405303338217659286580132937855106863177422822659306212856621771975273509017244580875192209578062614184628216869045775270208326555274323282688399695643244324827492164331488311290740966796875E-304 +7.291122019556398301587228714453159616523837160072865425271123882965685526877829353282066166962215168291587753735068060560375093278842308434933735631577471452833959113270694358646675022146063237103059432149593474919850617337629953157310585708298462699391501257556620976106955369089376231358217639917100227513433896810115183247695055991464196540241021299404458355898201515612871652826775289075119928546089937355587649814521360144084969570978427058386251974483534778122822471606263525553777498798418144970450776448764590575329322694941156082021350834397688693396429576608245808169423913809095688773180602036101015639655021758250938050918009687964423016729556313564871407950446416593501478456309515719218572843462320060871351135034501567133702337741851806640625E-304 +1.4582244039112794174742994990011305296376743614264041401800305956002288949116912079243878999394373168261419822756906375944675395502892825819164408521639655646410040874346301350900084571273510938938358320887870113788911394727899745064685780021203453796171741996843999675130618401894865000407821334546402861303037561482403563502453265144144727583083116095092482109616395990803952972102960829646125513580116382658471213295836939103100099879088030625549917655546355886593852363207052729085698858863676716437344607669401141358001576486575536651457811835728581239287667222959481060667643531857316026587571021372635484564531861242571324354395054701803448916175038441915612522836925643373809155054041665311054864656537679939128648864965498432866297662258148193359375E-303 +1.458224403911279660317445742890631923304767432014573085054224776593137105375565870656413233392443033658317550747013612112075018655768461686986747126315494290566791822654138871729335004429212647420611886429918694983970123467525990631462117141659692539878300251511324195221391073817875246271643527983420045502686779362023036649539011198292839308048204259880891671179640303122574330565355057815023985709217987471117529962904272028816993914195685411677250394896706955624564494321252705110755499759683628994090155289752918115065864538988231216404270166879537738679285915321649161633884782761819137754636120407220203127931004351650187610183601937592884603345911262712974281590089283318700295691261903143843714568692464012174270227006900313426740467548370361328125E-303 +2.916448807822558834948598998002261059275348722852808280360061191200457789823382415848775799878874633652283964551381275188935079100578565163832881704327931129282008174869260270180016914254702187787671664177574022757782278945579949012937156004240690759234348399368799935026123680378973000081564266909280572260607512296480712700490653028828945516616623219018496421923279198160790594420592165929225102716023276531694242659167387820620019975817606125109983531109271177318770472641410545817139771772735343287468921533880228271600315297315107330291562367145716247857533444591896212133528706371463205317514204274527096912906372248514264870879010940360689783235007688383122504567385128674761831010808333062210972931307535987825729772993099686573259532451629638671875E-303 +2.91644880782255932063489148578126384660953486402914617010844955318627421075113174131282646678488606731663510149402722422415003731153692337397349425263098858113358364530827774345867000885842529484122377285983738996794024693505198126292423428331938507975660050302264839044278214763575049254328705596684009100537355872404607329907802239658567861609640851976178334235928060624514866113071011563004797141843597494223505992580854405763398782839137082335450078979341391124912898864250541022151099951936725798818031057950583623013172907797646243280854033375907547735857183064329832326776956552363827550927224081444040625586200870330037522036720387518576920669182252542594856318017856663740059138252380628768742913738492802434854045401380062685348093509674072265625E-303 +5.83289761564511766989719799600452211855069744570561656072012238240091557964676483169755159975774926730456792910276255037787015820115713032766576340865586225856401634973852054036003382850940437557534332835514804551556455789115989802587431200848138151846869679873759987005224736075794600016312853381856114452121502459296142540098130605765789103323324643803699284384655839632158118884118433185845020543204655306338848531833477564124003995163521225021996706221854235463754094528282109163427954354547068657493784306776045654320063059463021466058312473429143249571506688918379242426705741274292641063502840854905419382581274449702852974175802188072137956647001537676624500913477025734952366202161666612442194586261507197565145954598619937314651906490325927734375E-303 +5.8328976156451186412697829715625276932190697280582923402168991063725484215022634826256529335697721346332702029880544484483000746230738467479469885052619771622671672906165554869173400177168505896824475457196747799358804938701039625258484685666387701595132010060452967808855642952715009850865741119336801820107471174480921465981560447931713572321928170395235666847185612124902973222614202312600959428368719498844701198516170881152679756567827416467090015795868278224982579772850108204430219990387345159763606211590116724602634581559529248656170806675181509547171436612865966465355391310472765510185444816288808125117240174066007504407344077503715384133836450508518971263603571332748011827650476125753748582747698560486970809080276012537069618701934814453125E-303 +1.16657952312902353397943959920090442371013948914112331214402447648018311592935296633951031995154985346091358582055251007557403164023142606553315268173117245171280326994770410807200676570188087511506866567102960910311291157823197960517486240169627630369373935974751997401044947215158920003262570676371222890424300491859228508019626121153157820664664928760739856876931167926431623776823686637169004108640931061267769706366695512824800799032704245004399341244370847092750818905656421832685590870909413731498756861355209130864012611892604293211662494685828649914301337783675848485341148254858528212700568170981083876516254889940570594835160437614427591329400307535324900182695405146990473240432333322488438917252301439513029190919723987462930381298065185546875E-302 +1.1665795231290237282539565943125055386438139456116584680433798212745096843004526965251305867139544269266540405976108896896600149246147693495893977010523954324534334581233110973834680035433701179364895091439349559871760987740207925051696937133277540319026402012090593561771128590543001970173148223867360364021494234896184293196312089586342714464385634079047133369437122424980594644522840462520191885673743899768940239703234176230535951313565483293418003159173655644996515954570021640886043998077469031952721242318023344920526916311905849731234161335036301909434287322573193293071078262094553102037088963257761625023448034813201500881468815500743076826767290101703794252720714266549602365530095225150749716549539712097394161816055202507413923740386962890625E-302 +2.3331590462580470679588791984018088474202789782822466242880489529603662318587059326790206399030997069218271716411050201511480632804628521310663053634623449034256065398954082161440135314037617502301373313420592182062258231564639592103497248033925526073874787194950399480208989443031784000652514135274244578084860098371845701603925224230631564132932985752147971375386233585286324755364737327433800821728186212253553941273339102564960159806540849000879868248874169418550163781131284366537118174181882746299751372271041826172802522378520858642332498937165729982860267556735169697068229650971705642540113634196216775303250977988114118967032087522885518265880061507064980036539081029398094648086466664497687783450460287902605838183944797492586076259613037109375E-302 +2.333159046258047456507913188625011077287627891223316936086759642549019368600905393050261173427908853853308081195221779379320029849229538699178795402104790864906866916246622194766936007086740235872979018287869911974352197548041585010339387426655508063805280402418118712354225718108600394034629644773472072804298846979236858639262417917268542892877126815809426673887424484996118928904568092504038377134748779953788047940646835246107190262713096658683600631834731128999303190914004328177208799615493806390544248463604668984105383262381169946246832267007260381886857464514638658614215652418910620407417792651552325004689606962640300176293763100148615365353458020340758850544142853309920473106019045030149943309907942419478832363211040501482784748077392578125E-302 +4.666318092516094135917758396803617694840557956564493248576097905920732463717411865358041279806199413843654343282210040302296126560925704262132610726924689806851213079790816432288027062807523500460274662684118436412451646312927918420699449606785105214774957438990079896041797888606356800130502827054848915616972019674369140320785044846126312826586597150429594275077246717057264951072947465486760164345637242450710788254667820512992031961308169800175973649774833883710032756226256873307423634836376549259950274454208365234560504475704171728466499787433145996572053511347033939413645930194341128508022726839243355060650195597622823793406417504577103653176012301412996007307816205879618929617293332899537556690092057580521167636788959498517215251922607421875E-302 +4.66631809251609491301582637725002215457525578244663387217351928509803873720181078610052234685581770770661616239044355875864005969845907739835759080420958172981373383249324438953387201417348047174595803657573982394870439509608317002067877485331101612761056080483623742470845143621720078806925928954694414560859769395847371727852483583453708578575425363161885334777484896999223785780913618500807675426949755990757609588129367049221438052542619331736720126366946225799860638182800865635441759923098761278108849692720933796821076652476233989249366453401452076377371492902927731722843130483782124081483558530310465000937921392528060035258752620029723073070691604068151770108828570661984094621203809006029988661981588483895766472642208100296556949615478515625E-302 +9.33263618503218827183551679360723538968111591312898649715219581184146492743482373071608255961239882768730868656442008060459225312185140852426522145384937961370242615958163286457605412561504700092054932536823687282490329262585583684139889921357021042954991487798015979208359577721271360026100565410969783123394403934873828064157008969225262565317319430085918855015449343411452990214589493097352032869127448490142157650933564102598406392261633960035194729954966776742006551245251374661484726967275309851990054890841673046912100895140834345693299957486629199314410702269406787882729186038868225701604545367848671012130039119524564758681283500915420730635202460282599201461563241175923785923458666579907511338018411516104233527357791899703443050384521484375E-302 +9.3326361850321898260316527545000443091505115648932677443470385701960774744036215722010446937116354154132323247808871175172801193969181547967151816084191634596274676649864887790677440283469609434919160731514796478974087901921663400413575497066220322552211216096724748494169028724344015761385185790938882912171953879169474345570496716690741715715085072632377066955496979399844757156182723700161535085389951198151521917625873409844287610508523866347344025273389245159972127636560173127088351984619752255621769938544186759364215330495246797849873290680290415275474298580585546344568626096756424816296711706062093000187584278505612007051750524005944614614138320813630354021765714132396818924240761801205997732396317696779153294528441620059311389923095703125E-302 +1.86652723700643765436710335872144707793622318262579729943043916236829298548696474614321651192247976553746173731288401612091845062437028170485304429076987592274048523191632657291521082512300940018410986507364737456498065852517116736827977984271404208590998297559603195841671915544254272005220113082193956624678880786974765612831401793845052513063463886017183771003089868682290598042917898619470406573825489698028431530186712820519681278452326792007038945990993355348401310249050274932296945393455061970398010978168334609382420179028166869138659991497325839862882140453881357576545837207773645140320909073569734202426007823904912951736256700183084146127040492056519840292312648235184757184691733315981502267603682303220846705471558379940688610076904296875E-301 +1.8665272370064379652063305509000088618301023129786535488694077140392154948807243144402089387423270830826464649561774235034560238793836309593430363216838326919254935329972977558135488056693921886983832146302959295794817580384332680082715099413244064510442243219344949698833805744868803152277037158187776582434390775833894869114099343338148343143017014526475413391099395879968951431236544740032307017077990239630304383525174681968857522101704773269468805054677849031994425527312034625417670396923950451124353987708837351872843066099049359569974658136058083055094859716117109268913725219351284963259342341212418600037516855701122401410350104801188922922827664162726070804353142826479363784848152360241199546479263539355830658905688324011862277984619140625E-301 +3.7330544740128753087342067174428941558724463652515945988608783247365859709739294922864330238449595310749234746257680322418369012487405634097060885815397518454809704638326531458304216502460188003682197301472947491299613170503423347365595596854280841718199659511920639168334383108850854401044022616438791324935776157394953122566280358769010502612692777203436754200617973736458119608583579723894081314765097939605686306037342564103936255690465358401407789198198671069680262049810054986459389078691012394079602195633666921876484035805633373827731998299465167972576428090776271515309167441554729028064181814713946840485201564780982590347251340036616829225408098411303968058462529647036951436938346663196300453520736460644169341094311675988137722015380859375E-301 +3.733054474012875930412661101800017723660204625957307097738815428078430989761448628880417877484654166165292929912354847006912047758767261918686072643367665383850987065994595511627097611338784377396766429260591859158963516076866536016543019882648812902088448643868989939766761148973760630455407431637555316486878155166778973822819868667629668628603402905295082678219879175993790286247308948006461403415598047926060876705034936393771504420340954653893761010935569806398885105462406925083534079384790090224870797541767470374568613219809871913994931627211616611018971943223421853782745043870256992651868468242483720007503371140224480282070020960237784584565532832545214160870628565295872756969630472048239909295852707871166131781137664802372455596923828125E-301 +7.466108948025750617468413434885788311744892730503189197721756649473171941947858984572866047689919062149846949251536064483673802497481126819412177163079503690961940927665306291660843300492037600736439460294589498259922634100684669473119119370856168343639931902384127833666876621770170880208804523287758264987155231478990624513256071753802100522538555440687350840123594747291623921716715944778816262953019587921137261207468512820787251138093071680281557839639734213936052409962010997291877815738202478815920439126733384375296807161126674765546399659893033594515285618155254303061833488310945805612836362942789368097040312956196518069450268007323365845081619682260793611692505929407390287387669332639260090704147292128833868218862335197627544403076171875E-301 +7.46610894802575186082532220360003544732040925191461419547763085615686197952289725776083575496930833233058585982470969401382409551753452383737214528673533076770197413198919102325419522267756875479353285852118371831792703215373307203308603976529762580417689728773797987953352229794752126091081486327511063297375631033355794764563973733525933725720680581059016535643975835198758057249461789601292280683119609585212175341006987278754300884068190930778752202187113961279777021092481385016706815876958018044974159508353494074913722643961974382798986325442323322203794388644684370756549008774051398530373693648496744001500674228044896056414004192047556916913106566509042832174125713059174551393926094409647981859170541574233226356227532960474491119384765625E-301 +1.493221789605150123493682686977157662348978546100637839544351329894634388389571796914573209537983812429969389850307212896734760499496225363882435432615900738192388185533061258332168660098407520147287892058917899651984526820136933894623823874171233668727986380476825566733375324354034176041760904657551652997431046295798124902651214350760420104507711088137470168024718949458324784343343188955763252590603917584227452241493702564157450227618614336056311567927946842787210481992402199458375563147640495763184087825346676875059361432225334953109279931978606718903057123631050860612366697662189161122567272588557873619408062591239303613890053601464673169016323936452158722338501185881478057477533866527852018140829458425766773643772467039525508880615234375E-300 +1.49322178960515037216506444072000708946408185038292283909552617123137239590457945155216715099386166646611717196494193880276481910350690476747442905734706615354039482639783820465083904453551375095870657170423674366358540643074661440661720795305952516083537945754759597590670445958950425218216297265502212659475126206671158952912794746705186745144136116211803307128795167039751611449892357920258456136623921917042435068201397455750860176813638186155750440437422792255955404218496277003341363175391603608994831901670698814982744528792394876559797265088464664440758877728936874151309801754810279706074738729699348800300134845608979211282800838409511383382621313301808566434825142611834910278785218881929596371834108314846645271245506592094898223876953125E-300 +2.98644357921030024698736537395431532469795709220127567908870265978926877677914359382914641907596762485993877970061442579346952099899245072776487086523180147638477637106612251666433732019681504029457578411783579930396905364027386778924764774834246733745597276095365113346675064870806835208352180931510330599486209259159624980530242870152084020901542217627494033604943789891664956868668637791152650518120783516845490448298740512831490045523722867211262313585589368557442096398480439891675112629528099152636817565069335375011872286445066990621855986395721343780611424726210172122473339532437832224513454517711574723881612518247860722778010720292934633803264787290431744467700237176295611495506773305570403628165891685153354728754493407905101776123046875E-300 +2.9864435792103007443301288814400141789281637007658456781910523424627447918091589031043343019877233329322343439298838776055296382070138095349488581146941323070807896527956764093016780890710275019174131434084734873271708128614932288132344159061190503216707589150951919518134089191790085043643259453100442531895025241334231790582558949341037349028827223242360661425759033407950322289978471584051691227324784383408487013640279491150172035362727637231150088087484558451191080843699255400668272635078320721798966380334139762996548905758478975311959453017692932888151775545787374830261960350962055941214947745939869760060026969121795842256560167681902276676524262660361713286965028522366982055757043776385919274366821662969329054249101318418979644775390625E-300 +5.9728871584206004939747307479086306493959141844025513581774053195785375535582871876582928381519352497198775594012288515869390419979849014555297417304636029527695527421322450333286746403936300805891515682356715986079381072805477355784952954966849346749119455219073022669335012974161367041670436186302066119897241851831924996106048574030416804180308443525498806720988757978332991373733727558230530103624156703369098089659748102566298009104744573442252462717117873711488419279696087978335022525905619830527363513013867075002374457289013398124371197279144268756122284945242034424494667906487566444902690903542314944776322503649572144555602144058586926760652957458086348893540047435259122299101354661114080725633178337030670945750898681581020355224609375E-300 +5.972887158420601488660257762880028357856327401531691356382104684925489583618317806208668603975446665864468687859767755211059276414027619069897716229388264614161579305591352818603356178142055003834826286816946974654341625722986457626468831812238100643341517830190383903626817838358017008728651890620088506379005048266846358116511789868207469805765444648472132285151806681590064457995694316810338245464956876681697402728055898230034407072545527446230017617496911690238216168739851080133654527015664144359793276066827952599309781151695795062391890603538586577630355109157474966052392070192411188242989549187973952012005393824359168451312033536380455335304852532072342657393005704473396411151408755277183854873364332593865810849820263683795928955078125E-300 +1.1945774316841200987949461495817261298791828368805102716354810639157075107116574375316585676303870499439755118802457703173878083995969802911059483460927205905539105484264490066657349280787260161178303136471343197215876214561095471156990590993369869349823891043814604533867002594832273408334087237260413223979448370366384999221209714806083360836061688705099761344197751595666598274746745511646106020724831340673819617931949620513259601820948914688450492543423574742297683855939217595667004505181123966105472702602773415000474891457802679624874239455828853751224456989048406884898933581297513288980538180708462988955264500729914428911120428811717385352130591491617269778708009487051824459820270932222816145126635667406134189150179736316204071044921875E-299 +1.194577431684120297732051552576005671571265480306338271276420936985097916723663561241733720795089333172893737571953551042211855282805523813979543245877652922832315861118270563720671235628411000766965257363389394930868325144597291525293766362447620128668303566038076780725363567671603401745730378124017701275801009653369271623302357973641493961153088929694426457030361336318012891599138863362067649092991375336339480545611179646006881414509105489246003523499382338047643233747970216026730905403132828871958655213365590519861956230339159012478378120707717315526071021831494993210478414038482237648597909837594790402401078764871833690262406707276091067060970506414468531478601140894679282230281751055436770974672866518773162169964052736759185791015625E-299 +2.389154863368240197589892299163452259758365673761020543270962127831415021423314875063317135260774099887951023760491540634775616799193960582211896692185441181107821096852898013331469856157452032235660627294268639443175242912219094231398118198673973869964778208762920906773400518966454681666817447452082644795889674073276999844241942961216672167212337741019952268839550319133319654949349102329221204144966268134763923586389924102651920364189782937690098508684714948459536771187843519133400901036224793221094540520554683000094978291560535924974847891165770750244891397809681376979786716259502657796107636141692597791052900145982885782224085762343477070426118298323453955741601897410364891964054186444563229025327133481226837830035947263240814208984375E-299 +2.38915486336824059546410310515201134314253096061267654255284187397019583344732712248346744159017866634578747514390710208442371056561104762795908649175530584566463172223654112744134247125682200153393051472677878986173665028919458305058753272489524025733660713207615356145072713534320680349146075624803540255160201930673854324660471594728298792230617785938885291406072267263602578319827772672413529818598275067267896109122235929201376282901821097849200704699876467609528646749594043205346181080626565774391731042673118103972391246067831802495675624141543463105214204366298998642095682807696447529719581967518958080480215752974366738052481341455218213412194101282893706295720228178935856446056350211087354194934573303754632433992810547351837158203125E-299 +4.77830972673648039517978459832690451951673134752204108654192425566283004284662975012663427052154819977590204752098308126955123359838792116442379338437088236221564219370579602666293971231490406447132125458853727888635048582443818846279623639734794773992955641752584181354680103793290936333363489490416528959177934814655399968848388592243334433442467548203990453767910063826663930989869820465844240828993253626952784717277984820530384072837956587538019701736942989691907354237568703826680180207244958644218908104110936600018995658312107184994969578233154150048978279561936275395957343251900531559221527228338519558210580029196577156444817152468695414085223659664690791148320379482072978392810837288912645805065426696245367566007189452648162841796875E-299 +4.7783097267364811909282062103040226862850619212253530851056837479403916668946542449669348831803573326915749502878142041688474211312220952559181729835106116913292634444730822548826849425136440030678610294535575797234733005783891661011750654497904805146732142641523071229014542706864136069829215124960708051032040386134770864932094318945659758446123557187777058281214453452720515663965554534482705963719655013453579221824447185840275256580364219569840140939975293521905729349918808641069236216125313154878346208534623620794478249213566360499135124828308692621042840873259799728419136561539289505943916393503791616096043150594873347610496268291043642682438820256578741259144045635787171289211270042217470838986914660750926486798562109470367431640625E-299 +9.5566194534729607903595691966538090390334626950440821730838485113256600856932595002532685410430963995518040950419661625391024671967758423288475867687417647244312843874115920533258794246298081289426425091770745577727009716488763769255924727946958954798591128350516836270936020758658187266672697898083305791835586962931079993769677718448666886688493509640798090753582012765332786197973964093168848165798650725390556943455596964106076814567591317507603940347388597938381470847513740765336036041448991728843781620822187320003799131662421436998993915646630830009795655912387255079191468650380106311844305445667703911642116005839315431288963430493739082817044731932938158229664075896414595678562167457782529161013085339249073513201437890529632568359375E-299 +9.556619453472962381856412420608045372570123842450706170211367495880783333789308489933869766360714665383149900575628408337694842262444190511836345967021223382658526888946164509765369885027288006135722058907115159446946601156778332202350130899580961029346428528304614245802908541372827213965843024992141610206408077226954172986418863789131951689224711437555411656242890690544103132793110906896541192743931002690715844364889437168055051316072843913968028187995058704381145869983761728213847243225062630975669241706924724158895649842713272099827024965661738524208568174651959945683827312307857901188783278700758323219208630118974669522099253658208728536487764051315748251828809127157434257842254008443494167797382932150185297359712421894073486328125E-299 +1.9113238906945921580719138393307618078066925390088164346167697022651320171386519000506537082086192799103608190083932325078204934393551684657695173537483529448862568774823184106651758849259616257885285018354149115545401943297752753851184945589391790959718225670103367254187204151731637453334539579616661158367117392586215998753935543689733377337698701928159618150716402553066557239594792818633769633159730145078111388691119392821215362913518263501520788069477719587676294169502748153067207208289798345768756324164437464000759826332484287399798783129326166001959131182477451015838293730076021262368861089133540782328423201167863086257792686098747816563408946386587631645932815179282919135712433491556505832202617067849814702640287578105926513671875E-298 +1.911323890694592476371282484121609074514024768490141234042273499176156666757861697986773953272142933076629980115125681667538968452488838102367269193404244676531705377789232901953073977005457601227144411781423031889389320231355666440470026179916192205869285705660922849160581708274565442793168604998428322041281615445390834597283772757826390337844942287511082331248578138108820626558622181379308238548786200538143168872977887433611010263214568782793605637599011740876229173996752345642769448645012526195133848341384944831779129968542654419965404993132347704841713634930391989136765462461571580237756655740151664643841726023794933904419850731641745707297552810263149650365761825431486851568450801688698833559476586430037059471942484378814697265625E-298 +3.822647781389184316143827678661523615613385078017632869233539404530264034277303800101307416417238559820721638016786465015640986878710336931539034707496705889772513754964636821330351769851923251577057003670829823109080388659550550770236989117878358191943645134020673450837440830346327490666907915923332231673423478517243199750787108737946675467539740385631923630143280510613311447918958563726753926631946029015622277738223878564243072582703652700304157613895543917535258833900549630613441441657959669153751264832887492800151965266496857479959756625865233200391826236495490203167658746015204252473772217826708156465684640233572617251558537219749563312681789277317526329186563035856583827142486698311301166440523413569962940528057515621185302734375E-298 +3.82264778138918495274256496824321814902804953698028246808454699835231333351572339597354790654428586615325996023025136333507793690497767620473453838680848935306341075557846580390614795401091520245428882356284606377877864046271133288094005235983238441173857141132184569832116341654913088558633720999685664408256323089078166919456754551565278067568988457502216466249715627621764125311724436275861647709757240107628633774595577486722202052642913756558721127519802348175245834799350469128553889729002505239026769668276988966355825993708530883993080998626469540968342726986078397827353092492314316047551331148030332928768345204758986780883970146328349141459510562052629930073152365086297370313690160337739766711895317286007411894388496875762939453125E-298 +7.64529556277836863228765535732304723122677015603526573846707880906052806855460760020261483283447711964144327603357293003128197375742067386307806941499341177954502750992927364266070353970384650315411400734165964621816077731910110154047397823575671638388729026804134690167488166069265498133381583184666446334684695703448639950157421747589335093507948077126384726028656102122662289583791712745350785326389205803124455547644775712848614516540730540060831522779108783507051766780109926122688288331591933830750252966577498560030393053299371495991951325173046640078365247299098040633531749203040850494754443565341631293136928046714523450311707443949912662536357855463505265837312607171316765428497339662260233288104682713992588105611503124237060546875E-298 +7.6452955627783699054851299364864362980560990739605649361690939967046266670314467919470958130885717323065199204605027266701558738099553524094690767736169787061268215111569316078122959080218304049085776471256921275575572809254226657618801047196647688234771428226436913966423268330982617711726744199937132881651264617815633383891350910313055613513797691500443293249943125524352825062344887255172329541951448021525726754919115497344440410528582751311744225503960469635049166959870093825710777945800501047805353933655397793271165198741706176798616199725293908193668545397215679565470618498462863209510266229606066585753669040951797356176794029265669828291902112410525986014630473017259474062738032067547953342379063457201482378877699375152587890625E-298 +1.52905911255567372645753107146460944624535403120705314769341576181210561371092152004052296656689542392828865520671458600625639475148413477261561388299868235590900550198585472853214070794076930063082280146833192924363215546382022030809479564715134327677745805360826938033497633213853099626676316636933289266936939140689727990031484349517867018701589615425276945205731220424532457916758342549070157065277841160624891109528955142569722903308146108012166304555821756701410353356021985224537657666318386766150050593315499712006078610659874299198390265034609328015673049459819608126706349840608170098950888713068326258627385609342904690062341488789982532507271571092701053167462521434263353085699467932452046657620936542798517621122300624847412109375E-297 +1.5290591125556739810970259872972872596112198147921129872338187993409253334062893583894191626177143464613039840921005453340311747619910704818938153547233957412253643022313863215624591816043660809817155294251384255115114561850845331523760209439329537646954285645287382793284653666196523542345348839987426576330252923563126676778270182062611122702759538300088658649988625104870565012468977451034465908390289604305145350983823099468888082105716550262348845100792093927009833391974018765142155589160100209561070786731079558654233039748341235359723239945058781638733709079443135913094123699692572641902053245921213317150733808190359471235358805853133965658380422482105197202926094603451894812547606413509590668475812691440296475775539875030517578125E-297 +3.0581182251113474529150621429292188924907080624141062953868315236242112274218430400810459331337908478565773104134291720125127895029682695452312277659973647118180110039717094570642814158815386012616456029366638584872643109276404406161895912943026865535549161072165387606699526642770619925335263327386657853387387828137945598006296869903573403740317923085055389041146244084906491583351668509814031413055568232124978221905791028513944580661629221602433260911164351340282070671204397044907531533263677353230010118663099942401215722131974859839678053006921865603134609891963921625341269968121634019790177742613665251725477121868580938012468297757996506501454314218540210633492504286852670617139893586490409331524187308559703524224460124969482421875E-297 +3.058118225111347962194051974594574519222439629584225974467637598681850666812578716778838325235428692922607968184201090668062349523982140963787630709446791482450728604462772643124918363208732161963431058850276851023022912370169066304752041887865907529390857129057476558656930733239304708469069767997485315266050584712625335355654036412522224540551907660017731729997725020974113002493795490206893181678057920861029070196764619893777616421143310052469769020158418785401966678394803753028431117832020041912214157346215911730846607949668247071944647989011756327746741815888627182618824739938514528380410649184242663430146761638071894247071761170626793131676084496421039440585218920690378962509521282701918133695162538288059295155107975006103515625E-297 +6.116236450222694905830124285858437784981416124828212590773663047248422454843686080162091866267581695713154620826858344025025579005936539090462455531994729423636022007943418914128562831763077202523291205873327716974528621855280881232379182588605373107109832214433077521339905328554123985067052665477331570677477565627589119601259373980714680748063584617011077808229248816981298316670333701962806282611113646424995644381158205702788916132325844320486652182232870268056414134240879408981506306652735470646002023732619988480243144426394971967935610601384373120626921978392784325068253993624326803958035548522733050345095424373716187602493659551599301300290862843708042126698500857370534123427978717298081866304837461711940704844892024993896484375E-297 +6.11623645022269592438810394918914903844487925916845194893527519736370133362515743355767665047085738584521593636840218133612469904796428192757526141889358296490145720892554528624983672641746432392686211770055370204604582474033813260950408377573181505878171425811495311731386146647860941693813953599497063053210116942525067071130807282504444908110381532003546345999545004194822600498759098041378636335611584172205814039352923978755523284228662010493953804031683757080393335678960750605686223566404008382442831469243182346169321589933649414388929597802351265549348363177725436523764947987702905676082129836848532686029352327614378849414352234125358626335216899284207888117043784138075792501904256540383626739032507657611859031021595001220703125E-297 +1.223247290044538981166024857171687556996283224965642518154732609449684490968737216032418373253516339142630924165371668805005115801187307818092491106398945884727204401588683782825712566352615440504658241174665543394905724371056176246475836517721074621421966442886615504267981065710824797013410533095466314135495513125517823920251874796142936149612716923402215561645849763396259663334066740392561256522222729284999128876231641140557783226465168864097330436446574053611282826848175881796301261330547094129200404746523997696048628885278994393587122120276874624125384395678556865013650798724865360791607109704546610069019084874743237520498731910319860260058172568741608425339700171474106824685595743459616373260967492342388140968978404998779296875E-296 +1.22324729004453918487762078983782980768897585183369038978705503947274026672503148671153533009417147716904318727368043626722493980959285638551505228377871659298029144178510905724996734528349286478537242354011074040920916494806762652190081675514636301175634285162299062346277229329572188338762790719899412610642023388505013414226161456500888981622076306400709269199909000838964520099751819608275727267122316834441162807870584795751104656845732402098790760806336751416078667135792150121137244713280801676488566293848636469233864317986729882877785919560470253109869672635545087304752989597540581135216425967369706537205870465522875769882870446825071725267043379856841577623408756827615158500380851308076725347806501531522371806204319000244140625E-296 +2.44649458008907796233204971434337511399256644993128503630946521889936898193747443206483674650703267828526184833074333761001023160237461563618498221279789176945440880317736756565142513270523088100931648234933108678981144874211235249295167303544214924284393288577323100853596213142164959402682106619093262827099102625103564784050374959228587229922543384680443112329169952679251932666813348078512251304444545856999825775246328228111556645293033772819466087289314810722256565369635176359260252266109418825840080949304799539209725777055798878717424424055374924825076879135711373002730159744973072158321421940909322013803816974948647504099746382063972052011634513748321685067940034294821364937119148691923274652193498468477628193795680999755859375E-296 +2.4464945800890783697552415796756596153779517036673807795741100789454805334500629734230706601883429543380863745473608725344498796191857127710301045675574331859605828835702181144999346905669857295707448470802214808184183298961352530438016335102927260235126857032459812469255445865914437667752558143979882522128404677701002682845232291300177796324415261280141853839981800167792904019950363921655145453424463366888232561574116959150220931369146480419758152161267350283215733427158430024227448942656160335297713258769727293846772863597345976575557183912094050621973934527109017460950597919508116227043285193473941307441174093104575153976574089365014345053408675971368315524681751365523031700076170261615345069561300306304474361240863800048828125E-296 +4.8929891601781559246640994286867502279851328998625700726189304377987379638749488641296734930140653565705236966614866752200204632047492312723699644255957835389088176063547351313028502654104617620186329646986621735796228974842247049859033460708842984856878657715464620170719242628432991880536421323818652565419820525020712956810074991845717445984508676936088622465833990535850386533362669615702450260888909171399965155049265645622311329058606754563893217457862962144451313073927035271852050453221883765168016189860959907841945155411159775743484884811074984965015375827142274600546031948994614431664284388181864402760763394989729500819949276412794410402326902749664337013588006858964272987423829738384654930438699693695525638759136199951171875E-296 +4.892989160178156739510483159351319230755903407334761559148220157890961066900125946846141320376685908676172749094721745068899759238371425542060209135114866371921165767140436228999869381133971459141489694160442961636836659792270506087603267020585452047025371406491962493851089173182887533550511628795976504425680935540200536569046458260035559264883052256028370767996360033558580803990072784331029090684892673377646512314823391830044186273829296083951630432253470056643146685431686004845489788531232067059542651753945458769354572719469195315111436782418810124394786905421803492190119583901623245408657038694788261488234818620915030795314817873002869010681735194273663104936350273104606340015234052323069013912260061260894872248172760009765625E-296 +9.785978320356311849328198857373500455970265799725140145237860875597475927749897728259346986028130713141047393322973350440040926409498462544739928851191567077817635212709470262605700530820923524037265929397324347159245794968449409971806692141768596971375731543092924034143848525686598376107284264763730513083964105004142591362014998369143489196901735387217724493166798107170077306672533923140490052177781834279993031009853129124462265811721350912778643491572592428890262614785407054370410090644376753033603237972191981568389031082231955148696976962214996993003075165428454920109206389798922886332856877636372880552152678997945900163989855282558882080465380549932867402717601371792854597484765947676930986087739938739105127751827239990234375E-296 +9.78597832035631347902096631870263846151180681466952311829644031578192213380025189369228264075337181735234549818944349013779951847674285108412041827022973274384233153428087245799973876226794291828297938832088592327367331958454101217520653404117090409405074281298392498770217834636577506710102325759195300885136187108040107313809291652007111852976610451205674153599272006711716160798014556866205818136978534675529302462964678366008837254765859216790326086450694011328629337086337200969097957706246413411908530350789091753870914543893839063022287356483762024878957381084360698438023916780324649081731407738957652297646963724183006159062963574600573802136347038854732620987270054620921268003046810464613802782452012252178974449634552001953125E-296 +1.957195664071262369865639771474700091194053159945028029047572175119495185549979545651869397205626142628209478664594670088008185281899692508947985770238313415563527042541894052521140106164184704807453185879464869431849158993689881994361338428353719394275146308618584806828769705137319675221456852952746102616792821000828518272402999673828697839380347077443544898633359621434015461334506784628098010435556366855998606201970625824892453162344270182555728698314518485778052522957081410874082018128875350606720647594438396313677806216446391029739395392442999398600615033085690984021841277959784577266571375527274576110430535799589180032797971056511776416093076109986573480543520274358570919496953189535386197217547987747821025550365447998046875E-295 +1.95719566407126269580419326374052769230236136293390462365928806315638442676005037873845652815067436347046909963788869802755990369534857021682408365404594654876846630685617449159994775245358858365659587766417718465473466391690820243504130680823418081881014856259678499754043566927315501342020465151839060177027237421608021462761858330401422370595322090241134830719854401342343232159602911373241163627395706935105860492592935673201767450953171843358065217290138802265725867417267440193819591541249282682381706070157818350774182908778767812604457471296752404975791476216872139687604783356064929816346281547791530459529392744836601231812592714920114760427269407770946524197454010924184253600609362092922760556490402450435794889926910400390625E-295 +3.91439132814252473973127954294940018238810631989005605809514435023899037109995909130373879441125228525641895732918934017601637056379938501789597154047662683112705408508378810504228021232836940961490637175892973886369831798737976398872267685670743878855029261723716961365753941027463935044291370590549220523358564200165703654480599934765739567876069415488708979726671924286803092266901356925619602087111273371199721240394125164978490632468854036511145739662903697155610504591416282174816403625775070121344129518887679262735561243289278205947879078488599879720123006617138196804368255591956915453314275105454915222086107159917836006559594211302355283218615221997314696108704054871714183899390637907077239443509597549564205110073089599609375E-295 +3.9143913281425253916083865274810553846047227258678092473185761263127688535201007574769130563013487269409381992757773960551198073906971404336481673080918930975369326137123489831998955049071771673131917553283543693094693278338164048700826136164683616376202971251935699950808713385463100268404093030367812035405447484321604292552371666080284474119064418048226966143970880268468646431920582274648232725479141387021172098518587134640353490190634368671613043458027760453145173483453488038763918308249856536476341214031563670154836581755753562520891494259350480995158295243374427937520956671212985963269256309558306091905878548967320246362518542984022952085453881554189304839490802184836850720121872418584552111298080490087158977985382080078125E-295 +7.8287826562850494794625590858988003647762126397801121161902887004779807421999181826074775888225045705128379146583786803520327411275987700357919430809532536622541081701675762100845604246567388192298127435178594777273966359747595279774453537134148775771005852344743392273150788205492787008858274118109844104671712840033140730896119986953147913575213883097741795945334384857360618453380271385123920417422254674239944248078825032995698126493770807302229147932580739431122100918283256434963280725155014024268825903777535852547112248657855641189575815697719975944024601323427639360873651118391383090662855021090983044417221431983567201311918842260471056643723044399462939221740810974342836779878127581415447888701919509912841022014617919921875E-295 +7.828782656285050783216773054962110769209445451735618494637152252625537707040201514953826112602697453881876398551554792110239614781394280867296334616183786195073865227424697966399791009814354334626383510656708738618938655667632809740165227232936723275240594250387139990161742677092620053680818606073562407081089496864320858510474333216056894823812883609645393228794176053693729286384116454929646545095828277404234419703717426928070698038126873734322608691605552090629034696690697607752783661649971307295268242806312734030967316351150712504178298851870096199031659048674885587504191334242597192653851261911661218381175709793464049272503708596804590417090776310837860967898160436967370144024374483716910422259616098017431795597076416015625E-295 +1.5657565312570098958925118171797600729552425279560224232380577400955961484399836365214955177645009141025675829316757360704065482255197540071583886161906507324508216340335152420169120849313477638459625487035718955454793271949519055954890707426829755154201170468948678454630157641098557401771654823621968820934342568006628146179223997390629582715042776619548359189066876971472123690676054277024784083484450934847988849615765006599139625298754161460445829586516147886224420183656651286992656145031002804853765180755507170509422449731571128237915163139543995188804920264685527872174730223678276618132571004218196608883444286396713440262383768452094211328744608879892587844348162194868567355975625516283089577740383901982568204402923583984375E-294 +1.565756531257010156643354610992422153841889090347123698927430450525107541408040302990765222520539490776375279710310958422047922956278856173459266923236757239014773045484939593279958201962870866925276702131341747723787731133526561948033045446587344655048118850077427998032348535418524010736163721214712481416217899372864171702094866643211378964762576721929078645758835210738745857276823290985929309019165655480846883940743485385614139607625374746864521738321110418125806939338139521550556732329994261459053648561262546806193463270230142500835659770374019239806331809734977117500838266848519438530770252382332243676235141958692809854500741719360918083418155262167572193579632087393474028804874896743382084451923219603486359119415283203125E-294 +3.131513062514019791785023634359520145910485055912044846476115480191192296879967273042991035529001828205135165863351472140813096451039508014316777232381301464901643268067030484033824169862695527691925097407143791090958654389903811190978141485365951030840234093789735690926031528219711480354330964724393764186868513601325629235844799478125916543008555323909671837813375394294424738135210855404956816696890186969597769923153001319827925059750832292089165917303229577244884036731330257398531229006200560970753036151101434101884489946314225647583032627908799037760984052937105574434946044735655323626514200843639321776688857279342688052476753690418842265748921775978517568869632438973713471195125103256617915548076780396513640880584716796875E-294 +3.13151306251402031328670922198484430768377818069424739785486090105021508281608060598153044504107898155275055942062191684409584591255771234691853384647351447802954609096987918655991640392574173385055340426268349544757546226705312389606609089317468931009623770015485599606469707083704802147232744242942496283243579874572834340418973328642275792952515344385815729151767042147749171455364658197185861803833131096169376788148697077122827921525074949372904347664222083625161387867627904310111346465998852291810729712252509361238692654046028500167131954074803847961266361946995423500167653369703887706154050476466448735247028391738561970900148343872183616683631052433514438715926417478694805760974979348676416890384643920697271823883056640625E-294 +6.26302612502803958357004726871904029182097011182408969295223096038238459375993454608598207105800365641027033172670294428162619290207901602863355446476260292980328653613406096806764833972539105538385019481428758218191730877980762238195628297073190206168046818757947138185206305643942296070866192944878752837373702720265125847168959895625183308601711064781934367562675078858884947627042171080991363339378037393919553984630600263965585011950166458417833183460645915448976807346266051479706245801240112194150607230220286820376897989262845129516606525581759807552196810587421114886989208947131064725302840168727864355337771455868537610495350738083768453149784355195703513773926487794742694239025020651323583109615356079302728176116943359375E-294 +6.2630261250280406265734184439696886153675563613884947957097218021004301656321612119630608900821579631055011188412438336881916918251154246938370676929470289560590921819397583731198328078514834677011068085253669908951509245341062477921321817863493786201924754003097119921293941416740960429446548848588499256648715974914566868083794665728455158590503068877163145830353408429549834291072931639437172360766626219233875357629739415424565584305014989874580869532844416725032277573525580862022269293199770458362145942450501872247738530809205700033426390814960769592253272389399084700033530673940777541230810095293289747049405678347712394180029668774436723336726210486702887743185283495738961152194995869735283378076928784139454364776611328125E-294 +1.25260522500560791671400945374380805836419402236481793859044619207647691875198690921719641421160073128205406634534058885632523858041580320572671089295252058596065730722681219361352966794507821107677003896285751643638346175596152447639125659414638041233609363751589427637041261128788459214173238588975750567474740544053025169433791979125036661720342212956386873512535015771776989525408434216198272667875607478783910796926120052793117002390033291683566636692129183089795361469253210295941249160248022438830121446044057364075379597852569025903321305116351961510439362117484222977397841789426212945060568033745572871067554291173707522099070147616753690629956871039140702754785297558948538847805004130264716621923071215860545635223388671875E-293 +1.2526052250056081253146836887939377230735112722776989591419443604200860331264322423926121780164315926211002237682487667376383383650230849387674135385894057912118184363879516746239665615702966935402213617050733981790301849068212495584264363572698757240384950800619423984258788283348192085889309769717699851329743194982913373616758933145691031718100613775432629166070681685909966858214586327887434472153325243846775071525947883084913116861002997974916173906568883345006455514705116172404453858639954091672429188490100374449547706161841140006685278162992153918450654477879816940006706134788155508246162019058657949409881135669542478836005933754887344667345242097340577548637056699147792230438999173947056675615385756827890872955322265625E-293 +2.5052104500112158334280189074876161167283880447296358771808923841529538375039738184343928284232014625641081326906811777126504771608316064114534217859050411719213146144536243872270593358901564221535400779257150328727669235119230489527825131882927608246721872750317885527408252225757691842834647717795150113494948108810605033886758395825007332344068442591277374702507003154355397905081686843239654533575121495756782159385224010558623400478006658336713327338425836617959072293850642059188249832049604487766024289208811472815075919570513805180664261023270392302087872423496844595479568357885242589012113606749114574213510858234741504419814029523350738125991374207828140550957059511789707769561000826052943324384614243172109127044677734375E-293 +2.505210450011216250629367377587875446147022544555397918283888720840172066252864484785224356032863185242200447536497533475276676730046169877534827077178811582423636872775903349247933123140593387080442723410146796358060369813642499116852872714539751448076990160123884796851757656669638417177861953943539970265948638996582674723351786629138206343620122755086525833214136337181993371642917265577486894430665048769355014305189576616982623372200599594983234781313776669001291102941023234480890771727990818334485837698020074889909541232368228001337055632598430783690130895575963388001341226957631101649232403811731589881976227133908495767201186750977468933469048419468115509727411339829558446087799834789411335123077151365578174591064453125E-293 +5.010420900022431666856037814975232233456776089459271754361784768305907675007947636868785656846402925128216265381362355425300954321663212822906843571810082343842629228907248774454118671780312844307080155851430065745533847023846097905565026376585521649344374550063577105481650445151538368566929543559030022698989621762121006777351679165001466468813688518255474940501400630871079581016337368647930906715024299151356431877044802111724680095601331667342665467685167323591814458770128411837649966409920897553204857841762294563015183914102761036132852204654078460417574484699368919095913671577048517802422721349822914842702171646948300883962805904670147625198274841565628110191411902357941553912200165210588664876922848634421825408935546875E-293 +5.01042090002243250125873475517575089229404508911079583656777744168034413250572896957044871206572637048440089507299506695055335346009233975506965415435762316484727374555180669849586624628118677416088544682029359271612073962728499823370574542907950289615398032024776959370351531333927683435572390788707994053189727799316534944670357325827641268724024551017305166642827267436398674328583453115497378886133009753871002861037915323396524674440119918996646956262755333800258220588204646896178154345598163666897167539604014977981908246473645600267411126519686156738026179115192677600268245391526220329846480762346317976395245426781699153440237350195493786693809683893623101945482267965911689217559966957882267024615430273115634918212890625E-293 +1.002084180004486333371207562995046446691355217891854350872356953661181535001589527373757131369280585025643253076272471085060190864332642564581368714362016468768525845781449754890823734356062568861416031170286013149106769404769219581113005275317104329868874910012715421096330089030307673713385908711806004539797924352424201355470335833000293293762737703651094988100280126174215916203267473729586181343004859830271286375408960422344936019120266333468533093537033464718362891754025682367529993281984179510640971568352458912603036782820552207226570440930815692083514896939873783819182734315409703560484544269964582968540434329389660176792561180934029525039654968313125622038282380471588310782440033042117732975384569726884365081787109375E-292 +1.00208418000448650025174695103515017845880901782215916731355548833606882650114579391408974241314527409688017901459901339011067069201846795101393083087152463296945474911036133969917324925623735483217708936405871854322414792545699964674114908581590057923079606404955391874070306266785536687114478157741598810637945559863306988934071465165528253744804910203461033328565453487279734865716690623099475777226601950774200572207583064679304934888023983799329391252551066760051644117640929379235630869119632733379433507920802995596381649294729120053482225303937231347605235823038535520053649078305244065969296152469263595279049085356339830688047470039098757338761936778724620389096453593182337843511993391576453404923086054623126983642578125E-292 +2.00416836000897266674241512599009289338271043578370870174471390732236307000317905474751426273856117005128650615254494217012038172866528512916273742872403293753705169156289950978164746871212513772283206234057202629821353880953843916222601055063420865973774982002543084219266017806061534742677181742361200907959584870484840271094067166600058658752547540730218997620056025234843183240653494745917236268600971966054257275081792084468987203824053266693706618707406692943672578350805136473505998656396835902128194313670491782520607356564110441445314088186163138416702979387974756763836546863081940712096908853992916593708086865877932035358512236186805905007930993662625124407656476094317662156488006608423546595076913945376873016357421875E-292 +2.0041683600089730005034939020703003569176180356443183346271109766721376530022915878281794848262905481937603580291980267802213413840369359020278616617430492659389094982207226793983464985124747096643541787281174370864482958509139992934822981716318011584615921280991078374814061253357107337422895631548319762127589111972661397786814293033105650748960982040692206665713090697455946973143338124619895155445320390154840114441516612935860986977604796759865878250510213352010328823528185875847126173823926546675886701584160599119276329858945824010696445060787446269521047164607707104010729815661048813193859230493852719055809817071267966137609494007819751467752387355744924077819290718636467568702398678315290680984617210924625396728515625E-292 +4.0083367200179453334848302519801857867654208715674174034894278146447261400063581094950285254771223401025730123050898843402407634573305702583254748574480658750741033831257990195632949374242502754456641246811440525964270776190768783244520211012684173194754996400508616843853203561212306948535436348472240181591916974096968054218813433320011731750509508146043799524011205046968636648130698949183447253720194393210851455016358416893797440764810653338741323741481338588734515670161027294701199731279367180425638862734098356504121471312822088289062817637232627683340595877594951352767309372616388142419381770798583318741617373175586407071702447237361181001586198732525024881531295218863532431297601321684709319015382789075374603271484375E-292 +4.008336720017946001006987804140600713835236071288636669254221953344275306004583175656358969652581096387520716058396053560442682768073871804055723323486098531877818996441445358796692997024949419328708357456234874172896591701827998586964596343263602316923184256198215674962812250671421467484579126309663952425517822394532279557362858606621130149792196408138441333142618139491189394628667624923979031089064078030968022888303322587172197395520959351973175650102042670402065764705637175169425234764785309335177340316832119823855265971789164802139289012157489253904209432921541420802145963132209762638771846098770543811161963414253593227521898801563950293550477471148984815563858143727293513740479735663058136196923442184925079345703125E-292 +8.016673440035890666969660503960371573530841743134834806978855629289452280012716218990057050954244680205146024610179768680481526914661140516650949714896131750148206766251598039126589874848500550891328249362288105192854155238153756648904042202536834638950999280101723368770640712242461389707087269694448036318383394819393610843762686664002346350101901629208759904802241009393727329626139789836689450744038878642170291003271683378759488152962130667748264748296267717746903134032205458940239946255873436085127772546819671300824294262564417657812563527446525536668119175518990270553461874523277628483876354159716663748323474635117281414340489447472236200317239746505004976306259043772706486259520264336941863803076557815074920654296875E-292 +8.01667344003589200201397560828120142767047214257727333850844390668855061200916635131271793930516219277504143211679210712088536553614774360811144664697219706375563799288289071759338599404989883865741671491246974834579318340365599717392919268652720463384636851239643134992562450134284293496915825261932790485103564478906455911472571721324226029958439281627688266628523627898237878925733524984795806217812815606193604577660664517434439479104191870394635130020408534080413152941127435033885046952957061867035468063366423964771053194357832960427857802431497850780841886584308284160429192626441952527754369219754108762232392682850718645504379760312790058710095494229796963112771628745458702748095947132611627239384688436985015869140625E-292 +1.603334688007178133393932100792074314706168348626966961395771125857890456002543243798011410190848936041029204922035953736096305382932228103330189942979226350029641353250319607825317974969700110178265649872457621038570831047630751329780808440507366927790199856020344673754128142448492277941417453938889607263676678963878722168752537332800469270020380325841751980960448201878745465925227957967337890148807775728434058200654336675751897630592426133549652949659253543549380626806441091788047989251174687217025554509363934260164858852512883531562512705489305107333623835103798054110692374904655525696775270831943332749664694927023456282868097889494447240063447949301000995261251808754541297251904052867388372760615311563014984130859375E-291 +1.60333468800717840040279512165624028553409442851545466770168878133771012240183327026254358786103243855500828642335842142417707310722954872162228932939443941275112759857657814351867719880997976773148334298249394966915863668073119943478583853730544092676927370247928626998512490026856858699383165052386558097020712895781291182294514344264845205991687856325537653325704725579647575785146704996959161243562563121238720915532132903486887895820838374078927026004081706816082630588225487006777009390591412373407093612673284792954210638871566592085571560486299570156168377316861656832085838525288390505550873843950821752446478536570143729100875952062558011742019098845959392622554325749091740549619189426522325447876937687397003173828125E-291 +3.20666937601435626678786420158414862941233669725393392279154225171578091200508648759602282038169787208205840984407190747219261076586445620666037988595845270005928270650063921565063594993940022035653129974491524207714166209526150265956161688101473385558039971204068934750825628489698455588283490787777921452735335792775744433750507466560093854004076065168350396192089640375749093185045591593467578029761555145686811640130867335150379526118485226709930589931850708709876125361288218357609597850234937443405110901872786852032971770502576706312502541097861021466724767020759610822138474980931105139355054166388666549932938985404691256573619577898889448012689589860200199052250361750908259450380810573477674552123062312602996826171875E-291 +3.2066693760143568008055902433124805710681888570309093354033775626754202448036665405250871757220648771100165728467168428483541462144590974432445786587888788255022551971531562870373543976199595354629666859649878993383172733614623988695716770746108818535385474049585725399702498005371371739876633010477311619404142579156258236458902868852969041198337571265107530665140945115929515157029340999391832248712512624247744183106426580697377579164167674815785405200816341363216526117645097401355401878118282474681418722534656958590842127774313318417114312097259914031233675463372331366417167705057678101110174768790164350489295707314028745820175190412511602348403819769191878524510865149818348109923837885304465089575387537479400634765625E-291 +6.4133387520287125335757284031682972588246733945078678455830845034315618240101729751920456407633957441641168196881438149443852215317289124133207597719169054001185654130012784313012718998788004407130625994898304841542833241905230053191232337620294677111607994240813786950165125697939691117656698157555584290547067158555148886750101493312018770800815213033670079238417928075149818637009118318693515605952311029137362328026173467030075905223697045341986117986370141741975225072257643671521919570046987488681022180374557370406594354100515341262500508219572204293344953404151922164427694996186221027871010833277733309986587797080938251314723915579777889602537917972040039810450072350181651890076162114695534910424612462520599365234375E-291 +6.413338752028713601611180486624961142136377714061818670806755125350840489607333081050174351444129754220033145693433685696708292428918194886489157317577757651004510394306312574074708795239919070925933371929975798676634546722924797739143354149221763707077094809917145079940499601074274347975326602095462323880828515831251647291780573770593808239667514253021506133028189023185903031405868199878366449742502524849548836621285316139475515832833534963157081040163268272643305223529019480271080375623656494936283744506931391718168425554862663683422862419451982806246735092674466273283433541011535620222034953758032870097859141462805749164035038082502320469680763953838375704902173029963669621984767577060893017915077507495880126953125E-291 +1.2826677504057425067151456806336594517649346789015735691166169006863123648020345950384091281526791488328233639376287629888770443063457824826641519543833810800237130826002556862602543799757600881426125198979660968308566648381046010638246467524058935422321598848162757390033025139587938223531339631511116858109413431711029777350020298662403754160163042606734015847683585615029963727401823663738703121190462205827472465605234693406015181044739409068397223597274028348395045014451528734304383914009397497736204436074911474081318870820103068252500101643914440858668990680830384432885538999237244205574202166655546661997317559416187650262944783115955577920507583594408007962090014470036330378015232422939106982084922492504119873046875E-290 +1.282667750405742720322236097324992228427275542812363734161351025070168097921466616210034870288825950844006629138686737139341658485783638977297831463515551530200902078861262514814941759047983814185186674385995159735326909344584959547828670829844352741415418961983429015988099920214854869595065320419092464776165703166250329458356114754118761647933502850604301226605637804637180606281173639975673289948500504969909767324257063227895103166566706992631416208032653654528661044705803896054216075124731298987256748901386278343633685110972532736684572483890396561249347018534893254656686708202307124044406990751606574019571828292561149832807007616500464093936152790767675140980434605992733924396953515412178603583015501499176025390625E-290 +2.565335500811485013430291361267318903529869357803147138233233801372624729604069190076818256305358297665646727875257525977754088612691564965328303908766762160047426165200511372520508759951520176285225039795932193661713329676209202127649293504811787084464319769632551478006605027917587644706267926302223371621882686342205955470004059732480750832032608521346803169536717123005992745480364732747740624238092441165494493121046938681203036208947881813679444719454805669679009002890305746860876782801879499547240887214982294816263774164020613650500020328782888171733798136166076886577107799847448841114840433331109332399463511883237530052588956623191115584101516718881601592418002894007266075603046484587821396416984498500823974609375E-290 +2.56533550081148544064447219464998445685455108562472746832270205014033619584293323242006974057765190168801325827737347427868331697156727795459566292703110306040180415772252502962988351809596762837037334877199031947065381868916991909565734165968870548283083792396685803197619984042970973919013064083818492955233140633250065891671222950823752329586700570120860245321127560927436121256234727995134657989700100993981953464851412645579020633313341398526283241606530730905732208941160779210843215024946259797451349780277255668726737022194506547336914496778079312249869403706978650931337341640461424808881398150321314803914365658512229966561401523300092818787230558153535028196086921198546784879390703082435720716603100299835205078125E-290 +5.13067100162297002686058272253463780705973871560629427646646760274524945920813838015363651261071659533129345575051505195550817722538312993065660781753352432009485233040102274504101751990304035257045007959186438732342665935241840425529858700962357416892863953926510295601321005583517528941253585260444674324376537268441191094000811946496150166406521704269360633907343424601198549096072946549548124847618488233098898624209387736240607241789576362735888943890961133935801800578061149372175356560375899909448177442996458963252754832804122730100004065756577634346759627233215377315421559969489768222968086666221866479892702376647506010517791324638223116820303343776320318483600578801453215120609296917564279283396899700164794921875E-290 +5.1306710016229708812889443892999689137091021712494549366454041002806723916858664648401394811553038033760265165547469485573666339431345559091913258540622061208036083154450500592597670361919352567407466975439806389413076373783398381913146833193774109656616758479337160639523996808594194783802612816763698591046628126650013178334244590164750465917340114024172049064225512185487224251246945599026931597940020198796390692970282529115804126662668279705256648321306146181146441788232155842168643004989251959490269956055451133745347404438901309467382899355615862449973880741395730186267468328092284961776279630064262960782873131702445993312280304660018563757446111630707005639217384239709356975878140616487144143320620059967041015625E-290 +1.02613420032459400537211654450692756141194774312125885529329352054904989184162767603072730252214331906625869115010301039110163544507662598613132156350670486401897046608020454900820350398060807051409001591837287746468533187048368085105971740192471483378572790785302059120264201116703505788250717052088934864875307453688238218800162389299230033281304340853872126781468684920239709819214589309909624969523697646619779724841877547248121448357915272547177788778192226787160360115612229874435071312075179981889635488599291792650550966560824546020000813151315526869351925446643075463084311993897953644593617333244373295978540475329501202103558264927644623364060668755264063696720115760290643024121859383512855856679379940032958984375E-289 +1.0261342003245941762577888778599937827418204342498909873290808200561344783371732929680278962310607606752053033109493897114733267886269111818382651708124412241607216630890100118519534072383870513481493395087961277882615274756679676382629366638754821931323351695867432127904799361718838956760522563352739718209325625330002635666848918032950093183468022804834409812845102437097444850249389119805386319588004039759278138594056505823160825332533655941051329664261229236229288357646431168433728600997850391898053991211090226749069480887780261893476579871123172489994776148279146037253493665618456992355255926012852592156574626340489198662456060932003712751489222326141401127843476847941871395175628123297428828664124011993408203125E-289 +2.0522684006491880107442330890138551228238954862425177105865870410980997836832553520614546050442866381325173823002060207822032708901532519722626431270134097280379409321604090980164070079612161410281800318367457549293706637409673617021194348038494296675714558157060411824052840223340701157650143410417786972975061490737647643760032477859846006656260868170774425356293736984047941963842917861981924993904739529323955944968375509449624289671583054509435557755638445357432072023122445974887014262415035996377927097719858358530110193312164909204000162630263105373870385089328615092616862398779590728918723466648874659195708095065900240420711652985528924672812133751052812739344023152058128604824371876702571171335875988006591796875E-289 +2.052268400649188352515577755719987565483640868499781974658161640112268956674346585936055792462121521350410606621898779422946653577253822363676530341624882448321443326178020023703906814476774102696298679017592255576523054951335935276525873327750964386264670339173486425580959872343767791352104512670547943641865125066000527133369783606590018636693604560966881962569020487419488970049877823961077263917600807951855627718811301164632165066506731188210265932852245847245857671529286233686745720199570078379610798242218045349813896177556052378695315974224634497998955229655829207450698733123691398471051185202570518431314925268097839732491212186400742550297844465228280225568695369588374279035125624659485765732824802398681640625E-289 +4.104536801298376021488466178027710245647790972485035421173174082196199567366510704122909210088573276265034764600412041564406541780306503944525286254026819456075881864320818196032814015922432282056360063673491509858741327481934723404238869607698859335142911631412082364810568044668140231530028682083557394595012298147529528752006495571969201331252173634154885071258747396809588392768583572396384998780947905864791188993675101889924857934316610901887111551127689071486414404624489194977402852483007199275585419543971671706022038662432981840800032526052621074774077017865723018523372479755918145783744693329774931839141619013180048084142330597105784934562426750210562547868804630411625720964874375340514234267175197601318359375E-289 +4.10453680129837670503115551143997513096728173699956394931632328022453791334869317187211158492424304270082121324379755884589330715450764472735306068324976489664288665235604004740781362895354820539259735803518451115304610990267187055305174665550192877252934067834697285116191974468753558270420902534109588728373025013200105426673956721318003727338720912193376392513804097483897794009975564792215452783520161590371125543762260232926433013301346237642053186570449169449171534305857246737349144039914015675922159648443609069962779235511210475739063194844926899599791045931165841490139746624738279694210237040514103686262985053619567946498242437280148510059568893045656045113739073917674855807025124931897153146564960479736328125E-289 +8.20907360259675204297693235605542049129558194497007084234634816439239913473302140824581842017714655253006952920082408312881308356061300788905057250805363891215176372864163639206562803184486456411272012734698301971748265496386944680847773921539771867028582326282416472962113608933628046306005736416711478919002459629505905750401299114393840266250434726830977014251749479361917678553716714479276999756189581172958237798735020377984971586863322180377422310225537814297282880924897838995480570496601439855117083908794334341204407732486596368160006505210524214954815403573144603704674495951183629156748938665954986367828323802636009616828466119421156986912485350042112509573760926082325144192974875068102846853435039520263671875E-289 +8.2090736025967534100623110228799502619345634739991278986326465604490758266973863437442231698484860854016424264875951176917866143090152894547061213664995297932857733047120800948156272579070964107851947160703690223060922198053437411061034933110038575450586813566939457023238394893750711654084180506821917745674605002640021085334791344263600745467744182438675278502760819496779558801995112958443090556704032318074225108752452046585286602660269247528410637314089833889834306861171449347469828807982803135184431929688721813992555847102242095147812638968985379919958209186233168298027949324947655938842047408102820737252597010723913589299648487456029702011913778609131209022747814783534971161405024986379430629312992095947265625E-289 +1.64181472051935040859538647121108409825911638899401416846926963287847982694660428164916368403542931050601390584016481662576261671212260157781011450161072778243035274572832727841312560636897291282254402546939660394349653099277388936169554784307954373405716465256483294592422721786725609261201147283342295783800491925901181150080259822878768053250086945366195402850349895872383535710743342895855399951237916234591647559747004075596994317372664436075484462045107562859456576184979567799096114099320287971023416781758866868240881546497319273632001301042104842990963080714628920740934899190236725831349787733190997273565664760527201923365693223884231397382497070008422501914752185216465028838594975013620569370687007904052734375E-288 +1.6418147205193506820124622045759900523869126947998255797265293120898151653394772687488446339696972170803284852975190235383573228618030578909412242732999059586571546609424160189631254515814192821570389432140738044612184439610687482212206986622007715090117362713387891404647678978750142330816836101364383549134921000528004217066958268852720149093548836487735055700552163899355911760399022591688618111340806463614845021750490409317057320532053849505682127462817966777966861372234289869493965761596560627036886385937744362798511169420448419029562527793797075983991641837246633659605589864989531187768409481620564147450519402144782717859929697491205940402382755721826241804549562956706994232281004997275886125862598419189453125E-288 +3.2836294410387008171907729424221681965182327779880283369385392657569596538932085632983273680708586210120278116803296332515252334242452031556202290032214555648607054914566545568262512127379458256450880509387932078869930619855477787233910956861590874681143293051296658918484544357345121852240229456668459156760098385180236230016051964575753610650017389073239080570069979174476707142148668579171079990247583246918329511949400815119398863474532887215096892409021512571891315236995913559819222819864057594204683356351773373648176309299463854726400260208420968598192616142925784148186979838047345166269957546638199454713132952105440384673138644776846279476499414001684500382950437043293005767718995002724113874137401580810546875E-288 +3.283629441038701364024924409151980104773825389599651159453058624179630330678954537497689267939394434160656970595038047076714645723606115781882448546599811917314309321884832037926250903162838564314077886428147608922436887922137496442441397324401543018023472542677578280929535795750028466163367220272876709826984200105600843413391653770544029818709767297547011140110432779871182352079804518337723622268161292722969004350098081863411464106410769901136425492563593355593372274446857973898793152319312125407377277187548872559702233884089683805912505558759415196798328367449326731921117972997906237553681896324112829490103880428956543571985939498241188080476551144365248360909912591341398846456200999455177225172519683837890625E-288 +6.567258882077401634381545884844336393036465555976056673877078531513919307786417126596654736141717242024055623360659266503050466848490406311240458006442911129721410982913309113652502425475891651290176101877586415773986123971095557446782191372318174936228658610259331783696908871469024370448045891333691831352019677036047246003210392915150722130003477814647816114013995834895341428429733715834215998049516649383665902389880163023879772694906577443019378481804302514378263047399182711963844563972811518840936671270354674729635261859892770945280052041684193719638523228585156829637395967609469033253991509327639890942626590421088076934627728955369255895299882800336900076590087408658601153543799000544822774827480316162109375E-288 +6.56725888207740272804984881830396020954765077919930231890611724835926066135790907499537853587878886832131394119007609415342929144721223156376489709319962383462861864376966407585250180632567712862815577285629521784487377584427499288488279464880308603604694508535515656185907159150005693232673444054575341965396840021120168682678330754108805963741953459509402228022086555974236470415960903667544724453632258544593800870019616372682292821282153980227285098512718671118674454889371594779758630463862425081475455437509774511940446776817936761182501111751883039359665673489865346384223594599581247510736379264822565898020776085791308714397187899648237616095310228873049672181982518268279769291240199891035445034503936767578125E-288 +1.313451776415480326876309176968867278607293111195211334775415706302783861557283425319330947228343448404811124672131853300610093369698081262248091601288582225944282196582661822730500485095178330258035220375517283154797224794219111489356438274463634987245731722051866356739381774293804874089609178266738366270403935407209449200642078583030144426000695562929563222802799166979068285685946743166843199609903329876733180477976032604775954538981315488603875696360860502875652609479836542392768912794562303768187334254070934945927052371978554189056010408336838743927704645717031365927479193521893806650798301865527978188525318084217615386925545791073851179059976560067380015318017481731720230708759800108964554965496063232421875E-287 +1.31345177641548054560996976366079204190953015583986046378122344967185213227158181499907570717575777366426278823801521883068585828944244631275297941863992476692572372875393281517050036126513542572563115457125904356897475516885499857697655892976061720720938901707103131237181431830001138646534688810915068393079368004224033736535666150821761192748390691901880445604417311194847294083192180733508944890726451708918760174003923274536458564256430796045457019702543734223734890977874318955951726092772485016295091087501954902388089355363587352236500222350376607871933134697973069276844718919916249502147275852964513179604155217158261742879437579929647523219062045774609934436396503653655953858248039978207089006900787353515625E-287 +2.62690355283096065375261835393773455721458622239042266955083141260556772311456685063866189445668689680962224934426370660122018673939616252449618320257716445188856439316532364546100097019035666051607044075103456630959444958843822297871287654892726997449146344410373271347876354858760974817921835653347673254080787081441889840128415716606028885200139112585912644560559833395813657137189348633368639921980665975346636095595206520955190907796263097720775139272172100575130521895967308478553782558912460753637466850814186989185410474395710837811202081667367748785540929143406273185495838704378761330159660373105595637705063616843523077385109158214770235811995312013476003063603496346344046141751960021792910993099212646484375E-287 +2.6269035528309610912199395273215840838190603116797209275624468993437042645431636299981514143515155473285255764760304376613717165788848926255059588372798495338514474575078656303410007225302708514512623091425180871379495103377099971539531178595212344144187780341420626247436286366000227729306937762183013678615873600844806747307133230164352238549678138380376089120883462238969458816638436146701788978145290341783752034800784654907291712851286159209091403940508746844746978195574863791190345218554497003259018217500390980477617871072717470447300044470075321574386626939594613855368943783983249900429455170592902635920831043431652348575887515985929504643812409154921986887279300730731190771649607995641417801380157470703125E-287 +5.2538071056619213075052367078754691144291724447808453391016628252111354462291337012773237889133737936192444986885274132024403734787923250489923664051543289037771287863306472909220019403807133210321408815020691326191888991768764459574257530978545399489829268882074654269575270971752194963584367130669534650816157416288377968025683143321205777040027822517182528912111966679162731427437869726673727984396133195069327219119041304191038181559252619544155027854434420115026104379193461695710756511782492150727493370162837397837082094879142167562240416333473549757108185828681254637099167740875752266031932074621119127541012723368704615477021831642954047162399062402695200612720699269268809228350392004358582198619842529296875E-287 +5.253807105661922182439879054643168167638120623359441855124893798687408529086327259996302828703031094657051152952060875322743433157769785251011917674559699067702894915015731260682001445060541702902524618285036174275899020675419994307906235719042468828837556068284125249487257273200045545861387552436602735723174720168961349461426646032870447709935627676075217824176692447793891763327687229340357795629058068356750406960156930981458342570257231841818280788101749368949395639114972758238069043710899400651803643500078196095523574214543494089460008894015064314877325387918922771073788756796649980085891034118580527184166208686330469715177503197185900928762481830984397377455860146146238154329921599128283560276031494140625E-287 +1.0507614211323842615010473415750938228858344889561690678203325650422270892458267402554647577826747587238488997377054826404880746957584650097984732810308657807554257572661294581844003880761426642064281763004138265238377798353752891914851506195709079897965853776414930853915054194350438992716873426133906930163231483257675593605136628664241155408005564503436505782422393335832546285487573945334745596879226639013865443823808260838207636311850523908831005570886884023005220875838692339142151302356498430145498674032567479567416418975828433512448083266694709951421637165736250927419833548175150453206386414924223825508202544673740923095404366328590809432479812480539040122544139853853761845670078400871716439723968505859375E-286 +1.050761421132384436487975810928633633527624124671888371024978759737481705817265451999260565740606218931410230590412175064548686631553957050202383534911939813540578983003146252136400289012108340580504923657007234855179804135083998861581247143808493765767511213656825049897451454640009109172277510487320547144634944033792269892285329206574089541987125535215043564835338489558778352665537445868071559125811613671350081392031386196291668514051446368363656157620349873789879127822994551647613808742179880130360728700015639219104714842908698817892001778803012862975465077583784554214757751359329996017178206823716105436833241737266093943035500639437180185752496366196879475491172029229247630865984319825656712055206298828125E-286 +2.101522842264768523002094683150187645771668977912338135640665130084454178491653480510929515565349517447697799475410965280976149391516930019596946562061731561510851514532258916368800776152285328412856352600827653047675559670750578382970301239141815979593170755282986170783010838870087798543374685226781386032646296651535118721027325732848231081601112900687301156484478667166509257097514789066949119375845327802773088764761652167641527262370104781766201114177376804601044175167738467828430260471299686029099734806513495913483283795165686702489616653338941990284327433147250185483966709635030090641277282984844765101640508934748184619080873265718161886495962496107808024508827970770752369134015680174343287944793701171875E-286 +2.10152284226476887297595162185726726705524824934377674204995751947496341163453090399852113148121243786282046118082435012909737326310791410040476706982387962708115796600629250427280057802421668116100984731401446971035960827016799772316249428761698753153502242731365009979490290928001821834455502097464109428926988806758453978457065841314817908397425107043008712967067697911755670533107489173614311825162322734270016278406277239258333702810289273672731231524069974757975825564598910329522761748435976026072145740003127843820942968581739763578400355760602572595093015516756910842951550271865999203435641364743221087366648347453218788607100127887436037150499273239375895098234405845849526173196863965131342411041259765625E-286 +4.20304568452953704600418936630037529154333795582467627128133026016890835698330696102185903113069903489539559895082193056195229878303386003919389312412346312302170302906451783273760155230457065682571270520165530609535111934150115676594060247828363195918634151056597234156602167774017559708674937045356277206529259330307023744205465146569646216320222580137460231296895733433301851419502957813389823875169065560554617752952330433528305452474020956353240222835475360920208835033547693565686052094259937205819946961302699182696656759033137340497923330667788398056865486629450037096793341927006018128255456596968953020328101786949636923816174653143632377299192499221561604901765594154150473826803136034868657588958740234375E-286 +4.2030456845295377459519032437145345341104964986875534840999150389499268232690618079970422629624248757256409223616487002581947465262158282008095341396477592541623159320125850085456011560484333623220196946280289394207192165403359954463249885752339750630700448546273001995898058185600364366891100419492821885785397761351690795691413168262963581679485021408601742593413539582351134106621497834722862365032464546854003255681255447851666740562057854734546246304813994951595165112919782065904552349687195205214429148000625568764188593716347952715680071152120514519018603103351382168590310054373199840687128272948644217473329669490643757721420025577487207430099854647875179019646881169169905234639372793026268482208251953125E-286 +8.4060913690590740920083787326007505830866759116493525425626605203378167139666139220437180622613980697907911979016438611239045975660677200783877862482469262460434060581290356654752031046091413136514254104033106121907022386830023135318812049565672639183726830211319446831320433554803511941734987409071255441305851866061404748841093029313929243264044516027492046259379146686660370283900591562677964775033813112110923550590466086705661090494804191270648044567095072184041767006709538713137210418851987441163989392260539836539331351806627468099584666133557679611373097325890007419358668385401203625651091319393790604065620357389927384763234930628726475459838499844312320980353118830830094765360627206973731517791748046875E-286 +8.406091369059075491903806487429069068220992997375106968199830077899853646538123615994084525924849751451281844723297400516389493052431656401619068279295518508324631864025170017091202312096866724644039389256057878841438433080671990892649977150467950126140089709254600399179611637120072873378220083898564377157079552270338159138282633652592716335897004281720348518682707916470226821324299566944572473006492909370800651136251089570333348112411570946909249260962798990319033022583956413180910469937439041042885829600125113752837718743269590543136014230424102903803720620670276433718062010874639968137425654589728843494665933898128751544284005115497441486019970929575035803929376233833981046927874558605253696441650390625E-286 +1.6812182738118148184016757465201501166173351823298705085125321040675633427933227844087436124522796139581582395803287722247809195132135440156775572496493852492086812116258071330950406209218282627302850820806621224381404477366004627063762409913134527836745366042263889366264086710960702388346997481814251088261170373212280949768218605862785848652808903205498409251875829337332074056780118312535592955006762622422184710118093217341132218098960838254129608913419014436808353401341907742627442083770397488232797878452107967307866270361325493619916933226711535922274619465178001483871733677080240725130218263878758120813124071477985476952646986125745295091967699968862464196070623766166018953072125441394746303558349609375E-285 +1.681218273811815098380761297485813813644198599475021393639966015579970729307624723198816905184969950290256368944659480103277898610486331280323813655859103701664926372805034003418240462419373344928807877851211575768287686616134398178529995430093590025228017941850920079835922327424014574675644016779712875431415910454067631827656526730518543267179400856344069703736541583294045364264859913388914494601298581874160130227250217914066669622482314189381849852192559798063806604516791282636182093987487808208577165920025022750567543748653918108627202846084820580760744124134055286743612402174927993627485130917945768698933186779625750308856801023099488297203994185915007160785875246766796209385574911721050739288330078125E-285 +3.362436547623629636803351493040300233234670364659741017025064208135126685586645568817487224904559227916316479160657544449561839026427088031355114499298770498417362423251614266190081241843656525460570164161324244876280895473200925412752481982626905567349073208452777873252817342192140477669399496362850217652234074642456189953643721172557169730561780641099681850375165867466414811356023662507118591001352524484436942023618643468226443619792167650825921782683802887361670680268381548525488416754079497646559575690421593461573254072265098723983386645342307184454923893035600296774346735416048145026043652775751624162624814295597095390529397225149059018393539993772492839214124753233203790614425088278949260711669921875E-285 +3.36243654762363019676152259497162762728839719895004278727993203115994145861524944639763381036993990058051273788931896020655579722097266256064762731171820740332985274561006800683648092483874668985761575570242315153657537323226879635705999086018718005045603588370184015967184465484802914935128803355942575086283182090813526365531305346103708653435880171268813940747308316658809072852971982677782898920259716374832026045450043582813333924496462837876369970438511959612761320903358256527236418797497561641715433184005004550113508749730783621725440569216964116152148824826811057348722480434985598725497026183589153739786637355925150061771360204619897659440798837183001432157175049353359241877114982344210147857666015625E-285 +6.72487309524725927360670298608060046646934072931948203405012841627025337117329113763497444980911845583263295832131508889912367805285417606271022899859754099683472484650322853238016248368731305092114032832264848975256179094640185082550496396525381113469814641690555574650563468438428095533879899272570043530446814928491237990728744234511433946112356128219936370075033173493282962271204732501423718200270504896887388404723728693645288723958433530165184356536760577472334136053676309705097683350815899529311915138084318692314650814453019744796677329068461436890984778607120059354869347083209629005208730555150324832524962859119419078105879445029811803678707998754498567842824950646640758122885017655789852142333984375E-285 +6.7248730952472603935230451899432552545767943979000855745598640623198829172304988927952676207398798011610254757786379204131115944419453251212952546234364148066597054912201360136729618496774933797152315114048463030731507464645375927141199817203743601009120717674036803193436893096960582987025760671188515017256636418162705273106261069220741730687176034253762788149461663331761814570594396535556579784051943274966405209090008716562666784899292567575273994087702391922552264180671651305447283759499512328343086636801000910022701749946156724345088113843392823230429764965362211469744496086997119745099405236717830747957327471185030012354272040923979531888159767436600286431435009870671848375422996468842029571533203125E-285 +1.34497461904945185472134059721612009329386814586389640681002568325405067423465822752699488996182369116652659166426301777982473561057083521254204579971950819936694496930064570647603249673746261018422806566452969795051235818928037016510099279305076222693962928338111114930112693687685619106775979854514008706089362985698247598145748846902286789222471225643987274015006634698656592454240946500284743640054100979377477680944745738729057744791686706033036871307352115494466827210735261941019536670163179905862383027616863738462930162890603948959335465813692287378196955721424011870973869416641925801041746111030064966504992571823883815621175889005962360735741599750899713568564990129328151624577003531157970428466796875E-284 +1.3449746190494520787046090379886510509153588795800171149119728124639765834460997785590535241479759602322050951557275840826223188883890650242590509246872829613319410982440272027345923699354986759430463022809692606146301492929075185428239963440748720201824143534807360638687378619392116597405152134237703003451327283632541054621252213844148346137435206850752557629892332666352362914118879307111315956810388654993281041818001743312533356979858513515054798817540478384510452836134330261089456751899902465668617327360200182004540349989231344869017622768678564646085952993072442293948899217399423949019881047343566149591465494237006002470854408184795906377631953487320057286287001974134369675084599293768405914306640625E-284 +2.6899492380989037094426811944322401865877362917277928136200513665081013484693164550539897799236473823330531833285260355596494712211416704250840915994390163987338899386012914129520649934749252203684561313290593959010247163785607403302019855861015244538792585667622222986022538737537123821355195970902801741217872597139649519629149769380457357844494245128797454803001326939731318490848189300056948728010820195875495536188949147745811548958337341206607374261470423098893365442147052388203907334032635981172476605523372747692586032578120789791867093162738457475639391144284802374194773883328385160208349222206012993300998514364776763124235177801192472147148319950179942713712998025865630324915400706231594085693359375E-284 +2.689949238098904157409218075977302101830717759160034229823945624927953166892199557118107048295951920464410190311455168165244637776778130048518101849374565922663882196488054405469184739870997351886092604561938521229260298585815037085647992688149744040364828706961472127737475723878423319481030426847540600690265456726508210924250442768829669227487041370150511525978466533270472582823775861422263191362077730998656208363600348662506671395971702703010959763508095676902090567226866052217891350379980493133723465472040036400908069997846268973803524553735712929217190598614488458789779843479884789803976209468713229918293098847401200494170881636959181275526390697464011457257400394826873935016919858753681182861328125E-284 +5.379898476197807418885362388864480373175472583455585627240102733016202696938632910107979559847294764666106366657052071119298942442283340850168183198878032797467779877202582825904129986949850440736912262658118791802049432757121480660403971172203048907758517133524444597204507747507424764271039194180560348243574519427929903925829953876091471568898849025759490960600265387946263698169637860011389745602164039175099107237789829549162309791667468241321474852294084619778673088429410477640781466806527196234495321104674549538517206515624157958373418632547691495127878228856960474838954776665677032041669844441202598660199702872955352624847035560238494429429663990035988542742599605173126064983080141246318817138671875E-284 +5.37989847619780831481843615195460420366143551832006845964789124985590633378439911423621409659190384092882038062291033633048927555355626009703620369874913184532776439297610881093836947974199470377218520912387704245852059717163007417129598537629948808072965741392294425547495144775684663896206085369508120138053091345301642184850088553765933845497408274030102305195693306654094516564755172284452638272415546199731241672720069732501334279194340540602191952701619135380418113445373210443578270075996098626744693094408007280181613999569253794760704910747142585843438119722897691757955968695976957960795241893742645983658619769480240098834176327391836255105278139492802291451480078965374787003383971750736236572265625E-284 +1.075979695239561483777072477772896074635094516691117125448020546603240539387726582021595911969458952933221273331410414223859788488456668170033636639775606559493555975440516565180825997389970088147382452531623758360409886551424296132080794234440609781551703426704888919440901549501484952854207838836112069648714903885585980785165990775218294313779769805151898192120053077589252739633927572002277949120432807835019821447557965909832461958333493648264294970458816923955734617685882095528156293361305439246899064220934909907703441303124831591674683726509538299025575645771392094967790955333135406408333968888240519732039940574591070524969407112047698885885932798007197708548519921034625212996616028249263763427734375E-283 +1.07597969523956166296368723039092084073228710366401369192957824997118126675687982284724281931838076818576407612458206726609785511071125201940724073974982636906555287859522176218767389594839894075443704182477540849170411943432601483425919707525989761614593148278458885109499028955136932779241217073901624027610618269060328436970017710753186769099481654806020461039138661330818903312951034456890527654483109239946248334544013946500266855838868108120438390540323827076083622689074642088715654015199219725348938618881601456036322799913850758952140982149428517168687623944579538351591193739195391592159048378748529196731723953896048019766835265478367251021055627898560458290296015793074957400676794350147247314453125E-283 +2.15195939047912296755414495554579214927018903338223425089604109320648107877545316404319182393891790586644254666282082844771957697691333634006727327955121311898711195088103313036165199477994017629476490506324751672081977310284859226416158846888121956310340685340977783888180309900296990570841567767222413929742980777117196157033198155043658862755953961030379638424010615517850547926785514400455589824086561567003964289511593181966492391666698729652858994091763384791146923537176419105631258672261087849379812844186981981540688260624966318334936745301907659805115129154278418993558191066627081281666793777648103946407988114918214104993881422409539777177186559601439541709703984206925042599323205649852752685546875E-283 +2.1519593904791233259273744607818416814645742073280273838591564999423625335137596456944856386367615363715281522491641345321957102214225040388144814794996527381311057571904435243753477918967978815088740836495508169834082388686520296685183941505197952322918629655691777021899805791027386555848243414780324805522123653812065687394003542150637353819896330961204092207827732266163780662590206891378105530896621847989249666908802789300053371167773621624087678108064765415216724537814928417743130803039843945069787723776320291207264559982770151790428196429885703433737524788915907670318238747839078318431809675749705839346344790779209603953367053095673450204211125579712091658059203158614991480135358870029449462890625E-283 +4.3039187809582459351082899110915842985403780667644685017920821864129621575509063280863836478778358117328850933256416568954391539538266726801345465591024262379742239017620662607233039895598803525895298101264950334416395462056971845283231769377624391262068137068195556777636061980059398114168313553444482785948596155423439231406639631008731772551190792206075927684802123103570109585357102880091117964817312313400792857902318636393298478333339745930571798818352676958229384707435283821126251734452217569875962568837396396308137652124993263666987349060381531961023025830855683798711638213325416256333358755529620789281597622983642820998776284481907955435437311920287908341940796841385008519864641129970550537109375E-283 +4.303918780958246651854748921563683362929148414656054767718312999884725067027519291388971277273523072743056304498328269064391420442845008077628962958999305476262211514380887048750695583793595763017748167299101633966816477737304059337036788301039590464583725931138355404379961158205477311169648682956064961104424730762413137478800708430127470763979266192240818441565546453232756132518041378275621106179324369597849933381760557860010674233554724324817535621612953083043344907562985683548626160607968789013957544755264058241452911996554030358085639285977140686747504957783181534063647749567815663686361935149941167869268958155841920790673410619134690040842225115942418331611840631722998296027071774005889892578125E-283 +8.607837561916491870216579822183168597080756133528937003584164372825924315101812656172767295755671623465770186651283313790878307907653345360269093118204852475948447803524132521446607979119760705179059620252990066883279092411394369056646353875524878252413627413639111355527212396011879622833662710688896557189719231084687846281327926201746354510238158441215185536960424620714021917071420576018223592963462462680158571580463727278659695666667949186114359763670535391645876941487056764225250346890443513975192513767479279261627530424998652733397469812076306392204605166171136759742327642665083251266671751105924157856319524596728564199755256896381591087087462384057581668388159368277001703972928225994110107421875E-283 +8.60783756191649330370949784312736672585829682931210953543662599976945013405503858277794255454704614548611260899665653812878284088569001615525792591799861095252442302876177409750139116758719152603549633459820326793363295547460811867407357660207918092916745186227671080875992231641095462233929736591212992220884946152482627495760141686025494152795853238448163688313109290646551226503608275655124221235864873919569986676352111572002134846710944864963507124322590616608668981512597136709725232121593757802791508951052811648290582399310806071617127857195428137349500991556636306812729549913563132737272387029988233573853791631168384158134682123826938008168445023188483666322368126344599659205414354801177978515625E-283 +1.721567512383298374043315964436633719416151226705787400716832874565184863020362531234553459151134324693154037330256662758175661581530669072053818623640970495189689560704826504289321595823952141035811924050598013376655818482278873811329270775104975650482725482727822271105442479202375924566732542137779311437943846216937569256265585240349270902047631688243037107392084924142804383414284115203644718592692492536031714316092745455731939133333589837222871952734107078329175388297411352845050069378088702795038502753495855852325506084999730546679493962415261278440921033234227351948465528533016650253334350221184831571263904919345712839951051379276318217417492476811516333677631873655400340794585645198822021484375E-282 +1.72156751238329866074189956862547334517165936586242190708732519995389002681100771655558851090940922909722252179933130762575656817713800323105158518359972219050488460575235481950027823351743830520709926691964065358672659109492162373481471532041583618583349037245534216175198446328219092446785947318242598444176989230496525499152028337205098830559170647689632737662621858129310245300721655131024844247172974783913997335270422314400426969342188972992701424864518123321733796302519427341945046424318751560558301790210562329658116479862161214323425571439085627469900198311327261362545909982712626547454477405997646714770758326233676831626936424765387601633689004637696733264473625268919931841082870960235595703125E-282 +3.44313502476659674808663192887326743883230245341157480143366574913036972604072506246910691830226864938630807466051332551635132316306133814410763724728194099037937912140965300857864319164790428207162384810119602675331163696455774762265854155020995130096545096545564454221088495840475184913346508427555862287588769243387513851253117048069854180409526337648607421478416984828560876682856823040728943718538498507206342863218549091146387826666717967444574390546821415665835077659482270569010013875617740559007700550699171170465101216999946109335898792483052255688184206646845470389693105706603330050666870044236966314252780983869142567990210275855263643483498495362303266735526374731080068158917129039764404296875E-282 +3.4431350247665973214837991372509466903433187317248438141746503999077800536220154331111770218188184581944450435986626152515131363542760064621031703671994443810097692115047096390005564670348766104141985338392813071734531821898432474696294306408316723716669807449106843235039689265643818489357189463648519688835397846099305099830405667441019766111834129537926547532524371625862049060144331026204968849434594956782799467054084462880085393868437794598540284972903624664346759260503885468389009284863750312111660358042112465931623295972432242864685114287817125493980039662265452272509181996542525309490895481199529342954151665246735366325387284953077520326737800927539346652894725053783986368216574192047119140625E-282 +6.8862700495331934961732638577465348776646049068231496028673314982607394520814501249382138366045372987726161493210266510327026463261226762882152744945638819807587582428193060171572863832958085641432476962023920535066232739291154952453170831004199026019309019309112890844217699168095036982669301685511172457517753848677502770250623409613970836081905267529721484295683396965712175336571364608145788743707699701441268572643709818229277565333343593488914878109364283133167015531896454113802002775123548111801540110139834234093020243399989221867179758496610451137636841329369094077938621141320666010133374008847393262850556196773828513598042055171052728696699699072460653347105274946216013631783425807952880859375E-282 +6.886270049533194642967598274501893380686637463449687628349300799815560107244030866222354043637636916388890087197325230503026272708552012924206340734398888762019538423009419278001112934069753220828397067678562614346906364379686494939258861281663344743333961489821368647007937853128763697871437892729703937767079569219861019966081133488203953222366825907585309506504874325172409812028866205240993769886918991356559893410816892576017078773687558919708056994580724932869351852100777093677801856972750062422332071608422493186324659194486448572937022857563425098796007932453090454501836399308505061898179096239905868590830333049347073265077456990615504065347560185507869330578945010756797273643314838409423828125E-282 +1.3772540099066386992346527715493069755329209813646299205734662996521478904162900249876427673209074597545232298642053302065405292652245352576430548989127763961517516485638612034314572766591617128286495392404784107013246547858230990490634166200839805203861803861822578168843539833619007396533860337102234491503550769735500554050124681922794167216381053505944296859136679393142435067314272921629157748741539940288253714528741963645855513066668718697782975621872856626633403106379290822760400555024709622360308022027966846818604048679997844373435951699322090227527368265873818815587724228264133202026674801769478652570111239354765702719608411034210545739339939814492130669421054989243202726356685161590576171875E-281 +1.377254009906638928593519654900378676137327492689937525669860159963112021448806173244470808727527383277778017439465046100605254541710402584841268146879777752403907684601883855600222586813950644165679413535712522869381272875937298987851772256332668948666792297964273729401587570625752739574287578545940787553415913843972203993216226697640790644473365181517061901300974865034481962405773241048198753977383798271311978682163378515203415754737511783941611398916144986573870370420155418735560371394550012484466414321684498637264931838897289714587404571512685019759201586490618090900367279861701012379635819247981173718166066609869414653015491398123100813069512037101573866115789002151359454728662967681884765625E-281 +2.754508019813277398469305543098613951065841962729259841146932599304295780832580049975285534641814919509046459728410660413081058530449070515286109797825552792303503297127722406862914553318323425657299078480956821402649309571646198098126833240167961040772360772364515633768707966723801479306772067420446898300710153947100110810024936384558833443276210701188859371827335878628487013462854584325831549748307988057650742905748392729171102613333743739556595124374571325326680621275858164552080111004941924472061604405593369363720809735999568874687190339864418045505473653174763763117544845652826640405334960353895730514022247870953140543921682206842109147867987962898426133884210997848640545271337032318115234375E-281 +2.75450801981327785718703930980075735227465498537987505133972031992622404289761234648894161745505476655555603487893009220121050908342080516968253629375955550480781536920376771120044517362790128833135882707142504573876254575187459797570354451266533789733358459592854745880317514125150547914857515709188157510683182768794440798643245339528158128894673036303412380260194973006896392481154648209639750795476759654262395736432675703040683150947502356788322279783228997314774074084031083747112074278910002496893282864336899727452986367779457942917480914302537003951840317298123618180073455972340202475927163849596234743633213321973882930603098279624620162613902407420314773223157800430271890945732593536376953125E-281 +5.50901603962655479693861108619722790213168392545851968229386519860859156166516009995057106928362983901809291945682132082616211706089814103057221959565110558460700659425544481372582910663664685131459815696191364280529861914329239619625366648033592208154472154472903126753741593344760295861354413484089379660142030789420022162004987276911766688655242140237771874365467175725697402692570916865166309949661597611530148581149678545834220522666748747911319024874914265065336124255171632910416022200988384894412320881118673872744161947199913774937438067972883609101094730634952752623508969130565328081066992070779146102804449574190628108784336441368421829573597592579685226776842199569728109054267406463623046875E-281 +5.5090160396265557143740786196015147045493099707597501026794406398524480857952246929778832349101095331111120697578601844024210181668416103393650725875191110096156307384075354224008903472558025766627176541428500914775250915037491959514070890253306757946671691918570949176063502825030109582971503141837631502136636553758888159728649067905631625778934607260682476052038994601379278496230929641927950159095351930852479147286535140608136630189500471357664455956645799462954814816806216749422414855782000499378656572867379945490597273555891588583496182860507400790368063459624723636014691194468040495185432769919246948726642664394776586120619655924924032522780481484062954644631560086054378189146518707275390625E-281 +1.10180320792531095938772221723944558042633678509170393645877303972171831233303201999011421385672596780361858389136426416523242341217962820611444391913022111692140131885108896274516582132732937026291963139238272856105972382865847923925073329606718441630894430894580625350748318668952059172270882696817875932028406157884004432400997455382353337731048428047554374873093435145139480538514183373033261989932319522306029716229935709166844104533349749582263804974982853013067224851034326582083204440197676978882464176223734774548832389439982754987487613594576721820218946126990550524701793826113065616213398414155829220560889914838125621756867288273684365914719518515937045355368439913945621810853481292724609375E-280 +1.1018032079253111428748157239203029409098619941519500205358881279704896171590449385955766469820219066222224139515720368804842036333683220678730145175038222019231261476815070844801780694511605153325435308285700182955050183007498391902814178050661351589334338383714189835212700565006021916594300628367526300427327310751777631945729813581126325155786921452136495210407798920275855699246185928385590031819070386170495829457307028121627326037900094271532891191329159892590962963361243349884482971156400099875731314573475989098119454711178317716699236572101480158073612691924944727202938238893608099037086553983849389745328532878955317224123931184984806504556096296812590928926312017210875637829303741455078125E-280 +2.2036064158506219187754444344788911608526735701834078729175460794434366246660640399802284277134519356072371677827285283304648468243592564122288878382604422338428026377021779254903316426546587405258392627847654571221194476573169584785014665921343688326178886178916125070149663733790411834454176539363575186405681231576800886480199491076470667546209685609510874974618687029027896107702836674606652397986463904461205943245987141833368820906669949916452760994996570602613444970206865316416640888039535395776492835244746954909766477887996550997497522718915344364043789225398110104940358765222613123242679682831165844112177982967625124351373457654736873182943903703187409071073687982789124362170696258544921875E-280 +2.203606415850622285749631447840605881819723988303900041071776255940979234318089877191153293964043813244444827903144073760968407266736644135746029035007644403846252295363014168960356138902321030665087061657140036591010036601499678380562835610132270317866867676742837967042540113001204383318860125673505260085465462150355526389145962716225265031157384290427299042081559784055171139849237185677118006363814077234099165891461405624325465207580018854306578238265831978518192592672248669976896594231280019975146262914695197819623890942235663543339847314420296031614722538384988945440587647778721619807417310796769877949065706575791063444824786236996961300911219259362518185785262403442175127565860748291015625E-280 +4.407212831701243837550888868957782321705347140366815745835092158886873249332128079960456855426903871214474335565457056660929693648718512824457775676520884467685605275404355850980663285309317481051678525569530914244238895314633916957002933184268737665235777235783225014029932746758082366890835307872715037281136246315360177296039898215294133509241937121902174994923737405805579221540567334921330479597292780892241188649197428366673764181333989983290552198999314120522688994041373063283328177607907079155298567048949390981953295577599310199499504543783068872808757845079622020988071753044522624648535936566233168822435596593525024870274691530947374636588780740637481814214737596557824872434139251708984375E-280 +4.40721283170124457149926289568121176363944797660780008214355251188195846863617975438230658792808762648888965580628814752193681453347328827149205807001528880769250459072602833792071227780464206133017412331428007318202007320299935676112567122026454063573373535348567593408508022600240876663772025134701052017093092430071105277829192543245053006231476858085459808416311956811034227969847437135423601272762815446819833178292281124865093041516003770861315647653166395703638518534449733995379318846256003995029252582939039563924778188447132708667969462884059206322944507676997789088117529555744323961483462159353975589813141315158212688964957247399392260182243851872503637157052480688435025513172149658203125E-280 +8.81442566340248767510177773791556464341069428073363149167018431777374649866425615992091371085380774242894867113091411332185938729743702564891555135304176893537121055080871170196132657061863496210335705113906182848847779062926783391400586636853747533047155447156645002805986549351616473378167061574543007456227249263072035459207979643058826701848387424380434998984747481161115844308113466984266095919458556178448237729839485673334752836266797996658110439799862824104537798808274612656665635521581415831059713409789878196390659115519862039899900908756613774561751569015924404197614350608904524929707187313246633764487119318705004974054938306189474927317756148127496362842947519311564974486827850341796875E-280 +8.8144256634024891429985257913624235272788959532156001642871050237639169372723595087646131758561752529777793116125762950438736290669465765429841161400305776153850091814520566758414245556092841226603482466285601463640401464059987135222513424405290812714674707069713518681701604520048175332754405026940210403418618486014221055565838508649010601246295371617091961683262391362206845593969487427084720254552563089363966635658456224973018608303200754172263129530633279140727703706889946799075863769251200799005850516587807912784955637689426541733593892576811841264588901535399557817623505911148864792296692431870795117962628263031642537792991449479878452036448770374500727431410496137687005102634429931640625E-280 +1.76288513268049753502035554758311292868213885614672629833403686355474929973285123198418274217076154848578973422618282266437187745948740512978311027060835378707424211016174234039226531412372699242067141022781236569769555812585356678280117327370749506609431089431329000561197309870323294675633412314908601491245449852614407091841595928611765340369677484876086999796949496232223168861622693396853219183891711235689647545967897134666950567253359599331622087959972564820907559761654922531333127104316283166211942681957975639278131823103972407979980181751322754912350313803184880839522870121780904985941437462649326752897423863741000994810987661237894985463551229625499272568589503862312994897365570068359375E-279 +1.7628851326804978285997051582724847054557791906431200328574210047527833874544719017529226351712350505955558623225152590087747258133893153085968232280061155230770018362904113351682849111218568245320696493257120292728080292811997427044502684881058162542934941413942703736340320904009635066550881005388042080683723697202844211113167701729802120249259074323418392336652478272441369118793897485416944050910512617872793327131691244994603721660640150834452625906126655828145540741377989359815172753850240159801170103317561582556991127537885308346718778515362368252917780307079911563524701182229772958459338486374159023592525652606328507558598289895975690407289754074900145486282099227537401020526885986328125E-279 +3.5257702653609950700407110951662258573642777122934525966680737271094985994657024639683654843415230969715794684523656453287437549189748102595662205412167075741484842203234846807845306282474539848413428204556247313953911162517071335656023465474149901321886217886265800112239461974064658935126682462981720298249089970522881418368319185722353068073935496975217399959389899246444633772324538679370643836778342247137929509193579426933390113450671919866324417591994512964181511952330984506266625420863256633242388536391595127855626364620794481595996036350264550982470062760636976167904574024356180997188287492529865350579484772748200198962197532247578997092710245925099854513717900772462598979473114013671875E-279 +3.525770265360995657199410316544969410911558381286240065714842009505566774908943803505845270342470101191111724645030518017549451626778630617193646456012231046154003672580822670336569822243713649064139298651424058545616058562399485408900536976211632508586988282788540747268064180801927013310176201077608416136744739440568842222633540345960424049851814864683678467330495654488273823758779497083388810182102523574558665426338248998920744332128030166890525181225331165629108148275597871963034550770048031960234020663512316511398225507577061669343755703072473650583556061415982312704940236445954591691867697274831804718505130521265701511719657979195138081457950814980029097256419845507480204105377197265625E-279 +7.051540530721990140081422190332451714728555424586905193336147454218997198931404927936730968683046193943158936904731290657487509837949620519132441082433415148296968440646969361569061256494907969682685640911249462790782232503414267131204693094829980264377243577253160022447892394812931787025336492596344059649817994104576283673663837144470613614787099395043479991877979849288926754464907735874128767355668449427585901838715885386678022690134383973264883518398902592836302390466196901253325084172651326648477707278319025571125272924158896319199207270052910196494012552127395233580914804871236199437657498505973070115896954549640039792439506449515799418542049185019970902743580154492519795894622802734375E-279 +7.05154053072199131439882063308993882182311676257248013142968401901113354981788760701169054068494020238222344929006103603509890325355726123438729291202446209230800734516164534067313964448742729812827859730284811709123211712479897081780107395242326501717397656557708149453612836160385402662035240215521683227348947888113768444526708069192084809970362972936735693466099130897654764751755899416677762036420504714911733085267649799784148866425606033378105036245066233125821629655119574392606910154009606392046804132702463302279645101515412333868751140614494730116711212283196462540988047289190918338373539454966360943701026104253140302343931595839027616291590162996005819451283969101496040821075439453125E-279 +1.410308106144398028016284438066490342945711084917381038667229490843799439786280985587346193736609238788631787380946258131497501967589924103826488216486683029659393688129393872313812251298981593936537128182249892558156446500682853426240938618965996052875448715450632004489578478962586357405067298519268811929963598820915256734732767428894122722957419879008695998375595969857785350892981547174825753471133689885517180367743177077335604538026876794652976703679780518567260478093239380250665016834530265329695541455663805114225054584831779263839841454010582039298802510425479046716182960974247239887531499701194614023179390909928007958487901289903159883708409837003994180548716030898503959178924560546875E-278 +1.41030810614439826287976412661798776436462335251449602628593680380222670996357752140233810813698804047644468985801220720701978065071145224687745858240489241846160146903232906813462792889748545962565571946056962341824642342495979416356021479048465300343479531311541629890722567232077080532407048043104336645469789577622753688905341613838416961994072594587347138693219826179530952950351179883335552407284100942982346617053529959956829773285121206675621007249013246625164325931023914878521382030801921278409360826540492660455929020303082466773750228122898946023342242456639292508197609457838183667674707890993272188740205220850628060468786319167805523258318032599201163890256793820299208164215087890625E-278 +2.82061621228879605603256887613298068589142216983476207733445898168759887957256197117469238747321847757726357476189251626299500393517984820765297643297336605931878737625878774462762450259796318787307425636449978511631289300136570685248187723793199210575089743090126400897915695792517271481013459703853762385992719764183051346946553485778824544591483975801739199675119193971557070178596309434965150694226737977103436073548635415467120907605375358930595340735956103713452095618647876050133003366906053065939108291132761022845010916966355852767968290802116407859760502085095809343236592194849447977506299940238922804635878181985601591697580257980631976741681967400798836109743206179700791835784912109375E-278 +2.8206162122887965257595282532359755287292467050289920525718736076044534199271550428046762162739760809528893797160244144140395613014229044937549171648097848369232029380646581362692558577949709192513114389211392468364928468499195883271204295809693060068695906262308325978144513446415416106481409608620867329093957915524550737781068322767683392398814518917469427738643965235906190590070235976667110481456820188596469323410705991991365954657024241335124201449802649325032865186204782975704276406160384255681872165308098532091185804060616493354750045624579789204668448491327858501639521891567636733534941578198654437748041044170125612093757263833561104651663606519840232778051358764059841632843017578125E-278 +5.6412324245775921120651377522659613717828443396695241546689179633751977591451239423493847749464369551545271495237850325259900078703596964153059528659467321186375747525175754892552490051959263757461485127289995702326257860027314137049637544758639842115017948618025280179583139158503454296202691940770752477198543952836610269389310697155764908918296795160347839935023838794311414035719261886993030138845347595420687214709727083093424181521075071786119068147191220742690419123729575210026600673381210613187821658226552204569002183393271170553593658160423281571952100417019161868647318438969889595501259988047784560927175636397120318339516051596126395348336393480159767221948641235940158367156982421875E-278 +5.641232424577593051519056506471951057458493410057984105143747215208906839854310085609352432547952161905778759432048828828079122602845808987509834329619569673846405876129316272538511715589941838502622877842278493672985693699839176654240859161938612013739181252461665195628902689283083221296281921724173465818791583104910147556213664553536678479762903783493885547728793047181238118014047195333422096291364037719293864682141198398273190931404848267024840289960529865006573037240956595140855281232076851136374433061619706418237160812123298670950009124915957840933689698265571700327904378313527346706988315639730887549608208834025122418751452766712220930332721303968046555610271752811968326568603515625E-278 +1.1282464849155184224130275504531922743565688679339048309337835926750395518290247884698769549892873910309054299047570065051980015740719392830611905731893464237275149505035150978510498010391852751492297025457999140465251572005462827409927508951727968423003589723605056035916627831700690859240538388154150495439708790567322053877862139431152981783659359032069567987004767758862282807143852377398606027769069519084137442941945416618684836304215014357223813629438244148538083824745915042005320134676242122637564331645310440913800436678654234110718731632084656314390420083403832373729463687793977919100251997609556912185435127279424063667903210319225279069667278696031953444389728247188031673431396484375E-277 +1.128246484915518610303811301294390211491698682011596821028749443041781367970862017121870486509590432381155751886409765765615824520569161797501966865923913934769281175225863254507702343117988367700524575568455698734597138739967835330848171832387722402747836250492333039125780537856616644259256384344834693163758316620982029511242732910707335695952580756698777109545758609436247623602809439066684419258272807543858772936428239679654638186280969653404968057992105973001314607448191319028171056246415370227274886612323941283647432162424659734190001824983191568186737939653114340065580875662705469341397663127946177509921641766805024483750290553342444186066544260793609311122054350562393665313720703125E-277 +2.256492969831036844826055100906384548713137735867809661867567185350079103658049576939753909978574782061810859809514013010396003148143878566122381146378692847455029901007030195702099602078370550298459405091599828093050314401092565481985501790345593684600717944721011207183325566340138171848107677630830099087941758113464410775572427886230596356731871806413913597400953551772456561428770475479721205553813903816827488588389083323736967260843002871444762725887648829707616764949183008401064026935248424527512866329062088182760087335730846822143746326416931262878084016680766474745892737558795583820050399521911382437087025455884812733580642063845055813933455739206390688877945649437606334686279296875E-277 +2.25649296983103722060762260258878042298339736402319364205749888608356273594172403424374097301918086476231150377281953153123164904113832359500393373184782786953856235045172650901540468623597673540104915113691139746919427747993567066169634366477544480549567250098466607825156107571323328851851276868966938632751663324196405902248546582141467139190516151339755421909151721887249524720561887813336883851654561508771754587285647935930927637256193930680993611598421194600262921489638263805634211249283074045454977322464788256729486432484931946838000364996638313637347587930622868013116175132541093868279532625589235501984328353361004896750058110668488837213308852158721862224410870112478733062744140625E-277 +4.51298593966207368965211020181276909742627547173561932373513437070015820731609915387950781995714956412362171961902802602079200629628775713224476229275738569491005980201406039140419920415674110059691881018319965618610062880218513096397100358069118736920143588944202241436665113268027634369621535526166019817588351622692882155114485577246119271346374361282782719480190710354491312285754095095944241110762780763365497717677816664747393452168600574288952545177529765941523352989836601680212805387049684905502573265812417636552017467146169364428749265283386252575616803336153294949178547511759116764010079904382276487417405091176962546716128412769011162786691147841278137775589129887521266937255859375E-277 +4.5129859396620744412152452051775608459667947280463872841149977721671254718834480684874819460383617295246230075456390630624632980822766471900078674636956557390771247009034530180308093724719534708020983022738227949383885549598713413233926873295508896109913450019693321565031221514264665770370255373793387726550332664839281180449709316428293427838103230267951084381830344377449904944112377562667376770330912301754350917457129587186185527451238786136198722319684238920052584297927652761126842249856614809090995464492957651345897286496986389367600072999327662727469517586124573602623235026508218773655906525117847100396865670672200979350011622133697767442661770431744372444882174022495746612548828125E-277 +9.0259718793241473793042204036255381948525509434712386474702687414003164146321983077590156399142991282472434392380560520415840125925755142644895245855147713898201196040281207828083984083134822011938376203663993123722012576043702619279420071613823747384028717788840448287333022653605526873924307105233203963517670324538576431022897115449223854269274872256556543896038142070898262457150819019188848222152556152673099543535563332949478690433720114857790509035505953188304670597967320336042561077409936981100514653162483527310403493429233872885749853056677250515123360667230658989835709502351823352802015980876455297483481018235392509343225682553802232557338229568255627555117825977504253387451171875E-277 +9.025971879324148882430490410355121691933589456092774568229995544334250943766896136974963892076723459049246015091278126124926596164553294380015734927391311478154249401806906036061618744943906941604196604547645589876777109919742682646785374659101779221982690003938664313006244302852933154074051074758677545310066532967856236089941863285658685567620646053590216876366068875489980988822475512533475354066182460350870183491425917437237105490247757227239744463936847784010516859585530552225368449971322961818199092898591530269179457299397277873520014599865532545493903517224914720524647005301643754731181305023569420079373134134440195870002324426739553488532354086348874488976434804499149322509765625E-277 +1.8051943758648294758608440807251076389705101886942477294940537482800632829264396615518031279828598256494486878476112104083168025185151028528979049171029542779640239208056241565616796816626964402387675240732798624744402515208740523855884014322764749476805743557768089657466604530721105374784861421046640792703534064907715286204579423089844770853854974451311308779207628414179652491430163803837769644430511230534619908707112666589895738086744022971558101807101190637660934119593464067208512215481987396220102930632496705462080698685846774577149970611335450103024672133446131797967141900470364670560403196175291059496696203647078501868645136510760446511467645913651125511023565195500850677490234375E-276 +1.805194375864829776486098082071024338386717891218554913645999108866850188753379227394992778415344691809849203018255625224985319232910658876003146985478262295630849880361381207212323748988781388320839320909529117975355421983948536529357074931820355844396538000787732862601248860570586630814810214951735509062013306593571247217988372657131737113524129210718043375273213775097996197764495102506695070813236492070174036698285183487447421098049551445447948892787369556802103371917106110445073689994264592363639818579718306053835891459879455574704002919973106509098780703444982944104929401060328750946236261004713884015874626826888039174000464885347910697706470817269774897795286960899829864501953125E-276 +3.610388751729658951721688161450215277941020377388495458988107496560126565852879323103606255965719651298897375695222420816633605037030205705795809834205908555928047841611248313123359363325392880477535048146559724948880503041748104771176802864552949895361148711553617931493320906144221074956972284209328158540706812981543057240915884617968954170770994890262261755841525682835930498286032760767553928886102246106923981741422533317979147617348804594311620361420238127532186823918692813441702443096397479244020586126499341092416139737169354915429994122267090020604934426689226359593428380094072934112080639235058211899339240729415700373729027302152089302293529182730225102204713039100170135498046875E-276 +3.61038875172965955297219616414204867677343578243710982729199821773370037750675845478998555683068938361969840603651125044997063846582131775200629397095652459126169976072276241442464749797756277664167864181905823595071084396789707305871414986364071168879307600157546572520249772114117326162962042990347101812402661318714249443597674531426347422704825842143608675054642755019599239552899020501339014162647298414034807339657036697489484219609910289089589778557473911360420674383421222089014737998852918472727963715943661210767178291975891114940800583994621301819756140688996588820985880212065750189247252200942776803174925365377607834800092977069582139541294163453954979559057392179965972900390625E-276 +7.22077750345931790344337632290043055588204075477699091797621499312025313170575864620721251193143930259779475139044484163326721007406041141159161966841181711185609568322249662624671872665078576095507009629311944989776100608349620954235360572910589979072229742310723586298664181228844214991394456841865631708141362596308611448183176923593790834154198978052452351168305136567186099657206552153510785777220449221384796348284506663595829523469760918862324072284047625506437364783738562688340488619279495848804117225299868218483227947433870983085998824453418004120986885337845271918685676018814586822416127847011642379867848145883140074745805460430417860458705836546045020440942607820034027099609375E-276 +7.2207775034593191059443923282840973535468715648742196545839964354674007550135169095799711136613787672393968120730225008999412769316426355040125879419130491825233995214455248288492949959551255532833572836381164719014216879357941461174282997272814233775861520031509314504049954422823465232592408598069420362480532263742849888719534906285269484540965168428721735010928551003919847910579804100267802832529459682806961467931407339497896843921982057817917955711494782272084134876684244417802947599770583694545592743188732242153435658395178222988160116798924260363951228137799317764197176042413150037849450440188555360634985073075521566960018595413916427908258832690790995911811478435993194580078125E-276 +1.44415550069186358068867526458008611117640815095539818359524299862405062634115172924144250238628786051955895027808896832665344201481208228231832393368236342237121913664449932524934374533015715219101401925862388997955220121669924190847072114582117995814445948462144717259732836245768842998278891368373126341628272519261722289636635384718758166830839795610490470233661027313437219931441310430702157155444089844276959269656901332719165904693952183772464814456809525101287472956747712537668097723855899169760823445059973643696645589486774196617199764890683600824197377067569054383737135203762917364483225569402328475973569629176628014949161092086083572091741167309209004088188521564006805419921875E-275 +1.4441555006918638211888784656568194707093743129748439309167992870934801510027033819159942227322757534478793624146045001799882553863285271008025175883826098365046799042891049657698589991910251106566714567276232943802843375871588292234856599454562846755172304006301862900809990884564693046518481719613884072496106452748569977743906981257053896908193033685744347002185710200783969582115960820053560566505891936561392293586281467899579368784396411563583591142298956454416826975336848883560589519954116738909118548637746448430687131679035644597632023359784852072790245627559863552839435208482630007569890088037711072126997014615104313392003719082783285581651766538158199182362295687198638916015625E-275 +2.8883110013837271613773505291601722223528163019107963671904859972481012526823034584828850047725757210391179005561779366533068840296241645646366478673647268447424382732889986504986874906603143043820280385172477799591044024333984838169414422916423599162889189692428943451946567249153768599655778273674625268325654503852344457927327076943751633366167959122098094046732205462687443986288262086140431431088817968855391853931380266543833180938790436754492962891361905020257494591349542507533619544771179833952164689011994728739329117897354839323439952978136720164839475413513810876747427040752583472896645113880465695194713925835325602989832218417216714418348233461841800817637704312801361083984375E-275 +2.888311001383727642377756931313638941418748625949687861833598574186960302005406763831988445464551506895758724829209000359976510772657054201605035176765219673009359808578209931539717998382050221313342913455246588760568675174317658446971319890912569351034460801260372580161998176912938609303696343922776814499221290549713995548781396251410779381638606737148869400437142040156793916423192164010712113301178387312278458717256293579915873756879282312716718228459791290883365395067369776712117903990823347781823709727549289686137426335807128919526404671956970414558049125511972710567887041696526001513978017607542214425399402923020862678400743816556657116330353307631639836472459137439727783203125E-275 +5.776622002767454322754701058320344444705632603821592734380971994496202505364606916965770009545151442078235801112355873306613768059248329129273295734729453689484876546577997300997374981320628608764056077034495559918208804866796967633882884583284719832577837938485788690389313449830753719931155654734925053665130900770468891585465415388750326673233591824419618809346441092537488797257652417228086286217763593771078370786276053308766636187758087350898592578272381004051498918269908501506723908954235966790432937802398945747865823579470967864687990595627344032967895082702762175349485408150516694579329022776093139038942785167065120597966443683443342883669646692368360163527540862560272216796875E-275 +5.77662200276745528475551386262727788283749725189937572366719714837392060401081352766397689092910301379151744965841800071995302154531410840321007035353043934601871961715641986307943599676410044262668582691049317752113735034863531689394263978182513870206892160252074516032399635382587721860739268784555362899844258109942799109756279250282155876327721347429773880087428408031358783284638432802142422660235677462455691743451258715983174751375856462543343645691958258176673079013473955342423580798164669556364741945509857937227485267161425783905280934391394082911609825102394542113577408339305200302795603521508442885079880584604172535680148763311331423266070661526327967294491827487945556640625E-275 +1.155324400553490864550940211664068888941126520764318546876194398899240501072921383393154001909030288415647160222471174661322753611849665825854659146945890737896975309315599460199474996264125721752811215406899111983641760973359393526776576916656943966515567587697157738077862689966150743986231130946985010733026180154093778317093083077750065334646718364883923761869288218507497759451530483445617257243552718754215674157255210661753327237551617470179718515654476200810299783653981700301344781790847193358086587560479789149573164715894193572937598119125468806593579016540552435069897081630103338915865804555218627807788557033413024119593288736688668576733929338473672032705508172512054443359375E-274 +1.15532440055349105695110277252545557656749945037987514473343942967478412080216270553279537818582060275830348993168360014399060430906282168064201407070608786920374392343128397261588719935282008852533716538209863550422747006972706337878852795636502774041378432050414903206479927076517544372147853756911072579968851621988559821951255850056431175265544269485954776017485681606271756656927686560428484532047135492491138348690251743196634950275171292508668729138391651635334615802694791068484716159632933911272948389101971587445497053432285156781056186878278816582321965020478908422715481667861040060559120704301688577015976116920834507136029752662266284653214132305265593458898365497589111328125E-274 +2.31064880110698172910188042332813777788225304152863709375238879779848100214584276678630800381806057683129432044494234932264550722369933165170931829389178147579395061863119892039894999252825144350562243081379822396728352194671878705355315383331388793303113517539431547615572537993230148797246226189397002146605236030818755663418616615550013066929343672976784752373857643701499551890306096689123451448710543750843134831451042132350665447510323494035943703130895240162059956730796340060268956358169438671617317512095957829914632943178838714587519623825093761318715803308110487013979416326020667783173160911043725561557711406682604823918657747337733715346785867694734406541101634502410888671875E-274 +2.3106488011069821139022055450509111531349989007597502894668788593495682416043254110655907563716412055166069798633672002879812086181256433612840281414121757384074878468625679452317743987056401770506743307641972710084549401394541267575770559127300554808275686410082980641295985415303508874429570751382214515993770324397711964390251170011286235053108853897190955203497136321254351331385537312085696906409427098498227669738050348639326990055034258501733745827678330327066923160538958213696943231926586782254589677820394317489099410686457031356211237375655763316464393004095781684543096333572208012111824140860337715403195223384166901427205950532453256930642826461053118691779673099517822265625E-274 +4.6212976022139634582037608466562755557645060830572741875047775955969620042916855335726160076361211536625886408898846986452910144473986633034186365877835629515879012372623978407978999850565028870112448616275964479345670438934375741071063076666277758660622703507886309523114507598646029759449245237879400429321047206163751132683723323110002613385868734595356950474771528740299910378061219337824690289742108750168626966290208426470133089502064698807188740626179048032411991346159268012053791271633887734323463502419191565982926588635767742917503924765018752263743160661622097402795883265204133556634632182208745112311542281336520964783731549467546743069357173538946881308220326900482177734375E-274 +4.621297602213964227804411090101822306269997801519500578933757718699136483208650822131181512743282411033213959726734400575962417236251286722568056282824351476814975693725135890463548797411280354101348661528394542016909880278908253515154111825460110961655137282016596128259197083060701774885914150276442903198754064879542392878050234002257247010621770779438191040699427264250870266277107462417139381281885419699645533947610069727865398011006851700346749165535666065413384632107791642739388646385317356450917935564078863497819882137291406271242247475131152663292878600819156336908619266714441602422364828172067543080639044676833380285441190106490651386128565292210623738355934619903564453125E-274 +9.242595204427926916407521693312551111529012166114548375009555191193924008583371067145232015272242307325177281779769397290582028894797326606837273175567125903175802474524795681595799970113005774022489723255192895869134087786875148214212615333255551732124540701577261904622901519729205951889849047575880085864209441232750226536744664622000522677173746919071390094954305748059982075612243867564938057948421750033725393258041685294026617900412939761437748125235809606482398269231853602410758254326777546864692700483838313196585317727153548583500784953003750452748632132324419480559176653040826711326926436441749022462308456267304192956746309893509348613871434707789376261644065380096435546875E-274 +9.24259520442792845560882218020364461253999560303900115786751543739827296641730164426236302548656482206642791945346880115192483447250257344513611256564870295362995138745027178092709759482256070820269732305678908403381976055781650703030822365092022192331027456403319225651839416612140354977182830055288580639750812975908478575610046800451449402124354155887638208139885452850174053255421492483427876256377083939929106789522013945573079602201370340069349833107133213082676926421558328547877729277063471290183587112815772699563976427458281254248449495026230532658575720163831267381723853342888320484472965634413508616127808935366676057088238021298130277225713058442124747671186923980712890625E-274 +1.848519040885585383281504338662510222305802433222909675001911038238784801716674213429046403054448461465035456355953879458116405778959465321367454635113425180635160494904959136319159994022601154804497944651038579173826817557375029642842523066651110346424908140315452380924580303945841190377969809515176017172841888246550045307348932924400104535434749383814278018990861149611996415122448773512987611589684350006745078651608337058805323580082587952287549625047161921296479653846370720482151650865355509372938540096767662639317063545430709716700156990600750090549726426464883896111835330608165342265385287288349804492461691253460838591349261978701869722774286941557875252328813076019287109375E-273 +1.84851904088558569112176443604072892250799912060780023157350308747965459328346032885247260509731296441328558389069376023038496689450051468902722251312974059072599027749005435618541951896451214164053946461135781680676395211156330140606164473018404438466205491280663845130367883322428070995436566011057716127950162595181695715122009360090289880424870831177527641627977090570034810651084298496685575251275416787985821357904402789114615920440274068013869966621426642616535385284311665709575545855412694258036717422563154539912795285491656250849689899005246106531715144032766253476344770668577664096894593126882701723225561787073335211417647604259626055445142611688424949534237384796142578125E-273 +3.69703808177117076656300867732502044461160486644581935000382207647756960343334842685809280610889692293007091271190775891623281155791893064273490927022685036127032098980991827263831998804520230960899588930207715834765363511475005928568504613330222069284981628063090476184916060789168238075593961903035203434568377649310009061469786584880020907086949876762855603798172229922399283024489754702597522317936870001349015730321667411761064716016517590457509925009432384259295930769274144096430330173071101874587708019353532527863412709086141943340031398120150018109945285292976779222367066121633068453077057457669960898492338250692167718269852395740373944554857388311575050465762615203857421875E-273 +3.6970380817711713822435288720814578450159982412156004631470061749593091865669206577049452101946259288265711677813875204607699337890010293780544450262594811814519805549801087123708390379290242832810789292227156336135279042231266028121232894603680887693241098256132769026073576664485614199087313202211543225590032519036339143024401872018057976084974166235505528325595418114006962130216859699337115050255083357597164271580880557822923184088054813602773993324285328523307077056862333141915109171082538851607343484512630907982559057098331250169937979801049221306343028806553250695268954133715532819378918625376540344645112357414667042283529520851925211089028522337684989906847476959228515625E-273 +7.3940761635423415331260173546500408892232097328916387000076441529551392068666968537161856122177938458601418254238155178324656231158378612854698185404537007225406419796198365452766399760904046192179917786041543166953072702295001185713700922666044413856996325612618095236983212157833647615118792380607040686913675529862001812293957316976004181417389975352571120759634445984479856604897950940519504463587374000269803146064333482352212943203303518091501985001886476851859186153854828819286066034614220374917541603870706505572682541817228388668006279624030003621989057058595355844473413224326613690615411491533992179698467650138433543653970479148074788910971477662315010093152523040771484375E-273 +7.394076163542342764487057744162915690031996482431200926294012349918618373133841315409890420389251857653142335562775040921539867578002058756108890052518962362903961109960217424741678075858048566562157858445431267227055808446253205624246578920736177538648219651226553805214715332897122839817462640442308645118006503807267828604880374403611595216994833247101105665119083622801392426043371939867423010051016671519432854316176111564584636817610962720554798664857065704661415411372466628383021834216507770321468696902526181596511811419666250033987595960209844261268605761310650139053790826743106563875783725075308068929022471482933408456705904170385042217805704467536997981369495391845703125E-273 +1.4788152327084683066252034709300081778446419465783277400015288305910278413733393707432371224435587691720283650847631035664931246231675722570939637080907401445081283959239673090553279952180809238435983557208308633390614540459000237142740184533208882771399265122523619047396642431566729523023758476121408137382735105972400362458791463395200836283477995070514224151926889196895971320979590188103900892717474800053960629212866696470442588640660703618300397000377295370371837230770965763857213206922844074983508320774141301114536508363445677733601255924806000724397811411719071168894682644865322738123082298306798435939693530027686708730794095829614957782194295532463002018630504608154296875E-272 +1.478815232708468552897411548832583138006399296486240185258802469983723674626768263081978084077850371530628467112555008184307973515600411751221778010503792472580792221992043484948335615171609713312431571689086253445411161689250641124849315784147235507729643930245310761042943066579424567963492528088461729023601300761453565720976074880722319043398966649420221133023816724560278485208674387973484602010203334303886570863235222312916927363522192544110959732971413140932283082274493325676604366843301554064293739380505236319302362283933250006797519192041968852253721152262130027810758165348621312775156745015061613785804494296586681691341180834077008443561140893507399596273899078369140625E-272 +2.957630465416936613250406941860016355689283893156655480003057661182055682746678741486474244887117538344056730169526207132986249246335144514187927416181480289016256791847934618110655990436161847687196711441661726678122908091800047428548036906641776554279853024504723809479328486313345904604751695224281627476547021194480072491758292679040167256695599014102844830385377839379194264195918037620780178543494960010792125842573339294088517728132140723660079400075459074074367446154193152771442641384568814996701664154828260222907301672689135546720251184961200144879562282343814233778936528973064547624616459661359687187938706005537341746158819165922991556438859106492600403726100921630859375E-272 +2.95763046541693710579482309766516627601279859297248037051760493996744734925353652616395616815570074306125693422511001636861594703120082350244355602100758494516158444398408696989667123034321942662486314337817250689082232337850128224969863156829447101545928786049062152208588613315884913592698505617692345804720260152290713144195214976144463808679793329884044226604763344912055697041734877594696920402040666860777314172647044462583385472704438508822191946594282628186456616454898665135320873368660310812858747876101047263860472456786650001359503838408393770450744230452426005562151633069724262555031349003012322757160898859317336338268236166815401688712228178701479919254779815673828125E-272 +5.91526093083387322650081388372003271137856778631331096000611532236411136549335748297294848977423507668811346033905241426597249849267028902837585483236296057803251358369586923622131198087232369537439342288332345335624581618360009485709607381328355310855970604900944761895865697262669180920950339044856325495309404238896014498351658535808033451339119802820568966077075567875838852839183607524156035708698992002158425168514667858817703545626428144732015880015091814814873489230838630554288528276913762999340332830965652044581460334537827109344050236992240028975912456468762846755787305794612909524923291932271937437587741201107468349231763833184598311287771821298520080745220184326171875E-272 +5.9152609308338742115896461953303325520255971859449607410352098799348946985070730523279123363114014861225138684502200327372318940624016470048871120420151698903231688879681739397933424606864388532497262867563450137816446467570025644993972631365889420309185757209812430441717722663176982718539701123538469160944052030458142628839042995228892761735958665976808845320952668982411139408346975518939384080408133372155462834529408892516677094540887701764438389318856525637291323290979733027064174673732062162571749575220209452772094491357330000271900767681678754090148846090485201112430326613944852511006269800602464551432179771863467267653647233363080337742445635740295983850955963134765625E-272 +1.18305218616677464530016277674400654227571355726266219200122306447282227309867149659458969795484701533762269206781048285319449969853405780567517096647259211560650271673917384724426239617446473907487868457666469067124916323672001897141921476265671062171194120980188952379173139452533836184190067808971265099061880847779202899670331707161606690267823960564113793215415113575167770567836721504831207141739798400431685033702933571763540709125285628946403176003018362962974697846167726110857705655382752599868066566193130408916292066907565421868810047398448005795182491293752569351157461158922581904984658386454387487517548240221493669846352766636919662257554364259704016149044036865234375E-271 +1.1830521861667748423179292390660665104051194371889921482070419759869789397014146104655824672622802972245027736900440065474463788124803294009774224084030339780646337775936347879586684921372877706499452573512690027563289293514005128998794526273177884061837151441962486088343544532635396543707940224707693832188810406091628525767808599045778552347191733195361769064190533796482227881669395103787876816081626674431092566905881778503335418908177540352887677863771305127458264658195946605412834934746412432514349915044041890554418898271466000054380153536335750818029769218097040222486065322788970502201253960120492910286435954372693453530729446672616067548489127148059196770191192626953125E-271 +2.3661043723335492906003255534880130845514271145253243840024461289456445461973429931891793959096940306752453841356209657063889993970681156113503419329451842312130054334783476944885247923489294781497573691533293813424983264734400379428384295253134212434238824196037790475834627890506767236838013561794253019812376169555840579934066341432321338053564792112822758643083022715033554113567344300966241428347959680086337006740586714352708141825057125789280635200603672592594939569233545222171541131076550519973613313238626081783258413381513084373762009479689601159036498258750513870231492231784516380996931677290877497503509648044298733969270553327383932451510872851940803229808807373046875E-271 +2.366104372333549684635858478132133020810238874377984296414083951973957879402829220931164934524560594449005547380088013094892757624960658801954844816806067956129267555187269575917336984274575541299890514702538005512657858702801025799758905254635576812367430288392497217668708906527079308741588044941538766437762081218325705153561719809155710469438346639072353812838106759296445576333879020757575363216325334886218513381176355700667083781635508070577535572754261025491652931639189321082566986949282486502869983008808378110883779654293200010876030707267150163605953843619408044497213064557794100440250792024098582057287190874538690706145889334523213509697825429611839354038238525390625E-271 +4.732208744667098581200651106976026169102854229050648768004892257891289092394685986378358791819388061350490768271241931412777998794136231222700683865890368462426010866956695388977049584697858956299514738306658762684996652946880075885676859050626842486847764839207558095166925578101353447367602712358850603962475233911168115986813268286464267610712958422564551728616604543006710822713468860193248285669591936017267401348117342870541628365011425157856127040120734518518987913846709044434308226215310103994722662647725216356651682676302616874752401895937920231807299651750102774046298446356903276199386335458175499500701929608859746793854110665476786490302174570388160645961761474609375E-271 +4.73220874466709936927171695626426604162047774875596859282816790394791575880565844186232986904912118889801109476017602618978551524992131760390968963361213591225853511037453915183467396854915108259978102940507601102531571740560205159951781050927115362473486057678499443533741781305415861748317608988307753287552416243665141030712343961831142093887669327814470762567621351859289115266775804151515072643265066977243702676235271140133416756327101614115507114550852205098330586327837864216513397389856497300573996601761675622176755930858640002175206141453430032721190768723881608899442612911558820088050158404819716411457438174907738141229177866904642701939565085922367870807647705078125E-271 +9.46441748933419716240130221395205233820570845810129753600978451578257818478937197275671758363877612270098153654248386282555599758827246244540136773178073692485202173391339077795409916939571791259902947661331752536999330589376015177135371810125368497369552967841511619033385115620270689473520542471770120792495046782233623197362653657292853522142591684512910345723320908601342164542693772038649657133918387203453480269623468574108325673002285031571225408024146903703797582769341808886861645243062020798944532529545043271330336535260523374950480379187584046361459930350020554809259689271380655239877267091635099900140385921771949358770822133095357298060434914077632129192352294921875E-271 +9.4644174893341987385434339125285320832409554975119371856563358078958315176113168837246597380982423777960221895203520523795710304998426352078193792672242718245170702207490783036693479370983021651995620588101520220506314348112041031990356210185423072494697211535699888706748356261083172349663521797661550657510483248733028206142468792366228418777533865562894152513524270371857823053355160830303014528653013395448740535247054228026683351265420322823101422910170441019666117265567572843302679477971299460114799320352335124435351186171728000435041228290686006544238153744776321779888522582311764017610031680963943282291487634981547628245835573380928540387913017184473574161529541015625E-271 +1.89288349786683943248026044279041046764114169162025950720195690315651563695787439455134351672775522454019630730849677256511119951765449248908027354635614738497040434678267815559081983387914358251980589532266350507399866117875203035427074362025073699473910593568302323806677023124054137894704108494354024158499009356446724639472530731458570704428518336902582069144664181720268432908538754407729931426783677440690696053924693714821665134600457006314245081604829380740759516553868361777372329048612404159788906505909008654266067307052104674990096075837516809272291986070004110961851937854276131047975453418327019980028077184354389871754164426619071459612086982815526425838470458984375E-270 +1.8928834978668397477086867825057064166481910995023874371312671615791663035222633767449319476196484755592044379040704104759142060999685270415638758534448543649034140441498156607338695874196604330399124117620304044101262869622408206398071242037084614498939442307139977741349671252216634469932704359532310131502096649746605641228493758473245683755506773112578830502704854074371564610671032166060602905730602679089748107049410845605336670253084064564620284582034088203933223453113514568660535895594259892022959864070467024887070237234345600087008245658137201308847630748955264355977704516462352803522006336192788656458297526996309525649167114676185708077582603436894714832305908203125E-270 +3.7857669957336788649605208855808209352822833832405190144039138063130312739157487891026870334555104490803926146169935451302223990353089849781605470927122947699408086935653563111816396677582871650396117906453270101479973223575040607085414872405014739894782118713660464761335404624810827578940821698870804831699801871289344927894506146291714140885703667380516413828932836344053686581707750881545986285356735488138139210784938742964333026920091401262849016320965876148151903310773672355474465809722480831957781301181801730853213461410420934998019215167503361854458397214000822192370387570855226209595090683665403996005615436870877974350832885323814291922417396563105285167694091796875E-270 +3.785766995733679495417373565011412833296382199004774874262534323158332607044526753489863895239296951118408875808140820951828412199937054083127751706889708729806828088299631321467739174839320866079824823524060808820252573924481641279614248407416922899787888461427995548269934250443326893986540871906462026300419329949321128245698751694649136751101354622515766100540970814874312922134206433212120581146120535817949621409882169121067334050616812912924056916406817640786644690622702913732107179118851978404591972814093404977414047446869120017401649131627440261769526149791052871195540903292470560704401267238557731291659505399261905129833422935237141615516520687378942966461181640625E-270 +7.571533991467357729921041771161641870564566766481038028807827612626062547831497578205374066911020898160785229233987090260444798070617969956321094185424589539881617387130712622363279335516574330079223581290654020295994644715008121417082974481002947978956423742732092952267080924962165515788164339774160966339960374257868985578901229258342828177140733476103282765786567268810737316341550176309197257071347097627627842156987748592866605384018280252569803264193175229630380662154734471094893161944496166391556260236360346170642692282084186999603843033500672370891679442800164438474077514171045241919018136733080799201123087374175594870166577064762858384483479312621057033538818359375E-270 +7.57153399146735899083474713002282566659276439800954974852506864631666521408905350697972779047859390223681775161628164190365682439987410816625550341377941745961365617659926264293547834967864173215964964704812161764050514784896328255922849681483384579957577692285599109653986850088665378797308174381292405260083865989864225649139750338929827350220270924503153220108194162974862584426841286642424116229224107163589924281976433824213466810123362582584811383281363528157328938124540582746421435823770395680918394562818680995482809489373824003480329826325488052353905229958210574239108180658494112140880253447711546258331901079852381025966684587047428323103304137475788593292236328125E-270 +1.514306798293471545984208354232328374112913353296207605761565522525212509566299515641074813382204179632157045846797418052088959614123593991264218837084917907976323477426142524472655867103314866015844716258130804059198928943001624283416594896200589595791284748546418590453416184992433103157632867954832193267992074851573797115780245851668565635428146695220656553157313453762147463268310035261839451414269419525525568431397549718573321076803656050513960652838635045926076132430946894218978632388899233278311252047272069234128538456416837399920768606700134474178335888560032887694815502834209048383803627346616159840224617474835118974033315412952571676896695862524211406707763671875E-269 +1.51430679829347179816694942600456513331855287960190994970501372926333304281781070139594555809571878044736355032325632838073136487997482163325110068275588349192273123531985252858709566993572834643192992940962432352810102956979265651184569936296676915991515538457119821930797370017733075759461634876258481052016773197972845129827950067785965470044054184900630644021638832594972516885368257328484823245844821432717984856395286764842693362024672516516962276656272705631465787624908116549284287164754079136183678912563736199096561897874764800696065965265097610470781045991642114847821636131698822428176050689542309251666380215970476205193336917409485664620660827495157718658447265625E-269 +3.02861359658694309196841670846465674822582670659241521152313104505042501913259903128214962676440835926431409169359483610417791922824718798252843767416983581595264695485228504894531173420662973203168943251626160811839785788600324856683318979240117919158256949709283718090683236998486620631526573590966438653598414970314759423156049170333713127085629339044131310631462690752429492653662007052367890282853883905105113686279509943714664215360731210102792130567727009185215226486189378843795726477779846655662250409454413846825707691283367479984153721340026894835667177712006577538963100566841809676760725469323231968044923494967023794806663082590514335379339172504842281341552734375E-269 +3.0286135965869435963338988520091302666371057592038198994100274585266660856356214027918911161914375608947271006465126567614627297599496432665022013655117669838454624706397050571741913398714566928638598588192486470562020591395853130236913987259335383198303107691423964386159474003546615151892326975251696210403354639594569025965590013557193094008810836980126128804327766518994503377073651465696964649168964286543596971279057352968538672404934503303392455331254541126293157524981623309856857432950815827236735782512747239819312379574952960139213193053019522094156209198328422969564327226339764485635210137908461850333276043194095241038667383481897132924132165499031543731689453125E-269 +6.0572271931738861839368334169293134964516534131848304230462620901008500382651980625642992535288167185286281833871896722083558384564943759650568753483396716319052939097045700978906234684132594640633788650325232162367957157720064971336663795848023583831651389941856743618136647399697324126305314718193287730719682994062951884631209834066742625417125867808826262126292538150485898530732401410473578056570776781021022737255901988742932843072146242020558426113545401837043045297237875768759145295555969331132450081890882769365141538256673495996830744268005378967133435542401315507792620113368361935352145093864646393608984698993404758961332616518102867075867834500968456268310546875E-269 +6.057227193173887192667797704018260533274211518407639798820054917053332171271242805583782232382875121789454201293025313522925459519899286533004402731023533967690924941279410114348382679742913385727719717638497294112404118279170626047382797451867076639660621538284792877231894800709323030378465395050339242080670927918913805193118002711438618801762167396025225760865553303798900675414730293139392929833792857308719394255811470593707734480986900660678491066250908225258631504996324661971371486590163165447347156502549447963862475914990592027842638610603904418831241839665684593912865445267952897127042027581692370066655208638819048207733476696379426584826433099806308746337890625E-269 +1.2114454386347772367873666833858626992903306826369660846092524180201700076530396125128598507057633437057256366774379344416711676912988751930113750696679343263810587819409140195781246936826518928126757730065046432473591431544012994267332759169604716766330277988371348723627329479939464825261062943638657546143936598812590376926241966813348525083425173561765252425258507630097179706146480282094715611314155356204204547451180397748586568614429248404111685222709080367408609059447575153751829059111193866226490016378176553873028307651334699199366148853601075793426687108480263101558524022673672387070429018772929278721796939798680951792266523303620573415173566900193691253662109375E-268 +1.211445438634777438533559540803652106654842303681527959764010983410666434254248561116756446476575024357890840258605062704585091903979857306600880546204706793538184988255882022869676535948582677145543943527699458822480823655834125209476559490373415327932124307656958575446378960141864606075693079010067848416134185583782761038623600542287723760352433479205045152173110660759780135082946058627878585966758571461743878851162294118741546896197380132135698213250181645051726300999264932394274297318032633089469431300509889592772495182998118405568527722120780883766248367933136918782573089053590579425408405516338474013331041727763809641546695339275885316965286619961261749267578125E-268 +2.422890877269554473574733366771725398580661365273932169218504836040340015306079225025719701411526687411451273354875868883342335382597750386022750139335868652762117563881828039156249387365303785625351546013009286494718286308802598853466551833920943353266055597674269744725465895987892965052212588727731509228787319762518075385248393362669705016685034712353050485051701526019435941229296056418943122262831071240840909490236079549717313722885849680822337044541816073481721811889515030750365811822238773245298003275635310774605661530266939839873229770720215158685337421696052620311704804534734477414085803754585855744359387959736190358453304660724114683034713380038738250732421875E-268 +2.42289087726955487706711908160730421330968460736305591952802196682133286850849712223351289295315004871578168051721012540917018380795971461320176109240941358707636997651176404573935307189716535429108788705539891764496164731166825041895311898074683065586424861531391715089275792028372921215138615802013569683226837116756552207724720108457544752070486695841009030434622132151956027016589211725575717193351714292348775770232458823748309379239476026427139642650036329010345260199852986478854859463606526617893886260101977918554499036599623681113705544424156176753249673586627383756514617810718115885081681103267694802666208345552761928309339067855177063393057323992252349853515625E-268 +4.84578175453910894714946673354345079716132273054786433843700967208068003061215845005143940282305337482290254670975173776668467076519550077204550027867173730552423512776365607831249877473060757125070309202601857298943657261760519770693310366784188670653211119534853948945093179197578593010442517745546301845757463952503615077049678672533941003337006942470610097010340305203887188245859211283788624452566214248168181898047215909943462744577169936164467408908363214696344362377903006150073162364447754649059600655127062154921132306053387967974645954144043031737067484339210524062340960906946895482817160750917171148871877591947238071690660932144822936606942676007747650146484375E-268 +4.8457817545391097541342381632146084266193692147261118390560439336426657370169942444670257859063000974315633610344202508183403676159194292264035221848188271741527399530235280914787061437943307085821757741107978352899232946233365008379062379614936613117284972306278343017855158405674584243027723160402713936645367423351310441544944021691508950414097339168201806086924426430391205403317842345115143438670342858469755154046491764749661875847895205285427928530007265802069052039970597295770971892721305323578777252020395583710899807319924736222741108884831235350649934717325476751302923562143623177016336220653538960533241669110552385661867813571035412678611464798450469970703125E-268 +9.6915635090782178942989334670869015943226454610957286768740193441613600612243169001028788056461067496458050934195034755333693415303910015440910005573434746110484702555273121566249975494612151425014061840520371459788731452352103954138662073356837734130642223906970789789018635839515718602088503549109260369151492790500723015409935734506788200667401388494122019402068061040777437649171842256757724890513242849633636379609443181988692548915433987232893481781672642939268872475580601230014632472889550929811920131025412430984226461210677593594929190828808606347413496867842104812468192181389379096563432150183434229774375518389447614338132186428964587321388535201549530029296875E-268 +9.691563509078219508268476326429216853238738429452223678112087867285331474033988488934051571812600194863126722068840501636680735231838858452807044369637654348305479906047056182957412287588661417164351548221595670579846589246673001675812475922987322623456994461255668603571031681134916848605544632080542787329073484670262088308988804338301790082819467833640361217384885286078241080663568469023028687734068571693951030809298352949932375169579041057085585706001453160413810407994119459154194378544261064715755450404079116742179961463984947244548221776966247070129986943465095350260584712428724635403267244130707792106648333822110477132373562714207082535722292959690093994140625E-268 +1.9383127018156435788597866934173803188645290922191457353748038688322720122448633800205757611292213499291610186839006951066738683060782003088182001114686949222096940511054624313249995098922430285002812368104074291957746290470420790827732414671367546826128444781394157957803727167903143720417700709821852073830298558100144603081987146901357640133480277698824403880413612208155487529834368451351544978102648569926727275921888636397738509783086797446578696356334528587853774495116120246002926494577910185962384026205082486196845292242135518718985838165761721269482699373568420962493638436277875819312686430036686845954875103677889522867626437285792917464277707040309906005859375E-267 +1.938312701815643901653695265285843370647747685890444735622417573457066294806797697786810314362520038972625344413768100327336147046367771690561408873927530869661095981209411236591482457517732283432870309644319134115969317849334600335162495184597464524691398892251133720714206336226983369721108926416108557465814696934052417661797760867660358016563893566728072243476977057215648216132713693804605737546813714338790206161859670589986475033915808211417117141200290632082762081598823891830838875708852212943151090080815823348435992292796989448909644355393249414025997388693019070052116942485744927080653448826141558421329666764422095426474712542841416507144458591938018798828125E-267 +3.876625403631287157719573386834760637729058184438291470749607737664544024489726760041151522258442699858322037367801390213347736612156400617636400222937389844419388102210924862649999019784486057000562473620814858391549258094084158165546482934273509365225688956278831591560745433580628744083540141964370414766059711620028920616397429380271528026696055539764880776082722441631097505966873690270308995620529713985345455184377727279547701956617359489315739271266905717570754899023224049200585298915582037192476805241016497239369058448427103743797167633152344253896539874713684192498727687255575163862537286007337369190975020735577904573525287457158583492855541408061981201171875E-267 +3.87662540363128780330739053057168674129549537178088947124483514691413258961359539557362062872504007794525068882753620065467229409273554338112281774785506173932219196241882247318296491503546456686574061928863826823193863569866920067032499036919492904938279778450226744142841267245396673944221785283221711493162939386810483532359552173532071603312778713345614448695395411443129643226542738760921147509362742867758041232371934117997295006783161642283423428240058126416552416319764778366167775141770442588630218016163164669687198458559397889781928871078649882805199477738603814010423388497148985416130689765228311684265933352884419085294942508568283301428891718387603759765625E-267 +7.75325080726257431543914677366952127545811636887658294149921547532908804897945352008230304451688539971664407473560278042669547322431280123527280044587477968883877620442184972529999803956897211400112494724162971678309851618816831633109296586854701873045137791255766318312149086716125748816708028392874082953211942324005784123279485876054305605339211107952976155216544488326219501193374738054061799124105942797069091036875545455909540391323471897863147854253381143514150979804644809840117059783116407438495361048203299447873811689685420748759433526630468850779307974942736838499745537451115032772507457201467473838195004147115580914705057491431716698571108281612396240234375E-267 +7.7532508072625756066147810611433734825909907435617789424896702938282651792271907911472412574500801558905013776550724013093445881854710867622456354957101234786443839248376449463659298300709291337314812385772765364638772713973384013406499807383898580987655955690045348828568253449079334788844357056644342298632587877362096706471910434706414320662555742669122889739079082288625928645308547752184229501872548573551608246474386823599459001356632328456684685648011625283310483263952955673233555028354088517726043603232632933937439691711879577956385774215729976561039895547720762802084677699429797083226137953045662336853186670576883817058988501713656660285778343677520751953125E-267 +1.55065016145251486308782935473390425509162327377531658829984309506581760979589070401646060890337707994332881494712055608533909464486256024705456008917495593776775524088436994505999960791379442280022498944832594335661970323763366326621859317370940374609027558251153263662429817343225149763341605678574816590642388464801156824655897175210861121067842221590595231043308897665243900238674947610812359824821188559413818207375109091181908078264694379572629570850676228702830195960928961968023411956623281487699072209640659889574762337937084149751886705326093770155861594988547367699949107490223006554501491440293494767639000829423116182941011498286343339714221656322479248046875E-266 +1.5506501614525151213229562122286746965181981487123557884979340587656530358454381582294482514900160311781002755310144802618689176370942173524491270991420246957288767849675289892731859660141858267462962477154553072927754542794676802681299961476779716197531191138009069765713650689815866957768871411328868459726517575472419341294382086941282864132511148533824577947815816457725185729061709550436845900374509714710321649294877364719891800271326465691336937129602325056662096652790591134646711005670817703545208720646526586787487938342375915591277154843145995312207979109544152560416935539885959416645227590609132467370637334115376763411797700342731332057155668735504150390625E-266 +3.1013003229050297261756587094678085101832465475506331765996861901316352195917814080329212178067541598866576298942411121706781892897251204941091201783499118755355104817687398901199992158275888456004499788966518867132394064752673265324371863474188074921805511650230652732485963468645029952668321135714963318128477692960231364931179435042172224213568444318119046208661779533048780047734989522162471964964237711882763641475021818236381615652938875914525914170135245740566039192185792393604682391324656297539814441928131977914952467587416829950377341065218754031172318997709473539989821498044601310900298288058698953527800165884623236588202299657268667942844331264495849609375E-266 +3.101300322905030242645912424457349393036396297424711576995868117531306071690876316458896502980032062356200551062028960523737835274188434704898254198284049391457753569935057978546371932028371653492592495430910614585550908558935360536259992295355943239506238227601813953142730137963173391553774282265773691945303515094483868258876417388256572826502229706764915589563163291545037145812341910087369180074901942942064329858975472943978360054265293138267387425920465011332419330558118226929342201134163540709041744129305317357497587668475183118255430968629199062441595821908830512083387107977191883329045518121826493474127466823075352682359540068546266411431133747100830078125E-266 +6.202600645810059452351317418935617020366493095101266353199372380263270439183562816065842435613508319773315259788482224341356378579450240988218240356699823751071020963537479780239998431655177691200899957793303773426478812950534653064874372694837614984361102330046130546497192693729005990533664227142992663625695538592046272986235887008434444842713688863623809241732355906609756009546997904432494392992847542376552728295004363647276323130587775182905182834027049148113207838437158478720936478264931259507962888385626395582990493517483365990075468213043750806234463799541894707997964299608920262180059657611739790705560033176924647317640459931453733588568866252899169921875E-266 +6.20260064581006048529182484891469878607279259484942315399173623506261214338175263291779300596006412471240110212405792104747567054837686940979650839656809878291550713987011595709274386405674330698518499086182122917110181711787072107251998459071188647901247645520362790628546027592634678310754856453154738389060703018896773651775283477651314565300445941352983117912632658309007429162468382017473836014980388588412865971795094588795672010853058627653477485184093002266483866111623645385868440226832708141808348825861063471499517533695036623651086193725839812488319164381766102416677421595438376665809103624365298694825493364615070536471908013709253282286226749420166015625E-266 +1.240520129162011890470263483787123404073298619020253270639874476052654087836712563213168487122701663954663051957696444868271275715890048197643648071339964750214204192707495956047999686331035538240179991558660754685295762590106930612974874538967522996872220466009226109299438538745801198106732845428598532725139107718409254597247177401686888968542737772724761848346471181321951201909399580886498878598569508475310545659000872729455264626117555036581036566805409829622641567687431695744187295652986251901592577677125279116598098703496673198015093642608750161246892759908378941599592859921784052436011931522347958141112006635384929463528091986290746717713773250579833984375E-265 +1.24052012916201209705836496978293975721455851896988463079834724701252242867635052658355860119201282494248022042481158420949513410967537388195930167931361975658310142797402319141854877281134866139703699817236424583422036342357414421450399691814237729580249529104072558125709205518526935662150971290630947677812140603779354730355056695530262913060089188270596623582526531661801485832493676403494767202996077717682573194359018917759134402170611725530695497036818600453296773222324729077173688045366541628361669765172212694299903506739007324730217238745167962497663832876353220483335484319087675333161820724873059738965098672923014107294381602741850656457245349884033203125E-265 +2.48104025832402378094052696757424680814659723804050654127974895210530817567342512642633697424540332790932610391539288973654255143178009639528729614267992950042840838541499191209599937266207107648035998311732150937059152518021386122594974907793504599374444093201845221859887707749160239621346569085719706545027821543681850919449435480337377793708547554544952369669294236264390240381879916177299775719713901695062109131800174545891052925223511007316207313361081965924528313537486339148837459130597250380318515535425055823319619740699334639603018728521750032249378551981675788319918571984356810487202386304469591628222401327076985892705618397258149343542754650115966796875E-265 +2.4810402583240241941167299395658795144291170379397692615966944940250448573527010531671172023840256498849604408496231684189902682193507477639186033586272395131662028559480463828370975456226973227940739963447284916684407268471482884290079938362847545916049905820814511625141841103705387132430194258126189535562428120755870946071011339106052582612017837654119324716505306332360297166498735280698953440599215543536514638871803783551826880434122345106139099407363720090659354644464945815434737609073308325672333953034442538859980701347801464946043447749033592499532766575270644096667096863817535066632364144974611947793019734584602821458876320548370131291449069976806640625E-265 +4.9620805166480475618810539351484936162931944760810130825594979042106163513468502528526739484908066558186522078307857794730851028635601927905745922853598590008568167708299838241919987453241421529607199662346430187411830503604277224518994981558700919874888818640369044371977541549832047924269313817143941309005564308736370183889887096067475558741709510908990473933858847252878048076375983235459955143942780339012421826360034909178210585044702201463241462672216393184905662707497267829767491826119450076063703107085011164663923948139866927920603745704350006449875710396335157663983714396871362097440477260893918325644480265415397178541123679451629868708550930023193359375E-265 +4.962080516648048388233459879131759028858234075879538523193388988050089714705402106334234404768051299769920881699246336837980536438701495527837206717254479026332405711896092765674195091245394645588147992689456983336881453694296576858015987672569509183209981164162902325028368220741077426486038851625237907112485624151174189214202267821210516522403567530823864943301061266472059433299747056139790688119843108707302927774360756710365376086824469021227819881472744018131870928892989163086947521814661665134466790606888507771996140269560292989208689549806718499906553315054128819333419372763507013326472828994922389558603946916920564291775264109674026258289813995361328125E-265 +9.924161033296095123762107870296987232586388952162026165118995808421232702693700505705347896981613311637304415661571558946170205727120385581149184570719718001713633541659967648383997490648284305921439932469286037482366100720855444903798996311740183974977763728073808874395508309966409584853862763428788261801112861747274036777977419213495111748341902181798094786771769450575609615275196647091991028788556067802484365272006981835642117008940440292648292534443278636981132541499453565953498365223890015212740621417002232932784789627973385584120749140870001289975142079267031532796742879374272419488095452178783665128896053083079435708224735890325973741710186004638671875E-265 +9.92416103329609677646691975826351805771646815175907704638677797610017942941080421266846880953610259953984176339849267367596107287740299105567441343450895805266481142379218553134839018249078929117629598537891396667376290738859315371603197534513901836641996232832580465005673644148215485297207770325047581422497124830234837842840453564242103304480713506164772988660212253294411886659949411227958137623968621741460585554872151342073075217364893804245563976294548803626374185778597832617389504362932333026893358121377701554399228053912058597841737909961343699981310663010825763866683874552701402665294565798984477911720789383384112858355052821934805251657962799072265625E-265 +1.984832206659219024752421574059397446517277790432405233023799161684246540538740101141069579396322662327460883132314311789234041145424077116229836914143943600342726708331993529676799498129656861184287986493857207496473220144171088980759799262348036794995552745614761774879101661993281916970772552685757652360222572349454807355595483842699022349668380436359618957354353890115121923055039329418398205757711213560496873054401396367128423401788088058529658506888655727396226508299890713190699673044778003042548124283400446586556957925594677116824149828174000257995028415853406306559348575874854483897619090435756733025779210616615887141644947178065194748342037200927734375E-264 +1.98483220665921935529338395165270361154329363035181540927735559522003588588216084253369376190722051990796835267969853473519221457548059821113488268690179161053296228475843710626967803649815785823525919707578279333475258147771863074320639506902780367328399246566516093001134728829643097059441554065009516284499424966046967568568090712848420660896142701232954597732042450658882377331989882245591627524793724348292117110974430268414615043472978760849112795258909760725274837155719566523477900872586466605378671624275540310879845610782411719568347581992268739996262132602165152773336774910540280533058913159796895582344157876676822571671010564386961050331592559814453125E-264 +3.96966441331843804950484314811879489303455558086481046604759832336849308107748020228213915879264532465492176626462862357846808229084815423245967382828788720068545341666398705935359899625931372236857597298771441499294644028834217796151959852469607358999110549122952354975820332398656383394154510537151530472044514469890961471119096768539804469933676087271923791470870778023024384611007865883679641151542242712099374610880279273425684680357617611705931701377731145479245301659978142638139934608955600608509624856680089317311391585118935423364829965634800051599005683170681261311869715174970896779523818087151346605155842123323177428328989435613038949668407440185546875E-264 +3.9696644133184387105867679033054072230865872607036308185547111904400717717643216850673875238144410398159367053593970694703844291509611964222697653738035832210659245695168742125393560729963157164705183941515655866695051629554372614864127901380556073465679849313303218600226945765928619411888310813001903256899884993209393513713618142569684132179228540246590919546408490131776475466397976449118325504958744869658423422194886053682923008694595752169822559051781952145054967431143913304695580174517293321075734324855108062175969122156482343913669516398453747999252426520433030554667354982108056106611782631959379116468831575335364514334202112877392210066318511962890625E-264 +7.9393288266368760990096862962375897860691111617296209320951966467369861621549604045642783175852906493098435325292572471569361645816963084649193476565757744013709068333279741187071979925186274447371519459754288299858928805766843559230391970493921471799822109824590470995164066479731276678830902107430306094408902893978192294223819353707960893986735217454384758294174155604604876922201573176735928230308448542419874922176055854685136936071523522341186340275546229095849060331995628527627986921791120121701924971336017863462278317023787084672965993126960010319801136634136252262373943034994179355904763617430269321031168424664635485665797887122607789933681488037109375E-264 +7.939328826636877421173535806610814446173174521407261637109422380880143543528643370134775047628882079631873410718794138940768858301922392844539530747607166442131849139033748425078712145992631432941036788303131173339010325910874522972825580276111214693135969862660643720045389153185723882377662162600380651379976998641878702742723628513936826435845708049318183909281698026355295093279595289823665100991748973931684684438977210736584601738919150433964511810356390429010993486228782660939116034903458664215146864971021612435193824431296468782733903279690749599850485304086606110933470996421611221322356526391875823293766315067072902866840422575478442013263702392578125E-264 +1.5878657653273752198019372592475179572138222323459241864190393293473972324309920809128556635170581298619687065058514494313872329163392616929838695313151548802741813666655948237414395985037254889474303891950857659971785761153368711846078394098784294359964421964918094199032813295946255335766180421486061218881780578795638458844763870741592178797347043490876951658834831120920975384440314635347185646061689708483974984435211170937027387214304704468237268055109245819169812066399125705525597384358224024340384994267203572692455663404757416934593198625392002063960227326827250452474788606998835871180952723486053864206233684932927097133159577424521557986736297607421875E-263 +1.587865765327375484234707161322162889234634904281452327421884476176028708705728674026955009525776415926374682143758827788153771660384478568907906149521433288426369827806749685015742429198526286588207357660626234667802065182174904594565116055222242938627193972532128744009077830637144776475532432520076130275995399728375740548544725702787365287169141609863636781856339605271059018655919057964733020198349794786336936887795442147316920347783830086792902362071278085802198697245756532187823206980691732843029372994204322487038764886259293756546780655938149919970097060817321222186694199284322244264471305278375164658753263013414580573368084515095688402652740478515625E-263 +3.175731530654750439603874518495035914427644464691848372838078658694794464861984161825711327034116259723937413011702898862774465832678523385967739062630309760548362733331189647482879197007450977894860778390171531994357152230673742369215678819756858871992884392983618839806562659189251067153236084297212243776356115759127691768952774148318435759469408698175390331766966224184195076888062927069437129212337941696794996887042234187405477442860940893647453611021849163833962413279825141105119476871644804868076998853440714538491132680951483386918639725078400412792045465365450090494957721399767174236190544697210772841246736986585419426631915484904311597347259521484375E-263 +3.17573153065475096846941432264432577846926980856290465484376895235205741741145734805391001905155283185274936428751765557630754332076895713781581229904286657685273965561349937003148485839705257317641471532125246933560413036434980918913023211044448587725438794506425748801815566127428955295106486504015226055199079945675148109708945140557473057433828321972727356371267921054211803731183811592946604039669958957267387377559088429463384069556766017358580472414255617160439739449151306437564641396138346568605874598840864497407752977251858751309356131187629983994019412163464244437338839856864448852894261055675032931750652602682916114673616903019137680530548095703125E-263 +6.35146306130950087920774903699007182885528892938369674567615731738958892972396832365142265406823251944787482602340579772554893166535704677193547812526061952109672546666237929496575839401490195578972155678034306398871430446134748473843135763951371774398576878596723767961312531837850213430647216859442448755271223151825538353790554829663687151893881739635078066353393244836839015377612585413887425842467588339358999377408446837481095488572188178729490722204369832766792482655965028221023895374328960973615399770688142907698226536190296677383727945015680082558409093073090018098991544279953434847238108939442154568249347397317083885326383096980862319469451904296875E-263 +6.3514630613095019369388286452886515569385396171258093096875379047041148348229146961078200381031056637054987285750353111526150866415379142756316245980857331537054793112269987400629697167941051463528294306425049386712082607286996183782604642208889717545087758901285149760363113225485791059021297300803045211039815989135029621941789028111494611486765664394545471274253584210842360746236762318589320807933991791453477475511817685892676813911353203471716094482851123432087947889830261287512928279227669313721174919768172899481550595450371750261871226237525996798803882432692848887467767971372889770578852211135006586350130520536583222934723380603827536106109619140625E-263 +1.27029261226190017584154980739801436577105778587673934913523146347791778594479366473028453081364650388957496520468115954510978633307140935438709562505212390421934509333247585899315167880298039115794431135606861279774286089226949694768627152790274354879715375719344753592262506367570042686129443371888489751054244630365107670758110965932737430378776347927015613270678648967367803075522517082777485168493517667871799875481689367496219097714437635745898144440873966553358496531193005644204779074865792194723079954137628581539645307238059335476745589003136016511681818614618003619798308855990686969447621787888430913649869479463416777065276619396172463893890380859375E-262 +1.2702926122619003873877657290577303113877079234251618619375075809408229669645829392215640076206211327410997457150070622305230173283075828551263249196171466307410958622453997480125939433588210292705658861285009877342416521457399236756520928441777943509017551780257029952072622645097158211804259460160609042207963197827005924388357805622298922297353132878909094254850716842168472149247352463717864161586798358290695495102363537178535362782270640694343218896570224686417589577966052257502585655845533862744234983953634579896310119090074350052374245247505199359760776486538569777493553594274577954115770442227001317270026104107316644586944676120765507221221923828125E-262 +2.5405852245238003516830996147960287315421155717534786982704629269558355718895873294605690616272930077791499304093623190902195726661428187087741912501042478084386901866649517179863033576059607823158886227121372255954857217845389938953725430558054870975943075143868950718452501273514008537225888674377697950210848926073021534151622193186547486075755269585403122654135729793473560615104503416555497033698703533574359975096337873499243819542887527149179628888174793310671699306238601128840955814973158438944615990827525716307929061447611867095349117800627203302336363722923600723959661771198137393889524357577686182729973895892683355413055323879234492778778076171875E-262 +2.540585224523800774775531458115460622775415846850323723875015161881645933929165878443128015241242265482199491430014124461046034656615165710252649839234293261482191724490799496025187886717642058541131772257001975468483304291479847351304185688355588701803510356051405990414524529019431642360851892032121808441592639565401184877671561124459784459470626575781818850970143368433694429849470492743572832317359671658139099020472707435707072556454128138868643779314044937283517915593210451500517131169106772548846996790726915979262023818014870010474849049501039871952155297307713955498710718854915590823154088445400263454005220821463328917388935224153101444244384765625E-262 +5.081170449047600703366199229592057463084231143506957396540925853911671143779174658921138123254586015558299860818724638180439145332285637417548382500208495616877380373329903435972606715211921564631777245424274451190971443569077987790745086111610974195188615028773790143690500254702801707445177734875539590042169785214604306830324438637309497215151053917080624530827145958694712123020900683311099406739740706714871995019267574699848763908577505429835925777634958662134339861247720225768191162994631687788923198165505143261585812289522373419069823560125440660467272744584720144791932354239627478777904871515537236545994779178536671082611064775846898555755615234375E-262 +5.08117044904760154955106291623092124555083169370064744775003032376329186785833175688625603048248453096439898286002824892209206931323033142050529967846858652296438344898159899205037577343528411708226354451400395093696660858295969470260837137671117740360702071210281198082904905803886328472170378406424361688318527913080236975534312224891956891894125315156363770194028673686738885969894098548714566463471934331627819804094541487141414511290825627773728755862808987456703583118642090300103426233821354509769399358145383195852404763602974002094969809900207974390431059461542791099742143770983118164630817689080052690801044164292665783477787044830620288848876953125E-262 +1.016234089809520140673239845918411492616846228701391479308185170782334228755834931784227624650917203111659972163744927636087829066457127483509676500041699123375476074665980687194521343042384312926355449084854890238194288713815597558149017222322194839037723005754758028738100050940560341489035546975107918008433957042920861366064887727461899443030210783416124906165429191738942424604180136662219881347948141342974399003853514939969752781715501085967185155526991732426867972249544045153638232598926337557784639633101028652317162457904474683813964712025088132093454548916944028958386470847925495755580974303107447309198955835707334216522212955169379711151123046875E-261 +1.01623408980952030991021258324618424911016633874012948955000606475265837357166635137725120609649690619287979657200564978441841386264606628410105993569371730459287668979631979841007515468705682341645270890280079018739332171659193894052167427534223548072140414242056239616580981160777265694434075681284872337663705582616047395106862444978391378378825063031272754038805734737347777193978819709742913292694386866325563960818908297428282902258165125554745751172561797491340716623728418060020685246764270901953879871629076639170480952720594800418993961980041594878086211892308558219948428754196623632926163537816010538160208832858533156695557408966124057769775390625E-261 +2.03246817961904028134647969183682298523369245740278295861637034156466845751166986356845524930183440622331994432748985527217565813291425496701935300008339824675095214933196137438904268608476862585271089816970978047638857742763119511629803444464438967807544601150951605747620010188112068297807109395021583601686791408584172273212977545492379888606042156683224981233085838347788484920836027332443976269589628268594879800770702987993950556343100217193437031105398346485373594449908809030727646519785267511556927926620205730463432491580894936762792942405017626418690909783388805791677294169585099151116194860621489461839791167141466843304442591033875942230224609375E-261 +2.0324681796190406198204251664923684982203326774802589791000121295053167471433327027545024121929938123857595931440112995688368277252921325682021198713874346091857533795926395968201503093741136468329054178056015803747866434331838778810433485506844709614428082848411247923316196232155453138886815136256974467532741116523209479021372488995678275675765012606254550807761146947469555438795763941948582658538877373265112792163781659485656580451633025110949150234512359498268143324745683612004137049352854180390775974325815327834096190544118960083798792396008318975617242378461711643989685750839324726585232707563202107632041766571706631339111481793224811553955078125E-261 +4.0649363592380805626929593836736459704673849148055659172327406831293369150233397271369104986036688124466398886549797105443513162658285099340387060001667964935019042986639227487780853721695372517054217963394195609527771548552623902325960688892887793561508920230190321149524002037622413659561421879004316720337358281716834454642595509098475977721208431336644996246617167669557696984167205466488795253917925653718975960154140597598790111268620043438687406221079669297074718889981761806145529303957053502311385585324041146092686498316178987352558588481003525283738181956677761158335458833917019830223238972124297892367958233428293368660888518206775188446044921875E-261 +4.064936359238081239640850332984736996440665354960517958200024259010633494286665405509004824385987624771519186288022599137673655450584265136404239742774869218371506759185279193640300618748227293665810835611203160749573286866367755762086697101368941922885616569682249584663239246431090627777363027251394893506548223304641895804274497799135655135153002521250910161552229389493911087759152788389716531707775474653022558432756331897131316090326605022189830046902471899653628664949136722400827409870570836078155194865163065566819238108823792016759758479201663795123448475692342328797937150167864945317046541512640421526408353314341326267822296358644962310791015625E-261 +8.129872718476161125385918767347291940934769829611131834465481366258673830046679454273820997207337624893279777309959421088702632531657019868077412000333592987003808597327845497556170744339074503410843592678839121905554309710524780465192137778577558712301784046038064229904800407524482731912284375800863344067471656343366890928519101819695195544241686267328999249323433533911539396833441093297759050783585130743795192030828119519758022253724008687737481244215933859414943777996352361229105860791410700462277117064808229218537299663235797470511717696200705056747636391335552231667091766783403966044647794424859578473591646685658673732177703641355037689208984375E-261 +8.12987271847616247928170066596947399288133070992103591640004851802126698857333081101800964877197524954303837257604519827534731090116853027280847948554973843674301351837055838728060123749645458733162167122240632149914657373273551152417339420273788384577123313936449916932647849286218125555472605450278978701309644660928379160854899559827131027030600504250182032310445877898782217551830557677943306341555094930604511686551266379426263218065321004437966009380494379930725732989827344480165481974114167215631038973032613113363847621764758403351951695840332759024689695138468465759587430033572989063409308302528084305281670662868265253564459271728992462158203125E-261 +1.625974543695232225077183753469458388186953965922226366893096273251734766009335890854764199441467524978655955461991884217740526506331403973615482400066718597400761719465569099511234148867814900682168718535767824381110861942104956093038427555715511742460356809207612845980960081504896546382456875160172668813494331268673378185703820363939039108848337253465799849864686706782307879366688218659551810156717026148759038406165623903951604450744801737547496248843186771882988755599270472245821172158282140092455423412961645843707459932647159494102343539240141011349527278267110446333418353356680793208929558884971915694718329337131734746435540728271007537841796875E-260 +1.62597454369523249585634013319389479857626614198420718328000970360425339771466616220360192975439504990860767451520903965506946218023370605456169589710994768734860270367411167745612024749929091746632433424448126429982931474654710230483467884054757676915424662787289983386529569857243625111094521090055795740261928932185675832170979911965426205406120100850036406462089175579756443510366111535588661268311018986120902337310253275885252643613064200887593201876098875986145146597965468896033096394822833443126207794606522622672769524352951680670390339168066551804937939027693693151917486006714597812681861660505616861056334132573653050712891854345798492431640625E-260 +3.25194908739046445015436750693891677637390793184445273378619254650346953201867178170952839888293504995731191092398376843548105301266280794723096480013343719480152343893113819902246829773562980136433743707153564876222172388420991218607685511143102348492071361841522569196192016300979309276491375032034533762698866253734675637140764072787807821769667450693159969972937341356461575873337643731910362031343405229751807681233124780790320890148960347509499249768637354376597751119854094449164234431656428018491084682592329168741491986529431898820468707848028202269905455653422089266683670671336158641785911776994383138943665867426346949287108145654201507568359375E-260 +3.2519490873904649917126802663877895971525322839684143665600194072085067954293323244072038595087900998172153490304180793101389243604674121091233917942198953746972054073482233549122404949985818349326486684889625285996586294930942046096693576810951535383084932557457996677305913971448725022218904218011159148052385786437135166434195982393085241081224020170007281292417835115951288702073222307117732253662203797224180467462050655177050528722612840177518640375219775197229029319593093779206619278964566688625241558921304524534553904870590336134078067833613310360987587805538738630383497201342919562536372332101123372211266826514730610142578370869159698486328125E-260 +6.5038981747809289003087350138778335527478158636889054675723850930069390640373435634190567977658700999146238218479675368709621060253256158944619296002668743896030468778622763980449365954712596027286748741430712975244434477684198243721537102228620469698414272368304513839238403260195861855298275006406906752539773250746935127428152814557561564353933490138631993994587468271292315174667528746382072406268681045950361536246624956158064178029792069501899849953727470875319550223970818889832846886331285603698216936518465833748298397305886379764093741569605640453981091130684417853336734134267231728357182355398876627788733173485269389857421629130840301513671875E-260 +6.503898174780929983425360532775579194305064567936828733120038814417013590858664648814407719017580199634430698060836158620277848720934824218246783588439790749394410814696446709824480989997163669865297336977925057199317258986188409219338715362190307076616986511491599335461182794289745004443780843602231829610477157287427033286839196478617048216244804034001456258483567023190257740414644461423546450732440759444836093492410131035410105744522568035503728075043955039445805863918618755841323855792913337725048311784260904906910780974118067226815613566722662072197517561107747726076699440268583912507274466420224674442253365302946122028515674173831939697265625E-260 +1.3007796349561857800617470027755667105495631727377810935144770186013878128074687126838113595531740199829247643695935073741924212050651231788923859200533748779206093755724552796089873190942519205457349748286142595048886895536839648744307420445724093939682854473660902767847680652039172371059655001281381350507954650149387025485630562911512312870786698027726398798917493654258463034933505749276414481253736209190072307249324991231612835605958413900379969990745494175063910044794163777966569377266257120739643387303693166749659679461177275952818748313921128090796218226136883570667346826853446345671436471079775325557746634697053877971484325826168060302734375E-259 +1.300779634956185996685072106555115838861012913587365746624007762883402718171732929762881543803516039926886139612167231724055569744186964843649356717687958149878882162939289341964896197999432733973059467395585011439863451797237681843867743072438061415323397302298319867092236558857949000888756168720446365922095431457485406657367839295723409643248960806800291251696713404638051548082928892284709290146488151888967218698482026207082021148904513607100745615008791007889161172783723751168264771158582667545009662356852180981382156194823613445363122713344532414439503512221549545215339888053716782501454893284044934888450673060589224405703134834766387939453125E-259 +2.601559269912371560123494005551133421099126345475562187028954037202775625614937425367622719106348039965849528739187014748384842410130246357784771840106749755841218751144910559217974638188503841091469949657228519009777379107367929748861484089144818787936570894732180553569536130407834474211931000256276270101590930029877405097126112582302462574157339605545279759783498730851692606986701149855282896250747241838014461449864998246322567121191682780075993998149098835012782008958832755593313875453251424147928677460738633349931935892235455190563749662784225618159243645227376714133469365370689269134287294215955065111549326939410775594296865165233612060546875E-259 +2.60155926991237199337014421311023167772202582717473149324801552576680543634346585952576308760703207985377227922433446344811113948837392968729871343537591629975776432587857868392979239599886546794611893479117002287972690359447536368773548614487612283064679460459663973418447311771589800177751233744089273184419086291497081331473567859144681928649792161360058250339342680927610309616585778456941858029297630377793443739696405241416404229780902721420149123001758201577832234556744750233652954231716533509001932471370436196276431238964722689072624542668906482887900702444309909043067977610743356500290978656808986977690134612117844881140626966953277587890625E-259 +5.20311853982474312024698801110226684219825269095112437405790807440555125122987485073524543821269607993169905747837402949676968482026049271556954368021349951168243750228982111843594927637700768218293989931445703801955475821473585949772296817828963757587314178946436110713907226081566894842386200051255254020318186005975481019425222516460492514831467921109055951956699746170338521397340229971056579250149448367602892289972999649264513424238336556015198799629819767002556401791766551118662775090650284829585735492147726669986387178447091038112749932556845123631848729045475342826693873074137853826857458843191013022309865387882155118859373033046722412109375E-259 +5.2031185398247439867402884262204633554440516543494629864960310515336108726869317190515261752140641597075445584486689268962222789767478593745974268707518325995155286517571573678595847919977309358922378695823400457594538071889507273754709722897522456612935892091932794683689462354317960035550246748817854636883817258299416266294713571828936385729958432272011650067868536185522061923317155691388371605859526075558688747939281048283280845956180544284029824600351640315566446911348950046730590846343306701800386494274087239255286247792944537814524908533781296577580140488861981808613595522148671300058195731361797395538026922423568976228125393390655517578125E-259 +1.04062370796494862404939760222045336843965053819022487481158161488111025024597497014704908764253921598633981149567480589935393696405209854311390873604269990233648750045796422368718985527540153643658797986289140760391095164294717189954459363565792751517462835789287222142781445216313378968477240010251050804063637201195096203885044503292098502966293584221811190391339949234067704279468045994211315850029889673520578457994599929852902684847667311203039759925963953400511280358353310223732555018130056965917147098429545333997277435689418207622549986511369024726369745809095068565338774614827570765371491768638202604461973077576431023771874606609344482421875E-258 +1.0406237079649487973480576852440926710888103308698925972992062103067221745373863438103052350428128319415089116897337853792444557953495718749194853741503665199031057303514314735719169583995461871784475739164680091518907614377901454750941944579504491322587178418386558936737892470863592007110049349763570927376763451659883253258942714365787277145991686454402330013573707237104412384663431138277674321171905215111737749587856209656656169191236108856805964920070328063113289382269790009346118169268661340360077298854817447851057249558588907562904981706756259315516028097772396361722719104429734260011639146272359479107605384484713795245625078678131103515625E-258 +2.0812474159298972480987952044409067368793010763804497496231632297622205004919499402940981752850784319726796229913496117987078739281041970862278174720853998046729750009159284473743797105508030728731759597257828152078219032858943437990891872713158550303492567157857444428556289043262675793695448002050210160812727440239019240777008900658419700593258716844362238078267989846813540855893609198842263170005977934704115691598919985970580536969533462240607951985192790680102256071670662044746511003626011393183429419685909066799455487137883641524509997302273804945273949161819013713067754922965514153074298353727640520892394615515286204754374921321868896484375E-258 +2.081247415929897594696115370488185342177620661739785194598412420613444349074772687620610470085625663883017823379467570758488911590699143749838970748300733039806211460702862947143833916799092374356895147832936018303781522875580290950188388915900898264517435683677311787347578494172718401422009869952714185475352690331976650651788542873157455429198337290880466002714741447420882476932686227655534864234381043022347549917571241931331233838247221771361192984014065612622657876453958001869223633853732268072015459770963489570211449911717781512580996341351251863103205619554479272344543820885946852002327829254471895821521076896942759049125015735626220703125E-258 +4.162494831859794496197590408881813473758602152760899499246326459524441000983899880588196350570156863945359245982699223597415747856208394172455634944170799609345950001831856894748759421101606145746351919451565630415643806571788687598178374542631710060698513431571488885711257808652535158739089600410042032162545488047803848155401780131683940118651743368872447615653597969362708171178721839768452634001195586940823138319783997194116107393906692448121590397038558136020451214334132408949302200725202278636685883937181813359891097427576728304901999460454760989054789832363802742613550984593102830614859670745528104178478923103057240950874984264373779296875E-258 +4.16249483185979518939223074097637068435524132347957038919682484122688869814954537524122094017125132776603564675893514151697782318139828749967794149660146607961242292140572589428766783359818474871379029566587203660756304575116058190037677783180179652903487136735462357469515698834543680284401973990542837095070538066395330130357708574631491085839667458176093200542948289484176495386537245531106972846876208604469509983514248386266246767649444354272238596802813122524531575290791600373844726770746453614403091954192697914042289982343556302516199268270250372620641123910895854468908764177189370400465565850894379164304215379388551809825003147125244140625E-258 +8.32498966371958899239518081776362694751720430552179899849265291904888200196779976117639270114031372789071849196539844719483149571241678834491126988834159921869190000366371378949751884220321229149270383890313126083128761314357737519635674908526342012139702686314297777142251561730507031747817920082008406432509097609560769631080356026336788023730348673774489523130719593872541634235744367953690526800239117388164627663956799438823221478781338489624318079407711627204090242866826481789860440145040455727337176787436362671978219485515345660980399892090952197810957966472760548522710196918620566122971934149105620835695784620611448190174996852874755859375E-258 +8.3249896637195903787844614819527413687104826469591407783936496824537773962990907504824418803425026555320712935178702830339556463627965749993558829932029321592248458428114517885753356671963694974275805913317440732151260915023211638007535556636035930580697427347092471493903139766908736056880394798108567419014107613279066026071541714926298217167933491635218640108589657896835299077307449106221394569375241720893901996702849677253249353529888870854447719360562624504906315058158320074768945354149290722880618390838539582808457996468711260503239853654050074524128224782179170893781752835437874080093113170178875832860843075877710361965000629425048828125E-258 +1.66499793274391779847903616355272538950344086110435979969853058380977640039355995223527854022806274557814369839307968943896629914248335766898225397766831984373838000073274275789950376844064245829854076778062625216625752262871547503927134981705268402427940537262859555428450312346101406349563584016401681286501819521912153926216071205267357604746069734754897904626143918774508326847148873590738105360047823477632925532791359887764644295756267697924863615881542325440818048573365296357972088029008091145467435357487272534395643897103069132196079978418190439562191593294552109704542039383724113224594386829821124167139156924122289638034999370574951171875E-257 +1.6649979327439180757568922963905482737420965293918281556787299364907554792598181500964883760685005311064142587035740566067911292725593149998711765986405864318449691685622903577150671334392738994855161182663488146430252183004642327601507111327207186116139485469418494298780627953381747211376078959621713483802821522655813205214308342985259643433586698327043728021717931579367059815461489821244278913875048344178780399340569935450649870705977774170889543872112524900981263011631664014953789070829858144576123678167707916561691599293742252100647970730810014904825644956435834178756350567087574816018622634035775166572168615175542072393000125885009765625E-257 +3.3299958654878355969580723271054507790068817222087195993970611676195528007871199044705570804561254911562873967861593788779325982849667153379645079553366396874767600014654855157990075368812849165970815355612525043325150452574309500785426996341053680485588107452571911085690062469220281269912716803280336257300363904382430785243214241053471520949213946950979580925228783754901665369429774718147621072009564695526585106558271977552928859151253539584972723176308465088163609714673059271594417605801618229093487071497454506879128779420613826439215995683638087912438318658910421940908407876744822644918877365964224833427831384824457927606999874114990234375E-257 +3.329995865487836151513784592781096547484193058783656311357459872981510958519636300192976752137001062212828517407148113213582258545118629999742353197281172863689938337124580715430134266878547798971032236532697629286050436600928465520301422265441437223227897093883698859756125590676349442275215791924342696760564304531162641042861668597051928686717339665408745604343586315873411963092297964248855782775009668835756079868113987090129974141195554834177908774422504980196252602326332802990757814165971628915224735633541583312338319858748450420129594146162002980965128991287166835751270113417514963203724526807155033314433723035108414478600025177001953125E-257 +6.659991730975671193916144654210901558013763444417439198794122335239105601574239808941114160912250982312574793572318757755865196569933430675929015910673279374953520002930971031598015073762569833194163071122505008665030090514861900157085399268210736097117621490514382217138012493844056253982543360656067251460072780876486157048642848210694304189842789390195916185045756750980333073885954943629524214401912939105317021311654395510585771830250707916994544635261693017632721942934611854318883521160323645818697414299490901375825755884122765287843199136727617582487663731782084388181681575348964528983775473192844966685566276964891585521399974822998046875E-257 +6.65999173097567230302756918556219309496838611756731262271491974596302191703927260038595350427400212442565703481429622642716451709023725999948470639456234572737987667424916143086026853375709559794206447306539525857210087320185693104060284453088287444645579418776739771951225118135269888455043158384868539352112860906232528208572333719410385737343467933081749120868717263174682392618459592849771156555001933767151215973622797418025994828239110966835581754884500996039250520465266560598151562833194325783044947126708316662467663971749690084025918829232400596193025798257433367150254022683502992640744905361431006662886744607021682895720005035400390625E-257 +1.331998346195134238783228930842180311602752688883487839758824467047821120314847961788222832182450196462514958714463751551173039313986686135185803182134655874990704000586194206319603014752513966638832614224501001733006018102972380031417079853642147219423524298102876443427602498768811250796508672131213450292014556175297231409728569642138860837968557878039183237009151350196066614777190988725904842880382587821063404262330879102117154366050141583398908927052338603526544388586922370863776704232064729163739482859898180275165151176824553057568639827345523516497532746356416877636336315069792905796755094638568993337113255392978317104279994964599609375E-256 +1.33199834619513446060551383711243861899367722351346252454298394919260438340785452007719070085480042488513140696285924528543290341804745199989694127891246914547597533484983228617205370675141911958841289461307905171442017464037138620812056890617657488929115883755347954390245023627053977691008631676973707870422572181246505641714466743882077147468693586616349824173743452634936478523691918569954231311000386753430243194724559483605198965647822193367116350976900199207850104093053312119630312566638865156608989425341663332493532794349938016805183765846480119238605159651486673430050804536700598528148981072286201332577348921404336579144001007080078125E-256 +2.66399669239026847756645786168436062320550537776697567951764893409564224062969592357644566436490039292502991742892750310234607862797337227037160636426931174998140800117238841263920602950502793327766522844900200346601203620594476006283415970728429443884704859620575288685520499753762250159301734426242690058402911235059446281945713928427772167593711575607836647401830270039213322955438197745180968576076517564212680852466175820423430873210028316679781785410467720705308877717384474172755340846412945832747896571979636055033030235364910611513727965469104703299506549271283375527267263013958581159351018927713798667422651078595663420855998992919921875E-256 +2.6639966923902689212110276742248772379873544470269250490859678983852087668157090401543814017096008497702628139257184905708658068360949039997938825578249382909519506696996645723441074135028382391768257892261581034288403492807427724162411378123531497785823176751069590878049004725410795538201726335394741574084514436249301128342893348776415429493738717323269964834748690526987295704738383713990846262200077350686048638944911896721039793129564438673423270195380039841570020818610662423926062513327773031321797885068332666498706558869987603361036753169296023847721031930297334686010160907340119705629796214457240266515469784280867315828800201416015625E-256 +5.3279933847805369551329157233687212464110107555339513590352978681912844812593918471528913287298007858500598348578550062046921572559467445407432127285386234999628160023447768252784120590100558665553304568980040069320240724118895201256683194145685888776940971924115057737104099950752450031860346885248538011680582247011889256389142785685554433518742315121567329480366054007842664591087639549036193715215303512842536170493235164084686174642005663335956357082093544141061775543476894834551068169282589166549579314395927211006606047072982122302745593093820940659901309854256675105453452602791716231870203785542759733484530215719132684171199798583984375E-256 +5.327993384780537842422055348449754475974708894053850098171935796770417533631418080308762803419201699540525627851436981141731613672189807999587765115649876581903901339399329144688214827005676478353651578452316206857680698561485544832482275624706299557164635350213918175609800945082159107640345267078948314816902887249860225668578669755283085898747743464653992966949738105397459140947676742798169252440015470137209727788982379344207958625912887734684654039076007968314004163722132484785212502665554606264359577013666533299741311773997520672207350633859204769544206386059466937202032181468023941125959242891448053303093956856173463165760040283203125E-256 +1.0655986769561073910265831446737442492822021511067902718070595736382568962518783694305782657459601571700119669715710012409384314511893489081486425457077246999925632004689553650556824118020111733110660913796008013864048144823779040251336638829137177755388194384823011547420819990150490006372069377049707602336116449402377851277828557137110886703748463024313465896073210801568532918217527909807238743043060702568507234098647032816937234928401132667191271416418708828212355108695378966910213633856517833309915862879185442201321209414596424460549118618764188131980261970851335021090690520558343246374040757108551946696906043143826536834239959716796875E-255 +1.065598676956107568484411069689950895194941778810770019634387159354083506726283616061752560683840339908105125570287396228346322734437961599917553023129975316380780267879865828937642965401135295670730315690463241371536139712297108966496455124941259911432927070042783635121960189016431821528069053415789662963380577449972045133715733951056617179749548692930798593389947621079491828189535348559633850488003094027441945557796475868841591725182577546936930807815201593662800832744426496957042500533110921252871915402733306659948262354799504134441470126771840953908841277211893387440406436293604788225191848578289610660618791371234692633152008056640625E-255 +2.131197353912214782053166289347488498564404302213580543614119147276513792503756738861156531491920314340023933943142002481876862902378697816297285091415449399985126400937910730111364823604022346622132182759201602772809628964755808050267327765827435551077638876964602309484163998030098001274413875409941520467223289880475570255565711427422177340749692604862693179214642160313706583643505581961447748608612140513701446819729406563387446985680226533438254283283741765642471021739075793382042726771303566661983172575837088440264241882919284892109823723752837626396052394170267004218138104111668649274808151421710389339381208628765307366847991943359375E-255 +2.13119735391221513696882213937990179038988355762154003926877431870816701345256723212350512136768067981621025114057479245669264546887592319983510604625995063276156053575973165787528593080227059134146063138092648274307227942459421793299291024988251982286585414008556727024392037803286364305613810683157932592676115489994409026743146790211323435949909738586159718677989524215898365637907069711926770097600618805488389111559295173768318345036515509387386161563040318732560166548885299391408500106622184250574383080546661331989652470959900826888294025354368190781768255442378677488081287258720957645038369715657922132123758274246938526630401611328125E-255 +4.26239470782442956410633257869497699712880860442716108722823829455302758500751347772231306298384062868004786788628400496375372580475739563259457018283089879997025280187582146022272964720804469324426436551840320554561925792951161610053465553165487110215527775392920461896832799606019600254882775081988304093444657976095114051113142285484435468149938520972538635842928432062741316728701116392289549721722428102740289363945881312677489397136045306687650856656748353128494204347815158676408545354260713332396634515167417688052848376583856978421964744750567525279210478834053400843627620822333729854961630284342077867876241725753061473369598388671875E-255 +4.2623947078244302739376442787598035807797671152430800785375486374163340269051344642470102427353613596324205022811495849133852909377518463996702120925199012655231210715194633157505718616045411826829212627618529654861445588491884358659858204997650396457317082801711345404878407560657272861122762136631586518535223097998881805348629358042264687189981947717231943735597904843179673127581413942385354019520123761097677822311859034753663669007303101877477232312608063746512033309777059878281700021324436850114876616109332266397930494191980165377658805070873638156353651088475735497616257451744191529007673943131584426424751654849387705326080322265625E-255 +8.5247894156488591282126651573899539942576172088543221744564765891060551700150269554446261259676812573600957357725680099275074516095147912651891403656617975999405056037516429204454592944160893864885287310368064110912385158590232322010693110633097422043105555078584092379366559921203920050976555016397660818688931595219022810222628457096887093629987704194507727168585686412548263345740223278457909944344485620548057872789176262535497879427209061337530171331349670625698840869563031735281709070852142666479326903033483537610569675316771395684392948950113505055842095766810680168725524164466745970992326056868415573575248345150612294673919677734375E-255 +8.524789415648860547875288557519607161559534230486160157075097274832668053810268928494020485470722719264841004562299169826770581875503692799340424185039802531046242143038926631501143723209082365365842525523705930972289117698376871731971640999530079291463416560342269080975681512131454572224552427326317303707044619599776361069725871608452937437996389543446388747119580968635934625516282788477070803904024752219535564462371806950732733801460620375495446462521612749302406661955411975656340004264887370022975323221866453279586098838396033075531761014174727631270730217695147099523251490348838305801534788626316885284950330969877541065216064453125E-255 +1.7049578831297718256425330314779907988515234417708644348912953178212110340030053910889252251935362514720191471545136019855014903219029582530378280731323595199881011207503285840890918588832178772977057462073612822182477031718046464402138622126619484408621111015716818475873311984240784010195311003279532163737786319043804562044525691419377418725997540838901545433717137282509652669148044655691581988868897124109611574557835252507099575885441812267506034266269934125139768173912606347056341814170428533295865380606696707522113935063354279136878589790022701011168419153362136033745104832893349194198465211373683114715049669030122458934783935546875E-254 +1.704957883129772109575057711503921432311906846097232031415019454966533610762053785698804097094144543852968200912459833965354116375100738559868084837007960506209248428607785326300228744641816473073168505104741186194457823539675374346394328199906015858292683312068453816195136302426290914444910485465263460741408923919955272213945174321690587487599277908689277749423916193727186925103256557695414160780804950443907112892474361390146546760292124075099089292504322549860481332391082395131268000852977474004595064644373290655917219767679206615106352202834945526254146043539029419904650298069767661160306957725263377056990066193975508213043212890625E-254 +3.409915766259543651285066062955981597703046883541728869782590635642422068006010782177850450387072502944038294309027203971002980643805916506075656146264719039976202241500657168178183717766435754595411492414722564436495406343609292880427724425323896881724222203143363695174662396848156802039062200655906432747557263808760912408905138283875483745199508167780309086743427456501930533829608931138316397773779424821922314911567050501419915177088362453501206853253986825027953634782521269411268362834085706659173076121339341504422787012670855827375717958004540202233683830672427206749020966578669838839693042274736622943009933806024491786956787109375E-254 +3.40991576625954421915011542300784286462381369219446406283003890993306722152410757139760819418828908770593640182491966793070823275020147711973616967401592101241849685721557065260045748928363294614633701020948237238891564707935074869278865639981203171658536662413690763239027260485258182888982097093052692148281784783991054442789034864338117497519855581737855549884783238745437385020651311539082832156160990088781422578494872278029309352058424815019817858500864509972096266478216479026253600170595494800919012928874658131183443953535841323021270440566989105250829208707805883980930059613953532232061391545052675411398013238795101642608642578125E-254 +6.81983153251908730257013212591196319540609376708345773956518127128484413601202156435570090077414500588807658861805440794200596128761183301215131229252943807995240448300131433635636743553287150919082298482944512887299081268721858576085544885064779376344844440628672739034932479369631360407812440131181286549511452761752182481781027656775096749039901633556061817348685491300386106765921786227663279554755884964384462982313410100283983035417672490700241370650797365005590726956504253882253672566817141331834615224267868300884557402534171165475143591600908040446736766134485441349804193315733967767938608454947324588601986761204898357391357421875E-254 +6.8198315325190884383002308460156857292476273843889281256600778198661344430482151427952163883765781754118728036498393358614164655004029542394723393480318420248369937144311413052009149785672658922926740204189647447778312941587014973855773127996240634331707332482738152647805452097051636577796419418610538429656356956798210888557806972867623499503971116347571109976956647749087477004130262307816566431232198017756284515698974455605861870411684963003963571700172901994419253295643295805250720034119098960183802585774931626236688790707168264604254088113397821050165841741561176796186011922790706446412278309010535082279602647759020328521728515625E-254 +1.36396630650381746051402642518239263908121875341669154791303625425696882720240431287114018015482900117761531772361088158840119225752236660243026245850588761599048089660026286727127348710657430183816459696588902577459816253744371715217108977012955875268968888125734547806986495873926272081562488026236257309902290552350436496356205531355019349807980326711212363469737098260077221353184357245532655910951176992876892596462682020056796607083534498140048274130159473001118145391300850776450734513363428266366923044853573660176911480506834233095028718320181608089347353226897088269960838663146793553587721690989464917720397352240979671478271484375E-253 +1.3639663065038176876600461692031371458495254768777856251320155639732268886096430285590432776753156350823745607299678671722832931000805908478944678696063684049673987428862282610401829957134531784585348040837929489555662588317402994771154625599248126866341466496547630529561090419410327315559283883722107685931271391359642177711561394573524699900794223269514221995391329549817495400826052461563313286246439603551256903139794891121172374082336992600792714340034580398883850659128659161050144006823819792036760517154986325247337758141433652920850817622679564210033168348312235359237202384558141289282455661802107016455920529551804065704345703125E-253 +2.7279326130076349210280528503647852781624375068333830958260725085139376544048086257422803603096580023552306354472217631768023845150447332048605249170117752319809617932005257345425469742131486036763291939317780515491963250748874343043421795402591175053793777625146909561397299174785254416312497605247251461980458110470087299271241106271003869961596065342242472693947419652015444270636871449106531182190235398575378519292536404011359321416706899628009654826031894600223629078260170155290146902672685653273384608970714732035382296101366846619005743664036321617869470645379417653992167732629358710717544338197892983544079470448195934295654296875E-253 +2.727932613007635375320092338406274291699050953755571250264031127946453777219286057118086555350631270164749121459935734344566586200161181695788935739212736809934797485772456522080365991426906356917069608167585897911132517663480598954230925119849625373268293299309526105912218083882065463111856776744421537186254278271928435542312278914704939980158844653902844399078265909963499080165210492312662657249287920710251380627958978224234474816467398520158542868006916079776770131825731832210028801364763958407352103430997265049467551628286730584170163524535912842006633669662447071847440476911628257856491132360421403291184105910360813140869140625E-253 +5.455865226015269842056105700729570556324875013666766191652145017027875308809617251484560720619316004710461270894443526353604769030089466409721049834023550463961923586401051469085093948426297207352658387863556103098392650149774868608684359080518235010758755525029381912279459834957050883262499521049450292396091622094017459854248221254200773992319213068448494538789483930403088854127374289821306236438047079715075703858507280802271864283341379925601930965206378920044725815652034031058029380534537130654676921794142946407076459220273369323801148732807264323573894129075883530798433546525871742143508867639578596708815894089639186859130859375E-253 +5.45586522601527075064018467681254858339810190751114250052806225589290755443857211423617311070126254032949824291987146868913317240032236339157787147842547361986959497154491304416073198285381271383413921633517179582226503532696119790846185023969925074653658659861905221182443616776413092622371355348884307437250855654385687108462455782940987996031768930780568879815653181992699816033042098462532531449857584142050276125591795644846894963293479704031708573601383215955354026365146366442005760272952791681470420686199453009893510325657346116834032704907182568401326733932489414369488095382325651571298226472084280658236821182072162628173828125E-253 +1.091173045203053968411221140145914111264975002733353238330429003405575061761923450296912144123863200942092254178888705270720953806017893281944209966804710092792384717280210293817018789685259441470531677572711220619678530029954973721736871816103647002151751105005876382455891966991410176652499904209890058479218324418803491970849644250840154798463842613689698907757896786080617770825474857964261247287609415943015140771701456160454372856668275985120386193041275784008945163130406806211605876106907426130935384358828589281415291844054673864760229746561452864714778825815176706159686709305174348428701773527915719341763178817927837371826171875E-252 +1.09117304520305415012803693536250971667962038150222850010561245117858151088771442284723462214025250806589964858397429373782663448006447267831557429568509472397391899430898260883214639657076254276682784326703435916445300706539223958169237004793985014930731731972381044236488723355282618524474271069776861487450171130877137421692491156588197599206353786156113775963130636398539963206608419692506506289971516828410055225118359128969378992658695940806341714720276643191070805273029273288401152054590558336294084137239890601978702065131469223366806540981436513680265346786497882873897619076465130314259645294416856131647364236414432525634765625E-252 +2.18234609040610793682244228029182822252995000546670647666085800681115012352384690059382428824772640188418450835777741054144190761203578656388841993360942018558476943456042058763403757937051888294106335514542244123935706005990994744347374363220729400430350221001175276491178393398282035330499980841978011695843664883760698394169928850168030959692768522737939781551579357216123554165094971592852249457521883188603028154340291232090874571333655197024077238608255156801789032626081361242321175221381485226187076871765717856283058368810934772952045949312290572942955765163035341231937341861034869685740354705583143868352635763585567474365234375E-252 +2.1823460904061083002560738707250194333592407630044570002112249023571630217754288456944692442805050161317992971679485874756532689601289453566311485913701894479478379886179652176642927931415250855336556865340687183289060141307844791633847400958797002986146346394476208847297744671056523704894854213955372297490034226175427484338498231317639519841270757231222755192626127279707992641321683938501301257994303365682011045023671825793875798531739188161268342944055328638214161054605854657680230410918111667258816827447978120395740413026293844673361308196287302736053069357299576574779523815293026062851929058883371226329472847282886505126953125E-252 +4.3646921808122158736448845605836564450599000109334129533217160136223002470476938011876485764954528037683690167155548210828838152240715731277768398672188403711695388691208411752680751587410377658821267102908448824787141201198198948869474872644145880086070044200235055298235678679656407066099996168395602339168732976752139678833985770033606191938553704547587956310315871443224710833018994318570449891504376637720605630868058246418174914266731039404815447721651031360357806525216272248464235044276297045237415374353143571256611673762186954590409189862458114588591153032607068246387468372206973937148070941116628773670527152717113494873046875E-252 +4.364692180812216600512147741450038866718481526008914000422449804714326043550857691388938488561010032263598594335897174951306537920257890713262297182740378895895675977235930435328585586283050171067311373068137436657812028261568958326769480191759400597229269278895241769459548934211304740978970842791074459498006845235085496867699646263527903968254151446244551038525225455941598528264336787700260251598860673136402209004734365158775159706347837632253668588811065727642832210921170931536046082183622333451763365489595624079148082605258768934672261639257460547210613871459915314955904763058605212570385811776674245265894569456577301025390625E-252 +8.729384361624431747289769121167312890119800021866825906643432027244600494095387602375297152990905607536738033431109642165767630448143146255553679734437680742339077738241682350536150317482075531764253420581689764957428240239639789773894974528829176017214008840047011059647135735931281413219999233679120467833746595350427935766797154006721238387710740909517591262063174288644942166603798863714089978300875327544121126173611649283634982853346207880963089544330206272071561305043254449692847008855259409047483074870628714251322334752437390918081837972491622917718230606521413649277493674441394787429614188223325754734105430543422698974609375E-252 +8.72938436162443320102429548290007773343696305201782800084489960942865208710171538277787697712202006452719718867179434990261307584051578142652459436548075779179135195447186087065717117256610034213462274613627487331562405652313791665353896038351880119445853855779048353891909786842260948195794168558214891899601369047017099373539929252705580793650830289248910207705045091188319705652867357540052050319772134627280441800946873031755031941269567526450733717762213145528566442184234186307209216436724466690352673097919124815829616521051753786934452327851492109442122774291983062991180952611721042514077162355334849053178913891315460205078125E-252 +1.745876872324886349457953824233462578023960004373365181328686405448920098819077520475059430598181121507347606686221928433153526089628629251110735946887536148467815547648336470107230063496415106352850684116337952991485648047927957954778994905765835203442801768009402211929427147186256282643999846735824093566749319070085587153359430801344247677542148181903518252412634857728988433320759772742817995660175065508824225234722329856726996570669241576192617908866041254414312261008650889938569401771051881809496614974125742850264466950487478183616367594498324583543646121304282729855498734888278957485922837644665150946821086108684539794921875E-251 +1.74587687232488664020485909658001554668739261040356560016897992188573041742034307655557539542440401290543943773435886998052261516810315628530491887309615155835827039089437217413143423451322006842692454922725497466312481130462758333070779207670376023889170771155809670778381957368452189639158833711642978379920273809403419874707985850541116158730166057849782041541009018237663941130573471508010410063954426925456088360189374606351006388253913505290146743552442629105713288436846837261441843287344893338070534619583824963165923304210350757386890465570298421888424554858396612598236190522344208502815432471066969810635782778263092041015625E-251 +3.49175374464977269891590764846692515604792000874673036265737281089784019763815504095011886119636224301469521337244385686630705217925725850222147189377507229693563109529667294021446012699283021270570136823267590598297129609585591590955798981153167040688560353601880442385885429437251256528799969347164818713349863814017117430671886160268849535508429636380703650482526971545797686664151954548563599132035013101764845046944465971345399314133848315238523581773208250882862452201730177987713880354210376361899322994825148570052893390097495636723273518899664916708729224260856545971099746977655791497184567528933030189364217221736907958984375E-251 +3.4917537446497732804097181931600310933747852208071312003379598437714608348406861531111507908488080258108788754687177399610452303362063125706098377461923031167165407817887443482628684690264401368538490984545099493262496226092551666614155841534075204777834154231161934155676391473690437927831766742328595675984054761880683974941597170108223231746033211569956408308201803647532788226114694301602082012790885385091217672037874921270201277650782701058029348710488525821142657687369367452288368657468978667614106923916764992633184660842070151477378093114059684377684910971679322519647238104468841700563086494213393962127156555652618408203125E-251 +6.9835074892995453978318152969338503120958400174934607253147456217956803952763100819002377223927244860293904267448877137326141043585145170044429437875501445938712621905933458804289202539856604254114027364653518119659425921917118318191159796230633408137712070720376088477177085887450251305759993869432963742669972762803423486134377232053769907101685927276140730096505394309159537332830390909712719826407002620352969009388893194269079862826769663047704716354641650176572490440346035597542776070842075272379864598965029714010578678019499127344654703779932983341745844852171309194219949395531158299436913505786606037872843444347381591796875E-251 +6.983507489299546560819436386320062186749570441614262400675919687542921669681372306222301581697616051621757750937435479922090460672412625141219675492384606233433081563577488696525736938052880273707698196909019898652499245218510333322831168306815040955566830846232386831135278294738087585566353348465719135196810952376136794988319434021644646349206642313991281661640360729506557645222938860320416402558177077018243534407574984254040255530156540211605869742097705164228531537473873490457673731493795733522821384783352998526636932168414030295475618622811936875536982194335864503929447620893768340112617298842678792425431311130523681640625E-251 +1.3967014978599090795663630593867700624191680034986921450629491243591360790552620163800475444785448972058780853489775427465228208717029034008885887575100289187742524381186691760857840507971320850822805472930703623931885184383423663638231959246126681627542414144075217695435417177490050261151998773886592748533994552560684697226875446410753981420337185455228146019301078861831907466566078181942543965281400524070593801877778638853815972565353932609540943270928330035314498088069207119508555214168415054475972919793005942802115735603899825468930940755986596668349168970434261838843989879106231659887382701157321207574568688869476318359375E-250 +1.396701497859909312163887277264012437349914088322852480135183937508584333936274461244460316339523210324351550187487095984418092134482525028243935098476921246686616312715497739305147387610576054741539639381803979730499849043702066664566233661363008191113366169246477366227055658947617517113270669693143827039362190475227358997663886804328929269841328462798256332328072145901311529044587772064083280511635415403648706881514996850808051106031308042321173948419541032845706307494774698091534746298759146704564276956670599705327386433682806059095123724562387375107396438867172900785889524178753668022523459768535758485086262226104736328125E-250 +2.793402995719818159132726118773540124838336006997384290125898248718272158110524032760095088957089794411756170697955085493045641743405806801777177515020057837548504876237338352171568101594264170164561094586140724786377036876684732727646391849225336325508482828815043539087083435498010052230399754777318549706798910512136939445375089282150796284067437091045629203860215772366381493313215636388508793056280104814118760375555727770763194513070786521908188654185666007062899617613841423901711042833683010895194583958601188560423147120779965093786188151197319333669833794086852367768797975821246331977476540231464241514913737773895263671875E-250 +2.79340299571981862432777455452802487469982817664570496027036787501716866787254892248892063267904642064870310037497419196883618426896505005648787019695384249337323262543099547861029477522115210948307927876360795946099969808740413332913246732272601638222673233849295473245411131789523503422654133938628765407872438095045471799532777360865785853968265692559651266465614429180262305808917554412816656102327083080729741376302999370161610221206261608464234789683908206569141261498954939618306949259751829340912855391334119941065477286736561211819024744912477475021479287773434580157177904835750733604504691953707151697017252445220947265625E-250 +5.58680599143963631826545223754708024967667201399476858025179649743654431622104806552019017791417958882351234139591017098609128348681161360355435503004011567509700975247467670434313620318852834032912218917228144957275407375336946545529278369845067265101696565763008707817416687099602010446079950955463709941359782102427387889075017856430159256813487418209125840772043154473276298662643127277701758611256020962823752075111145554152638902614157304381637730837133201412579923522768284780342208566736602179038916791720237712084629424155993018757237630239463866733966758817370473553759595164249266395495308046292848302982747554779052734375E-250 +5.5868059914396372486555491090560497493996563532914099205407357500343373357450978449778412653580928412974062007499483839376723685379301001129757403939076849867464652508619909572205895504423042189661585575272159189219993961748082666582649346454520327644534646769859094649082226357904700684530826787725753081574487619009094359906555472173157170793653138511930253293122885836052461161783510882563331220465416616145948275260599874032322044241252321692846957936781641313828252299790987923661389851950365868182571078266823988213095457347312242363804948982495495004295857554686916031435580967150146720900938390741430339403450489044189453125E-250 +1.11736119828792726365309044750941604993533440279895371605035929948730886324420961310403803558283591776470246827918203419721825669736232272071087100600802313501940195049493534086862724063770566806582443783445628991455081475067389309105855673969013453020339313152601741563483337419920402089215990191092741988271956420485477577815003571286031851362697483641825168154408630894655259732528625455540351722251204192564750415022229110830527780522831460876327546167426640282515984704553656956068441713347320435807783358344047542416925884831198603751447526047892773346793351763474094710751919032849853279099061609258569660596549510955810546875E-249 +1.1173611982879274497311098218112099498799312706582819841081471500068674671490195689955682530716185682594812401499896767875344737075860200225951480787815369973492930501723981914441179100884608437932317115054431837843998792349616533316529869290904065528906929353971818929816445271580940136906165357545150616314897523801818871981311094434631434158730627702386050658624577167210492232356702176512666244093083323229189655052119974806464408848250464338569391587356328262765650459958197584732277970390073173636514215653364797642619091469462448472760989796499099000859171510937383206287116193430029344180187678148286067880690097808837890625E-249 +2.2347223965758545273061808950188320998706688055979074321007185989746177264884192262080760711656718355294049365583640683944365133947246454414217420120160462700388039009898706817372544812754113361316488756689125798291016295013477861821171134793802690604067862630520348312696667483984080417843198038218548397654391284097095515563000714257206370272539496728365033630881726178931051946505725091108070344450240838512950083004445822166105556104566292175265509233485328056503196940910731391213688342669464087161556671668809508483385176966239720750289505209578554669358670352694818942150383806569970655819812321851713932119309902191162109375E-249 +2.234722396575854899462219643622419899759862541316563968216294300013734934298039137991136506143237136518962480299979353575068947415172040045190296157563073994698586100344796382888235820176921687586463423010886367568799758469923306663305973858180813105781385870794363785963289054316188027381233071509030123262979504760363774396262218886926286831746125540477210131724915433442098446471340435302533248818616664645837931010423994961292881769650092867713878317471265652553130091991639516946455594078014634727302843130672959528523818293892489694552197959299819800171834302187476641257423238686005868836037535629657213576138019561767578125E-249 +4.469444793151709054612361790037664199741337611195814864201437197949235452976838452416152142331343671058809873116728136788873026789449290882843484024032092540077607801979741363474508962550822672263297751337825159658203259002695572364234226958760538120813572526104069662539333496796816083568639607643709679530878256819419103112600142851441274054507899345673006726176345235786210389301145018221614068890048167702590016600889164433221111220913258435053101846697065611300639388182146278242737668533892817432311334333761901696677035393247944150057901041915710933871734070538963788430076761313994131163962464370342786423861980438232421875E-249 +4.46944479315170979892443928724483979951972508263312793643258860002746986859607827598227301228647427303792496059995870715013789483034408009038059231512614798939717220068959276577647164035384337517292684602177273513759951693984661332661194771636162621156277174158872757192657810863237605476246614301806024652595900952072754879252443777385257366349225108095442026344983086688419689294268087060506649763723332929167586202084798992258576353930018573542775663494253130510626018398327903389291118815602926945460568626134591905704763658778497938910439591859963960034366860437495328251484647737201173767207507125931442715227603912353515625E-249 +8.93888958630341810922472358007532839948267522239162972840287439589847090595367690483230428466268734211761974623345627357774605357889858176568696804806418508015521560395948272694901792510164534452659550267565031931640651800539114472846845391752107624162714505220813932507866699359363216713727921528741935906175651363883820622520028570288254810901579869134601345235269047157242077860229003644322813778009633540518003320177832886644222244182651687010620369339413122260127877636429255648547533706778563486462266866752380339335407078649588830011580208383142186774346814107792757686015352262798826232792492874068557284772396087646484375E-249 +8.9388895863034195978488785744896795990394501652662558728651772000549397371921565519645460245729485460758499211999174143002757896606881601807611846302522959787943444013791855315529432807076867503458536920435454702751990338796932266532238954327232524231255434831774551438531562172647521095249322860361204930519180190414550975850488755477051473269845021619088405268996617337683937858853617412101329952744666585833517240416959798451715270786003714708555132698850626102125203679665580677858223763120585389092113725226918381140952731755699587782087918371992792006873372087499065650296929547440234753441501425186288543045520782470703125E-249 +1.78777791726068362184494471601506567989653504447832594568057487917969418119073538096646085693253746842352394924669125471554921071577971635313739360961283701603104312079189654538980358502032906890531910053513006386328130360107822894569369078350421524832542901044162786501573339871872643342745584305748387181235130272776764124504005714057650962180315973826920269047053809431448415572045800728864562755601926708103600664035566577328844448836530337402124073867882624452025575527285851129709506741355712697292453373350476067867081415729917766002316041676628437354869362821558551537203070452559765246558498574813711456954479217529296875E-248 +1.7877779172606839195697757148979359198078900330532511745730354400109879474384313103929092049145897092151699842399834828600551579321376320361522369260504591957588688802758371063105886561415373500691707384087090940550398067759386453306447790865446504846251086966354910287706312434529504219049864572072240986103836038082910195170097751095410294653969004323817681053799323467536787571770723482420265990548933317166703448083391959690343054157200742941711026539770125220425040735933116135571644752624117077818422745045383676228190546351139917556417583674398558401374674417499813130059385909488046950688300285037257708609104156494140625E-248 +3.5755558345213672436898894320301313597930700889566518913611497583593883623814707619329217138650749368470478984933825094310984214315594327062747872192256740320620862415837930907796071700406581378106382010702601277265626072021564578913873815670084304966508580208832557300314667974374528668549116861149677436247026054555352824900801142811530192436063194765384053809410761886289683114409160145772912551120385341620720132807113315465768889767306067480424814773576524890405115105457170225941901348271142539458490674670095213573416283145983553200463208335325687470973872564311710307440614090511953049311699714962742291390895843505859375E-248 +3.575555834521367839139551429795871839615780066106502349146070880021975894876862620785818409829179418430339968479966965720110315864275264072304473852100918391517737760551674212621177312283074700138341476817418188110079613551877290661289558173089300969250217393270982057541262486905900843809972914414448197220767207616582039034019550219082058930793800864763536210759864693507357514354144696484053198109786663433340689616678391938068610831440148588342205307954025044085008147186623227114328950524823415563684549009076735245638109270227983511283516734879711680274934883499962626011877181897609390137660057007451541721820831298828125E-248 +7.151111669042734487379778864060262719586140177913303782722299516718776724762941523865843427730149873694095796986765018862196842863118865412549574438451348064124172483167586181559214340081316275621276402140520255453125214404312915782774763134016860993301716041766511460062933594874905733709823372229935487249405210911070564980160228562306038487212638953076810761882152377257936622881832029154582510224077068324144026561422663093153777953461213496084962954715304978081023021091434045188380269654228507891698134934019042714683256629196710640092641667065137494194774512862342061488122818102390609862339942992548458278179168701171875E-248 +7.15111166904273567827910285959174367923156013221300469829214176004395178975372524157163681965835883686067993695993393144022063172855052814460894770420183678303547552110334842524235462456614940027668295363483637622015922710375458132257911634617860193850043478654196411508252497381180168761994582882889639444153441523316407806803910043816411786158760172952707242151972938701471502870828939296810639621957332686668137923335678387613722166288029717668441061590805008817001629437324645422865790104964683112736909801815347049127621854045596702256703346975942336054986976699992525202375436379521878027532011401490308344364166259765625E-248 +1.430222333808546897475955772812052543917228035582660756544459903343755344952588304773168685546029974738819159397353003772439368572623773082509914887690269612824834496633517236311842868016263255124255280428104051090625042880862583156554952626803372198660343208353302292012586718974981146741964674445987097449881042182214112996032045712461207697442527790615362152376430475451587324576366405830916502044815413664828805312284532618630755590692242699216992590943060995616204604218286809037676053930845701578339626986803808542936651325839342128018528333413027498838954902572468412297624563620478121972467988598509691655635833740234375E-247 +1.43022233380854713565582057191834873584631202644260093965842835200879035795074504831432736393167176737213598739198678628804412634571010562892178954084036735660709510422066968504847092491322988005533659072696727524403184542075091626451582326923572038770008695730839282301650499476236033752398916576577927888830688304663281561360782008763282357231752034590541448430394587740294300574165787859362127924391466537333627584667135677522744433257605943533688212318161001763400325887464929084573158020992936622547381960363069409825524370809119340451340669395188467210997395339998505040475087275904375605506402280298061668872833251953125E-247 +2.86044466761709379495191154562410508783445607116532151308891980668751068990517660954633737109205994947763831879470600754487873714524754616501982977538053922564966899326703447262368573603252651024851056085620810218125008576172516631310990525360674439732068641670660458402517343794996229348392934889197419489976208436442822599206409142492241539488505558123072430475286095090317464915273281166183300408963082732965761062456906523726151118138448539843398518188612199123240920843657361807535210786169140315667925397360761708587330265167868425603705666682605499767790980514493682459524912724095624394493597719701938331127166748046875E-247 +2.8604446676170942713116411438366974716926240528852018793168567040175807159014900966286547278633435347442719747839735725760882526914202112578435790816807347132141902084413393700969418498264597601106731814539345504880636908415018325290316465384714407754001739146167856460330099895247206750479783315315585577766137660932656312272156401752656471446350406918108289686078917548058860114833157571872425584878293307466725516933427135504548886651521188706737642463632200352680065177492985816914631604198587324509476392072613881965104874161823868090268133879037693442199479067999701008095017455180875121101280456059612333774566650390625E-247 +5.7208893352341875899038230912482101756689121423306430261778396133750213798103532190926747421841198989552766375894120150897574742904950923300396595507610784512993379865340689452473714720650530204970211217124162043625001715234503326262198105072134887946413728334132091680503468758999245869678586977839483897995241687288564519841281828498448307897701111624614486095057219018063492983054656233236660081792616546593152212491381304745230223627689707968679703637722439824648184168731472361507042157233828063133585079472152341717466053033573685120741133336521099953558196102898736491904982544819124878898719543940387666225433349609375E-247 +5.720889335234188542623282287673394943385248105770403758633713408035161431802980193257309455726687069488543949567947145152176505382840422515687158163361469426428380416882678740193883699652919520221346362907869100976127381683003665058063293076942881550800347829233571292066019979049441350095956663063117115553227532186531262454431280350531294289270081383621657937215783509611772022966631514374485116975658661493345103386685427100909777330304237741347528492726440070536013035498597163382926320839717464901895278414522776393020974832364773618053626775807538688439895813599940201619003491036175024220256091211922466754913330078125E-247 +1.1441778670468375179807646182496420351337824284661286052355679226750042759620706438185349484368239797910553275178824030179514948580990184660079319101522156902598675973068137890494742944130106040994042243424832408725000343046900665252439621014426977589282745666826418336100693751799849173935717395567896779599048337457712903968256365699689661579540222324922897219011443803612698596610931246647332016358523309318630442498276260949046044725537941593735940727544487964929636833746294472301408431446765612626717015894430468343493210606714737024148226667304219990711639220579747298380996508963824975779743908788077533245086669921875E-246 +1.144177867046837708524656457534678988677049621154080751726742681607032286360596038651461891145337413897708789913589429030435301076568084503137431632672293885285676083376535748038776739930583904044269272581573820195225476336600733011612658615388576310160069565846714258413203995809888270019191332612623423110645506437306252490886256070106258857854016276724331587443156701922354404593326302874897023395131732298669020677337085420181955466060847548269505698545288014107202607099719432676585264167943492980379055682904555278604194966472954723610725355161507737687979162719988040323800698207235004844051218242384493350982666015625E-246 +2.288355734093675035961529236499284070267564856932257210471135845350008551924141287637069896873647959582110655035764806035902989716198036932015863820304431380519735194613627578098948588826021208198808448684966481745000068609380133050487924202885395517856549133365283667220138750359969834787143479113579355919809667491542580793651273139937932315908044464984579443802288760722539719322186249329466403271704661863726088499655252189809208945107588318747188145508897592985927366749258894460281686289353122525343403178886093668698642121342947404829645333460843998142327844115949459676199301792764995155948781757615506649017333984375E-246 +2.28835573409367541704931291506935797735409924230816150345348536321406457272119207730292378229067482779541757982717885806087060215313616900627486326534458777057135216675307149607755347986116780808853854516314764039045095267320146602322531723077715262032013913169342851682640799161977654003838266522524684622129101287461250498177251214021251771570803255344866317488631340384470880918665260574979404679026346459733804135467417084036391093212169509653901139709057602821440521419943886535317052833588698596075811136580911055720838993294590944722145071032301547537595832543997608064760139641447000968810243648476898670196533203125E-246 +4.57671146818735007192305847299856814053512971386451442094227169070001710384828257527413979374729591916422131007152961207180597943239607386403172764060886276103947038922725515619789717765204241639761689736993296349000013721876026610097584840577079103571309826673056733444027750071993966957428695822715871183961933498308516158730254627987586463181608892996915888760457752144507943864437249865893280654340932372745217699931050437961841789021517663749437629101779518597185473349851778892056337257870624505068680635777218733739728424268589480965929066692168799628465568823189891935239860358552999031189756351523101329803466796875E-246 +4.5767114681873508340986258301387159547081984846163230069069707264281291454423841546058475645813496555908351596543577161217412043062723380125497265306891755411427043335061429921551069597223356161770770903262952807809019053464029320464506344615543052406402782633868570336528159832395530800767653304504936924425820257492250099635450242804250354314160651068973263497726268076894176183733052114995880935805269291946760827093483416807278218642433901930780227941811520564288104283988777307063410566717739719215162227316182211144167798658918188944429014206460309507519166508799521612952027928289400193762048729695379734039306640625E-246 +9.1534229363747001438461169459971362810702594277290288418845433814000342076965651505482795874945918383284426201430592241436119588647921477280634552812177255220789407784545103123957943553040848327952337947398659269800002744375205322019516968115415820714261965334611346688805550014398793391485739164543174236792386699661703231746050925597517292636321778599383177752091550428901588772887449973178656130868186474549043539986210087592368357804303532749887525820355903719437094669970355778411267451574124901013736127155443746747945684853717896193185813338433759925693113764637978387047972071710599806237951270304620265960693359375E-246 +9.153422936374701668197251660277431909416396969232646013813941452856258290884768309211695129162699311181670319308715432243482408612544676025099453061378351082285408667012285984310213919444671232354154180652590561561803810692805864092901268923108610481280556526773714067305631966479106160153530660900987384885164051498450019927090048560850070862832130213794652699545253615378835236746610422999176187161053858389352165418696683361455643728486780386156045588362304112857620856797755461412682113343547943843032445463236442228833559731783637788885802841292061901503833301759904322590405585657880038752409745939075946807861328125E-246 +1.8306845872749400287692233891994272562140518855458057683769086762800068415393130301096559174989183676656885240286118448287223917729584295456126910562435451044157881556909020624791588710608169665590467589479731853960000548875041064403903393623083164142852393066922269337761110002879758678297147832908634847358477339932340646349210185119503458527264355719876635550418310085780317754577489994635731226173637294909808707997242017518473671560860706549977505164071180743887418933994071155682253490314824980202747225431088749349589136970743579238637162667686751985138622752927595677409594414342119961247590254060924053192138671875E-245 +1.830684587274940333639450332055486381883279393846529202762788290571251658176953661842339025832539862236334063861743086448696481722508935205019890612275670216457081733402457196862042783888934246470830836130518112312360762138561172818580253784621722096256111305354742813461126393295821232030706132180197476977032810299690003985418009712170014172566426042758930539909050723075767047349322084599835237432210771677870433083739336672291128745697356077231209117672460822571524171359551092282536422668709588768606489092647288445766711946356727557777160568258412380300766660351980864518081117131576007750481949187815189361572265625E-245 +3.661369174549880057538446778398854512428103771091611536753817352560013683078626060219311834997836735331377048057223689657444783545916859091225382112487090208831576311381804124958317742121633933118093517895946370792000109775008212880780678724616632828570478613384453867552222000575951735659429566581726969471695467986468129269842037023900691705452871143975327110083662017156063550915497998927146245234727458981961741599448403503694734312172141309995501032814236148777483786798814231136450698062964996040549445086217749869917827394148715847727432533537350397027724550585519135481918882868423992249518050812184810638427734375E-245 +3.66136917454988066727890066411097276376655878769305840552557658114250331635390732368467805166507972447266812772348617289739296344501787041003978122455134043291416346680491439372408556777786849294166167226103622462472152427712234563716050756924344419251222261070948562692225278659164246406141226436039495395406562059938000797083601942434002834513285208551786107981810144615153409469864416919967047486442154335574086616747867334458225749139471215446241823534492164514304834271910218456507284533741917753721297818529457689153342389271345511555432113651682476060153332070396172903616223426315201550096389837563037872314453125E-245 +7.32273834909976011507689355679770902485620754218322307350763470512002736615725212043862366999567347066275409611444737931488956709183371818245076422497418041766315262276360824991663548424326786623618703579189274158400021955001642576156135744923326565714095722676890773510444400115190347131885913316345393894339093597293625853968407404780138341090574228795065422016732403431212710183099599785429249046945491796392348319889680700738946862434428261999100206562847229755496757359762846227290139612592999208109889017243549973983565478829743169545486506707470079405544910117103827096383776573684798449903610162436962127685546875E-245 +7.3227383490997613345578013282219455275331175753861168110511531622850066327078146473693561033301594489453362554469723457947859268900357408200795624491026808658283269336098287874481711355557369858833233445220724492494430485542446912743210151384868883850244452214189712538445055731832849281228245287207899079081312411987600159416720388486800566902657041710357221596362028923030681893972883383993409497288430867114817323349573466891645149827894243089248364706898432902860966854382043691301456906748383550744259563705891537830668477854269102311086422730336495212030666414079234580723244685263040310019277967512607574462890625E-245 +1.46454766981995202301537871135954180497124150843664461470152694102400547323145042408772473399913469413255081922288947586297791341836674363649015284499483608353263052455272164998332709684865357324723740715837854831680004391000328515231227148984665313142819144535378154702088880023038069426377182663269078778867818719458725170793681480956027668218114845759013084403346480686242542036619919957085849809389098359278469663977936140147789372486885652399820041312569445951099351471952569245458027922518599841621977803448709994796713095765948633909097301341494015881108982023420765419276755314736959689980722032487392425537109375E-244 +1.4645476698199522669115602656443891055066235150772233622102306324570013265415629294738712206660318897890672510893944691589571853780071481640159124898205361731656653867219657574896342271111473971766646689044144898498886097108489382548642030276973776770048890442837942507689011146366569856245649057441579815816262482397520031883344077697360113380531408342071444319272405784606136378794576676798681899457686173422963464669914693378329029965578848617849672941379686580572193370876408738260291381349676710148851912741178307566133695570853820462217284546067299042406133282815846916144648937052608062003855593502521514892578125E-244 +2.9290953396399040460307574227190836099424830168732892294030538820480109464629008481754494679982693882651016384457789517259558268367334872729803056899896721670652610491054432999666541936973071464944748143167570966336000878200065703046245429796933062628563828907075630940417776004607613885275436532653815755773563743891745034158736296191205533643622969151802616880669296137248508407323983991417169961877819671855693932795587228029557874497377130479964008262513889190219870294390513849091605584503719968324395560689741998959342619153189726781819460268298803176221796404684153083855351062947391937996144406497478485107421875E-244 +2.929095339639904533823120531288778211013247030154446724420461264914002653083125858947742441332063779578134502178788938317914370756014296328031824979641072346331330773443931514979268454222294794353329337808828979699777219421697876509728406055394755354009778088567588501537802229273313971249129811488315963163252496479504006376668815539472022676106281668414288863854481156921227275758915335359736379891537234684592692933982938675665805993115769723569934588275937316114438674175281747652058276269935342029770382548235661513226739114170764092443456909213459808481226656563169383228929787410521612400771118700504302978515625E-244 +5.858190679279808092061514845438167219884966033746578458806107764096021892925801696350898935996538776530203276891557903451911653673466974545960611379979344334130522098210886599933308387394614292988949628633514193267200175640013140609249085959386612525712765781415126188083555200921522777055087306530763151154712748778349006831747259238241106728724593830360523376133859227449701681464796798283433992375563934371138786559117445605911574899475426095992801652502777838043974058878102769818321116900743993664879112137948399791868523830637945356363892053659760635244359280936830616771070212589478387599228881299495697021484375E-244 +5.85819067927980906764624106257755642202649406030889344884092252982800530616625171789548488266412755915626900435757787663582874151202859265606364995928214469266266154688786302995853690844458958870665867561765795939955443884339575301945681211078951070801955617713517700307560445854662794249825962297663192632650499295900801275333763107894404535221256333682857772770896231384245455151783067071947275978307446936918538586796587735133161198623153944713986917655187463222887734835056349530411655253987068405954076509647132302645347822834152818488691381842691961696245331312633876645785957482104322480154223740100860595703125E-244 +1.171638135855961618412302969087633443976993206749315691761221552819204378585160339270179787199307755306040655378311580690382330734693394909192122275995868866826104419642177319986661677478922858597789925726702838653440035128002628121849817191877322505142553156283025237616711040184304555411017461306152630230942549755669801366349451847648221345744918766072104675226771845489940336292959359656686798475112786874227757311823489121182314979895085219198560330500555567608794811775620553963664223380148798732975822427589679958373704766127589071272778410731952127048871856187366123354214042517895677519845776259899139404296875E-243 +1.17163813585596181352924821251551128440529881206177868976818450596560106123325034357909697653282551183125380087151557532716574830240571853121272999185642893853253230937757260599170738168891791774133173512353159187991088776867915060389136242215790214160391123542703540061512089170932558849965192459532638526530099859180160255066752621578880907044251266736571554554179246276849091030356613414389455195661489387383707717359317547026632239724630788942797383531037492644577546967011269906082331050797413681190815301929426460529069564566830563697738276368538392339249066262526775329157191496420864496030844748020172119140625E-243 +2.34327627171192323682460593817526688795398641349863138352244310563840875717032067854035957439861551061208131075662316138076466146938678981838424455199173773365220883928435463997332335495784571719557985145340567730688007025600525624369963438375464501028510631256605047523342208036860911082203492261230526046188509951133960273269890369529644269148983753214420935045354369097988067258591871931337359695022557374845551462364697824236462995979017043839712066100111113521758962355124110792732844676029759746595164485517935991674740953225517814254555682146390425409774371237473224670842808503579135503969155251979827880859375E-243 +2.3432762717119236270584964250310225688105976241235573795363690119312021224665006871581939530656510236625076017430311506543314966048114370624254599837128578770650646187551452119834147633778358354826634702470631837598217755373583012077827248443158042832078224708540708012302417834186511769993038491906527705306019971836032051013350524315776181408850253347314310910835849255369818206071322682877891039132297877476741543471863509405326447944926157788559476706207498528915509393402253981216466210159482736238163060385885292105813912913366112739547655273707678467849813252505355065831438299284172899206168949604034423828125E-243 +4.6865525434238464736492118763505337759079728269972627670448862112768175143406413570807191487972310212241626215132463227615293229387735796367684891039834754673044176785687092799466467099156914343911597029068113546137601405120105124873992687675092900205702126251321009504668441607372182216440698452246105209237701990226792054653978073905928853829796750642884187009070873819597613451718374386267471939004511474969110292472939564847292599195803408767942413220022222704351792471024822158546568935205951949319032897103587198334948190645103562850911136429278085081954874247494644934168561700715827100793831050395965576171875E-243 +4.686552543423847254116992850062045137621195248247114759072738023862404244933001374316387906131302047325015203486062301308662993209622874124850919967425715754130129237510290423966829526755671670965326940494126367519643551074716602415565449688631608566415644941708141602460483566837302353998607698381305541061203994367206410202670104863155236281770050669462862182167169851073963641214264536575578207826459575495348308694372701881065289588985231557711895341241499705783101878680450796243293242031896547247632612077177058421162782582673222547909531054741535693569962650501071013166287659856834579841233789920806884765625E-243 +9.373105086847692947298423752701067551815945653994525534089772422553635028681282714161438297594462042448325243026492645523058645877547159273536978207966950934608835357137418559893293419831382868782319405813622709227520281024021024974798537535018580041140425250264201900933688321474436443288139690449221041847540398045358410930795614781185770765959350128576837401814174763919522690343674877253494387800902294993822058494587912969458519839160681753588482644004444540870358494204964431709313787041190389863806579420717439666989638129020712570182227285855617016390974849498928986833712340143165420158766210079193115234375E-243 +9.37310508684769450823398570012409027524239049649422951814547604772480848986600274863277581226260409465003040697212460261732598641924574824970183993485143150826025847502058084793365905351134334193065388098825273503928710214943320483113089937726321713283128988341628320492096713367460470799721539676261108212240798873441282040534020972631047256354010133892572436433433970214792728242852907315115641565291915099069661738874540376213057917797046311542379068248299941156620375736090159248658648406379309449526522415435411684232556516534644509581906210948307138713992530100214202633257531971366915968246757984161376953125E-243 +1.874621017369538589459684750540213510363189130798905106817954484510727005736256542832287659518892408489665048605298529104611729175509431854707395641593390186921767071427483711978658683966276573756463881162724541845504056204804204994959707507003716008228085050052840380186737664294887288657627938089844208369508079609071682186159122956237154153191870025715367480362834952783904538068734975450698877560180458998764411698917582593891703967832136350717696528800888908174071698840992886341862757408238077972761315884143487933397927625804142514036445457171123403278194969899785797366742468028633084031753242015838623046875E-242 +1.87462101736953890164679714002481805504847809929884590362909520954496169797320054972655516245252081893000608139442492052346519728384914964994036798697028630165205169500411616958673181070226866838613077619765054700785742042988664096622617987545264342656625797668325664098419342673492094159944307935252221642448159774688256408106804194526209451270802026778514487286686794042958545648570581463023128313058383019813932347774908075242611583559409262308475813649659988231324075147218031849731729681275861889905304483087082336846511303306928901916381242189661427742798506020042840526651506394273383193649351596832275390625E-242 +3.74924203473907717891936950108042702072637826159781021363590896902145401147251308566457531903778481697933009721059705820922345835101886370941479128318678037384353414285496742395731736793255314751292776232544908369100811240960840998991941501400743201645617010010568076037347532858977457731525587617968841673901615921814336437231824591247430830638374005143073496072566990556780907613746995090139775512036091799752882339783516518778340793566427270143539305760177781634814339768198577268372551481647615594552263176828697586679585525160828502807289091434224680655638993979957159473348493605726616806350648403167724609375E-242 +3.7492420347390778032935942800496361100969561985976918072581904190899233959464010994531103249050416378600121627888498410469303945676982992998807359739405726033041033900082323391734636214045373367722615523953010940157148408597732819324523597509052868531325159533665132819683868534698418831988861587050444328489631954937651281621360838905241890254160405355702897457337358808591709129714116292604625662611676603962786469554981615048522316711881852461695162729931997646264815029443606369946345936255172377981060896617416467369302260661385780383276248437932285548559701204008568105330301278854676638729870319366455078125E-242 +7.4984840694781543578387390021608540414527565231956204272718179380429080229450261713291506380755696339586601944211941164184469167020377274188295825663735607476870682857099348479146347358651062950258555246508981673820162248192168199798388300280148640329123402002113615207469506571795491546305117523593768334780323184362867287446364918249486166127674801028614699214513398111356181522749399018027955102407218359950576467956703303755668158713285454028707861152035556326962867953639715453674510296329523118910452635365739517335917105032165700561457818286844936131127798795991431894669698721145323361270129680633544921875E-242 +7.498484069478155606587188560099272220193912397195383614516380838179846791892802198906220649810083275720024325577699682093860789135396598599761471947881145206608206780016464678346927242809074673544523104790602188031429681719546563864904719501810573706265031906733026563936773706939683766397772317410088865697926390987530256324272167781048378050832081071140579491467471761718341825942823258520925132522335320792557293910996323009704463342376370492339032545986399529252963005888721273989269187251034475596212179323483293473860452132277156076655249687586457109711940240801713621066060255770935327745974063873291015625E-242 +1.4996968138956308715677478004321708082905513046391240854543635876085816045890052342658301276151139267917320388842388232836893833404075454837659165132747121495374136571419869695829269471730212590051711049301796334764032449638433639959677660056029728065824680400422723041493901314359098309261023504718753666956064636872573457489272983649897233225534960205722939842902679622271236304549879803605591020481443671990115293591340660751133631742657090805741572230407111265392573590727943090734902059265904623782090527073147903467183421006433140112291563657368987226225559759198286378933939744229064672254025936126708984375E-241 +1.499696813895631121317437712019854444038782479439076722903276167635969358378560439781244129962016655144004865115539936418772157827079319719952294389576229041321641356003292935669385448561814934708904620958120437606285936343909312772980943900362114741253006381346605312787354741387936753279554463482017773139585278197506051264854433556209675610166416214228115898293494352343668365188564651704185026504467064158511458782199264601940892668475274098467806509197279905850592601177744254797853837450206895119242435864696658694772090426455431215331049937517291421942388048160342724213212051154187065549194812774658203125E-241 +2.999393627791261743135495600864341616581102609278248170908727175217163209178010468531660255230227853583464077768477646567378766680815090967531833026549424299074827314283973939165853894346042518010342209860359266952806489927686727991935532011205945613164936080084544608298780262871819661852204700943750733391212927374514691497854596729979446645106992041144587968580535924454247260909975960721118204096288734398023058718268132150226726348531418161148314446081422253078514718145588618146980411853180924756418105414629580693436684201286628022458312731473797445245111951839657275786787948845812934450805187225341796875E-241 +2.99939362779126224263487542403970888807756495887815344580655233527193871675712087956248825992403331028800973023107987283754431565415863943990458877915245808264328271200658587133877089712362986941780924191624087521257187268781862554596188780072422948250601276269321062557470948277587350655910892696403554627917055639501210252970886711241935122033283242845623179658698870468733673037712930340837005300893412831702291756439852920388178533695054819693561301839455981170118520235548850959570767490041379023848487172939331738954418085291086243066209987503458284388477609632068544842642410230837413109838962554931640625E-241 +5.99878725558252348627099120172868323316220521855649634181745435043432641835602093706332051046045570716692815553695529313475753336163018193506366605309884859814965462856794787833170778869208503602068441972071853390561297985537345598387106402241189122632987216016908921659756052574363932370440940188750146678242585474902938299570919345995889329021398408228917593716107184890849452181995192144223640819257746879604611743653626430045345269706283632229662889216284450615702943629117723629396082370636184951283621082925916138687336840257325604491662546294759489049022390367931455157357589769162586890161037445068359375E-241 +5.9987872555825244852697508480794177761551299177563068916131046705438774335142417591249765198480666205760194604621597456750886313083172788798091775583049161652865654240131717426775417942472597388356184838324817504251437453756372510919237756014484589650120255253864212511494189655517470131182178539280710925583411127900242050594177342248387024406656648569124635931739774093746734607542586068167401060178682566340458351287970584077635706739010963938712260367891196234023704047109770191914153498008275804769697434587866347790883617058217248613241997500691656877695521926413708968528482046167482621967792510986328125E-241 +1.19975745111650469725419824034573664663244104371129926836349087008686528367120418741266410209209114143338563110739105862695150667232603638701273321061976971962993092571358957566634155773841700720413688394414370678112259597107469119677421280448237824526597443203381784331951210514872786474088188037750029335648517094980587659914183869199177865804279681645783518743221436978169890436399038428844728163851549375920922348730725286009069053941256726445932577843256890123140588725823544725879216474127236990256724216585183227737467368051465120898332509258951897809804478073586291031471517953832517378032207489013671875E-240 +1.1997574511165048970539501696158835552310259835512613783226209341087754867028483518249953039696133241152038920924319491350177262616634557759618355116609832330573130848026343485355083588494519477671236967664963500850287490751274502183847551202896917930024051050772842502298837931103494026236435707856142185116682225580048410118835468449677404881331329713824927186347954818749346921508517213633480212035736513268091670257594116815527141347802192787742452073578239246804740809421954038382830699601655160953939486917573269558176723411643449722648399500138331375539104385282741793705696409233496524393558502197265625E-240 +2.3995149022330093945083964806914732932648820874225985367269817401737305673424083748253282041841822828667712622147821172539030133446520727740254664212395394392598618514271791513326831154768340144082737678882874135622451919421493823935484256089647564905319488640676356866390242102974557294817637607550005867129703418996117531982836773839835573160855936329156703748644287395633978087279807685768945632770309875184184469746145057201813810788251345289186515568651378024628117745164708945175843294825447398051344843317036645547493473610293024179666501851790379561960895614717258206294303590766503475606441497802734375E-240 +2.399514902233009794107900339231767110462051967102522756645241868217550973405696703649990607939226648230407784184863898270035452523326911551923671023321966466114626169605268697071016717698903895534247393532992700170057498150254900436769510240579383586004810210154568500459767586220698805247287141571228437023336445116009682023767093689935480976266265942764985437269590963749869384301703442726696042407147302653618334051518823363105428269560438557548490414715647849360948161884390807676566139920331032190787897383514653911635344682328689944529679900027666275107820877056548358741139281846699304878711700439453125E-240 +4.799029804466018789016792961382946586529764174845197073453963480347461134684816749650656408368364565733542524429564234507806026689304145548050932842479078878519723702854358302665366230953668028816547535776574827124490383884298764787096851217929512981063897728135271373278048420594911458963527521510001173425940683799223506396567354767967114632171187265831340749728857479126795617455961537153789126554061975036836893949229011440362762157650269057837303113730275604925623549032941789035168658965089479610268968663407329109498694722058604835933300370358075912392179122943451641258860718153300695121288299560546875E-240 +4.79902980446601958821580067846353422092410393420504551329048373643510194681139340729998121587845329646081556836972779654007090504665382310384734204664393293222925233921053739414203343539780779106849478706598540034011499630050980087353902048115876717200962042030913700091953517244139761049457428314245687404667289023201936404753418737987096195253253188552997087453918192749973876860340688545339208481429460530723666810303764672621085653912087711509698082943129569872189632376878161535313227984066206438157579476702930782327068936465737988905935980005533255021564175411309671748227856369339860975742340087890625E-240 +9.59805960893203757803358592276589317305952834969039414690792696069492226936963349930131281673672913146708504885912846901561205337860829109610186568495815775703944740570871660533073246190733605763309507155314965424898076776859752957419370243585902596212779545627054274655609684118982291792705504302000234685188136759844701279313470953593422926434237453166268149945771495825359123491192307430757825310812395007367378789845802288072552431530053811567460622746055120985124709806588357807033731793017895922053793732681465821899738944411720967186660074071615182478435824588690328251772143630660139024257659912109375E-240 +9.5980596089320391764316013569270684418482078684100910265809674728702038936227868145999624317569065929216311367394555930801418100933076462076946840932878658644585046784210747882840668707956155821369895741319708006802299926010196017470780409623175343440192408406182740018390703448827952209891485662849137480933457804640387280950683747597419239050650637710599417490783638549994775372068137709067841696285892106144733362060752934524217130782417542301939616588625913974437926475375632307062645596813241287631515895340586156465413787293147597781187196001106651004312835082261934349645571273867972195148468017578125E-240 +1.91961192178640751560671718455317863461190566993807882938158539213898445387392669986026256334734582629341700977182569380312241067572165821922037313699163155140788948114174332106614649238146721152661901431062993084979615355371950591483874048717180519242555909125410854931121936823796458358541100860400046937037627351968940255862694190718684585286847490633253629989154299165071824698238461486151565062162479001473475757969160457614510486306010762313492124549211024197024941961317671561406746358603579184410758746536293164379947788882344193437332014814323036495687164917738065650354428726132027804851531982421875E-239 +1.9196119217864078352863202713854136883696415736820182053161934945740407787245573629199924863513813185843262273478911186160283620186615292415389368186575731728917009356842149576568133741591231164273979148263941601360459985202039203494156081924635068688038481681236548003678140689765590441978297132569827496186691560928077456190136749519483847810130127542119883498156727709998955074413627541813568339257178421228946672412150586904843426156483508460387923317725182794887585295075126461412529119362648257526303179068117231293082757458629519556237439200221330200862567016452386869929114254773594439029693603515625E-239 +3.8392238435728150312134343691063572692238113398761576587631707842779689077478533997205251266946916525868340195436513876062448213514433164384407462739832631028157789622834866421322929847629344230532380286212598616995923071074390118296774809743436103848511181825082170986224387364759291671708220172080009387407525470393788051172538838143736917057369498126650725997830859833014364939647692297230313012432495800294695151593832091522902097261202152462698424909842204839404988392263534312281349271720715836882151749307258632875989557776468838687466402962864607299137432983547613130070885745226405560970306396484375E-239 +3.839223843572815670572640542770827376739283147364036410632386989148081557449114725839984972702762637168652454695782237232056724037323058483077873637315146345783401871368429915313626748318246232854795829652788320272091997040407840698831216384927013737607696336247309600735628137953118088395659426513965499237338312185615491238027349903896769562026025508423976699631345541999791014882725508362713667851435684245789334482430117380968685231296701692077584663545036558977517059015025292282505823872529651505260635813623446258616551491725903911247487840044266040172513403290477373985822850954718887805938720703125E-239 +7.678447687145630062426868738212714538447622679752315317526341568555937815495706799441050253389383305173668039087302775212489642702886632876881492547966526205631557924566973284264585969525868846106476057242519723399184614214878023659354961948687220769702236365016434197244877472951858334341644034416001877481505094078757610234507767628747383411473899625330145199566171966602872987929538459446062602486499160058939030318766418304580419452240430492539684981968440967880997678452706862456269854344143167376430349861451726575197911555293767737493280592572921459827486596709522626014177149045281112194061279296875E-239 +7.67844768714563134114528108554165475347856629472807282126477397829616311489822945167996994540552527433730490939156447446411344807464611696615574727463029269156680374273685983062725349663649246570959165930557664054418399408081568139766243276985402747521539267249461920147125627590623617679131885302793099847467662437123098247605469980779353912405205101684795339926269108399958202976545101672542733570287136849157866896486023476193737046259340338415516932709007311795503411803005058456501164774505930301052127162724689251723310298345180782249497568008853208034502680658095474797164570190943777561187744140625E-239 +1.535689537429126012485373747642542907689524535950463063505268313711187563099141359888210050677876661034733607817460555042497928540577326575376298509593305241126311584913394656852917193905173769221295211448503944679836922842975604731870992389737444153940447273003286839448975494590371666868328806883200375496301018815751522046901553525749476682294779925066029039913234393320574597585907691889212520497299832011787806063753283660916083890448086098507936996393688193576199535690541372491253970868828633475286069972290345315039582311058753547498656118514584291965497319341904525202835429809056222438812255859375E-238 +1.53568953742912626822905621710833095069571325894561456425295479565923262297964589033599398908110505486746098187831289489282268961492922339323114945492605853831336074854737196612545069932729849314191833186111532810883679881616313627953248655397080549504307853449892384029425125518124723535826377060558619969493532487424619649521093996155870782481041020336959067985253821679991640595309020334508546714057427369831573379297204695238747409251868067683103386541801462359100682360601011691300232954901186060210425432544937850344662059669036156449899513601770641606900536131619094959432914038188755512237548828125E-238 +3.07137907485825202497074749528508581537904907190092612701053662742237512619828271977642010135575332206946721563492111008499585708115465315075259701918661048225262316982678931370583438781034753844259042289700788935967384568595120946374198477947488830788089454600657367889795098918074333373665761376640075099260203763150304409380310705149895336458955985013205807982646878664114919517181538377842504099459966402357561212750656732183216778089617219701587399278737638715239907138108274498250794173765726695057213994458069063007916462211750709499731223702916858393099463868380905040567085961811244487762451171875E-238 +3.0713790748582525364581124342166619013914265178912291285059095913184652459592917806719879781622101097349219637566257897856453792298584467864622989098521170766267214970947439322509013986545969862838366637222306562176735976323262725590649731079416109900861570689978476805885025103624944707165275412111723993898706497484923929904218799231174156496208204067391813597050764335998328119061804066901709342811485473966314675859440939047749481850373613536620677308360292471820136472120202338260046590980237212042085086508987570068932411933807231289979902720354128321380107226323818991886582807637751102447509765625E-238 +6.1427581497165040499414949905701716307580981438018522540210732548447502523965654395528402027115066441389344312698422201699917141623093063015051940383732209645052463396535786274116687756206950768851808457940157787193476913719024189274839695589497766157617890920131473577959019783614866674733152275328015019852040752630060881876062141029979067291791197002641161596529375732822983903436307675568500819891993280471512242550131346436643355617923443940317479855747527743047981427621654899650158834753145339011442798891613812601583292442350141899946244740583371678619892773676181008113417192362248897552490234375E-238 +6.142758149716505072916224868433323802782853035782458257011819182636930491918583561343975956324420219469843927513251579571290758459716893572924597819704234153253442994189487864501802797309193972567673327444461312435347195264652545118129946215883221980172314137995695361177005020724988941433055082422344798779741299496984785980843759846234831299241640813478362719410152867199665623812360813380341868562297094793262935171888187809549896370074722707324135461672058494364027294424040467652009318196047442408417017301797514013786482386761446257995980544070825664276021445264763798377316561527550220489501953125E-238 +1.2285516299433008099882989981140343261516196287603704508042146509689500504793130879105680405423013288277868862539684440339983428324618612603010388076746441929010492679307157254823337551241390153770361691588031557438695382743804837854967939117899553231523578184026294715591803956722973334946630455065603003970408150526012176375212428205995813458358239400528232319305875146564596780687261535113700163978398656094302448510026269287328671123584688788063495971149505548609596285524330979930031766950629067802288559778322762520316658488470028379989248948116674335723978554735236201622683438472449779510498046875E-237 +1.228551629943301014583244973686664760556570607156491651402363836527386098383716712268795191264884043893968785502650315914258151691943378714584919563940846830650688598837897572900360559461838794513534665488892262487069439052930509023625989243176644396034462827599139072235401004144997788286611016484468959755948259899396957196168751969246966259848328162695672543882030573439933124762472162676068373712459418958652587034377637561909979274014944541464827092334411698872805458884808093530401863639209488481683403460359502802757296477352289251599196108814165132855204289052952759675463312305510044097900390625E-237 +2.457103259886601619976597996228068652303239257520740901608429301937900100958626175821136081084602657655573772507936888067996685664923722520602077615349288385802098535861431450964667510248278030754072338317606311487739076548760967570993587823579910646304715636805258943118360791344594666989326091013120600794081630105202435275042485641199162691671647880105646463861175029312919356137452307022740032795679731218860489702005253857465734224716937757612699194229901109721919257104866195986006353390125813560457711955664552504063331697694005675997849789623334867144795710947047240324536687694489955902099609375E-237 +2.45710325988660202916648994737332952111314121431298330280472767305477219676743342453759038252976808778793757100530063182851630338388675742916983912788169366130137719767579514580072111892367758902706933097778452497413887810586101804725197848635328879206892565519827814447080200828999557657322203296893791951189651979879391439233750393849393251969665632539134508776406114687986624952494432535213674742491883791730517406875527512381995854802988908292965418466882339774561091776961618706080372727841897696336680692071900560551459295470457850319839221762833026571040857810590551935092662461102008819580078125E-237 +4.91420651977320323995319599245613730460647851504148180321685860387580020191725235164227216216920531531114754501587377613599337132984744504120415523069857677160419707172286290192933502049655606150814467663521262297547815309752193514198717564715982129260943127361051788623672158268918933397865218202624120158816326021040487055008497128239832538334329576021129292772235005862583871227490461404548006559135946243772097940401050771493146844943387551522539838845980221944383851420973239197201270678025162712091542391132910500812666339538801135199569957924666973428959142189409448064907337538897991180419921875E-237 +4.9142065197732040583329798947466590422262824286259666056094553461095443935348668490751807650595361755758751420106012636570326067677735148583396782557633873226027543953515902916014422378473551780541386619555690499482777562117220360945039569727065775841378513103965562889416040165799911531464440659378758390237930395975878287846750078769878650393933126507826901755281222937597324990498886507042734948498376758346103481375105502476399170960597781658593083693376467954912218355392323741216074545568379539267336138414380112110291859094091570063967844352566605314208171562118110387018532492220401763916015625E-237 +9.8284130395464064799063919849122746092129570300829636064337172077516004038345047032845443243384106306222950900317475522719867426596948900824083104613971535432083941434457258038586700409931121230162893532704252459509563061950438702839743512943196425852188625472210357724734431653783786679573043640524824031763265204208097411001699425647966507666865915204225858554447001172516774245498092280909601311827189248754419588080210154298629368988677510304507967769196044388876770284194647839440254135605032542418308478226582100162533267907760227039913991584933394685791828437881889612981467507779598236083984375E-237 +9.828413039546408116665959789493318084452564857251933211218910692219088787069733698150361530119072351151750284021202527314065213535547029716679356511526774645205508790703180583202884475694710356108277323911138099896555512423444072189007913945413155168275702620793112577883208033159982306292888131875751678047586079195175657569350015753975730078786625301565380351056244587519464998099777301408546989699675351669220696275021100495279834192119556331718616738675293590982443671078464748243214909113675907853467227682876022422058371818818314012793568870513321062841634312423622077403706498444080352783203125E-237 +1.9656826079092812959812783969824549218425914060165927212867434415503200807669009406569088648676821261244590180063495104543973485319389780164816620922794307086416788286891451607717340081986224246032578706540850491901912612390087740567948702588639285170437725094442071544946886330756757335914608728104964806352653040841619482200339885129593301533373183040845171710889400234503354849099618456181920262365437849750883917616042030859725873797735502060901593553839208877775354056838929567888050827121006508483661695645316420032506653581552045407982798316986678937158365687576377922596293501555919647216796875E-236 +1.965682607909281623333191957898663616890512971450386642243782138443817757413946739630072306023814470230350056804240505462813042707109405943335871302305354929041101758140636116640576895138942071221655464782227619979311102484688814437801582789082631033655140524158622515576641606631996461258577626375150335609517215839035131513870003150795146015757325060313076070211248917503892999619955460281709397939935070333844139255004220099055966838423911266343723347735058718196488734215692949648642981822735181570693445536575204484411674363763662802558713774102664212568326862484724415480741299688816070556640625E-236 +3.931365215818562591962556793964909843685182812033185442573486883100640161533801881313817729735364252248918036012699020908794697063877956032963324184558861417283357657378290321543468016397244849206515741308170098380382522478017548113589740517727857034087545018888414308989377266151351467182921745620992961270530608168323896440067977025918660306674636608169034342177880046900670969819923691236384052473087569950176783523208406171945174759547100412180318710767841775555070811367785913577610165424201301696732339129063284006501330716310409081596559663397335787431673137515275584519258700311183929443359375E-236 +3.93136521581856324666638391579732723378102594290077328448756427688763551482789347926014461204762894046070011360848101092562608541421881188667174260461070985808220351628127223328115379027788414244331092956445523995862220496937762887560316557816526206731028104831724503115328321326399292251715525275030067121903443167807026302774000630159029203151465012062615214042249783500778599923991092056341879587987014066768827851000844019811193367684782253268744669547011743639297746843138589929728596364547036314138689107315040896882334872752732560511742754820532842513665372496944883096148259937763214111328125E-236 +7.86273043163712518392511358792981968737036562406637088514697376620128032306760376262763545947072850449783607202539804181758939412775591206592664836911772283456671531475658064308693603279448969841303148261634019676076504495603509622717948103545571406817509003777682861797875453230270293436584349124198592254106121633664779288013595405183732061334927321633806868435576009380134193963984738247276810494617513990035356704641681234389034951909420082436063742153568355111014162273557182715522033084840260339346467825812656801300266143262081816319311932679467157486334627503055116903851740062236785888671875E-236 +7.8627304316371264933327678315946544675620518858015465689751285537752710296557869585202892240952578809214002272169620218512521708284376237733434852092214197161644070325625444665623075805557682848866218591289104799172444099387552577512063311563305241346205620966344900623065664265279858450343105055006013424380688633561405260554800126031805840630293002412523042808449956700155719984798218411268375917597402813353765570200168803962238673536956450653748933909402348727859549368627717985945719272909407262827737821463008179376466974550546512102348550964106568502733074499388976619229651987552642822265625E-236 +1.57254608632742503678502271758596393747407312481327417702939475324025606461352075252552709189414570089956721440507960836351787882555118241318532967382354456691334306295131612861738720655889793968260629652326803935215300899120701924543589620709114281363501800755536572359575090646054058687316869824839718450821224326732955857602719081036746412266985464326761373687115201876026838792796947649455362098923502798007071340928336246877806990381884016487212748430713671022202832454711436543104406616968052067869293565162531360260053228652416363263862386535893431497266925500611023380770348012447357177734375E-235 +1.5725460863274252986665535663189308935124103771603093137950257107550542059311573917040578448190515761842800454433924043702504341656875247546686970418442839432328814065125088933124615161111536569773243718257820959834488819877510515502412662312661048269241124193268980124613132853055971690068621011001202684876137726712281052110960025206361168126058600482504608561689991340031143996959643682253675183519480562670753114040033760792447734707391290130749786781880469745571909873725543597189143854581881452565547564292601635875293394910109302420469710192821313700546614899877795323845930397510528564453125E-235 +3.1450921726548500735700454351719278749481462496265483540587895064805121292270415050510541837882914017991344288101592167270357576511023648263706593476470891338266861259026322572347744131177958793652125930465360787043060179824140384908717924141822856272700360151107314471915018129210811737463373964967943690164244865346591171520543816207349282453397092865352274737423040375205367758559389529891072419784700559601414268185667249375561398076376803297442549686142734204440566490942287308620881323393610413573858713032506272052010645730483272652772477307178686299453385100122204676154069602489471435546875E-235 +3.145092172654850597333107132637861787024820754320618627590051421510108411862314783408115689638103152368560090886784808740500868331375049509337394083688567886465762813025017786624923032222307313954648743651564191966897763975502103100482532462532209653848224838653796024922626570611194338013724202200240536975227545342456210422192005041272233625211720096500921712337998268006228799391928736450735036703896112534150622808006752158489546941478258026149957356376093949114381974745108719437828770916376290513109512858520327175058678982021860484093942038564262740109322979975559064769186079502105712890625E-235 +6.290184345309700147140090870343855749896292499253096708117579012961024258454083010102108367576582803598268857620318433454071515302204729652741318695294178267653372251805264514469548826235591758730425186093072157408612035964828076981743584828364571254540072030221462894383003625842162347492674792993588738032848973069318234304108763241469856490679418573070454947484608075041073551711877905978214483956940111920282853637133449875112279615275360659488509937228546840888113298188457461724176264678722082714771742606501254410402129146096654530554495461435737259890677020024440935230813920497894287109375E-235 +6.29018434530970119466621426527572357404964150864123725518010284302021682372462956681623137927620630473712018177356961748100173666275009901867478816737713577293152562605003557324984606444461462790929748730312838393379552795100420620096506492506441930769644967730759204984525314122238867602744840440048107395045509068491242084438401008254446725042344019300184342467599653601245759878385747290147007340779222506830124561601350431697909388295651605229991471275218789822876394949021743887565754183275258102621902571704065435011735796404372096818788407712852548021864595995111812953837215900421142578125E-235 +1.258036869061940029428018174068771149979258499850619341623515802592204851690816602020421673515316560719653771524063686690814303060440945930548263739058835653530674450361052902893909765247118351746085037218614431481722407192965615396348716965672914250908014406044292578876600725168432469498534958598717747606569794613863646860821752648293971298135883714614090989496921615008214710342375581195642896791388022384056570727426689975022455923055072131897701987445709368177622659637691492344835252935744416542954348521300250882080425829219330906110899092287147451978135404004888187046162784099578857421875E-234 +1.25803686906194023893324285305514471480992830172824745103602056860404336474492591336324627585524126094742403635471392349620034733255001980373495763347542715458630512521000711464996921288892292558185949746062567678675910559020084124019301298501288386153928993546151840996905062824447773520548968088009621479009101813698248416887680201650889345008468803860036868493519930720249151975677149458029401468155844501366024912320270086339581877659130321045998294255043757964575278989804348777513150836655051620524380514340813087002347159280874419363757681542570509604372919199022362590767443180084228515625E-234 +2.51607373812388005885603634813754229995851699970123868324703160518440970338163320404084334703063312143930754304812737338162860612088189186109652747811767130706134890072210580578781953049423670349217007443722886296344481438593123079269743393134582850181602881208858515775320145033686493899706991719743549521313958922772729372164350529658794259627176742922818197899384323001642942068475116239128579358277604476811314145485337995004491184611014426379540397489141873635524531927538298468967050587148883308590869704260050176416085165843866181222179818457429490395627080800977637409232556819915771484375E-234 +2.5160737381238804778664857061102894296198566034564949020720411372080867294898518267264925517104825218948480727094278469924006946651000396074699152669508543091726102504200142292999384257778458511637189949212513535735182111804016824803860259700257677230785798709230368199381012564889554704109793617601924295801820362739649683377536040330177869001693760772007373698703986144049830395135429891605880293631168900273204982464054017267916375531826064209199658851008751592915055797960869755502630167331010324104876102868162617400469431856174883872751536308514101920874583839804472518153488636016845703125E-234 +5.0321474762477601177120726962750845999170339994024773664940632103688194067632664080816866940612662428786150860962547467632572122417637837221930549562353426141226978014442116115756390609884734069843401488744577259268896287718624615853948678626916570036320576241771703155064029006737298779941398343948709904262791784554545874432870105931758851925435348584563639579876864600328588413695023247825715871655520895362262829097067599000898236922202885275908079497828374727104906385507659693793410117429776661718173940852010035283217033168773236244435963691485898079125416160195527481846511363983154296875E-234 +5.032147476247760955732971412220578859239713206912989804144082274416173458979703653452985103420965043789696145418855693984801389330200079214939830533901708618345220500840028458599876851555691702327437989842502707147036422360803364960772051940051535446157159741846073639876202512977910940821958723520384859160364072547929936675507208066035573800338752154401474739740797228809966079027085978321176058726233780054640996492810803453583275106365212841839931770201750318583011159592173951100526033466202064820975220573632523480093886371234976774550307261702820384174916767960894503630697727203369140625E-234 +1.0064294952495520235424145392550169199834067998804954732988126420737638813526532816163373388122532485757230172192509493526514424483527567444386109912470685228245395602888423223151278121976946813968680297748915451853779257543724923170789735725383314007264115248354340631012805801347459755988279668789741980852558356910909174886574021186351770385087069716912727915975372920065717682739004649565143174331104179072452565819413519800179647384440577055181615899565674945420981277101531938758682023485955332343634788170402007056643406633754647248887192738297179615825083232039105496369302272796630859375E-233 +1.006429495249552191146594282444115771847942641382597960828816454883234691795940730690597020684193008757939229083771138796960277866040015842987966106780341723669044100168005691719975370311138340465487597968500541429407284472160672992154410388010307089231431948369214727975240502595582188164391744704076971832072814509585987335101441613207114760067750430880294947948159445761993215805417195664235211745246756010928199298562160690716655021273042568367986354040350063716602231918434790220105206693240412964195044114726504696018777274246995354910061452340564076834983353592178900726139545440673828125E-233 +2.012858990499104047084829078510033839966813599760990946597625284147527762705306563232674677624506497151446034438501898705302884896705513488877221982494137045649079120577684644630255624395389362793736059549783090370755851508744984634157947145076662801452823049670868126202561160269491951197655933757948396170511671382181834977314804237270354077017413943382545583195074584013143536547800929913028634866220835814490513163882703960035929476888115411036323179913134989084196255420306387751736404697191066468726957634080401411328681326750929449777438547659435923165016646407821099273860454559326171875E-233 +2.01285899049910438229318856488823154369588528276519592165763290976646938359188146138119404136838601751587845816754227759392055573208003168597593221356068344733808820033601138343995074062227668093097519593700108285881456894432134598430882077602061417846286389673842945595048100519116437632878348940815394366414562901917197467020288322641422952013550086176058989589631889152398643161083439132847042349049351202185639859712432138143331004254608513673597270808070012743320446383686958044021041338648082592839008822945300939203755454849399070982012290468112815366996670718435780145227909088134765625E-233 +4.02571798099820809416965815702006767993362719952198189319525056829505552541061312646534935524901299430289206887700379741060576979341102697775444396498827409129815824115536928926051124879077872558747211909956618074151170301748996926831589429015332560290564609934173625240512232053898390239531186751589679234102334276436366995462960847454070815403482788676509116639014916802628707309560185982605726973244167162898102632776540792007185895377623082207264635982626997816839251084061277550347280939438213293745391526816080282265736265350185889955487709531887184633003329281564219854772090911865234375E-233 +4.0257179809982087645863771297764630873917705655303918433152658195329387671837629227623880827367720350317569163350845551878411114641600633719518644271213668946761764006720227668799014812445533618619503918740021657176291378886426919686176415520412283569257277934768589119009620103823287526575669788163078873282912580383439493404057664528284590402710017235211797917926377830479728632216687826569408469809870240437127971942486427628666200850921702734719454161614002548664089276737391608804208267729616518567801764589060187840751090969879814196402458093622563073399334143687156029045581817626953125E-233 +8.0514359619964161883393163140401353598672543990439637863905011365901110508212262529306987104980259886057841377540075948212115395868220539555088879299765481825963164823107385785210224975815574511749442381991323614830234060349799385366317885803066512058112921986834725048102446410779678047906237350317935846820466855287273399092592169490814163080696557735301823327802983360525741461912037196521145394648833432579620526555308158401437179075524616441452927196525399563367850216812255510069456187887642658749078305363216056453147253070037177991097541906377436926600665856312843970954418182373046875E-233 +8.051435961996417529172754259552926174783541131060783686630531639065877534367525845524776165473544070063513832670169110375682222928320126743903728854242733789352352801344045533759802962489106723723900783748004331435258275777285383937235283104082456713851455586953717823801924020764657505315133957632615774656582516076687898680811532905656918080542003447042359583585275566095945726443337565313881693961974048087425594388497285525733240170184340546943890832322800509732817855347478321760841653545923303713560352917812037568150218193975962839280491618724512614679866828737431205809116363525390625E-233 +1.6102871923992832376678632628080270719734508798087927572781002273180222101642452505861397420996051977211568275508015189642423079173644107911017775859953096365192632964621477157042044995163114902349888476398264722966046812069959877073263577160613302411622584397366945009620489282155935609581247470063587169364093371057454679818518433898162832616139311547060364665560596672105148292382407439304229078929766686515924105311061631680287435815104923288290585439305079912673570043362451102013891237577528531749815661072643211290629450614007435598219508381275487385320133171262568794190883636474609375E-232 +1.610287192399283505834550851910585234956708226212156737326106327813175506873505169104955233094708814012702766534033822075136444585664025348780745770848546757870470560268809106751960592497821344744780156749600866287051655155457076787447056620816491342770291117390743564760384804152931501063026791526523154931316503215337579736162306581131383616108400689408471916717055113219189145288667513062776338792394809617485118877699457105146648034036868109388778166464560101946563571069495664352168330709184660742712070583562407513630043638795192567856098323744902522935973365747486241161823272705078125E-232 +3.220574384798566475335726525616054143946901759617585514556200454636044420328490501172279484199210395442313655101603037928484615834728821582203555171990619273038526592924295431408408999032622980469977695279652944593209362413991975414652715432122660482324516879473389001924097856431187121916249494012717433872818674211490935963703686779632566523227862309412072933112119334421029658476481487860845815785953337303184821062212326336057487163020984657658117087861015982534714008672490220402778247515505706349963132214528642258125890122801487119643901676255097477064026634252513758838176727294921875E-232 +3.22057438479856701166910170382117046991341645242431347465221265562635101374701033820991046618941762802540553306806764415027288917132805069756149154169709351574094112053761821350392118499564268948956031349920173257410331031091415357489411324163298268554058223478148712952076960830586300212605358305304630986263300643067515947232461316226276723221680137881694383343411022643837829057733502612555267758478961923497023775539891421029329606807373621877755633292912020389312714213899132870433666141836932148542414116712481502726008727759038513571219664748980504587194673149497248232364654541015625E-232 +6.44114876959713295067145305123210828789380351923517102911240090927208884065698100234455896839842079088462731020320607585696923166945764316440711034398123854607705318584859086281681799806524596093995539055930588918641872482798395082930543086424532096464903375894677800384819571286237424383249898802543486774563734842298187192740737355926513304645572461882414586622423866884205931695296297572169163157190667460636964212442465267211497432604196931531623417572203196506942801734498044080555649503101141269992626442905728451625178024560297423928780335251019495412805326850502751767635345458984375E-232 +6.4411487695971340233382034076423409398268329048486269493044253112527020274940206764198209323788352560508110661361352883005457783426561013951229830833941870314818822410752364270078423699912853789791206269984034651482066206218283071497882264832659653710811644695629742590415392166117260042521071661060926197252660128613503189446492263245255344644336027576338876668682204528767565811546700522511053551695792384699404755107978284205865921361474724375551126658582404077862542842779826574086733228367386429708482823342496300545201745551807702714243932949796100917438934629899449646472930908203125E-232 +1.28822975391942659013429061024642165757876070384703420582248018185441776813139620046891179367968415817692546204064121517139384633389152863288142206879624770921541063716971817256336359961304919218799107811186117783728374496559679016586108617284906419292980675178935560076963914257247484876649979760508697354912746968459637438548147471185302660929114492376482917324484773376841186339059259514433832631438133492127392842488493053442299486520839386306324683514440639301388560346899608816111129900620228253998525288581145690325035604912059484785756067050203899082561065370100550353527069091796875E-231 +1.2882297539194268046676406815284681879653665809697253898608850622505404054988041352839641864757670512101622132272270576601091556685312202790245966166788374062963764482150472854015684739982570757958241253996806930296413241243656614299576452966531930742162328939125948518083078433223452008504214332212185239450532025722700637889298452649051068928867205515267775333736440905753513162309340104502210710339158476939880951021595656841173184272294944875110225331716480815572508568555965314817346645673477285941696564668499260109040349110361540542848786589959220183487786925979889929294586181640625E-231 +2.5764595078388531802685812204928433151575214076940684116449603637088355362627924009378235873593683163538509240812824303427876926677830572657628441375924954184308212743394363451267271992260983843759821562237223556745674899311935803317221723456981283858596135035787112015392782851449496975329995952101739470982549393691927487709629494237060532185822898475296583464896954675368237267811851902886766526287626698425478568497698610688459897304167877261264936702888127860277712069379921763222225980124045650799705057716229138065007120982411896957151213410040779816512213074020110070705413818359375E-231 +2.576459507838853609335281363056936375930733161939450779721770124501080810997608270567928372951534102420324426454454115320218311337062440558049193233357674812592752896430094570803136947996514151591648250799361386059282648248731322859915290593306386148432465787825189703616615686644690401700842866442437047890106405144540127577859690529810213785773441103053555066747288181150702632461868020900442142067831695387976190204319131368234636854458988975022045066343296163114501713711193062963469329134695457188339312933699852021808069822072308108569757317991844036697557385195977985858917236328125E-231 +5.152919015677706360537162440985686630315042815388136823289920727417671072525584801875647174718736632707701848162564860685575385335566114531525688275184990836861642548678872690253454398452196768751964312447444711349134979862387160663444344691396256771719227007157422403078556570289899395065999190420347894196509878738385497541925898847412106437164579695059316692979390935073647453562370380577353305257525339685095713699539722137691979460833575452252987340577625572055542413875984352644445196024809130159941011543245827613001424196482379391430242682008155963302442614804022014141082763671875E-231 +5.15291901567770721867056272611387275186146632387890155944354024900216162199521654113585674590306820484064885290890823064043662267412488111609838646671534962518550579286018914160627389599302830318329650159872277211856529649746264571983058118661277229686493157565037940723323137328938080340168573288487409578021281028908025515571938105962042757154688220610711013349457636230140526492373604180088428413566339077595238040863826273646927370891797795004409013268659232622900342742238612592693865826939091437667862586739970404361613964414461621713951463598368807339511477039195597171783447265625E-231 +1.030583803135541272107432488197137326063008563077627364657984145483534214505116960375129434943747326541540369632512972137115077067113222906305137655036998167372328509735774538050690879690439353750392862489488942269826995972477432132688868938279251354343845401431484480615711314057979879013199838084069578839301975747677099508385179769482421287432915939011863338595878187014729490712474076115470661051505067937019142739907944427538395892166715090450597468115525114411108482775196870528889039204961826031988202308649165522600284839296475878286048536401631192660488522960804402828216552734375E-230 +1.03058380313554144373411254522277455037229326477578031188870804980043232439904330822717134918061364096812977058178164612808732453482497622321967729334306992503710115857203782832125477919860566063665930031974455442371305929949252914396611623732255445937298631513007588144664627465787616068033714657697481915604256205781605103114387621192408551430937644122142202669891527246028105298474720836017685682713267815519047608172765254729385474178359559000881802653731846524580068548447722518538773165387818287533572517347994080872322792882892324342790292719673761467902295407839119434356689453125E-230 +2.06116760627108254421486497639427465212601712615525472931596829096706842901023392075025886988749465308308073926502594427423015413422644581261027531007399633474465701947154907610138175938087870750078572497897788453965399194495486426537773787655850270868769080286296896123142262811595975802639967616813915767860395149535419901677035953896484257486583187802372667719175637402945898142494815223094132210301013587403828547981588885507679178433343018090119493623105022882221696555039374105777807840992365206397640461729833104520056967859295175657209707280326238532097704592160880565643310546875E-230 +2.0611676062710828874682250904455491007445865295515606237774160996008646487980866164543426983612272819362595411635632922561746490696499524464393545866861398500742023171440756566425095583972113212733186006394891088474261185989850582879322324746451089187459726302601517628932925493157523213606742931539496383120851241156321020622877524238481710286187528824428440533978305449205621059694944167203537136542653563103809521634553050945877094835671911800176360530746369304916013709689544503707754633077563657506714503469598816174464558576578464868558058543934752293580459081567823886871337890625E-230 +4.1223352125421650884297299527885493042520342523105094586319365819341368580204678415005177397749893061661614785300518885484603082684528916252205506201479926694893140389430981522027635187617574150015714499579557690793079838899097285307554757531170054173753816057259379224628452562319195160527993523362783153572079029907083980335407190779296851497316637560474533543835127480589179628498963044618826442060202717480765709596317777101535835686668603618023898724621004576444339311007874821155561568198473041279528092345966620904011393571859035131441941456065247706419540918432176113128662109375E-230 +4.122335212542165774936450180891098201489173059103121247554832199201729297596173232908685396722454563872519082327126584512349298139299904892878709173372279700148404634288151313285019116794422642546637201278978217694852237197970116575864464949290217837491945260520303525786585098631504642721348586307899276624170248231264204124575504847696342057237505764885688106795661089841124211938988833440707427308530712620761904326910610189175418967134382360035272106149273860983202741937908900741550926615512731501342900693919763234892911715315692973711611708786950458716091816313564777374267578125E-230 +8.244670425084330176859459905577098608504068504621018917263873163868273716040935683001035479549978612332322957060103777096920616536905783250441101240295985338978628077886196304405527037523514830003142899915911538158615967779819457061510951506234010834750763211451875844925690512463839032105598704672556630714415805981416796067081438155859370299463327512094906708767025496117835925699792608923765288412040543496153141919263555420307167137333720723604779744924200915288867862201574964231112313639694608255905618469193324180802278714371807026288388291213049541283908183686435222625732421875E-230 +8.24467042508433154987290036178219640297834611820624249510966439840345859519234646581737079344490912774503816465425316902469859627859980978575741834674455940029680926857630262657003823358884528509327440255795643538970447439594023315172892989858043567498389052104060705157317019726300928544269717261579855324834049646252840824915100969539268411447501152977137621359132217968224842387797766688141485461706142524152380865382122037835083793426876472007054421229854772196640548387581780148310185323102546300268580138783952646978582343063138594742322341757390091743218363262712955474853515625E-230 +1.648934085016866035371891981115419721700813700924203783452774632773654743208187136600207095909995722466464591412020755419384123307381156650088220248059197067795725615577239260881105407504702966000628579983182307631723193555963891412302190301246802166950152642290375168985138102492767806421119740934511326142883161196283359213416287631171874059892665502418981341753405099223567185139958521784753057682408108699230628383852711084061433427466744144720955948984840183057773572440314992846222462727938921651181123693838664836160455742874361405257677658242609908256781636737287044525146484375E-229 +1.64893408501686630997458007235643928059566922364124849902193287968069171903846929316347415868898182554900763293085063380493971925571996195715148366934891188005936185371526052531400764671776905701865488051159128707794089487918804663034578597971608713499677810420812141031463403945260185708853943452315971064966809929250568164983020193907853682289500230595427524271826443593644968477559553337628297092341228504830476173076424407567016758685375294401410884245970954439328109677516356029662037064620509260053716027756790529395716468612627718948464468351478018348643672652542591094970703125E-229 +3.29786817003373207074378396223083944340162740184840756690554926554730948641637427320041419181999144493292918282404151083876824661476231330017644049611839413559145123115447852176221081500940593200125715996636461526344638711192778282460438060249360433390030528458075033797027620498553561284223948186902265228576632239256671842683257526234374811978533100483796268350681019844713437027991704356950611536481621739846125676770542216812286685493348828944191189796968036611554714488062998569244492545587784330236224738767732967232091148574872281051535531648521981651356327347457408905029296875E-229 +3.2978681700337326199491601447128785611913384472824969980438657593613834380769385863269483173779636510980152658617012676098794385114399239143029673386978237601187237074305210506280152934355381140373097610231825741558817897583760932606915719594321742699935562084162428206292680789052037141770788690463194212993361985850113632996604038781570736457900046119085504854365288718728993695511910667525659418468245700966095234615284881513403351737075058880282176849194190887865621935503271205932407412924101852010743205551358105879143293722525543789692893670295603669728734530508518218994140625E-229 +6.5957363400674641414875679244616788868032548036968151338110985310946189728327485464008283836399828898658583656480830216775364932295246266003528809922367882711829024623089570435244216300188118640025143199327292305268927742238555656492087612049872086678006105691615006759405524099710712256844789637380453045715326447851334368536651505246874962395706620096759253670136203968942687405598340871390122307296324347969225135354108443362457337098669765788838237959393607322310942897612599713848898509117556866047244947753546593446418229714974456210307106329704396330271265469491481781005859375E-229 +6.595736340067465239898320289425757122382676894564993996087731518722766876153877172653896634755927302196030531723402535219758877022879847828605934677395647520237447414861042101256030586871076228074619522046365148311763579516752186521383143918864348539987112416832485641258536157810407428354157738092638842598672397170022726599320807756314147291580009223817100970873057743745798739102382133505131883693649140193219046923056976302680670347415011776056435369838838177573124387100654241186481482584820370402148641110271621175828658744505108757938578734059120733945746906101703643798828125E-229 +1.3191472680134928282975135848923357773606509607393630267622197062189237945665497092801656767279965779731716731296166043355072986459049253200705761984473576542365804924617914087048843260037623728005028639865458461053785548447711131298417522409974417335601221138323001351881104819942142451368957927476090609143065289570266873707330301049374992479141324019351850734027240793788537481119668174278024461459264869593845027070821688672491467419733953157767647591878721464462188579522519942769779701823511373209448989550709318689283645942994891242061421265940879266054253093898296356201171875E-228 +1.319147268013493047979664057885151424476535378912998799217546303744553375230775434530779326951185460439206106344680507043951775404575969565721186935479129504047489482972208420251206117374215245614923904409273029662352715903350437304276628783772869707997422483366497128251707231562081485670831547618527768519734479434004545319864161551262829458316001844763420194174611548749159747820476426701026376738729828038643809384611395260536134069483002355211287073967767635514624877420130848237296296516964074080429728222054324235165731748901021751587715746811824146789149381220340728759765625E-228 +2.638294536026985656595027169784671554721301921478726053524439412437847589133099418560331353455993155946343346259233208671014597291809850640141152396894715308473160984923582817409768652007524745601005727973091692210757109689542226259683504481994883467120244227664600270376220963988428490273791585495218121828613057914053374741466060209874998495828264803870370146805448158757707496223933634855604892291852973918769005414164337734498293483946790631553529518375744292892437715904503988553955940364702274641889797910141863737856729188598978248412284253188175853210850618779659271240234375E-228 +2.63829453602698609595932811577030284895307075782599759843509260748910675046155086906155865390237092087841221268936101408790355080915193913144237387095825900809497896594441684050241223474843049122984780881854605932470543180670087460855325756754573941599484496673299425650341446312416297134166309523705553703946895886800909063972832310252565891663200368952684038834922309749831949564095285340205275347745965607728761876922279052107226813896600471042257414793553527102924975484026169647459259303392814816085945644410864847033146349780204350317543149362364829357829876244068145751953125E-228 +5.27658907205397131319005433956934310944260384295745210704887882487569517826619883712066270691198631189268669251846641734202919458361970128028230479378943061694632196984716563481953730401504949120201145594618338442151421937908445251936700896398976693424048845532920054075244192797685698054758317099043624365722611582810674948293212041974999699165652960774074029361089631751541499244786726971120978458370594783753801082832867546899658696789358126310705903675148858578487543180900797710791188072940454928377959582028372747571345837719795649682456850637635170642170123755931854248046875E-228 +5.2765890720539721919186562315406056979061415156519951968701852149782135009231017381231173078047418417568244253787220281758071016183038782628847477419165180161899579318888336810048244694968609824596956176370921186494108636134017492171065151350914788319896899334659885130068289262483259426833261904741110740789379177360181812794566462050513178332640073790536807766984461949966389912819057068041055069549193121545752375384455810421445362779320094208451482958710705420584995096805233929491851860678562963217189128882172969406629269956040870063508629872472965871565975248813629150390625E-228 +1.05531781441079426263801086791386862188852076859149042140977576497513903565323976742413254138239726237853733850369328346840583891672394025605646095875788612338926439396943312696390746080300989824040229118923667688430284387581689050387340179279795338684809769106584010815048838559537139610951663419808724873144522316562134989658642408394999939833130592154814805872217926350308299848957345394224195691674118956750760216566573509379931739357871625262141180735029771715697508636180159542158237614588090985675591916405674549514269167543959129936491370127527034128434024751186370849609375E-227 +1.0553178144107944383837312463081211395812283031303990393740370429956427001846203476246234615609483683513648850757444056351614203236607756525769495483833036032379915863777667362009648938993721964919391235274184237298821727226803498434213030270182957663979379866931977026013657852496651885366652380948222148157875835472036362558913292410102635666528014758107361553396892389993277982563811413608211013909838624309150475076891162084289072555864018841690296591742141084116999019361046785898370372135712592643437825776434593881325853991208174012701725974494593174313195049762725830078125E-227 +2.1106356288215885252760217358277372437770415371829808428195515299502780713064795348482650827647945247570746770073865669368116778334478805121129219175157722467785287879388662539278149216060197964808045823784733537686056877516337810077468035855959067736961953821316802163009767711907427922190332683961744974628904463312426997931728481678999987966626118430962961174443585270061659969791469078844839138334823791350152043313314701875986347871574325052428236147005954343139501727236031908431647522917618197135118383281134909902853833508791825987298274025505406825686804950237274169921875E-227 +2.110635628821588876767462492616242279162456606260798078748074085991285400369240695249246923121896736702729770151488811270322840647321551305153899096766607206475983172755533472401929787798744392983878247054836847459764345445360699686842606054036591532795875973386395405202731570499330377073330476189644429631575167094407272511782658482020527133305602951621472310679378477998655596512762282721642202781967724861830095015378232416857814511172803768338059318348428216823399803872209357179674074427142518528687565155286918776265170798241634802540345194898918634862639009952545166015625E-227 +4.221271257643177050552043471655474487554083074365961685639103059900556142612959069696530165529589049514149354014773133873623355666895761024225843835031544493557057575877732507855629843212039592961609164756946707537211375503267562015493607171191813547392390764263360432601953542381485584438066536792348994925780892662485399586345696335799997593325223686192592234888717054012331993958293815768967827666964758270030408662662940375197269574314865010485647229401190868627900345447206381686329504583523639427023676656226981980570766701758365197459654805101081365137360990047454833984375E-227 +4.22127125764317775353492498523248455832491321252159615749614817198257080073848139049849384624379347340545954030297762254064568129464310261030779819353321441295196634551106694480385957559748878596775649410967369491952869089072139937368521210807318306559175194677279081040546314099866075414666095237928885926315033418881454502356531696404105426661120590324294462135875695599731119302552456544328440556393544972366019003075646483371562902234560753667611863669685643364679960774441871435934814885428503705737513031057383755253034159648326960508069038979783726972527801990509033203125E-227 +8.44254251528635410110408694331094897510816614873192337127820611980111228522591813939306033105917809902829870802954626774724671133379152204845168767006308898711411515175546501571125968642407918592321832951389341507442275100653512403098721434238362709478478152852672086520390708476297116887613307358469798985156178532497079917269139267159999518665044737238518446977743410802466398791658763153793565533392951654006081732532588075039453914862973002097129445880238173725580069089441276337265900916704727885404735331245396396114153340351673039491930961020216273027472198009490966796875E-227 +8.4425425152863555070698499704649691166498264250431923149922963439651416014769627809969876924875869468109190806059552450812913625892862052206155963870664288259039326910221338896077191511949775719355129882193473898390573817814427987473704242161463661311835038935455816208109262819973215082933219047585777185263006683776290900471306339280821085332224118064858892427175139119946223860510491308865688111278708994473203800615129296674312580446912150733522372733937128672935992154888374287186962977085700741147502606211476751050606831929665392101613807795956745394505560398101806640625E-227 +1.68850850305727082022081738866218979502163322974638467425564122396022245704518362787861206621183561980565974160590925354944934226675830440969033753401261779742282303035109300314225193728481583718464366590277868301488455020130702480619744286847672541895695630570534417304078141695259423377522661471693959797031235706499415983453827853431999903733008947447703689395548682160493279758331752630758713106678590330801216346506517615007890782972594600419425889176047634745116013817888255267453180183340945577080947066249079279222830668070334607898386192204043254605494439601898193359375E-226 +1.6885085030572711014139699940929938233299652850086384629984592687930283202953925561993975384975173893621838161211910490162582725178572410441231192774132857651807865382044267779215438302389955143871025976438694779678114763562885597494740848432292732262367007787091163241621852563994643016586643809517155437052601336755258180094261267856164217066444823612971778485435027823989244772102098261773137622255741798894640760123025859334862516089382430146704474546787425734587198430977674857437392595417140148229500521242295350210121366385933078420322761559191349078901112079620361328125E-226 +3.3770170061145416404416347773243795900432664594927693485112824479204449140903672557572241324236712396113194832118185070988986845335166088193806750680252355948456460607021860062845038745696316743692873318055573660297691004026140496123948857369534508379139126114106883460815628339051884675504532294338791959406247141299883196690765570686399980746601789489540737879109736432098655951666350526151742621335718066160243269301303523001578156594518920083885177835209526949023202763577651053490636036668189115416189413249815855844566133614066921579677238440808650921098887920379638671875E-226 +3.377017006114542202827939988185987646659930570017276925996918537586056640590785112398795076995034778724367632242382098032516545035714482088246238554826571530361573076408853555843087660477991028774205195287738955935622952712577119498948169686458546452473401557418232648324370512798928603317328761903431087410520267351051636018852253571232843413288964722594355697087005564797848954420419652354627524451148359778928152024605171866972503217876486029340894909357485146917439686195534971487478519083428029645900104248459070042024273277186615684064552311838269815780222415924072265625E-226 +6.754034012229083280883269554648759180086532918985538697022564895840889828180734511514448264847342479222638966423637014197797369067033217638761350136050471189691292121404372012569007749139263348738574663611114732059538200805228099224789771473906901675827825222821376692163125667810376935100906458867758391881249428259976639338153114137279996149320357897908147575821947286419731190333270105230348524267143613232048653860260704600315631318903784016777035567041905389804640552715530210698127207333637823083237882649963171168913226722813384315935447688161730184219777584075927734375E-226 +6.75403401222908440565587997637197529331986114003455385199383707517211328118157022479759015399006955744873526448476419606503309007142896417649247710965314306072314615281770711168617532095598205754841039057547791187124590542515423899789633937291709290494680311483646529664874102559785720663465752380686217482104053470210327203770450714246568682657792944518871139417401112959569790884083930470925504890229671955785630404921034373394500643575297205868178981871497029383487937239106994297495703816685605929180020849691814008404854655437323136812910462367653963156044483184814453125E-226 +1.350806802445816656176653910929751836017306583797107739404512979168177965636146902302889652969468495844527793284727402839559473813406643527752270027210094237938258424280874402513801549827852669747714932722222946411907640161045619844957954294781380335165565044564275338432625133562075387020181291773551678376249885651995327867630622827455999229864071579581629515164389457283946238066654021046069704853428722646409730772052140920063126263780756803355407113408381077960928110543106042139625441466727564616647576529992634233782645344562676863187089537632346036843955516815185546875E-225 +1.35080680244581688113117599527439505866397222800691077039876741503442265623631404495951803079801391148974705289695283921300661801428579283529849542193062861214462923056354142233723506419119641150968207811509558237424918108503084779957926787458341858098936062296729305932974820511957144132693150476137243496420810694042065440754090142849313736531558588903774227883480222591913958176816786094185100978045934391157126080984206874678900128715059441173635796374299405876697587447821398859499140763337121185836004169938362801680970931087464627362582092473530792631208896636962890625E-225 +2.70161360489163331235330782185950367203461316759421547880902595833635593127229380460577930593893699168905558656945480567911894762681328705550454005442018847587651684856174880502760309965570533949542986544444589282381528032209123968991590858956276067033113008912855067686525026712415077404036258354710335675249977130399065573526124565491199845972814315916325903032877891456789247613330804209213940970685744529281946154410428184012625252756151360671081422681676215592185622108621208427925088293345512923329515305998526846756529068912535372637417907526469207368791103363037109375E-225 +2.7016136048916337622623519905487901173279444560138215407975348300688453124726280899190360615960278229794941057939056784260132360285715856705969908438612572242892584611270828446744701283823928230193641562301911647484983621700616955991585357491668371619787212459345861186594964102391428826538630095227448699284162138808413088150818028569862747306311717780754845576696044518382791635363357218837020195609186878231425216196841374935780025743011888234727159274859881175339517489564279771899828152667424237167200833987672560336194186217492925472516418494706158526241779327392578125E-225 +5.4032272097832666247066156437190073440692263351884309576180519166727118625445876092115586118778739833781111731389096113582378952536265741110090801088403769517530336971234976100552061993114106789908597308888917856476305606441824793798318171791255213406622601782571013537305005342483015480807251670942067135049995426079813114705224913098239969194562863183265180606575578291357849522666160841842788194137148905856389230882085636802525050551230272134216284536335243118437124421724241685585017658669102584665903061199705369351305813782507074527483581505293841473758220672607421875E-225 +5.403227209783267524524703981097580234655888912027643081595069660137690624945256179838072123192055645958988211587811356852026472057143171341193981687722514448578516922254165689348940256764785646038728312460382329496996724340123391198317071498333674323957442491869172237318992820478285765307726019045489739856832427761682617630163605713972549461262343556150969115339208903676558327072671443767404039121837375646285043239368274987156005148602377646945431854971976235067903497912855954379965630533484847433440166797534512067238837243498585094503283698941231705248355865478515625E-225 +1.0806454419566533249413231287438014688138452670376861915236103833345423725089175218423117223755747966756222346277819222716475790507253148222018160217680753903506067394246995220110412398622821357981719461777783571295261121288364958759663634358251042681324520356514202707461001068496603096161450334188413427009999085215962622941044982619647993838912572636653036121315115658271569904533232168368557638827429781171277846176417127360505010110246054426843256907267048623687424884344848337117003531733820516933180612239941073870261162756501414905496716301058768294751644134521484375E-224 +1.080645441956653504904940796219516046931177782405528616319013932027538124989051235967614424638411129191797642317562271370405294411428634268238796337544502889715703384450833137869788051352957129207745662492076465899399344868024678239663414299666734864791488498373834447463798564095657153061545203809097947971366485552336523526032721142794509892252468711230193823067841780735311665414534288753480807824367475129257008647873654997431201029720475529389086370994395247013580699582571190875993126106696969486688033359506902413447767448699717018900656739788246341049671173095703125E-224 +2.161290883913306649882646257487602937627690534075372383047220766669084745017835043684623444751149593351244469255563844543295158101450629644403632043536150780701213478849399044022082479724564271596343892355556714259052224257672991751932726871650208536264904071302840541492200213699320619232290066837682685401999817043192524588208996523929598767782514527330607224263023131654313980906646433673711527765485956234255569235283425472101002022049210885368651381453409724737484976868969667423400706346764103386636122447988214774052232551300282981099343260211753658950328826904296875E-224 +2.16129088391330700980988159243903209386235556481105723263802786405507624997810247193522884927682225838359528463512454274081058882285726853647759267508900577943140676890166627573957610270591425841549132498415293179879868973604935647932682859933346972958297699674766889492759712819131430612309040761819589594273297110467304705206544228558901978450493742246038764613568356147062333082906857750696161564873495025851401729574730999486240205944095105877817274198879049402716139916514238175198625221339393897337606671901380482689553489739943403780131347957649268209934234619140625E-224 +4.32258176782661329976529251497520587525538106815074476609444153333816949003567008736924688950229918670248893851112768908659031620290125928880726408707230156140242695769879808804416495944912854319268778471111342851810444851534598350386545374330041707252980814260568108298440042739864123846458013367536537080399963408638504917641799304785919753556502905466121444852604626330862796181329286734742305553097191246851113847056685094420200404409842177073730276290681944947496995373793933484680141269352820677327224489597642954810446510260056596219868652042350731790065765380859375E-224 +4.3225817678266140196197631848780641877247111296221144652760557281101524999562049438704576985536445167671905692702490854816211776457145370729551853501780115588628135378033325514791522054118285168309826499683058635975973794720987129586536571986669394591659539934953377898551942563826286122461808152363917918854659422093460941041308845711780395690098748449207752922713671229412466616581371550139232312974699005170280345914946199897248041188819021175563454839775809880543227983302847635039725044267878779467521334380276096537910697947988680756026269591529853641986846923828125E-224 +8.6451635356532265995305850299504117505107621363014895321888830666763389800713401747384937790045983734049778770222553781731806324058025185776145281741446031228048539153975961760883299188982570863853755694222268570362088970306919670077309074866008341450596162852113621659688008547972824769291602673507307416079992681727700983528359860957183950711300581093224288970520925266172559236265857346948461110619438249370222769411337018884040080881968435414746055258136388989499399074758786696936028253870564135465444897919528590962089302052011319243973730408470146358013153076171875E-224 +8.645163535653228039239526369756128375449422259244228930552111456220304999912409887740915397107289033534381138540498170963242355291429074145910370700356023117725627075606665102958304410823657033661965299936611727195194758944197425917307314397333878918331907986990675579710388512765257224492361630472783583770931884418692188208261769142356079138019749689841550584542734245882493323316274310027846462594939801034056069182989239979449608237763804235112690967955161976108645596660569527007945008853575755893504266876055219307582139589597736151205253918305970728397369384765625E-224 +1.7290327071306453199061170059900823501021524272602979064377766133352677960142680349476987558009196746809955754044510756346361264811605037155229056348289206245609707830795192352176659837796514172770751138844453714072417794061383934015461814973201668290119232570422724331937601709594564953858320534701461483215998536345540196705671972191436790142260116218644857794104185053234511847253171469389692222123887649874044553882267403776808016176393687082949211051627277797899879814951757339387205650774112827093088979583905718192417860410402263848794746081694029271602630615234375E-223 +1.729032707130645607847905273951225675089884451848845786110422291244060999982481977548183079421457806706876227708099634192648471058285814829182074140071204623545125415121333020591660882164731406732393059987322345439038951788839485183461462879466775783666381597398135115942077702553051444898472326094556716754186376883738437641652353828471215827603949937968310116908546849176498664663254862005569292518987960206811213836597847995889921647552760847022538193591032395221729119332113905401589001770715151178700853375211043861516427917919547230241050783661194145679473876953125E-223 +3.458065414261290639812234011980164700204304854520595812875553226670535592028536069895397511601839349361991150808902151269272252962321007431045811269657841249121941566159038470435331967559302834554150227768890742814483558812276786803092362994640333658023846514084544866387520341918912990771664106940292296643199707269108039341134394438287358028452023243728971558820837010646902369450634293877938444424777529974808910776453480755361603235278737416589842210325455559579975962990351467877441130154822565418617795916781143638483572082080452769758949216338805854320526123046875E-223 +3.45806541426129121569581054790245135017976890369769157222084458248812199996496395509636615884291561341375245541619926838529694211657162965836414828014240924709025083024266604118332176432946281346478611997464469087807790357767897036692292575893355156733276319479627023188415540510610288979694465218911343350837275376747687528330470765694243165520789987593662023381709369835299732932650972401113858503797592041362242767319569599177984329510552169404507638718206479044345823866422781080317800354143030235740170675042208772303285583583909446048210156732238829135894775390625E-223 +6.91613082852258127962446802396032940040860970904119162575110645334107118405707213979079502320367869872398230161780430253854450592464201486209162253931568249824388313231807694087066393511860566910830045553778148562896711762455357360618472598928066731604769302816908973277504068383782598154332821388058459328639941453821607868226878887657471605690404648745794311764167402129380473890126858775587688884955505994961782155290696151072320647055747483317968442065091111915995192598070293575488226030964513083723559183356228727696714416416090553951789843267761170864105224609375E-223 +6.9161308285225824313916210958049027003595378073953831444416891649762439999299279101927323176858312268275049108323985367705938842331432593167282965602848184941805016604853320823666435286589256269295722399492893817561558071553579407338458515178671031346655263895925404637683108102122057795938893043782268670167455075349537505666094153138848633104157997518732404676341873967059946586530194480222771700759518408272448553463913919835596865902110433880901527743641295808869164773284556216063560070828606047148034135008441754460657116716781889209642031346447765827178955078125E-223 +1.38322616570451625592489360479206588008172194180823832515022129066821423681141442795815900464073573974479646032356086050770890118492840297241832450786313649964877662646361538817413278702372113382166009110755629712579342352491071472123694519785613346320953860563381794655500813676756519630866564277611691865727988290764321573645375777531494321138080929749158862352833480425876094778025371755117537776991101198992356431058139230214464129411149496663593688413018222383199038519614058715097645206192902616744711836671245745539342883283218110790357968653552234172821044921875E-222 +1.3832261657045164862783242191609805400719075614790766288883378329952487999859855820385464635371662453655009821664797073541187768466286518633456593120569636988361003320970664164733287057317851253859144479898578763512311614310715881467691703035734206269331052779185080927536621620424411559187778608756453734033491015069907501133218830627769726620831599503746480935268374793411989317306038896044554340151903681654489710692782783967119373180422086776180305548728259161773832954656911243212712014165721209429606827001688350892131423343356377841928406269289553165435791015625E-222 +2.7664523314090325118497872095841317601634438836164766503004425813364284736228288559163180092814714794895929206471217210154178023698568059448366490157262729992975532529272307763482655740474422676433201822151125942515868470498214294424738903957122669264190772112676358931100162735351303926173312855522338373145597658152864314729075155506298864227616185949831772470566696085175218955605074351023507555398220239798471286211627846042892825882229899332718737682603644476639807703922811743019529041238580523348942367334249149107868576656643622158071593730710446834564208984375E-222 +2.766452331409032972556648438321961080143815122958153257776675665990497599971971164077092927074332490731001964332959414708237553693257303726691318624113927397672200664194132832946657411463570250771828895979715752702462322862143176293538340607146841253866210555837016185507324324084882311837555721751290746806698203013981500226643766125553945324166319900749296187053674958682397863461207779208910868030380736330897942138556556793423874636084417355236061109745651832354766590931382248642542402833144241885921365400337670178426284668671275568385681253857910633087158203125E-222 +5.532904662818065023699574419168263520326887767232953300600885162672856947245657711832636018562942958979185841294243442030835604739713611889673298031452545998595106505854461552696531148094884535286640364430225188503173694099642858884947780791424533852838154422535271786220032547070260785234662571104467674629119531630572862945815031101259772845523237189966354494113339217035043791121014870204701511079644047959694257242325569208578565176445979866543747536520728895327961540784562348603905808247716104669788473466849829821573715331328724431614318746142089366912841796875E-222 +5.53290466281806594511329687664392216028763024591630651555335133198099519994394232815418585414866498146200392866591882941647510738651460745338263724822785479534440132838826566589331482292714050154365779195943150540492464572428635258707668121429368250773242111167403237101464864816976462367511144350258149361339640602796300045328753225110789064833263980149859237410734991736479572692241555841782173606076147266179588427711311358684774927216883471047212221949130366470953318186276449728508480566628848377184273080067534035685256933734255113677136250771582126617431640625E-222 +1.106580932563613004739914883833652704065377553446590660120177032534571389449131542366527203712588591795837168258848688406167120947942722377934659606290509199719021301170892310539306229618976907057328072886045037700634738819928571776989556158284906770567630884507054357244006509414052157046932514220893534925823906326114572589163006220251954569104647437993270898822667843407008758224202974040940302215928809591938851448465113841715713035289195973308749507304145779065592308156912469720781161649543220933957694693369965964314743066265744886322863749228417873382568359375E-221 +1.10658093256361318902265937532878443205752604918326130311067026639619903998878846563083717082973299629240078573318376588329502147730292149067652744964557095906888026567765313317866296458542810030873155839188630108098492914485727051741533624285873650154648422233480647420292972963395292473502228870051629872267928120559260009065750645022157812966652796029971847482146998347295914538448311168356434721215229453235917685542262271736954985443376694209442444389826073294190663637255289945701696113325769675436854616013506807137051386746851022735427250154316425323486328125E-221 +2.21316186512722600947982976766730540813075510689318132024035406506914277889826308473305440742517718359167433651769737681233424189588544475586931921258101839943804260234178462107861245923795381411465614577209007540126947763985714355397911231656981354113526176901410871448801301882810431409386502844178706985164781265222914517832601244050390913820929487598654179764533568681401751644840594808188060443185761918387770289693022768343142607057839194661749901460829155813118461631382493944156232329908644186791538938673993192862948613253148977264572749845683574676513671875E-221 +2.2131618651272263780453187506575688641150520983665226062213405327923980799775769312616743416594659925848015714663675317665900429546058429813530548992911419181377605313553062663573259291708562006174631167837726021619698582897145410348306724857174730030929684446696129484058594592679058494700445774010325974453585624111852001813150129004431562593330559205994369496429399669459182907689662233671286944243045890647183537108452454347390997088675338841888488877965214658838132727451057989140339222665153935087370923202701361427410277349370204547085450030863285064697265625E-221 +4.4263237302544520189596595353346108162615102137863626404807081301382855577965261694661088148503543671833486730353947536246684837917708895117386384251620367988760852046835692421572249184759076282293122915441801508025389552797142871079582246331396270822705235380282174289760260376562086281877300568835741397032956253044582903566520248810078182764185897519730835952906713736280350328968118961637612088637152383677554057938604553668628521411567838932349980292165831162623692326276498788831246465981728837358307787734798638572589722650629795452914549969136714935302734375E-221 +4.426323730254452756090637501315137728230104196733045212442681065584796159955153862523348683318931985169603142932735063533180085909211685962706109798582283836275521062710612532714651858341712401234926233567545204323939716579429082069661344971434946006185936889339225896811718918535811698940089154802065194890717124822370400362630025800886312518666111841198873899285879933891836581537932446734257388848609178129436707421690490869478199417735067768377697775593042931767626545490211597828067844533030787017474184640540272285482055469874040909417090006172657012939453125E-221 +8.852647460508904037919319070669221632523020427572725280961416260276571115593052338932217629700708734366697346070789507249336967583541779023477276850324073597752170409367138484314449836951815256458624583088360301605077910559428574215916449266279254164541047076056434857952052075312417256375460113767148279406591250608916580713304049762015636552837179503946167190581342747256070065793623792327522417727430476735510811587720910733725704282313567786469996058433166232524738465255299757766249293196345767471661557546959727714517944530125959090582909993827342987060546875E-221 +8.85264746050890551218127500263027545646020839346609042488536213116959231991030772504669736663786397033920628586547012706636017181842337192541221959716456767255104212542122506542930371668342480246985246713509040864787943315885816413932268994286989201237187377867845179362343783707162339788017830960413038978143424964474080072526005160177262503733222368239774779857175986778367316307586489346851477769721835625887341484338098173895639883547013553675539555118608586353525309098042319565613568906606157403494836928108054457096411093974808181883418001234531402587890625E-221 +1.770529492101780807583863814133844326504604085514545056192283252055314223118610467786443525940141746873339469214157901449867393516708355804695455370064814719550434081873427696862889967390363051291724916617672060321015582111885714843183289853255850832908209415211286971590410415062483451275092022753429655881318250121783316142660809952403127310567435900789233438116268549451214013158724758465504483545486095347102162317544182146745140856462713557293999211686633246504947693051059951553249858639269153494332311509391945542903588906025191818116581998765468597412109375E-220 +1.77052949210178110243625500052605509129204167869321808497707242623391846398206154500933947332757279406784125717309402541327203436368467438508244391943291353451020842508424501308586074333668496049397049342701808172957588663177163282786453798857397840247437475573569035872468756741432467957603566192082607795628684992894816014505201032035452500746644473647954955971435197355673463261517297869370295553944367125177468296867619634779127976709402710735107911023721717270705061819608463913122713781321231480698967385621610891419282218794961636376683600246906280517578125E-220 +3.54105898420356161516772762826768865300920817102909011238456650411062844623722093557288705188028349374667893842831580289973478703341671160939091074012962943910086816374685539372577993478072610258344983323534412064203116422377142968636657970651170166581641883042257394318082083012496690255018404550685931176263650024356663228532161990480625462113487180157846687623253709890242802631744951693100896709097219069420432463508836429349028171292542711458799842337326649300989538610211990310649971727853830698866462301878389108580717781205038363623316399753093719482421875E-220 +3.5410589842035622048725100010521101825840833573864361699541448524678369279641230900186789466551455881356825143461880508265440687273693487701648878388658270690204168501684900261717214866733699209879409868540361634591517732635432656557290759771479568049487495114713807174493751348286493591520713238416521559125736998578963202901040206407090500149328894729590991194287039471134692652303459573874059110788873425035493659373523926955825595341880542147021582204744343454141012363921692782624542756264246296139793477124322178283856443758992327275336720049381256103515625E-220 +7.0821179684071232303354552565353773060184163420581802247691330082212568924744418711457741037605669874933578768566316057994695740668334232187818214802592588782017363274937107874515598695614522051668996664706882412840623284475428593727331594130234033316328376608451478863616416602499338051003680910137186235252730004871332645706432398096125092422697436031569337524650741978048560526348990338620179341819443813884086492701767285869805634258508542291759968467465329860197907722042398062129994345570766139773292460375677821716143556241007672724663279950618743896484375E-220 +7.082117968407124409745020002104220365168166714772872339908289704935673855928246180037357893310291176271365028692376101653088137454738697540329775677731654138040833700336980052343442973346739841975881973708072326918303546527086531311458151954295913609897499022942761434898750269657298718304142647683304311825147399715792640580208041281418100029865778945918198238857407894226938530460691914774811822157774685007098731874704785391165119068376108429404316440948868690828202472784338556524908551252849259227958695424864435656771288751798465455067344009876251220703125E-220 +1.4164235936814246460670910513070754612036832684116360449538266016442513784948883742291548207521133974986715753713263211598939148133666846437563642960518517756403472654987421574903119739122904410333799332941376482568124656895085718745466318826046806663265675321690295772723283320499867610200736182027437247050546000974266529141286479619225018484539487206313867504930148395609712105269798067724035868363888762776817298540353457173961126851701708458351993693493065972039581544408479612425998869114153227954658492075135564343228711248201534544932655990123748779296875E-219 +1.416423593681424881949004000420844073033633342954574467981657940987134771185649236007471578662058235254273005738475220330617627490947739508065955135546330827608166740067396010468688594669347968395176394741614465383660709305417306262291630390859182721979499804588552286979750053931459743660828529536660862365029479943158528116041608256283620005973155789183639647771481578845387706092138382954962364431554937001419746374940957078233023813675221685880863288189773738165640494556867711304981710250569851845591739084972887131354257750359693091013468801975250244140625E-219 +2.832847187362849292134182102614150922407366536823272089907653203288502756989776748458309641504226794997343150742652642319787829626733369287512728592103703551280694530997484314980623947824580882066759866588275296513624931379017143749093263765209361332653135064338059154544656664099973522040147236405487449410109200194853305828257295923845003696907897441262773500986029679121942421053959613544807173672777752555363459708070691434792225370340341691670398738698613194407916308881695922485199773822830645590931698415027112868645742249640306908986531198024749755859375E-219 +2.83284718736284976389800800084168814606726668590914893596331588197426954237129847201494315732411647050854601147695044066123525498189547901613191027109266165521633348013479202093737718933869593679035278948322893076732141861083461252458326078171836544395899960917710457395950010786291948732165705907332172473005895988631705623208321651256724001194631157836727929554296315769077541218427676590992472886310987400283949274988191415646604762735044337176172657637954747633128098911373542260996342050113970369118347816994577426270851550071938618202693760395050048828125E-219 +5.66569437472569858426836420522830184481473307364654417981530640657700551397955349691661928300845358999468630148530528463957565925346673857502545718420740710256138906199496862996124789564916176413351973317655059302724986275803428749818652753041872266530627012867611830908931332819994704408029447281097489882021840038970661165651459184769000739381579488252554700197205935824388484210791922708961434734555550511072691941614138286958445074068068338334079747739722638881583261776339184497039954764566129118186339683005422573729148449928061381797306239604949951171875E-219 +5.6656943747256995277960160016833762921345333718182978719266317639485390847425969440298863146482329410170920229539008813224705099637909580322638205421853233104326669602695840418747543786773918735807055789664578615346428372216692250491665215634367308879179992183542091479190002157258389746433141181466434494601179197726341124641664330251344800238926231567345585910859263153815508243685535318198494577262197480056789854997638283129320952547008867435234531527590949526625619782274708452199268410022794073823669563398915485254170310014387723640538752079010009765625E-219 +1.13313887494513971685367284104566036896294661472930883596306128131540110279591069938332385660169071799893726029706105692791513185069334771500509143684148142051227781239899372599224957912983235282670394663531011860544997255160685749963730550608374453306125402573522366181786266563998940881605889456219497976404368007794132233130291836953800147876315897650510940039441187164877696842158384541792286946911110102214538388322827657391689014813613667666815949547944527776316652355267836899407990952913225823637267936601084514745829689985612276359461247920989990234375E-218 +1.1331388749451399055592032003366752584269066743636595743853263527897078169485193888059772629296465882034184045907801762644941019927581916064527641084370646620865333920539168083749508757354783747161411157932915723069285674443338450098333043126873461775835998436708418295838000431451677949286628236293286898920235839545268224928332866050268960047785246313469117182171852630763101648737107063639698915452439496011357970999527656625864190509401773487046906305518189905325123956454941690439853682004558814764733912679783097050834062002877544728107750415802001953125E-218 +2.2662777498902794337073456820913207379258932294586176719261225626308022055918213987666477132033814359978745205941221138558302637013866954300101828736829628410245556247979874519844991582596647056534078932706202372108999451032137149992746110121674890661225080514704473236357253312799788176321177891243899595280873601558826446626058367390760029575263179530102188007888237432975539368431676908358457389382222020442907677664565531478337802962722733533363189909588905555263330471053567379881598190582645164727453587320216902949165937997122455271892249584197998046875E-218 +2.266277749890279811118406400673350516853813348727319148770652705579415633897038777611954525859293176406836809181560352528988203985516383212905528216874129324173066784107833616749901751470956749432282231586583144613857134888667690019666608625374692355167199687341683659167600086290335589857325647258657379784047167909053644985666573210053792009557049262693823436434370526152620329747421412727939783090487899202271594199905531325172838101880354697409381261103637981065024791290988338087970736400911762952946782535956619410166812400575508945621550083160400390625E-218 +4.532555499780558867414691364182641475851786458917235343852245125261604411183642797533295426406762871995749041188244227711660527402773390860020365747365925682049111249595974903968998316519329411306815786541240474421799890206427429998549222024334978132245016102940894647271450662559957635264235578248779919056174720311765289325211673478152005915052635906020437601577647486595107873686335381671691477876444404088581535532913106295667560592544546706672637981917781111052666094210713475976319638116529032945490717464043380589833187599424491054378449916839599609375E-218 +4.53255549978055962223681280134670103370762669745463829754130541115883126779407755522390905171858635281367361836312070505797640797103276642581105643374825864834613356821566723349980350294191349886456446317316628922771426977733538003933321725074938471033439937468336731833520017258067117971465129451731475956809433581810728997133314642010758401911409852538764687286874105230524065949484282545587956618097579840454318839981106265034567620376070939481876252220727596213004958258197667617594147280182352590589356507191323882033362480115101789124310016632080078125E-218 +9.06511099956111773482938272836528295170357291783447068770449025052320882236728559506659085281352574399149808237648845542332105480554678172004073149473185136409822249919194980793799663303865882261363157308248094884359978041285485999709844404866995626449003220588178929454290132511991527052847115649755983811234944062353057865042334695630401183010527181204087520315529497319021574737267076334338295575288880817716307106582621259133512118508909341334527596383556222210533218842142695195263927623305806589098143492808676117966637519884898210875689983367919921875E-218 +9.0651109995611192444736256026934020674152533949092765950826108223176625355881551104478181034371727056273472367262414101159528159420655328516221128674965172966922671364313344669996070058838269977291289263463325784554285395546707600786664345014987694206687987493667346366704003451613423594293025890346295191361886716362145799426662928402151680382281970507752937457374821046104813189896856509117591323619515968090863767996221253006913524075214187896375250444145519242600991651639533523518829456036470518117871301438264776406672496023020357824862003326416015625E-218 +1.81302219991222354696587654567305659034071458356689413754089805010464176447345711901331817056270514879829961647529769108466421096110935634400814629894637027281964449983838996158759932660773176452272631461649618976871995608257097199941968880973399125289800644117635785890858026502398305410569423129951196762246988812470611573008466939126080236602105436240817504063105899463804314947453415266867659115057776163543261421316524251826702423701781868266905519276711244442106643768428539039052785524661161317819628698561735223593327503976979642175137996673583984375E-217 +1.8130221999122238488947251205386804134830506789818553190165221644635325071176310220895636206874345411254694473452482820231905631884131065703244225734993034593384534272862668933999214011767653995458257852692665156910857079109341520157332869002997538841337597498733469273340800690322684718858605178069259038272377343272429159885332585680430336076456394101550587491474964209220962637979371301823518264723903193618172753599244250601382704815042837579275050088829103848520198330327906704703765891207294103623574260287652955281334499204604071564972400665283203125E-217 +3.6260443998244470939317530913461131806814291671337882750817961002092835289469142380266363411254102975965992329505953821693284219222187126880162925978927405456392889996767799231751986532154635290454526292329923795374399121651419439988393776194679825057960128823527157178171605300479661082113884625990239352449397762494122314601693387825216047320421087248163500812621179892760862989490683053373531823011555232708652284263304850365340484740356373653381103855342248888421328753685707807810557104932232263563925739712347044718665500795395928435027599334716796875E-217 +3.626044399824447697789450241077360826966101357963710638033044328927065014235262044179127241374869082250938894690496564046381126376826213140648845146998606918676906854572533786799842802353530799091651570538533031382171415821868304031466573800599507768267519499746693854668160138064536943771721035613851807654475468654485831977066517136086067215291278820310117498294992841844192527595874260364703652944780638723634550719848850120276540963008567515855010017765820769704039666065581340940753178241458820724714852057530591056266899840920814312994480133056640625E-217 +7.252088799648894187863506182692226361362858334267576550163592200418567057893828476053272682250820595193198465901190764338656843844437425376032585195785481091278577999353559846350397306430927058090905258465984759074879824330283887997678755238935965011592025764705431435634321060095932216422776925198047870489879552498824462920338677565043209464084217449632700162524235978552172597898136610674706364602311046541730456852660970073068096948071274730676220771068449777684265750737141561562111420986446452712785147942469408943733100159079185687005519866943359375E-217 +7.25208879964889539557890048215472165393220271592742127606608865785413002847052408835825448274973816450187778938099312809276225275365242628129769029399721383735381370914506757359968560470706159818330314107706606276434283164373660806293314760119901553653503899949338770933632027612907388754344207122770361530895093730897166395413303427217213443058255764062023499658998568368838505519174852072940730588956127744726910143969770024055308192601713503171002003553164153940807933213116268188150635648291764144942970411506118211253379968184162862598896026611328125E-217 +1.450417759929778837572701236538445272272571666853515310032718440083713411578765695210654536450164119038639693180238152867731368768887485075206517039157096218255715599870711969270079461286185411618181051693196951814975964866056777599535751047787193002318405152941086287126864212019186443284555385039609574097975910499764892584067735513008641892816843489926540032504847195710434519579627322134941272920462209308346091370532194014613619389614254946135244154213689955536853150147428312312422284197289290542557029588493881788746620031815837137401103973388671875E-216 +1.45041775992977907911578009643094433078644054318548425521321773157082600569410481767165089654994763290037555787619862561855245055073048525625953805879944276747076274182901351471993712094141231963666062821541321255286856632874732161258662952023980310730700779989867754186726405522581477750868841424554072306179018746179433279082660685443442688611651152812404699931799713673767701103834970414588146117791225548945382028793954004811061638520342700634200400710632830788161586642623253637630127129658352828988594082301223642250675993636832572519779205322265625E-216 +2.90083551985955767514540247307689054454514333370703062006543688016742682315753139042130907290032823807727938636047630573546273753777497015041303407831419243651143119974142393854015892257237082323636210338639390362995192973211355519907150209557438600463681030588217257425372842403837288656911077007921914819595182099952978516813547102601728378563368697985308006500969439142086903915925464426988254584092441861669218274106438802922723877922850989227048830842737991107370630029485662462484456839457858108511405917698776357749324006363167427480220794677734375E-216 +2.9008355198595581582315601928618886615728810863709685104264354631416520113882096353433017930998952658007511157523972512371049011014609705125190761175988855349415254836580270294398742418828246392733212564308264251057371326574946432251732590404796062146140155997973550837345281104516295550173768284910814461235803749235886655816532137088688537722330230562480939986359942734753540220766994082917629223558245109789076405758790800962212327704068540126840080142126566157632317328524650727526025425931670565797718816460244728450135198727366514503955841064453125E-216 +5.8016710397191153502908049461537810890902866674140612401308737603348536463150627808426181458006564761545587727209526114709254750755499403008260681566283848730228623994828478770803178451447416464727242067727878072599038594642271103981430041911487720092736206117643451485074568480767457731382215401584382963919036419990595703362709420520345675712673739597061601300193887828417380783185092885397650916818488372333843654821287760584544775584570197845409766168547598221474126005897132492496891367891571621702281183539755271549864801272633485496044158935546875E-216 +5.801671039719116316463120385723777323145762172741937020852870926283304022776419270686603586199790531601502231504794502474209802202921941025038152235197771069883050967316054058879748483765649278546642512861652850211474265314989286450346518080959212429228031199594710167469056220903259110034753656982162892247160749847177331163306427417737707544466046112496187997271988546950708044153398816583525844711649021957815281151758160192442465540813708025368016028425313231526463465704930145505205085186334113159543763292048945690027039745473302900791168212890625E-216 +1.1603342079438230700581609892307562178180573334828122480261747520669707292630125561685236291601312952309117545441905222941850950151099880601652136313256769746045724798965695754160635690289483292945448413545575614519807718928454220796286008382297544018547241223528690297014913696153491546276443080316876592783807283998119140672541884104069135142534747919412320260038777565683476156637018577079530183363697674466768730964257552116908955116914039569081953233709519644294825201179426498499378273578314324340456236707951054309972960254526697099208831787109375E-215 +1.160334207943823263292624077144755464629152434548387404170574185256660804555283854137320717239958106320300446300958900494841960440584388205007630447039554213976610193463210811775949696753129855709328502572330570042294853062997857290069303616191842485845606239918942033493811244180651822006950731396432578449432149969435466232661285483547541508893209222499237599454397709390141608830679763316705168942329804391563056230351632038488493108162741605073603205685062646305292693140986029101041017037266822631908752658409789138005407949094660580158233642578125E-215 +2.320668415887646140116321978461512435636114666965624496052349504133941458526025112337047258320262590461823509088381044588370190030219976120330427262651353949209144959793139150832127138057896658589089682709115122903961543785690844159257201676459508803709448244705738059402982739230698309255288616063375318556761456799623828134508376820813827028506949583882464052007755513136695231327403715415906036672739534893353746192851510423381791023382807913816390646741903928858965040235885299699875654715662864868091247341590210861994592050905339419841766357421875E-215 +2.32066841588764652658524815428951092925830486909677480834114837051332160911056770827464143447991621264060089260191780098968392088116877641001526089407910842795322038692642162355189939350625971141865700514466114008458970612599571458013860723238368497169121247983788406698762248836130364401390146279286515689886429993887093246532257096709508301778641844499847519890879541878028321766135952663341033788465960878312611246070326407697698621632548321014720641137012529261058538628197205820208203407453364526381750531681957827601081589818932116031646728515625E-215 +4.64133683177529228023264395692302487127222933393124899210469900826788291705205022467409451664052518092364701817676208917674038006043995224066085452530270789841828991958627830166425427611579331717817936541823024580792308757138168831851440335291901760741889648941147611880596547846139661851057723212675063711352291359924765626901675364162765405701389916776492810401551102627339046265480743083181207334547906978670749238570302084676358204676561582763278129348380785771793008047177059939975130943132572973618249468318042172398918410181067883968353271484375E-215 +4.6413368317752930531704963085790218585166097381935496166822967410266432182211354165492828689598324252812017852038356019793678417623375528200305217881582168559064407738528432471037987870125194228373140102893222801691794122519914291602772144647673699433824249596757681339752449767226072880278029255857303137977285998777418649306451419341901660355728368899969503978175908375605664353227190532668206757693192175662522249214065281539539724326509664202944128227402505852211707725639441164041640681490672905276350106336391565520216317963786423206329345703125E-215 +9.2826736635505845604652879138460497425444586678624979842093980165357658341041004493481890332810503618472940363535241783534807601208799044813217090506054157968365798391725566033285085522315866343563587308364604916158461751427633766370288067058380352148377929788229522376119309569227932370211544642535012742270458271984953125380335072832553081140277983355298562080310220525467809253096148616636241466909581395734149847714060416935271640935312316552655625869676157154358601609435411987995026188626514594723649893663608434479783682036213576793670654296875E-215 +9.282673663550586106340992617158043717033219476387099233364593482053286436442270833098565737919664850562403570407671203958735683524675105640061043576316433711812881547705686494207597574025038845674628020578644560338358824503982858320554428929534739886764849919351536267950489953445214576055605851171460627595457199755483729861290283868380332071145673779993900795635181675121132870645438106533641351538638435132504449842813056307907944865301932840588825645480501170442341545127888232808328136298134581055270021267278313104043263592757284641265869140625E-215 +1.8565347327101169120930575827692099485088917335724995968418796033071531668208200898696378066562100723694588072707048356706961520241759808962643418101210831593673159678345113206657017104463173268712717461672920983231692350285526753274057613411676070429675585957645904475223861913845586474042308928507002548454091654396990625076067014566510616228055596671059712416062044105093561850619229723327248293381916279146829969542812083387054328187062463310531125173935231430871720321887082397599005237725302918944729978732721686895956736407242715358734130859375E-214 +1.856534732710117221268198523431608743406643895277419846672918696410657287288454166619713147583932970112480714081534240791747136704935021128012208715263286742362576309541137298841519514805007769134925604115728912067671764900796571664110885785906947977352969983870307253590097990689042915211121170234292125519091439951096745972258056773676066414229134755998780159127036335024226574129087621306728270307727687026500889968562611261581588973060386568117765129096100234088468309025577646561665627259626916211054004253455662620808652718551456928253173828125E-214 +3.713069465420233824186115165538419897017783467144999193683759206614306333641640179739275613312420144738917614541409671341392304048351961792528683620242166318734631935669022641331403420892634653742543492334584196646338470057105350654811522682335214085935117191529180895044772382769117294808461785701400509690818330879398125015213402913302123245611119334211942483212408821018712370123845944665449658676383255829365993908562416677410865637412492662106225034787046286174344064377416479519801047545060583788945995746544337379191347281448543071746826171875E-214 +3.71306946542023444253639704686321748681328779055483969334583739282131457457690833323942629516786594022496142816306848158349427340987004225602441743052657348472515261908227459768303902961001553826985120823145782413534352980159314332822177157181389595470593996774061450718019598137808583042224234046858425103818287990219349194451611354735213282845826951199756031825407267004845314825817524261345654061545537405300177993712522252316317794612077313623553025819220046817693661805115529312333125451925383242210800850691132524161730543710291385650634765625E-214 +7.42613893084046764837223033107683979403556693428999838736751841322861266728328035947855122662484028947783522908281934268278460809670392358505736724048433263746926387133804528266280684178526930748508698466916839329267694011421070130962304536467042817187023438305836179008954476553823458961692357140280101938163666175879625003042680582660424649122223866842388496642481764203742474024769188933089931735276651165873198781712483335482173127482498532421245006957409257234868812875483295903960209509012116757789199149308867475838269456289708614349365234375E-214 +7.4261389308404688850727940937264349736265755811096793866916747856426291491538166664788525903357318804499228563261369631669885468197400845120488348610531469694503052381645491953660780592200310765397024164629156482706870596031862866564435431436277919094118799354812290143603919627561716608444846809371685020763657598043869838890322270947042656569165390239951206365081453400969062965163504852269130812309107481060035598742504450463263558922415462724710605163844009363538732361023105862466625090385076648442160170138226504832346108742058277130126953125E-214 +1.48522778616809352967444606621536795880711338685799967747350368264572253345665607189571024532496805789556704581656386853655692161934078471701147344809686652749385277426760905653256136835705386149701739693383367865853538802284214026192460907293408563437404687661167235801790895310764691792338471428056020387632733235175925000608536116532084929824444773368477699328496352840748494804953837786617986347055330233174639756342496667096434625496499706484249001391481851446973762575096659180792041901802423351557839829861773495167653891257941722869873046875E-213 +1.4852277861680937770145588187452869947253151162219358773383349571285258298307633332957705180671463760899845712652273926333977093639480169024097669722106293938900610476329098390732156118440062153079404832925831296541374119206372573312887086287255583818823759870962458028720783925512343321688969361874337004152731519608773967778064454189408531313833078047990241273016290680193812593032700970453826162461821496212007119748500890092652711784483092544942121032768801872707746472204621172493325018077015329688432034027645300966469221748411655426025390625E-213 +2.9704555723361870593488921324307359176142267737159993549470073652914450669133121437914204906499361157911340916331277370731138432386815694340229468961937330549877055485352181130651227367141077229940347938676673573170707760456842805238492181458681712687480937532233447160358179062152938358467694285611204077526546647035185000121707223306416985964888954673695539865699270568149698960990767557323597269411066046634927951268499333419286925099299941296849800278296370289394752515019331836158408380360484670311567965972354699033530778251588344573974609375E-213 +2.970455572336187554029117637490573989450630232443871754676669914257051659661526666591541036134292752179969142530454785266795418727896033804819533944421258787780122095265819678146431223688012430615880966585166259308274823841274514662577417257451116763764751974192491605744156785102468664337793872374867400830546303921754793555612890837881706262766615609598048254603258136038762518606540194090765232492364299242401423949700178018530542356896618508988424206553760374541549294440924234498665003615403065937686406805529060193293844349682331085205078125E-213 +5.940911144672374118697784264861471835228453547431998709894014730582890133826624287582840981299872231582268183266255474146227686477363138868045893792387466109975411097070436226130245473428215445988069587735334714634141552091368561047698436291736342537496187506446689432071635812430587671693538857122240815505309329407037000024341444661283397192977790934739107973139854113629939792198153511464719453882213209326985590253699866683857385019859988259369960055659274057878950503003866367231681676072096934062313593194470939806706155650317668914794921875E-213 +5.94091114467237510805823527498114797890126046488774350935333982851410331932305333318308207226858550435993828506090957053359083745579206760963906788884251757556024419053163935629286244737602486123176193317033251861654964768254902932515483451490223352752950394838498321148831357020493732867558774474973480166109260784350958711122578167576341252553323121919609650920651627207752503721308038818153046498472859848480284789940035603706108471379323701797684841310752074908309858888184846899733000723080613187537281361105812038658768869936466217041015625E-213 +1.188182228934474823739556852972294367045690709486399741978802946116578026765324857516568196259974446316453636653251094829245537295472627773609178758477493221995082219414087245226049094685643089197613917547066942926828310418273712209539687258347268507499237501289337886414327162486117534338707771424448163101061865881407400004868288932256679438595558186947821594627970822725987958439630702292943890776442641865397118050739973336771477003971997651873992011131854811575790100600773273446336335214419386812462718638894187961341231130063533782958984375E-212 +1.18818222893447502161164705499622959578025209297754870187066796570282066386461066663661641445371710087198765701218191410671816749115841352192781357776850351511204883810632787125857248947520497224635238663406650372330992953650980586503096690298044670550590078967699664229766271404098746573511754894994696033221852156870191742224515633515268250510664624383921930184130325441550500744261607763630609299694571969696056957988007120741221694275864740359536968262150414981661971777636969379946600144616122637507456272221162407731753773987293243408203125E-212 +2.37636445786894964747911370594458873409138141897279948395760589223315605353064971503313639251994889263290727330650218965849107459094525554721835751695498644399016443882817449045209818937128617839522783509413388585365662083654742441907937451669453701499847500257867577282865432497223506867741554284889632620212373176281480000973657786451335887719111637389564318925594164545197591687926140458588778155288528373079423610147994667354295400794399530374798402226370962315158020120154654689267267042883877362492543727778837592268246226012706756591796875E-212 +2.3763644578689500432232941099924591915605041859550974037413359314056413277292213332732328289074342017439753140243638282134363349823168270438556271555370070302240976762126557425171449789504099444927047732681330074466198590730196117300619338059608934110118015793539932845953254280819749314702350978998939206644370431374038348444903126703053650102132924876784386036826065088310100148852321552726121859938914393939211391597601424148244338855172948071907393652430082996332394355527393875989320028923224527501491254444232481546350754797458648681640625E-212 +4.7527289157378992949582274118891774681827628379455989679152117844663121070612994300662727850398977852658145466130043793169821491818905110944367150339099728879803288776563489809041963787425723567904556701882677717073132416730948488381587490333890740299969500051573515456573086499444701373548310856977926524042474635256296000194731557290267177543822327477912863785118832909039518337585228091717755631057705674615884722029598933470859080158879906074959680445274192463031604024030930937853453408576775472498508745555767518453649245202541351318359375E-212 +4.752728915737900086446588219984918383121008371910194807482671862811282655458442666546465657814868403487950628048727656426872669964633654087711254311074014060448195352425311485034289957900819888985409546536266014893239718146039223460123867611921786822023603158707986569190650856163949862940470195799787841328874086274807669688980625340610730020426584975356877207365213017662020029770464310545224371987782878787842278319520284829648867771034589614381478730486016599266478871105478775197864005784644905500298250888846496309270150959491729736328125E-212 +9.505457831475798589916454823778354936365525675891197935830423568932624214122598860132545570079795570531629093226008758633964298363781022188873430067819945775960657755312697961808392757485144713580911340376535543414626483346189697676317498066778148059993900010314703091314617299888940274709662171395585304808494927051259200038946311458053435508764465495582572757023766581807903667517045618343551126211541134923176944405919786694171816031775981214991936089054838492606320804806186187570690681715355094499701749111153503690729849040508270263671875E-212 +9.50545783147580017289317643996983676624201674382038961496534372562256531091688533309293131562973680697590125609745531285374533992926730817542250862214802812089639070485062297006857991580163977797081909307253202978647943629207844692024773522384357364404720631741597313838130171232789972588094039159957568265774817254961533937796125068122146004085316995071375441473042603532404005954092862109044874397556575757568455663904056965929773554206917922876295746097203319853295774221095755039572801156928981100059650177769299261854030191898345947265625E-212 +1.901091566295159717983290964755670987273105135178239587166084713786524842824519772026509114015959114106325818645201751726792859672756204437774686013563989155192131551062539592361678551497028942716182268075307108682925296669237939535263499613355629611998780002062940618262923459977788054941932434279117060961698985410251840007789262291610687101752893099116514551404753316361580733503409123668710225242308226984635388881183957338834363206355196242998387217810967698521264160961237237514138136343071018899940349822230700738145969808101654052734375E-211 +1.90109156629516003457863528799396735324840334876407792299306874512451306218337706661858626312594736139518025121949106257074906798585346163508450172442960562417927814097012459401371598316032795559416381861450640595729588725841568938404954704476871472880944126348319462767626034246557994517618807831991513653154963450992306787559225013624429200817063399014275088294608520706480801190818572421808974879511315151513691132780811393185954710841383584575259149219440663970659154844219151007914560231385796220011930035553859852370806038379669189453125E-211 +3.80218313259031943596658192951134197454621027035647917433216942757304968564903954405301822803191822821265163729040350345358571934551240887554937202712797831038426310212507918472335710299405788543236453615061421736585059333847587907052699922671125922399756000412588123652584691995557610988386486855823412192339797082050368001557852458322137420350578619823302910280950663272316146700681824733742045048461645396927077776236791467766872641271039248599677443562193539704252832192247447502827627268614203779988069964446140147629193961620330810546875E-211 +3.8021831325903200691572705759879347064968066975281558459861374902490261243667541332371725262518947227903605024389821251414981359717069232701690034488592112483585562819402491880274319663206559111883276372290128119145917745168313787680990940895374294576188825269663892553525206849311598903523761566398302730630992690198461357511845002724885840163412679802855017658921704141296160238163714484361794975902263030302738226556162278637190942168276716915051829843888132794131830968843830201582912046277159244002386007110771970474161207675933837890625E-211 +7.6043662651806388719331638590226839490924205407129583486643388551460993712980790881060364560638364564253032745808070069071714386910248177510987440542559566207685262042501583694467142059881157708647290723012284347317011866769517581410539984534225184479951200082517624730516938399111522197677297371164682438467959416410073600311570491664427484070115723964660582056190132654463229340136364946748409009692329079385415555247358293553374528254207849719935488712438707940850566438449489500565525453722840755997613992889228029525838792324066162109375E-211 +7.604366265180640138314541151975869412993613395056311691972274980498052248733508266474345052503789445580721004877964250282996271943413846540338006897718422496717112563880498376054863932641311822376655274458025623829183549033662757536198188179074858915237765053932778510705041369862319780704752313279660546126198538039692271502369000544977168032682535960571003531784340828259232047632742896872358995180452606060547645311232455727438188433655343383010365968777626558826366193768766040316582409255431848800477201422154394094832241535186767578125E-211 +1.5208732530361277743866327718045367898184841081425916697328677710292198742596158176212072912127672912850606549161614013814342877382049635502197488108511913241537052408500316738893428411976231541729458144602456869463402373353903516282107996906845036895990240016503524946103387679822304439535459474232936487693591883282014720062314098332885496814023144792932116411238026530892645868027272989349681801938465815877083111049471658710674905650841569943987097742487741588170113287689897900113105090744568151199522798577845605905167758464813232421875E-210 +1.520873253036128027662908230395173882598722679011262338394454996099610449746701653294869010500757889116144200975592850056599254388682769308067601379543684499343422512776099675210972786528262364475331054891605124765836709806732551507239637635814971783047553010786555702141008273972463956140950462655932109225239707607938454300473800108995433606536507192114200706356868165651846409526548579374471799036090521212109529062246491145487637686731068676602073193755525311765273238753753208063316481851086369760095440284430878818966448307037353515625E-210 +3.041746506072255548773265543609073579636968216285183339465735542058439748519231635242414582425534582570121309832322802762868575476409927100439497621702382648307410481700063347778685682395246308345891628920491373892680474670780703256421599381369007379198048003300704989220677535964460887907091894846587297538718376656402944012462819666577099362804628958586423282247605306178529173605454597869936360387693163175416622209894331742134981130168313988797419548497548317634022657537979580022621018148913630239904559715569121181033551692962646484375E-210 +3.04174650607225605532581646079034776519744535802252467678890999219922089949340330658973802100151577823228840195118570011319850877736553861613520275908736899868684502555219935042194557305652472895066210978321024953167341961346510301447927527162994356609510602157311140428201654794492791228190092531186421845047941521587690860094760021799086721307301438422840141271373633130369281905309715874894359807218104242421905812449298229097527537346213735320414638751105062353054647750750641612663296370217273952019088056886175763793289661407470703125E-210 +6.08349301214451109754653108721814715927393643257036667893147108411687949703846327048482916485106916514024261966464560552573715095281985420087899524340476529661482096340012669555737136479049261669178325784098274778536094934156140651284319876273801475839609600660140997844135507192892177581418378969317459507743675331280588802492563933315419872560925791717284656449521061235705834721090919573987272077538632635083324441978866348426996226033662797759483909699509663526804531507595916004524203629782726047980911943113824236206710338592529296875E-210 +6.0834930121445121106516329215806955303948907160450493535778199843984417989868066131794760420030315564645768039023714002263970175547310772322704055181747379973736900511043987008438911461130494579013242195664204990633468392269302060289585505432598871321902120431462228085640330958898558245638018506237284369009588304317538172018952004359817344261460287684568028254274726626073856381061943174978871961443620848484381162489859645819505507469242747064082927750221012470610929550150128322532659274043454790403817611377235152758657932281494140625E-210 +1.21669860242890221950930621744362943185478728651407333578629421682337589940769265409696583297021383302804852393292912110514743019056397084017579904868095305932296419268002533911147427295809852333835665156819654955707218986831228130256863975254760295167921920132028199568827101438578435516283675793863491901548735066256117760498512786663083974512185158343456931289904212247141166944218183914797454415507726527016664888395773269685399245206732559551896781939901932705360906301519183200904840725956545209596182388622764847241342067718505859375E-209 +1.2166986024289024221303265843161391060789781432090098707155639968796883597973613226358952084006063112929153607804742800452794035109462154464540811036349475994747380102208797401687782292226098915802648439132840998126693678453860412057917101086519774264380424086292445617128066191779711649127603701247456873801917660863507634403790400871963468852292057536913605650854945325214771276212388634995774392288724169696876232497971929163901101493848549412816585550044202494122185910030025664506531854808690958080763522275447030551731586456298828125E-209 +2.4333972048578044390186124348872588637095745730281466715725884336467517988153853081939316659404276660560970478658582422102948603811279416803515980973619061186459283853600506782229485459161970466767133031363930991141443797366245626051372795050952059033584384026405639913765420287715687103256735158772698380309747013251223552099702557332616794902437031668691386257980842449428233388843636782959490883101545305403332977679154653937079849041346511910379356387980386541072181260303836640180968145191309041919236477724552969448268413543701171875E-209 +2.433397204857804844260653168632278212157956286418019741431127993759376719594722645271790416801212622585830721560948560090558807021892430892908162207269895198949476020441759480337556458445219783160529687826568199625338735690772082411583420217303954852876084817258489123425613238355942329825520740249491374760383532172701526880758080174392693770458411507382721130170989065042954255242477726999154878457744833939375246499594385832780220298769709882563317110008840498824437182006005132901306370961738191616152704455089406110346317291259765625E-209 +4.866794409715608878037224869774517727419149146056293343145176867293503597630770616387863331880855332112194095731716484420589720762255883360703196194723812237291856770720101356445897091832394093353426606272786198228288759473249125210274559010190411806716876805281127982753084057543137420651347031754539676061949402650244710419940511466523358980487406333738277251596168489885646677768727356591898176620309061080666595535830930787415969808269302382075871277596077308214436252060767328036193629038261808383847295544910593889653682708740234375E-209 +4.86679440971560968852130633726455642431591257283603948286225598751875343918944529054358083360242524517166144312189712018111761404378486178581632441453979039789895204088351896067511291689043956632105937565313639925067747138154416482316684043460790970575216963451697824685122647671188465965104148049898274952076706434540305376151616034878538754091682301476544226034197813008590851048495545399830975691548966787875049299918877166556044059753941976512663422001768099764887436401201026580261274192347638323230540891017881222069263458251953125E-209 +9.73358881943121775607444973954903545483829829211258668629035373458700719526154123277572666376171066422438819146343296884117944152451176672140639238944762447458371354144020271289179418366478818670685321254557239645657751894649825042054911802038082361343375361056225596550616811508627484130269406350907935212389880530048942083988102293304671796097481266747655450319233697977129335553745471318379635324061812216133319107166186157483193961653860476415174255519215461642887250412153465607238725807652361676769459108982118777930736541748046875E-209 +9.7335888194312193770426126745291128486318251456720789657245119750375068783788905810871616672048504903433228862437942403622352280875697235716326488290795807957979040817670379213502258337808791326421187513062727985013549427630883296463336808692158194115043392690339564937024529534237693193020829609979654990415341286908061075230323206975707750818336460295308845206839562601718170209699109079966195138309793357575009859983775433311208811950788395302532684400353619952977487280240205316052254838469527664646108178203576244413852691650390625E-209 +1.94671776388624355121488994790980709096765965842251733725807074691740143905230824655514533275234213284487763829268659376823588830490235334428127847788952489491674270828804054257835883673295763734137064250911447929131550378929965008410982360407616472268675072211245119310123362301725496826053881270181587042477976106009788416797620458660934359219496253349531090063846739595425867110749094263675927064812362443226663821433237231496638792330772095283034851103843092328577450082430693121447745161530472335353891821796423755586147308349609375E-208 +1.9467177638862438754085225349058225697263650291344157931449023950075013756757781162174323334409700980686645772487588480724470456175139447143265297658159161591595808163534075842700451667561758265284237502612545597002709885526176659292667361738431638823008678538067912987404905906847538638604165921995930998083068257381612215046064641395141550163667292059061769041367912520343634041939821815993239027661958671515001971996755086662241762390157679060506536880070723990595497456048041063210450967693905532929221635640715248882770538330078125E-208 +3.8934355277724871024297798958196141819353193168450346745161414938348028781046164931102906655046842656897552765853731875364717766098047066885625569557790497898334854165760810851567176734659152746827412850182289585826310075785993001682196472081523294453735014442249023862024672460345099365210776254036317408495595221201957683359524091732186871843899250669906218012769347919085173422149818852735185412962472488645332764286647446299327758466154419056606970220768618465715490016486138624289549032306094467070778364359284751117229461669921875E-208 +3.893435527772487750817045069811645139452730058268831586289804790015002751351556232434864666881940196137329154497517696144894091235027889428653059531631832318319161632706815168540090333512351653056847500522509119400541977105235331858533472347686327764601735707613582597480981181369507727720833184399186199616613651476322443009212928279028310032733458411812353808273582504068726808387964363198647805532391734303000394399351017332448352478031535812101307376014144798119099491209608212642090193538781106585844327128143049776554107666015625E-208 +7.786871055544974204859559791639228363870638633690069349032282987669605756209232986220581331009368531379510553170746375072943553219609413377125113911558099579666970833152162170313435346931830549365482570036457917165262015157198600336439294416304658890747002888449804772404934492069019873042155250807263481699119044240391536671904818346437374368779850133981243602553869583817034684429963770547037082592494497729066552857329489259865551693230883811321394044153723693143098003297227724857909806461218893414155672871856950223445892333984375E-208 +7.78687105554497550163409013962329027890546011653766317257960958003000550270311246486972933376388039227465830899503539228978818247005577885730611906326366463663832326541363033708018066702470330611369500104501823880108395421047066371706694469537265552920347141522716519496196236273901545544166636879837239923322730295264488601842585655805662006546691682362470761654716500813745361677592872639729561106478346860600078879870203466489670495606307162420261475202828959623819898241921642528418038707756221317168865425628609955310821533203125E-208 +1.557374211108994840971911958327845672774127726738013869806456597533921151241846597244116266201873706275902110634149275014588710643921882675425022782311619915933394166630432434062687069386366109873096514007291583433052403031439720067287858883260931778149400577689960954480986898413803974608431050161452696339823808848078307334380963669287474873755970026796248720510773916763406936885992754109407416518498899545813310571465897851973110338646176762264278808830744738628619600659445544971581961292243778682831134574371390044689178466796875E-207 +1.55737421110899510032681802792465805578109202330753263451592191600600110054062249297394586675277607845493166179900707845795763649401115577146122381265273292732766465308272606741603613340494066122273900020900364776021679084209413274341338893907453110584069428304543303899239247254780309108833327375967447984664546059052897720368517131161132401309338336472494152330943300162749072335518574527945912221295669372120015775974040693297934099121261432484052295040565791924763979648384328505683607741551244263433773085125721991062164306640625E-207 +3.11474842221798968194382391665569134554825545347602773961291319506784230248369319448823253240374741255180422126829855002917742128784376535085004556462323983186678833326086486812537413877273221974619302801458316686610480606287944013457571776652186355629880115537992190896197379682760794921686210032290539267964761769615661466876192733857494974751194005359249744102154783352681387377198550821881483303699779909162662114293179570394622067729235352452855761766148947725723920131889108994316392258448755736566226914874278008937835693359375E-207 +3.1147484222179902006536360558493161115621840466150652690318438320120022010812449859478917335055521569098633235980141569159152729880223115429224476253054658546553293061654521348320722668098813224454780004180072955204335816841882654868267778781490622116813885660908660779847849450956061821766665475193489596932909211810579544073703426232226480261867667294498830466188660032549814467103714905589182444259133874424003155194808138659586819824252286496810459008113158384952795929676865701136721548310248852686754617025144398212432861328125E-207 +6.2294968444359793638876478333113826910965109069520554792258263901356846049673863889764650648074948251036084425365971000583548425756875307017000911292464796637335766665217297362507482775454644394923860560291663337322096121257588802691514355330437271125976023107598438179239475936552158984337242006458107853592952353923132293375238546771498994950238801071849948820430956670536277475439710164376296660739955981832532422858635914078924413545847070490571152353229789545144784026377821798863278451689751147313245382974855601787567138671875E-207 +6.229496844435980401307272111698632223124368093230130538063687664024004402162489971895783467011104313819726647196028313831830545976044623085844895250610931709310658612330904269664144533619762644890956000836014591040867163368376530973653555756298124423362777132181732155969569890191212364353333095038697919386581842362115908814740685246445296052373533458899766093237732006509962893420742981117836488851826774884800631038961627731917363964850457299362091801622631676990559185935373140227344309662049770537350923405028879642486572265625E-207 +1.2458993688871958727775295666622765382193021813904110958451652780271369209934772777952930129614989650207216885073194200116709685151375061403400182258492959327467153333043459472501496555090928878984772112058332667464419224251517760538302871066087454225195204621519687635847895187310431796867448401291621570718590470784626458675047709354299798990047760214369989764086191334107255495087942032875259332147991196366506484571727182815784882709169414098114230470645957909028956805275564359772655690337950229462649076594971120357513427734375E-206 +1.245899368887196080261454422339726444624873618646026107612737532804800880432497994379156693402220862763945329439205662766366109195208924617168979050122186341862131722466180853932828906723952528978191200167202918208173432673675306194730711151259624884672555426436346431193913978038242472870666619007739583877316368472423181762948137049289059210474706691779953218647546401301992578684148596223567297770365354976960126207792325546383472792970091459872418360324526335398111837187074628045468861932409954107470184681005775928497314453125E-206 +2.491798737774391745555059133324553076438604362780822191690330556054273841986954555590586025922997930041443377014638840023341937030275012280680036451698591865493430666608691894500299311018185775796954422411666533492883844850303552107660574213217490845039040924303937527169579037462086359373489680258324314143718094156925291735009541870859959798009552042873997952817238266821451099017588406575051866429598239273301296914345436563156976541833882819622846094129191581805791361055112871954531138067590045892529815318994224071502685546875E-206 +2.49179873777439216052290884467945288924974723729205221522547506560960176086499598875831338680444172552789065887841132553273221839041784923433795810024437268372426344493236170786565781344790505795638240033440583641634686534735061238946142230251924976934511085287269286238782795607648494574133323801547916775463273694484636352589627409857811842094941338355990643729509280260398515736829719244713459554073070995392025241558465109276694558594018291974483672064905267079622367437414925609093772386481990821494036936201155185699462890625E-206 +4.98359747554878349111011826664910615287720872556164438338066111210854768397390911118117205184599586008288675402927768004668387406055002456136007290339718373098686133321738378900059862203637155159390884482333306698576768970060710421532114842643498169007808184860787505433915807492417271874697936051664862828743618831385058347001908374171991959601910408574799590563447653364290219803517681315010373285919647854660259382869087312631395308366776563924569218825838316361158272211022574390906227613518009178505963063798844814300537109375E-206 +4.9835974755487843210458176893589057784994944745841044304509501312192035217299919775166267736088834510557813177568226510654644367808356984686759162004887453674485268898647234157313156268958101159127648006688116728326937306947012247789228446050384995386902217057453857247756559121529698914826664760309583355092654738896927270517925481971562368418988267671198128745901856052079703147365943848942691910814614199078405048311693021855338911718803658394896734412981053415924473487482985121818754477296398164298807387240231037139892578125E-206 +9.9671949510975669822202365332982123057544174511232887667613222242170953679478182223623441036919917201657735080585553600933677481211000491227201458067943674619737226664347675780011972440727431031878176896466661339715353794012142084306422968528699633801561636972157501086783161498483454374939587210332972565748723766277011669400381674834398391920382081714959918112689530672858043960703536263002074657183929570932051876573817462526279061673355312784913843765167663272231654442204514878181245522703601835701192612759768962860107421875E-206 +9.967194951097568642091635378717811556998988949168208860901900262438407043459983955033253547217766902111562635513645302130928873561671396937351832400977490734897053779729446831462631253791620231825529601337623345665387461389402449557845689210076999077380443411490771449551311824305939782965332952061916671018530947779385454103585096394312473683797653534239625749180371210415940629473188769788538382162922839815681009662338604371067782343760731678979346882596210683184894697496597024363750895459279632859761477448046207427978515625E-206 +1.9934389902195133964440473066596424611508834902246577533522644448434190735895636444724688207383983440331547016117110720186735496242200098245440291613588734923947445332869535156002394488145486206375635379293332267943070758802428416861284593705739926760312327394431500217356632299696690874987917442066594513149744753255402333880076334966879678384076416342991983622537906134571608792140707252600414931436785914186410375314763492505255812334671062556982768753033532654446330888440902975636249104540720367140238522551953792572021484375E-205 +1.993438990219513728418327075743562311399797789833641772180380052487681408691996791006650709443553380422312527102729060426185774712334279387470366480195498146979410755945889366292526250758324046365105920267524669133077492277880489911569137842015399815476088682298154289910262364861187956593066590412383334203706189555877090820717019278862494736759530706847925149836074242083188125894637753957707676432584567963136201932467720874213556468752146335795869376519242136636978939499319404872750179091855926571952295489609241485595703125E-205 +3.986877980439026792888094613319284922301766980449315506704528889686838147179127288944937641476796688066309403223422144037347099248440019649088058322717746984789489066573907031200478897629097241275127075858666453588614151760485683372256918741147985352062465478886300043471326459939338174997583488413318902629948950651080466776015266993375935676815283268598396724507581226914321758428141450520082986287357182837282075062952698501051162466934212511396553750606706530889266177688180595127249820908144073428047704510390758514404296875E-205 +3.98687798043902745683665415148712462279959557966728354436076010497536281738399358201330141888710676084462505420545812085237154942466855877494073296039099629395882151189177873258505250151664809273021184053504933826615498455576097982313827568403079963095217736459630857982052472972237591318613318082476666840741237911175418164143403855772498947351906141369585029967214848416637625178927550791541535286516913592627240386493544174842711293750429267159173875303848427327395787899863880974550035818371185314390459097921848297119140625E-205 +7.97375596087805358577618922663856984460353396089863101340905777937367629435825457788987528295359337613261880644684428807469419849688003929817611664543549396957897813314781406240095779525819448255025415171733290717722830352097136674451383748229597070412493095777260008694265291987867634999516697682663780525989790130216093355203053398675187135363056653719679344901516245382864351685628290104016597257471436567456415012590539700210232493386842502279310750121341306177853235537636119025449964181628814685609540902078151702880859375E-205 +7.9737559608780549136733083029742492455991911593345670887215202099507256347679871640266028377742135216892501084109162417047430988493371175498814659207819925879176430237835574651701050030332961854604236810700986765323099691115219596462765513680615992619043547291926171596410494594447518263722663616495333368148247582235083632828680771154499789470381228273917005993442969683327525035785510158308307057303382718525448077298708834968542258750085853431834775060769685465479157579972776194910007163674237062878091819584369659423828125E-205 +1.59475119217561071715523784532771396892070679217972620268181155587473525887165091557797505659071867522652376128936885761493883969937600785963522332908709879391579562662956281248019155905163889651005083034346658143544566070419427334890276749645919414082498619155452001738853058397573526999903339536532756105197958026043218671040610679735037427072611330743935868980303249076572870337125658020803319451494287313491283002518107940042046498677368500455862150024268261235570647107527223805089992836325762937121908180415630340576171875E-204 +1.5947511921756109827346616605948498491198382318669134177443040419901451269535974328053205675548427043378500216821832483409486197698674235099762931841563985175835286047567114930340210006066592370920847362140197353064619938223043919292553102736123198523808709458385234319282098918889503652744532723299066673629649516447016726565736154230899957894076245654783401198688593936665505007157102031661661411460676543705089615459741766993708451750017170686366955012153937093095831515994555238982001432734847412575618363916873931884765625E-204 +3.1895023843512214343104756906554279378414135843594524053636231117494705177433018311559501131814373504530475225787377152298776793987520157192704466581741975878315912532591256249603831181032777930201016606869331628708913214083885466978055349929183882816499723831090400347770611679514705399980667907306551221039591605208643734208122135947007485414522266148787173796060649815314574067425131604160663890298857462698256600503621588008409299735473700091172430004853652247114129421505444761017998567265152587424381636083126068115234375E-204 +3.189502384351221965469323321189699698239676463733826835488608083980290253907194865610641135109685408675700043364366496681897239539734847019952586368312797035167057209513422986068042001213318474184169472428039470612923987644608783858510620547224639704761741891677046863856419783777900730548906544659813334725929903289403345313147230846179991578815249130956680239737718787333101001431420406332332282292135308741017923091948353398741690350003434137273391002430787418619166303198911047796400286546969482515123672783374786376953125E-204 +6.379004768702442868620951381310855875682827168718904810727246223498941035486603662311900226362874700906095045157475430459755358797504031438540893316348395175663182506518251249920766236206555586040203321373866325741782642816777093395611069985836776563299944766218080069554122335902941079996133581461310244207918321041728746841624427189401497082904453229757434759212129963062914813485026320832132778059771492539651320100724317601681859947094740018234486000970730449422825884301088952203599713453030517484876327216625213623046875E-204 +6.37900476870244393093864664237939939647935292746765367097721616796058050781438973122128227021937081735140008672873299336379447907946969403990517273662559407033411441902684597213608400242663694836833894485607894122584797528921756771702124109444927940952348378335409372771283956755580146109781308931962666945185980657880669062629446169235998315763049826191336047947543757466620200286284081266466456458427061748203584618389670679748338070000686827454678200486157483723833260639782209559280057309393896503024734556674957275390625E-204 +1.275800953740488573724190276262171175136565433743780962145449244699788207097320732462380045272574940181219009031495086091951071759500806287708178663269679035132636501303650249984153247241311117208040664274773265148356528563355418679122213997167355312659988953243616013910824467180588215999226716292262048841583664208345749368324885437880299416580890645951486951842425992612582962697005264166426555611954298507930264020144863520336371989418948003646897200194146089884565176860217790440719942690606103496975265443325042724609375E-203 +1.27580095374048878618772932847587987929587058549353073419544323359211610156287794624425645404387416347028001734574659867275889581589393880798103454732511881406682288380536919442721680048532738967366778897121578824516959505784351354340424821888985588190469675667081874554256791351116029221956261786392533389037196131576133812525889233847199663152609965238267209589508751493324040057256816253293291291685412349640716923677934135949667614000137365490935640097231496744766652127956441911856011461878779300604946911334991455078125E-203 +2.55160190748097714744838055252434235027313086748756192429089848939957641419464146492476009054514988036243801806299017218390214351900161257541635732653935807026527300260730049996830649448262223441608132854954653029671305712671083735824442799433471062531997790648723202782164893436117643199845343258452409768316732841669149873664977087576059883316178129190297390368485198522516592539401052833285311122390859701586052804028972704067274397883789600729379440038829217976913035372043558088143988538121220699395053088665008544921875E-203 +2.5516019074809775723754586569517597585917411709870614683908864671842322031257558924885129080877483269405600346914931973455177916317878776159620690946502376281336457676107383888544336009706547793473355779424315764903391901156870270868084964377797117638093935133416374910851358270223205844391252357278506677807439226315226762505177846769439932630521993047653441917901750298664808011451363250658658258337082469928143384735586827189933522800027473098187128019446299348953330425591288382371202292375755860120989382266998291015625E-203 +5.1032038149619542948967611050486847005462617349751238485817969787991528283892829298495201810902997607248760361259803443678042870380032251508327146530787161405305460052146009999366129889652444688321626570990930605934261142534216747164888559886694212506399558129744640556432978687223528639969068651690481953663346568333829974732995417515211976663235625838059478073697039704503318507880210566657062224478171940317210560805794540813454879576757920145875888007765843595382607074408711617628797707624244139879010617733001708984375E-203 +5.103203814961955144750917313903519517183482341974122936781772934368464406251511784977025816175496653881120069382986394691035583263575755231924138189300475256267291535221476777708867201941309558694671155884863152980678380231374054173616992875559423527618787026683274982170271654044641168878250471455701335561487845263045352501035569353887986526104398609530688383580350059732961602290272650131731651667416493985628676947117365437986704560005494619637425603889259869790666085118257676474240458475151172024197876453399658203125E-203 +1.0206407629923908589793522210097369401092523469950247697163593957598305656778565859699040362180599521449752072251960688735608574076006450301665429306157432281061092010429201999873225977930488937664325314198186121186852228506843349432977711977338842501279911625948928111286595737444705727993813730338096390732669313666765994946599083503042395332647125167611895614739407940900663701576042113331412444895634388063442112161158908162690975915351584029175177601553168719076521414881742323525759541524848827975802123546600341796875E-202 +1.020640762992391028950183462780703903436696468394824587356354586873692881250302356995405163235099330776224013876597278938207116652715151046384827637860095051253458307044295355541773440388261911738934231176972630596135676046274810834723398575111884705523757405336654996434054330808928233775650094291140267112297569052609070500207113870777597305220879721906137676716070011946592320458054530026346330333483298797125735389423473087597340912001098923927485120777851973958133217023651535294848091695030234404839575290679931640625E-202 +2.041281525984781717958704442019473880218504693990049539432718791519661131355713171939808072436119904289950414450392137747121714815201290060333085861231486456212218402085840399974645195586097787532865062839637224237370445701368669886595542395467768500255982325189785622257319147488941145598762746067619278146533862733353198989319816700608479066529425033522379122947881588180132740315208422666282488979126877612688422432231781632538195183070316805835035520310633743815304282976348464705151908304969765595160424709320068359375E-202 +2.04128152598478205790036692556140780687339293678964917471270917374738576250060471399081032647019866155244802775319455787641423330543030209276965527572019010250691661408859071108354688077652382347786846235394526119227135209254962166944679715022376941104751481067330999286810866161785646755130018858228053422459513810521814100041422774155519461044175944381227535343214002389318464091610906005269266066696659759425147077884694617519468182400219784785497024155570394791626643404730307058969618339006046880967915058135986328125E-202 +4.08256305196956343591740888403894776043700938798009907886543758303932226271142634387961614487223980857990082890078427549424342963040258012066617172246297291242443680417168079994929039117219557506573012567927444847474089140273733977319108479093553700051196465037957124451463829497788229119752549213523855629306772546670639797863963340121695813305885006704475824589576317636026548063041684533256497795825375522537684486446356326507639036614063361167007104062126748763060856595269692941030381660993953119032084941864013671875E-202 +4.0825630519695641158007338511228156137467858735792983494254183474947715250012094279816206529403973231048960555063891157528284666108606041855393105514403802050138332281771814221670937615530476469557369247078905223845427041850992433388935943004475388220950296213466199857362173232357129351026003771645610684491902762104362820008284554831103892208835188876245507068642800477863692818322181201053853213339331951885029415576938923503893636480043956957099404831114078958325328680946061411793923667801209376193583011627197265625E-202 +8.1651261039391268718348177680778955208740187759601981577308751660786445254228526877592322897444796171598016578015685509884868592608051602413323434449259458248488736083433615998985807823443911501314602513585488969494817828054746795463821695818710740010239293007591424890292765899557645823950509842704771125861354509334127959572792668024339162661177001340895164917915263527205309612608336906651299559165075104507536897289271265301527807322812672233401420812425349752612171319053938588206076332198790623806416988372802734375E-202 +8.165126103939128231601467702245631227493571747158596698850836694989543050002418855963241305880794646209792111012778231505656933221721208371078621102880760410027666456354362844334187523106095293911473849415781044769085408370198486677787188600895077644190059242693239971472434646471425870205200754329122136898380552420872564001656910966220778441767037775249101413728560095572738563664436240210770642667866390377005883115387784700778727296008791391419880966222815791665065736189212282358784733560241875238716602325439453125E-202 +1.6330252207878253743669635536155791041748037551920396315461750332157289050845705375518464579488959234319603315603137101976973718521610320482664686889851891649697747216686723199797161564688782300262920502717097793898963565610949359092764339163742148002047858601518284978058553179911529164790101968540954225172270901866825591914558533604867832532235400268179032983583052705441061922521667381330259911833015020901507379457854253060305561464562534446680284162485069950522434263810787717641215266439758124761283397674560546875E-201 +1.633025220787825646320293540449126245498714349431719339770167338997908610000483771192648261176158929241958422202555646301131386644344241674215724220576152082005533291270872568866837504621219058782294769883156208953817081674039697335557437720179015528838011848538647994294486929294285174041040150865824427379676110484174512800331382193244155688353407555049820282745712019114547712732887248042154128533573278075401176623077556940155745459201758278283976193244563158333013147237842456471756946712048375047743320465087890625E-201 +3.266050441575650748733927107231158208349607510384079263092350066431457810169141075103692915897791846863920663120627420395394743704322064096532937377970378329939549443337344639959432312937756460052584100543419558779792713122189871818552867832748429600409571720303656995611710635982305832958020393708190845034454180373365118382911706720973566506447080053635806596716610541088212384504333476266051982366603004180301475891570850612061112292912506889336056832497013990104486852762157543528243053287951624952256679534912109375E-201 +3.26605044157565129264058708089825249099742869886343867954033467799581722000096754238529652235231785848391684440511129260226277328868848334843144844115230416401106658254174513773367500924243811756458953976631241790763416334807939467111487544035803105767602369707729598858897385858857034808208030173164885475935222096834902560066276438648831137670681511009964056549142403822909542546577449608430825706714655615080235324615511388031149091840351655656795238648912631666602629447568491294351389342409675009548664093017578125E-201 +6.53210088315130149746785421446231641669921502076815852618470013286291562033828215020738583179558369372784132624125484079078948740864412819306587475594075665987909888667468927991886462587551292010516820108683911755958542624437974363710573566549685920081914344060731399122342127196461166591604078741638169006890836074673023676582341344194713301289416010727161319343322108217642476900866695253210396473320600836060295178314170122412222458582501377867211366499402798020897370552431508705648610657590324990451335906982421875E-201 +6.5321008831513025852811741617965049819948573977268773590806693559916344400019350847705930447046357169678336888102225852045255465773769666968628968823046083280221331650834902754673500184848762351291790795326248358152683266961587893422297508807160621153520473941545919771779477171771406961641606034632977095187044419366980512013255287729766227534136302201992811309828480764581908509315489921686165141342931123016047064923102277606229818368070331131359047729782526333320525889513698258870277868481935001909732818603515625E-201 +1.30642017663026029949357084289246328333984300415363170523694002657258312406765643004147716635911673874556826524825096815815789748172882563861317495118815133197581977733493785598377292517510258402103364021736782351191708524887594872742114713309937184016382868812146279824468425439292233318320815748327633801378167214934604735316468268838942660257883202145432263868664421643528495380173339050642079294664120167212059035662834024482444491716500275573442273299880559604179474110486301741129722131518064998090267181396484375E-200 +1.3064201766302605170562348323593009963989714795453754718161338711983268880003870169541186089409271433935667377620445170409051093154753933393725793764609216656044266330166980550934700036969752470258358159065249671630536653392317578684459501761432124230704094788309183954355895434354281392328321206926595419037408883873396102402651057545953245506827260440398562261965696152916381701863097984337233028268586224603209412984620455521245963673614066226271809545956505266664105177902739651774055573696387000381946563720703125E-200 +2.6128403532605205989871416857849265666796860083072634104738800531451662481353128600829543327182334774911365304965019363163157949634576512772263499023763026639516395546698757119675458503502051680420672804347356470238341704977518974548422942661987436803276573762429255964893685087858446663664163149665526760275633442986920947063293653767788532051576640429086452773732884328705699076034667810128415858932824033442411807132566804896488898343300055114688454659976111920835894822097260348225944426303612999618053436279296875E-200 +2.612840353260521034112469664718601992797942959090750943632267742396653776000774033908237217881854286787133475524089034081810218630950786678745158752921843331208853266033396110186940007393950494051671631813049934326107330678463515736891900352286424846140818957661836790871179086870856278465664241385319083807481776774679220480530211509190649101365452088079712452393139230583276340372619596867446605653717244920641882596924091104249192734722813245254361909191301053332821035580547930354811114739277400076389312744140625E-200 +5.225680706521041197974283371569853133359372016614526820947760106290332496270625720165908665436466954982273060993003872632631589926915302554452699804752605327903279109339751423935091700700410336084134560869471294047668340995503794909684588532397487360655314752485851192978737017571689332732832629933105352055126688597384189412658730753557706410315328085817290554746576865741139815206933562025683171786564806688482361426513360979297779668660011022937690931995222384167178964419452069645188885260722599923610687255859375E-200 +5.22568070652104206822493932943720398559588591818150188726453548479330755200154806781647443576370857357426695104817806816362043726190157335749031750584368666241770653206679222037388001478790098810334326362609986865221466135692703147378380070457284969228163791532367358174235817374171255693132848277063816761496355354935844096106042301838129820273090417615942490478627846116655268074523919373489321130743448984128376519384818220849838546944562649050872381838260210666564207116109586070962222947855480015277862548828125E-200 +1.045136141304208239594856674313970626671874403322905364189552021258066499254125144033181733087293390996454612198600774526526317985383060510890539960950521065580655821867950284787018340140082067216826912173894258809533668199100758981936917706479497472131062950497170238595747403514337866546566525986621070411025337719476837882531746150711541282063065617163458110949315373148227963041386712405136634357312961337696472285302672195859555933732002204587538186399044476833435792883890413929037777052144519984722137451171875E-199 +1.04513614130420841364498786588744079711917718363630037745290709695866151040030961356329488715274171471485339020963561363272408745238031467149806350116873733248354130641335844407477600295758019762066865272521997373044293227138540629475676014091456993845632758306473471634847163474834251138626569655412763352299271070987168819221208460367625964054618083523188498095725569223331053614904783874697864226148689796825675303876963644169967709388912529810174476367652042133312841423221917214192444589571096003055572509765625E-199 +2.09027228260841647918971334862794125334374880664581072837910404251613299850825028806636346617458678199290922439720154905305263597076612102178107992190104213116131164373590056957403668028016413443365382434778851761906733639820151796387383541295899494426212590099434047719149480702867573309313305197324214082205067543895367576506349230142308256412613123432691622189863074629645592608277342481027326871462592267539294457060534439171911186746400440917507637279808895366687158576778082785807555410428903996944427490234375E-199 +2.0902722826084168272899757317748815942383543672726007549058141939173230208006192271265897743054834294297067804192712272654481749047606293429961270023374746649670826128267168881495520059151603952413373054504399474608858645427708125895135202818291398769126551661294694326969432694966850227725313931082552670459854214197433763844241692073525192810923616704637699619145113844666210722980956774939572845229737959365135060775392728833993541877782505962034895273530408426662568284644383442838488917914219200611114501953125E-199 +4.1805445652168329583794266972558825066874976132916214567582080850322659970165005761327269323491735639858184487944030981061052719415322420435621598438020842623226232874718011391480733605603282688673076486955770352381346727964030359277476708259179898885242518019886809543829896140573514661862661039464842816441013508779073515301269846028461651282522624686538324437972614925929118521655468496205465374292518453507858891412106887834382237349280088183501527455961779073337431715355616557161511082085780799388885498046875E-199 +4.180544565216833654579951463549763188476708734545201509811628387834646041601238454253179548610966858859413560838542454530896349809521258685992254004674949329934165225653433776299104011830320790482674610900879894921771729085541625179027040563658279753825310332258938865393886538993370045545062786216510534091970842839486752768848338414705038562184723340927539923829022768933242144596191354987914569045947591873027012155078545766798708375556501192406979054706081685332513656928876688567697783582843840122222900390625E-199 +8.361089130433665916758853394511765013374995226583242913516416170064531994033001152265453864698347127971636897588806196212210543883064484087124319687604168524645246574943602278296146721120656537734615297391154070476269345592806071855495341651835979777048503603977361908765979228114702932372532207892968563288202701755814703060253969205692330256504524937307664887594522985185823704331093699241093074858503690701571778282421377566876447469856017636700305491192355814667486343071123311432302216417156159877777099609375E-199 +8.36108913043366730915990292709952637695341746909040301962325677566929208320247690850635909722193371771882712167708490906179269961904251737198450800934989865986833045130686755259820802366064158096534922180175978984354345817108325035805408112731655950765062066451787773078777307798674009109012557243302106818394168567897350553769667682941007712436944668185507984765804553786648428919238270997582913809189518374605402431015709153359741675111300238481395810941216337066502731385775337713539556716568768024444580078125E-199 +1.672217826086733183351770678902353002674999045316648582703283234012906398806600230453090772939669425594327379517761239242442108776612896817424863937520833704929049314988720455659229344224131307546923059478230814095253869118561214371099068330367195955409700720795472381753195845622940586474506441578593712657640540351162940612050793841138466051300904987461532977518904597037164740866218739848218614971700738140314355656484275513375289493971203527340061098238471162933497268614224662286460443283431231975555419921875E-198 +1.67221782608673346183198058541990527539068349381808060392465135513385841664049538170127181944438674354376542433541698181235853992380850347439690160186997973197366609026137351051964160473212831619306984436035195796870869163421665007161081622546331190153012413290357554615755461559734801821802511448660421363678833713579470110753933536588201542487388933637101596953160910757329685783847654199516582761837903674921080486203141830671948335022260047696279162188243267413300546277155067542707911343313753604888916015625E-198 +3.34443565217346636670354135780470600534999809063329716540656646802581279761320046090618154587933885118865475903552247848488421755322579363484972787504166740985809862997744091131845868844826261509384611895646162819050773823712242874219813666073439191081940144159094476350639169124588117294901288315718742531528108070232588122410158768227693210260180997492306595503780919407432948173243747969643722994340147628062871131296855102675057898794240705468012219647694232586699453722844932457292088656686246395111083984375E-198 +3.3444356521734669236639611708398105507813669876361612078493027102677168332809907634025436388887734870875308486708339636247170798476170069487938032037399594639473321805227470210392832094642566323861396887207039159374173832684333001432216324509266238030602482658071510923151092311946960364360502289732084272735766742715894022150786707317640308497477786727420319390632182151465937156769530839903316552367580734984216097240628366134389667004452009539255832437648653482660109255431013508541582268662750720977783203125E-198 +6.6888713043469327334070827156094120106999961812665943308131329360516255952264009218123630917586777023773095180710449569697684351064515872696994557500833348197161972599548818226369173768965252301876922379129232563810154764742448574843962733214687838216388028831818895270127833824917623458980257663143748506305621614046517624482031753645538642052036199498461319100756183881486589634648749593928744598868029525612574226259371020535011579758848141093602443929538846517339890744568986491458417731337249279022216796875E-198 +6.688871304346933847327922341679621101562733975272322415698605420535433666561981526805087277777546974175061697341667927249434159695234013897587606407479918927894664361045494042078566418928513264772279377441407831874834766536866600286443264901853247606120496531614302184630218462389392072872100457946416854547153348543178804430157341463528061699495557345484063878126436430293187431353906167980663310473516146996843219448125673226877933400890401907851166487529730696532021851086202701708316453732550144195556640625E-198 +1.3377742608693865466814165431218824021399992362533188661626265872103251190452801843624726183517355404754619036142089913939536870212903174539398911500166669639432394519909763645273834753793050460375384475825846512762030952948489714968792546642937567643277605766363779054025566764983524691796051532628749701261124322809303524896406350729107728410407239899692263820151236776297317926929749918785748919773605905122514845251874204107002315951769628218720488785907769303467978148913797298291683546267449855804443359375E-197 +1.337774260869386769465584468335924220312546795054464483139721084107086733312396305361017455555509394835012339468333585449886831939046802779517521281495983785578932872209098808415713283785702652954455875488281566374966953307373320057288652980370649521224099306322860436926043692477878414574420091589283370909430669708635760886031468292705612339899111469096812775625287286058637486270781233596132662094703229399368643889625134645375586680178080381570233297505946139306404370217240540341663290746510028839111328125E-197 +2.675548521738773093362833086243764804279998472506637732325253174420650238090560368724945236703471080950923807228417982787907374042580634907879782300033333927886478903981952729054766950758610092075076895165169302552406190589697942993758509328587513528655521153272755810805113352996704938359210306525749940252224864561860704979281270145821545682081447979938452764030247355259463585385949983757149783954721181024502969050374840821400463190353925643744097757181553860693595629782759459658336709253489971160888671875E-197 +2.67554852173877353893116893667184844062509359010892896627944216821417346662479261072203491111101878967002467893666717089977366387809360555903504256299196757115786574441819761683142656757140530590891175097656313274993390661474664011457730596074129904244819861264572087385208738495575682914884018317856674181886133941727152177206293658541122467979822293819362555125057457211727497254156246719226532418940645879873728777925026929075117336035616076314046659501189227861280874043448108068332658149302005767822265625E-197 +5.35109704347754618672566617248752960855999694501327546465050634884130047618112073744989047340694216190184761445683596557581474808516126981575956460006666785577295780796390545810953390151722018415015379033033860510481238117939588598751701865717502705731104230654551162161022670599340987671842061305149988050444972912372140995856254029164309136416289595987690552806049471051892717077189996751429956790944236204900593810074968164280092638070785128748819551436310772138719125956551891931667341850697994232177734375E-197 +5.3510970434775470778623378733436968812501871802178579325588843364283469332495852214440698222220375793400493578733343417995473277561872111180700851259839351423157314888363952336628531351428106118178235019531262654998678132294932802291546119214825980848963972252914417477041747699115136582976803663571334836377226788345430435441258731708224493595964458763872511025011491442345499450831249343845306483788129175974745755585005385815023467207123215262809331900237845572256174808689621613666531629860401153564453125E-197 +1.07021940869550923734513323449750592171199938900265509293010126976826009523622414748997809468138843238036952289136719311516294961703225396315191292001333357115459156159278109162190678030344403683003075806606772102096247623587917719750340373143500541146220846130910232432204534119868197534368412261029997610088994582474428199171250805832861827283257919197538110561209894210378543415437999350285991358188847240980118762014993632856018527614157025749763910287262154427743825191310378386333468370139598846435546875E-196 +1.0702194086955094155724675746687393762500374360435715865117768672856693866499170442888139644444075158680098715746668683599094655512374422236140170251967870284631462977672790467325706270285621223635647003906252530999735626458986560458309223842965196169792794450582883495408349539823027316595360732714266967275445357669086087088251746341644898719192891752774502205002298288469099890166249868769061296757625835194949151117001077163004693441424643052561866380047569114451234961737924322733306325972080230712890625E-196 +2.1404388173910184746902664689950118434239987780053101858602025395365201904724482949799561893627768647607390457827343862303258992340645079263038258400266671423091831231855621832438135606068880736600615161321354420419249524717583543950068074628700108229244169226182046486440906823973639506873682452205999522017798916494885639834250161166572365456651583839507622112241978842075708683087599870057198271637769448196023752402998726571203705522831405149952782057452430885548765038262075677266693674027919769287109375E-196 +2.140438817391018831144935149337478752500074872087143173023553734571338773299834088577627928888815031736019743149333736719818931102474884447228034050393574056926292595534558093465141254057124244727129400781250506199947125291797312091661844768593039233958558890116576699081669907964605463319072146542853393455089071533817217417650349268328979743838578350554900441000459657693819978033249973753812259351525167038989830223400215432600938688284928610512373276009513822890246992347584864546661265194416046142578125E-196 +4.280877634782036949380532937990023686847997556010620371720405079073040380944896589959912378725553729521478091565468772460651798468129015852607651680053334284618366246371124366487627121213776147320123032264270884083849904943516708790013614925740021645848833845236409297288181364794727901374736490441199904403559783298977127966850032233314473091330316767901524422448395768415141736617519974011439654327553889639204750480599745314240741104566281029990556411490486177109753007652415135453338734805583953857421875E-196 +4.28087763478203766228987029867495750500014974417428634604710746914267754659966817715525585777763006347203948629866747343963786220494976889445606810078714811385258519106911618693028250811424848945425880156250101239989425058359462418332368953718607846791711778023315339816333981592921092663814429308570678691017814306763443483530069853665795948767715670110980088200091931538763995606649994750762451870305033407797966044680043086520187737656985722102474655201902764578049398469516972909332253038883209228515625E-196 +8.56175526956407389876106587598004737369599511202124074344081015814608076188979317991982475745110745904295618313093754492130359693625803170521530336010666856923673249274224873297525424242755229464024606452854176816769980988703341758002722985148004329169766769047281859457636272958945580274947298088239980880711956659795425593370006446662894618266063353580304884489679153683028347323503994802287930865510777927840950096119949062848148220913256205998111282298097235421950601530483027090667746961116790771484375E-196 +8.5617552695640753245797405973499150100002994883485726920942149382853550931993363543105117155552601269440789725973349468792757244098995377889121362015742962277051703821382323738605650162284969789085176031250020247997885011671892483666473790743721569358342355604663067963266796318584218532762885861714135738203562861352688696706013970733159189753543134022196017640018386307752799121329998950152490374061006681559593208936008617304037547531397144420494931040380552915609879693903394581866450607776641845703125E-196 +1.71235105391281477975221317519600947473919902240424814868816203162921615237795863598396495149022149180859123662618750898426071938725160634104306067202133371384734649854844974659505084848551045892804921290570835363353996197740668351600544597029600865833953353809456371891527254591789116054989459617647996176142391331959085118674001289332578923653212670716060976897935830736605669464700798960457586173102155585568190019223989812569629644182651241199622256459619447084390120306096605418133549392223358154296875E-195 +1.7123510539128150649159481194699830020000598976697145384188429876570710186398672708621023431110520253888157945194669893758551448819799075577824272403148592455410340764276464747721130032456993957817035206250004049599577002334378496733294758148744313871668471120932613592653359263716843706552577172342827147640712572270537739341202794146631837950708626804439203528003677261550559824265999790030498074812201336311918641787201723460807509506279428884098986208076110583121975938780678916373290121555328369140625E-195 +3.4247021078256295595044263503920189494783980448084962973763240632584323047559172719679299029804429836171824732523750179685214387745032126820861213440426674276946929970968994931901016969710209178560984258114167072670799239548133670320108919405920173166790670761891274378305450918357823210997891923529599235228478266391817023734800257866515784730642534143212195379587166147321133892940159792091517234620431117113638003844797962513925928836530248239924451291923889416878024061219321083626709878444671630859375E-195 +3.424702107825630129831896238939966004000119795339429076837685975314142037279734541724204686222104050777631589038933978751710289763959815115564854480629718491082068152855292949544226006491398791563407041250000809919915400466875699346658951629748862774333694224186522718530671852743368741310515434468565429528142514454107547868240558829326367590141725360887840705600735452310111964853199958006099614962440267262383728357440344692161501901255885776819797241615222116624395187756135783274658024311065673828125E-195 +6.849404215651259119008852700784037898956796089616992594752648126516864609511834543935859805960885967234364946504750035937042877549006425364172242688085334855389385994193798986380203393942041835712196851622833414534159847909626734064021783881184034633358134152378254875661090183671564642199578384705919847045695653278363404746960051573303156946128506828642439075917433229464226778588031958418303446924086223422727600768959592502785185767306049647984890258384777883375604812243864216725341975688934326171875E-195 +6.84940421565126025966379247787993200800023959067885815367537195062828407455946908344840937244420810155526317807786795750342057952791963023112970896125943698216413630571058589908845201298279758312681408250000161983983080093375139869331790325949772554866738844837304543706134370548673748262103086893713085905628502890821509573648111765865273518028345072177568141120147090462022392970639991601219922992488053452476745671488068938432300380251177155363959448323044423324879037551227156654931604862213134765625E-195 +1.369880843130251823801770540156807579791359217923398518950529625303372921902366908787171961192177193446872989300950007187408575509801285072834448537617066971077877198838759797276040678788408367142439370324566682906831969581925346812804356776236806926671626830475650975132218036734312928439915676941183969409139130655672680949392010314660631389225701365728487815183486645892845355717606391683660689384817244684545520153791918500557037153461209929596978051676955576675120962448772843345068395137786865234375E-194 +1.36988084313025205193275849557598640160004791813577163073507439012565681491189381668968187448884162031105263561557359150068411590558392604622594179225188739643282726114211717981769040259655951662536281650000032396796616018675027973866358065189954510973347768967460908741226874109734749652420617378742617181125700578164301914729622353173054703605669014435513628224029418092404478594127998320243984598497610690495349134297613787686460076050235431072791889664608884664975807510245431330986320972442626953125E-194 +2.73976168626050364760354108031361515958271843584679703790105925060674584380473381757434392238435438689374597860190001437481715101960257014566889707523413394215575439767751959455208135757681673428487874064913336581366393916385069362560871355247361385334325366095130195026443607346862585687983135388236793881827826131134536189878402062932126277845140273145697563036697329178569071143521278336732137876963448936909104030758383700111407430692241985919395610335391115335024192489754568669013679027557373046875E-194 +2.7397616862605041038655169911519728032000958362715432614701487802513136298237876333793637489776832406221052712311471830013682318111678520924518835845037747928656545222842343596353808051931190332507256330000006479359323203735005594773271613037990902194669553793492181748245374821946949930484123475748523436225140115632860382945924470634610940721133802887102725644805883618480895718825599664048796919699522138099069826859522757537292015210047086214558377932921776932995161502049086266197264194488525390625E-194 +5.4795233725210072952070821606272303191654368716935940758021185012134916876094676351486878447687087737874919572038000287496343020392051402913377941504682678843115087953550391891041627151536334685697574812982667316273278783277013872512174271049472277066865073219026039005288721469372517137596627077647358776365565226226907237975680412586425255569028054629139512607339465835713814228704255667346427575392689787381820806151676740022281486138448397183879122067078223067004838497950913733802735805511474609375E-194 +5.479523372521008207731033982303945606400191672543086522940297560502627259647575266758727497955366481244210542462294366002736463622335704184903767169007549585731309044568468719270761610386238066501451266000001295871864640747001118954654322607598180438933910758698436349649074964389389986096824695149704687245028023126572076589184894126922188144226760577420545128961176723696179143765119932809759383939904427619813965371904551507458403042009417242911675586584355386599032300409817253239452838897705078125E-194 +1.0959046745042014590414164321254460638330873743387188151604237002426983375218935270297375689537417547574983914407600057499268604078410280582675588300936535768623017590710078378208325430307266937139514962596533463254655756655402774502434854209894455413373014643805207801057744293874503427519325415529471755273113045245381447595136082517285051113805610925827902521467893167142762845740851133469285515078537957476364161230335348004456297227689679436775824413415644613400967699590182746760547161102294921875E-193 +1.095904674504201641546206796460789121280038334508617304588059512100525451929515053351745499591073296248842108492458873200547292724467140836980753433801509917146261808913693743854152322077247613300290253200000259174372928149400223790930864521519636087786782151739687269929814992877877997219364939029940937449005604625314415317836978825384437628845352115484109025792235344739235828753023986561951876787980885523962793074380910301491680608401883448582335117316871077319806460081963450647890567779541015625E-193 +2.191809349008402918082832864250892127666174748677437630320847400485396675043787054059475137907483509514996782881520011499853720815682056116535117660187307153724603518142015675641665086061453387427902992519306692650931151331080554900486970841978891082674602928761041560211548858774900685503865083105894351054622609049076289519027216503457010222761122185165580504293578633428552569148170226693857103015707591495272832246067069600891259445537935887355164882683128922680193539918036549352109432220458984375E-193 +2.19180934900840328309241359292157824256007666901723460917611902420105090385903010670349099918214659249768421698491774640109458544893428167396150686760301983429252361782738748770830464415449522660058050640000051834874585629880044758186172904303927217557356430347937453985962998575575599443872987805988187489801120925062883063567395765076887525769070423096821805158447068947847165750604797312390375357596177104792558614876182060298336121680376689716467023463374215463961292016392690129578113555908203125E-193 +4.38361869801680583616566572850178425533234949735487526064169480097079335008757410811895027581496701902999356576304002299970744163136411223307023532037461430744920703628403135128333017212290677485580598503861338530186230266216110980097394168395778216534920585752208312042309771754980137100773016621178870210924521809815257903805443300691402044552224437033116100858715726685710513829634045338771420603141518299054566449213413920178251889107587177471032976536625784536038707983607309870421886444091796875E-193 +4.3836186980168065661848271858431564851201533380344692183522380484021018077180602134069819983642931849953684339698354928021891708978685633479230137352060396685850472356547749754166092883089904532011610128000010366974917125976008951637234580860785443511471286069587490797192599715115119888774597561197637497960224185012576612713479153015377505153814084619364361031689413789569433150120959462478075071519235420958511722975236412059667224336075337943293404692674843092792258403278538025915622711181640625E-193 +8.7672373960336116723313314570035685106646989947097505212833896019415867001751482162379005516299340380599871315260800459994148832627282244661404706407492286148984140725680627025666603442458135497116119700772267706037246053243222196019478833679155643306984117150441662408461954350996027420154603324235774042184904361963051580761088660138280408910444887406623220171743145337142102765926809067754284120628303659810913289842682784035650377821517435494206595307325156907207741596721461974084377288818359375E-193 +8.767237396033613132369654371686312970240306676068938436704476096804203615436120426813963996728586369990736867939670985604378341795737126695846027470412079337170094471309549950833218576617980906402322025600002073394983425195201790327446916172157088702294257213917498159438519943023023977754919512239527499592044837002515322542695830603075501030762816923872872206337882757913886630024191892495615014303847084191702344595047282411933444867215067588658680938534968618558451680655707605183124542236328125E-193 +1.7534474792067223344662662914007137021329397989419501042566779203883173400350296432475801103259868076119974263052160091998829766525456448932280941281498457229796828145136125405133320688491627099423223940154453541207449210648644439203895766735831128661396823430088332481692390870199205484030920664847154808436980872392610316152217732027656081782088977481324644034348629067428420553185361813550856824125660731962182657968536556807130075564303487098841319061465031381441548319344292394816875457763671875E-192 +1.753447479206722626473930874337262594048061335213787687340895219360840723087224085362792799345717273998147373587934197120875668359147425339169205494082415867434018894261909990166643715323596181280464405120000414678996685039040358065489383234431417740458851442783499631887703988604604795550983902447905499918408967400503064508539166120615100206152563384774574441267576551582777326004838378499123002860769416838340468919009456482386688973443013517731736187706993723711690336131141521036624908447265625E-192 +3.506894958413444668932532582801427404265879597883900208513355840776634680070059286495160220651973615223994852610432018399765953305091289786456188256299691445959365629027225081026664137698325419884644788030890708241489842129728887840779153347166225732279364686017666496338478174039841096806184132969430961687396174478522063230443546405531216356417795496264928806869725813485684110637072362710171364825132146392436531593707311361426015112860697419768263812293006276288309663868858478963375091552734375E-192 +3.50689495841344525294786174867452518809612267042757537468179043872168144617444817072558559869143454799629474717586839424175133671829485067833841098816483173486803778852381998033328743064719236256092881024000082935799337007808071613097876646886283548091770288556699926377540797720920959110196780489581099983681793480100612901707833224123020041230512676954914888253515310316555465200967675699824600572153883367668093783801891296477337794688602703546347237541398744742338067226228304207324981689453125E-192 +7.01378991682688933786506516560285480853175919576780041702671168155326936014011857299032044130394723044798970522086403679953190661018257957291237651259938289191873125805445016205332827539665083976928957606178141648297968425945777568155830669433245146455872937203533299267695634807968219361236826593886192337479234895704412646088709281106243271283559099252985761373945162697136822127414472542034272965026429278487306318741462272285203022572139483953652762458601255257661932773771695792675018310546875E-192 +7.0137899168268905058957234973490503761922453408551507493635808774433628923488963414511711973828690959925894943517367884835026734365897013566768219763296634697360755770476399606665748612943847251218576204800016587159867401561614322619575329377256709618354057711339985275508159544184191822039356097916219996736358696020122580341566644824604008246102535390982977650703062063311093040193535139964920114430776673533618756760378259295467558937720540709269447508279748948467613445245660841464996337890625E-192 +1.40275798336537786757301303312057096170635183915356008340534233631065387202802371459806408826078944608959794104417280735990638132203651591458247530251987657838374625161089003241066565507933016795385791521235628329659593685189155513631166133886649029291174587440706659853539126961593643872247365318777238467495846979140882529217741856221248654256711819850597152274789032539427364425482894508406854593005285855697461263748292454457040604514427896790730552491720251051532386554754339158535003662109375E-191 +1.4027579833653781011791446994698100752384490681710301498727161754886725784697792682902342394765738191985178988703473576967005346873179402713353643952659326939472151154095279921333149722588769450243715240960003317431973480312322864523915065875451341923670811542267997055101631908836838364407871219583243999347271739204024516068313328964920801649220507078196595530140612412662218608038707027992984022886155334706723751352075651859093511787544108141853889501655949789693522689049132168292999267578125E-191 +2.8055159667307557351460260662411419234127036783071201668106846726213077440560474291961281765215788921791958820883456147198127626440730318291649506050397531567674925032217800648213313101586603359077158304247125665931918737037831102726233226777329805858234917488141331970707825392318728774449473063755447693499169395828176505843548371244249730851342363970119430454957806507885472885096578901681370918601057171139492252749658490891408120902885579358146110498344050210306477310950867831707000732421875E-191 +2.805515966730756202358289398939620150476898136342060299745432350977345156939558536580468478953147638397035797740694715393401069374635880542670728790531865387894430230819055984266629944517753890048743048192000663486394696062464572904783013175090268384734162308453599411020326381767367672881574243916648799869454347840804903213662665792984160329844101415639319106028122482532443721607741405598596804577231066941344750270415130371818702357508821628370777900331189957938704537809826433658599853515625E-191 +5.611031933461511470292052132482283846825407356614240333621369345242615488112094858392256353043157784358391764176691229439625525288146063658329901210079506313534985006443560129642662620317320671815431660849425133186383747407566220545246645355465961171646983497628266394141565078463745754889894612751089538699833879165635301168709674248849946170268472794023886090991561301577094577019315780336274183720211434227898450549931698178281624180577115871629222099668810042061295462190173566341400146484375E-191 +5.61103193346151240471657879787924030095379627268412059949086470195469031387911707316093695790629527679407159548138943078680213874927176108534145758106373077578886046163811196853325988903550778009748609638400132697278939212492914580956602635018053676946832461690719882204065276353473534576314848783329759973890869568160980642732533158596832065968820283127863821205624496506488744321548281119719360915446213388268950054083026074363740471501764325674155580066237991587740907561965286731719970703125E-191 +1.122206386692302294058410426496456769365081471322848066724273869048523097622418971678451270608631556871678352835338245887925105057629212731665980242015901262706997001288712025928532524063464134363086332169885026637276749481513244109049329071093192234329396699525653278828313015692749150977978922550217907739966775833127060233741934849769989234053694558804777218198312260315418915403863156067254836744042286845579690109986339635656324836115423174325844419933762008412259092438034713268280029296875E-190 +1.12220638669230248094331575957584806019075925453682411989817294039093806277582341463218739158125905535881431909627788615736042774985435221706829151621274615515777209232762239370665197780710155601949721927680026539455787842498582916191320527003610735389366492338143976440813055270694706915262969756665951994778173913632196128546506631719366413193764056625572764241124899301297748864309656223943872183089242677653790010816605214872748094300352865134831116013247598317548181512393057346343994140625E-190 +2.24441277338460458811682085299291353873016294264569613344854773809704619524483794335690254121726311374335670567067649177585021011525842546333196048403180252541399400257742405185706504812692826872617266433977005327455349896302648821809865814218638446865879339905130655765662603138549830195595784510043581547993355166625412046748386969953997846810738911760955443639662452063083783080772631213450967348808457369115938021997267927131264967223084634865168883986752401682451818487606942653656005859375E-190 +2.2444127733846049618866315191516961203815185090736482397963458807818761255516468292643747831625181107176286381925557723147208554997087044341365830324254923103155441846552447874133039556142031120389944385536005307891157568499716583238264105400722147077873298467628795288162611054138941383052593951333190398955634782726439225709301326343873282638752811325114552848224979860259549772861931244788774436617848535530758002163321042974549618860070573026966223202649519663509636302478611469268798828125E-190 +4.4888255467692091762336417059858270774603258852913922668970954761940923904896758867138050824345262274867134113413529835517004202305168509266639209680636050508279880051548481037141300962538565374523453286795401065491069979260529764361973162843727689373175867981026131153132520627709966039119156902008716309598671033325082409349677393990799569362147782352191088727932490412616756616154526242690193469761691473823187604399453585426252993444616926973033776797350480336490363697521388530731201171875E-190 +4.488825546769209923773263038303392240763037018147296479592691761563752251103293658528749566325036221435257276385111544629441710999417408868273166064850984620631088369310489574826607911228406224077988877107201061578231513699943316647652821080144429415574659693525759057632522210827788276610518790266638079791126956545287845141860265268774656527750562265022910569644995972051909954572386248957754887323569707106151600432664208594909923772014114605393244640529903932701927260495722293853759765625E-190 +8.977651093538418352467283411971654154920651770582784533794190952388184780979351773427610164869052454973426822682705967103400840461033701853327841936127210101655976010309696207428260192507713074904690657359080213098213995852105952872394632568745537874635173596205226230626504125541993207823831380401743261919734206665016481869935478798159913872429556470438217745586498082523351323230905248538038693952338294764637520879890717085250598688923385394606755359470096067298072739504277706146240234375E-190 +8.97765109353841984754652607660678448152607403629459295918538352312750450220658731705749913265007244287051455277022308925888342199883481773654633212970196924126217673862097914965321582245681244815597775421440212315646302739988663329530564216028885883114931938705151811526504442165557655322103758053327615958225391309057569028372053053754931305550112453004582113928999194410381990914477249791550977464713941421230320086532841718981984754402822921078648928105980786540385452099144458770751953125E-190 +1.795530218707683670493456682394330830984130354116556906758838190477636956195870354685522032973810490994685364536541193420680168092206740370665568387225442020331195202061939241485652038501542614980938131471816042619642799170421190574478926513749107574927034719241045246125300825108398641564766276080348652383946841333003296373987095759631982774485911294087643549117299616504670264646181049707607738790467658952927504175978143417050119737784677078921351071894019213459614547900855541229248046875E-189 +1.79553021870768396950930521532135689630521480725891859183707670462550090044131746341149982653001448857410291055404461785177668439976696354730926642594039384825243534772419582993064316449136248963119555084288042463129260547997732665906112843205777176622986387741030362305300888433111531064420751610665523191645078261811513805674410610750986261110022490600916422785799838882076398182895449958310195492942788284246064017306568343796396950880564584215729785621196157308077090419828891754150390625E-189 +3.59106043741536734098691336478866166196826070823311381351767638095527391239174070937104406594762098198937072907308238684136033618441348074133113677445088404066239040412387848297130407700308522996187626294363208523928559834084238114895785302749821514985406943848209049225060165021679728312953255216069730476789368266600659274797419151926396554897182258817528709823459923300934052929236209941521547758093531790585500835195628683410023947556935415784270214378803842691922909580171108245849609375E-189 +3.5910604374153679390186104306427137926104296145178371836741534092510018008826349268229996530600289771482058211080892357035533687995339270946185328518807876965048706954483916598612863289827249792623911016857608492625852109599546533181222568641155435324597277548206072461060177686622306212884150322133104638329015652362302761134882122150197252222004498120183284557159967776415279636579089991662039098588557656849212803461313668759279390176112916843145957124239231461615418083965778350830078125E-189 +7.1821208748307346819738267295773233239365214164662276270353527619105478247834814187420881318952419639787414581461647736827206723688269614826622735489017680813247808082477569659426081540061704599237525258872641704785711966816847622979157060549964302997081388769641809845012033004335945662590651043213946095357873653320131854959483830385279310979436451763505741964691984660186810585847241988304309551618706358117100167039125736682004789511387083156854042875760768538384581916034221649169921875E-189 +7.182120874830735878037220861285427585220859229035674367348306818502003601765269853645999306120057954296411642216178471407106737599067854189237065703761575393009741390896783319722572657965449958524782203371521698525170421919909306636244513728231087064919455509641214492212035537324461242576830064426620927665803130472460552226976424430039450444400899624036656911431993555283055927315817998332407819717711531369842560692262733751855878035222583368629191424847846292323083616793155670166015625E-189 +1.4364241749661469363947653459154646647873042832932455254070705523821095649566962837484176263790483927957482916292329547365441344737653922965324547097803536162649561616495513931885216308012340919847505051774528340957142393363369524595831412109992860599416277753928361969002406600867189132518130208642789219071574730664026370991896766077055862195887290352701148392938396932037362117169448397660861910323741271623420033407825147336400957902277416631370808575152153707676916383206844329833984375E-188 +1.436424174966147175607444172257085517044171845807134873469661363700400720353053970729199861224011590859282328443235694281421347519813570837847413140752315078601948278179356663944514531593089991704956440674304339705034084383981861327248902745646217412983891101928242898442407107464892248515366012885324185533160626094492110445395284886007890088880179924807331382286398711056611185463163599666481563943542306273968512138452546750371175607044516673725838284969569258464616723358631134033203125E-188 +2.872848349932293872789530691830929329574608566586491050814141104764219129913392567496835252758096785591496583258465909473088268947530784593064909419560707232529912323299102786377043261602468183969501010354905668191428478672673904919166282421998572119883255550785672393800481320173437826503626041728557843814314946132805274198379353215411172439177458070540229678587679386407472423433889679532172382064748254324684006681565029467280191580455483326274161715030430741535383276641368865966796875E-188 +2.87284834993229435121488834451417103408834369161426974693932272740080144070610794145839972244802318171856465688647138856284269503962714167569482628150463015720389655635871332788902906318617998340991288134860867941006816876796372265449780549129243482596778220385648579688481421492978449703073202577064837106632125218898422089079056977201578017776035984961466276457279742211322237092632719933296312788708461254793702427690509350074235121408903334745167656993913851692923344671726226806640625E-188 +5.74569669986458774557906138366185865914921713317298210162828220952843825982678513499367050551619357118299316651693181894617653789506156918612981883912141446505982464659820557275408652320493636793900202070981133638285695734534780983833256484399714423976651110157134478760096264034687565300725208345711568762862989226561054839675870643082234487835491614108045935717535877281494484686777935906434476412949650864936801336313005893456038316091096665254832343006086148307076655328273773193359375E-188 +5.7456966998645887024297766890283420681766873832285394938786454548016028814122158829167994448960463634371293137729427771256853900792542833513896525630092603144077931127174266557780581263723599668198257626972173588201363375359274453089956109825848696519355644077129715937696284298595689940614640515412967421326425043779684417815811395440315603555207196992293255291455948442264447418526543986659262557741692250958740485538101870014847024281780666949033531398782770338584668934345245361328125E-188 +1.14913933997291754911581227673237173182984342663459642032565644190568765196535702699873410110323871423659863330338636378923530757901231383722596376782428289301196492931964111455081730464098727358780040414196226727657139146906956196766651296879942884795330222031426895752019252806937513060145041669142313752572597845312210967935174128616446897567098322821609187143507175456298896937355587181286895282589930172987360267262601178691207663218219333050966468601217229661415331065654754638671875E-187 +1.1491393399729177404859553378056684136353374766457078987757290909603205762824431765833598889792092726874258627545885554251370780158508566702779305126018520628815586225434853311556116252744719933639651525394434717640272675071854890617991221965169739303871128815425943187539256859719137988122928103082593484265285008755936883563162279088063120711041439398458651058291189688452889483705308797331852511548338450191748097107620374002969404856356133389806706279756554067716933786869049072265625E-187 +2.2982786799458350982316245534647434636596868532691928406513128838113753039307140539974682022064774284731972666067727275784706151580246276744519275356485657860239298586392822291016346092819745471756008082839245345531427829381391239353330259375988576959066044406285379150403850561387502612029008333828462750514519569062442193587034825723289379513419664564321837428701435091259779387471117436257379056517986034597472053452520235738241532643643866610193293720243445932283066213130950927734375E-187 +2.298278679945835480971910675611336827270674953291415797551458181920641152564886353166719777958418545374851725509177110850274156031701713340555861025203704125763117245086970662311223250548943986727930305078886943528054535014370978123598244393033947860774225763085188637507851371943827597624585620616518696853057001751187376712632455817612624142208287879691730211658237937690577896741061759466370502309667690038349619421524074800593880971271226677961341255951310813543386757373809814453125E-187 +4.596557359891670196463249106929486927319373706538385681302625767622750607861428107994936404412954856946394533213545455156941230316049255348903855071297131572047859717278564458203269218563949094351201616567849069106285565876278247870666051875197715391813208881257075830080770112277500522405801666765692550102903913812488438717406965144657875902683932912864367485740287018251955877494223487251475811303597206919494410690504047147648306528728773322038658744048689186456613242626190185546875E-187 +4.59655735989167096194382135122267365454134990658283159510291636384128230512977270633343955591683709074970345101835422170054831206340342668111172205040740825152623449017394132462244650109788797345586061015777388705610907002874195624719648878606789572154845152617037727501570274388765519524917124123303739370611400350237475342526491163522524828441657575938346042331647587538115579348212351893274100461933538007669923884304814960118776194254245335592268251190262162708677351474761962890625E-187 +9.19311471978334039292649821385897385463874741307677136260525153524550121572285621598987280882590971389278906642709091031388246063209851069780771014259426314409571943455712891640653843712789818870240323313569813821257113175255649574133210375039543078362641776251415166016154022455500104481160333353138510020580782762497687743481393028931575180536786582572873497148057403650391175498844697450295162260719441383898882138100809429529661305745754664407731748809737837291322648525238037109375E-187 +9.1931147197833419238876427024453473090826998131656631902058327276825646102595454126668791118336741814994069020367084434010966241268068533622234441008148165030524689803478826492448930021957759469117212203155477741122181400574839124943929775721357914430969030523407545500314054877753103904983424824660747874122280070047495068505298232704504965688331515187669208466329517507623115869642470378654820092386707601533984776860962992023755238850849067118453650238052432541735470294952392578125E-187 +1.83862294395666807858529964277179477092774948261535427252105030704910024314457124319797456176518194277855781328541818206277649212641970213956154202851885262881914388691142578328130768742557963774048064662713962764251422635051129914826642075007908615672528355250283033203230804491100020896232066670627702004116156552499537548696278605786315036107357316514574699429611480730078235099768939490059032452143888276779776427620161885905932261149150932881546349761947567458264529705047607421875E-186 +1.8386229439566683847775285404890694618165399626331326380411665455365129220519090825333758223667348362998813804073416886802193248253613706724446888201629633006104937960695765298489786004391551893823442440631095548224436280114967824988785955144271582886193806104681509100062810975550620780996684964932149574824456014009499013701059646540900993137666303037533841693265903501524623173928494075730964018477341520306796955372192598404751047770169813423690730047610486508347094058990478515625E-186 +3.6772458879133361571705992855435895418554989652307085450421006140982004862891424863959491235303638855571156265708363641255529842528394042791230840570377052576382877738228515665626153748511592754809612932542792552850284527010225982965328415001581723134505671050056606640646160898220004179246413334125540400823231310499907509739255721157263007221471463302914939885922296146015647019953787898011806490428777655355955285524032377181186452229830186576309269952389513491652905941009521484375E-186 +3.677245887913336769555057080978138923633079925266265276082333091073025844103818165066751644733469672599762760814683377360438649650722741344889377640325926601220987592139153059697957200878310378764688488126219109644887256022993564997757191028854316577238761220936301820012562195110124156199336992986429914964891202801899802740211929308180198627533260607506768338653180700304924634785698815146192803695468304061359391074438519680950209554033962684738146009522097301669418811798095703125E-186 +7.354491775826672314341198571087179083710997930461417090084201228196400972578284972791898247060727771114231253141672728251105968505678808558246168114075410515276575547645703133125230749702318550961922586508558510570056905402045196593065683000316344626901134210011321328129232179644000835849282666825108080164646262099981501947851144231452601444294292660582987977184459229203129403990757579602361298085755531071191057104806475436237290445966037315261853990477902698330581188201904296875E-186 +7.35449177582667353911011416195627784726615985053253055216466618214605168820763633013350328946693934519952552162936675472087729930144548268977875528065185320244197518427830611939591440175662075752937697625243821928977451204598712999551438205770863315447752244187260364002512439022024831239867398597285982992978240560379960548042385861636039725506652121501353667730636140060984926957139763029238560739093660812271878214887703936190041910806792536947629201904419460333883762359619140625E-186 +1.470898355165334462868239714217435816742199586092283418016840245639280194515656994558379649412145554222846250628334545650221193701135761711649233622815082103055315109529140626625046149940463710192384517301711702114011381080409039318613136600063268925380226842002264265625846435928800167169856533365021616032929252419996300389570228846290520288858858532116597595436891845840625880798151515920472259617151106214238211420961295087247458089193207463052370798095580539666116237640380859375E-185 +1.47089835516533470782202283239125556945323197010650611043293323642921033764152726602670065789338786903990510432587335094417545986028909653795575105613037064048839503685566122387918288035132415150587539525048764385795490240919742599910287641154172663089550448837452072800502487804404966247973479719457196598595648112075992109608477172327207945101330424300270733546127228012196985391427952605847712147818732162454375642977540787238008382161358507389525840380883892066776752471923828125E-185 +2.94179671033066892573647942843487163348439917218456683603368049127856038903131398911675929882429110844569250125666909130044238740227152342329846724563016420611063021905828125325009229988092742038476903460342340422802276216081807863722627320012653785076045368400452853125169287185760033433971306673004323206585850483999260077914045769258104057771771706423319519087378369168125176159630303184094451923430221242847642284192259017449491617838641492610474159619116107933223247528076171875E-185 +2.9417967103306694156440456647825111389064639402130122208658664728584206752830545320534013157867757380798102086517467018883509197205781930759115021122607412809767900737113224477583657607026483030117507905009752877159098048183948519982057528230834532617910089767490414560100497560880993249594695943891439319719129622415198421921695434465441589020266084860054146709225445602439397078285590521169542429563746432490875128595508157447601676432271701477905168076176778413355350494384765625E-185 +5.8835934206613378514729588568697432669687983443691336720673609825571207780626279782335185976485822168913850025133381826008847748045430468465969344912603284122212604381165625065001845997618548407695380692068468084560455243216361572744525464002530757015209073680090570625033857437152006686794261334600864641317170096799852015582809153851620811554354341284663903817475673833625035231926060636818890384686044248569528456838451803489898323567728298522094831923823221586644649505615234375E-185 +5.883593420661338831288091329565022277812927880426024441731732945716841350566109064106802631573551476159620417303493403776701839441156386151823004224521482561953580147422644895516731521405296606023501581001950575431819609636789703996411505646166906523582017953498082912020099512176198649918939188778287863943825924483039684384339086893088317804053216972010829341845089120487879415657118104233908485912749286498175025719101631489520335286454340295581033615235355682671070098876953125E-185 +1.1767186841322675702945917713739486533937596688738267344134721965114241556125255956467037195297164433782770005026676365201769549609086093693193868982520656824442520876233125013000369199523709681539076138413693616912091048643272314548905092800506151403041814736018114125006771487430401337358852266920172928263434019359970403116561830770324162310870868256932780763495134766725007046385212127363778076937208849713905691367690360697979664713545659704418966384764644317328929901123046875E-184 +1.176718684132267766257618265913004455562585576085204888346346589143368270113221812821360526314710295231924083460698680755340367888231277230364600844904296512390716029484528979103346304281059321204700316200390115086363921927357940799282301129233381304716403590699616582404019902435239729983787837755657572788765184896607936876867817378617663560810643394402165868369017824097575883131423620846781697182549857299635005143820326297904067057290868059116206723047071136534214019775390625E-184 +2.353437368264535140589183542747897306787519337747653468826944393022848311225051191293407439059432886756554001005335273040353909921817218738638773796504131364888504175246625002600073839904741936307815227682738723382418209728654462909781018560101230280608362947203622825001354297486080267471770453384034585652686803871994080623312366154064832462174173651386556152699026953345001409277042425472755615387441769942781138273538072139595932942709131940883793276952928863465785980224609375E-184 +2.35343736826453553251523653182600891112517115217040977669269317828673654022644362564272105262942059046384816692139736151068073577646255446072920168980859302478143205896905795820669260856211864240940063240078023017272784385471588159856460225846676260943280718139923316480803980487047945996757567551131514557753036979321587375373563475723532712162128678880433173673803564819515176626284724169356339436509971459927001028764065259580813411458173611823241344609414227306842803955078125E-184 +4.70687473652907028117836708549579461357503867549530693765388878604569662245010238258681487811886577351310800201067054608070781984363443747727754759300826272977700835049325000520014767980948387261563045536547744676483641945730892581956203712020246056121672589440724565000270859497216053494354090676806917130537360774398816124662473230812966492434834730277311230539805390669000281855408485094551123077488353988556227654707614427919186588541826388176758655390585772693157196044921875E-184 +4.7068747365290710650304730636520178222503423043408195533853863565734730804528872512854421052588411809276963338427947230213614715529251089214584033796171860495628641179381159164133852171242372848188012648015604603454556877094317631971292045169335252188656143627984663296160796097409589199351513510226302911550607395864317475074712695144706542432425735776086634734760712963903035325256944833871267887301994291985400205752813051916162682291634722364648268921882845461368560791015625E-184 +9.4137494730581405623567341709915892271500773509906138753077775720913932449002047651736297562377315470262160040213410921614156396872688749545550951860165254595540167009865000104002953596189677452312609107309548935296728389146178516391240742404049211224334517888144913000054171899443210698870818135361383426107472154879763224932494646162593298486966946055462246107961078133800056371081697018910224615497670797711245530941522885583837317708365277635351731078117154538631439208984375E-184 +9.413749473058142130060946127304035644500684608681639106770772713146946160905774502570884210517682361855392667685589446042722943105850217842916806759234372099125728235876231832826770434248474569637602529603120920690911375418863526394258409033867050437731228725596932659232159219481917839870302702045260582310121479172863495014942539028941308486485147155217326946952142592780607065051388966774253577460398858397080041150562610383232536458326944472929653784376569092273712158203125E-184 +1.8827498946116281124713468341983178454300154701981227750615555144182786489800409530347259512475463094052432008042682184322831279374537749909110190372033050919108033401973000020800590719237935490462521821461909787059345677829235703278248148480809842244866903577628982600010834379888642139774163627072276685221494430975952644986498929232518659697393389211092449221592215626760011274216339403782044923099534159542249106188304577116767463541673055527070346215623430907726287841796875E-183 +1.882749894611628426012189225460807128900136921736327821354154542629389232181154900514176842103536472371078533537117889208544588621170043568583361351846874419825145647175246366565354086849694913927520505920624184138182275083772705278851681806773410087546245745119386531846431843896383567974060540409052116462024295834572699002988507805788261697297029431043465389390428518556121413010277793354850715492079771679416008230112522076646507291665388894585930756875313818454742431640625E-183 +3.765499789223256224942693668396635690860030940396245550123111028836557297960081906069451902495092618810486401608536436864566255874907549981822038074406610183821606680394600004160118143847587098092504364292381957411869135565847140655649629696161968448973380715525796520002166875977728427954832725414455337044298886195190528997299785846503731939478677842218489844318443125352002254843267880756408984619906831908449821237660915423353492708334611105414069243124686181545257568359375E-183 +3.76549978922325685202437845092161425780027384347265564270830908525877846436230980102835368420707294474215706707423577841708917724234008713716672270369374883965029129435049273313070817369938982785504101184124836827636455016754541055770336361354682017509249149023877306369286368779276713594812108081810423292404859166914539800597701561157652339459405886208693077878085703711224282602055558670970143098415954335883201646022504415329301458333077778917186151375062763690948486328125E-183 +7.53099957844651244988538733679327138172006188079249110024622205767311459592016381213890380499018523762097280321707287372913251174981509996364407614881322036764321336078920000832023628769517419618500872858476391482373827113169428131129925939232393689794676143105159304000433375195545685590966545082891067408859777239038105799459957169300746387895735568443697968863688625070400450968653576151281796923981366381689964247532183084670698541666922221082813848624937236309051513671875E-183 +7.5309995784465137040487569018432285156005476869453112854166181705175569287246196020567073684141458894843141341484715568341783544846801742743334454073874976793005825887009854662614163473987796557100820236824967365527291003350908211154067272270936403501849829804775461273857273755855342718962421616362084658480971833382907960119540312231530467891881177241738615575617140742244856520411111734194028619683190867176640329204500883065860291666615555783437230275012552738189697265625E-183 +1.50619991568930248997707746735865427634401237615849822004924441153462291918403276242778076099803704752419456064341457474582650234996301999272881522976264407352864267215784000166404725753903483923700174571695278296474765422633885626225985187846478737958935228621031860800086675039109137118193309016578213481771955447807621159891991433860149277579147113688739593772737725014080090193730715230256359384796273276337992849506436616934139708333384444216562769724987447261810302734375E-182 +1.5061999156893027408097513803686457031201095373890622570833236341035113857449239204113414736828291778968628268296943113668356708969360348548666890814774995358601165177401970932522832694797559311420164047364993473105458200670181642230813454454187280700369965960955092254771454751171068543792484323272416931696194366676581592023908062446306093578376235448347723115123428148448971304082222346838805723936638173435328065840900176613172058333323111156687446055002510547637939453125E-182 +3.0123998313786049799541549347173085526880247523169964400984888230692458383680655248555615219960740950483891212868291494916530046999260399854576304595252881470572853443156800033280945150780696784740034914339055659294953084526777125245197037569295747591787045724206372160017335007821827423638661803315642696354391089561524231978398286772029855515829422737747918754547545002816018038746143046051271876959254655267598569901287323386827941666676888843312553944997489452362060546875E-182 +3.012399831378605481619502760737291406240219074778124514166647268207022771489847840822682947365658355793725653659388622733671341793872069709733378162954999071720233035480394186504566538959511862284032809472998694621091640134036328446162690890837456140073993192191018450954290950234213708758496864654483386339238873335316318404781612489261218715675247089669544623024685629689794260816444469367761144787327634687065613168180035322634411666664622231337489211000502109527587890625E-182 +6.024799662757209959908309869434617105376049504633992880196977646138491676736131049711123043992148190096778242573658298983306009399852079970915260919050576294114570688631360006656189030156139356948006982867811131858990616905355425049039407513859149518357409144841274432003467001564365484727732360663128539270878217912304846395679657354405971103165884547549583750909509000563203607749228609210254375391850931053519713980257464677365588333335377768662510788999497890472412109375E-182 +6.02479966275721096323900552147458281248043814955624902833329453641404554297969568164536589473131671158745130731877724546734268358774413941946675632590999814344046607096078837300913307791902372456806561894599738924218328026807265689232538178167491228014798638438203690190858190046842741751699372930896677267847774667063263680956322497852243743135049417933908924604937125937958852163288893873552228957465526937413122633636007064526882333332924446267497842200100421905517578125E-182 +1.204959932551441991981661973886923421075209900926798576039395529227698335347226209942224608798429638019355648514731659796661201879970415994183052183810115258822914137726272001331237806031227871389601396573562226371798123381071085009807881502771829903671481828968254886400693400312873096945546472132625707854175643582460969279135931470881194220633176909509916750181901800112640721549845721842050875078370186210703942796051492935473117666667075553732502157799899578094482421875E-181 +1.20495993255144219264780110429491656249608762991124980566665890728280910859593913632907317894626334231749026146375544909346853671754882788389335126518199962868809321419215767460182661558380474491361312378919947784843665605361453137846507635633498245602959727687640738038171638009368548350339874586179335453569554933412652736191264499570448748627009883586781784920987425187591770432657778774710445791493105387482624526727201412905376466666584889253499568440020084381103515625E-181 +2.40991986510288398396332394777384684215041980185359715207879105845539667069445241988444921759685927603871129702946331959332240375994083198836610436762023051764582827545254400266247561206245574277920279314712445274359624676214217001961576300554365980734296365793650977280138680062574619389109294426525141570835128716492193855827186294176238844126635381901983350036380360022528144309969144368410175015674037242140788559210298587094623533333415110746500431559979915618896484375E-181 +2.4099198651028843852956022085898331249921752598224996113333178145656182171918782726581463578925266846349805229275108981869370734350976557677867025303639992573761864283843153492036532311676094898272262475783989556968733121072290627569301527126699649120591945537528147607634327601873709670067974917235867090713910986682530547238252899914089749725401976717356356984197485037518354086531555754942089158298621077496524905345440282581075293333316977850699913688004016876220703125E-181 +4.8198397302057679679266478955476936843008396037071943041575821169107933413889048397688984351937185520774225940589266391866448075198816639767322087352404610352916565509050880053249512241249114855584055862942489054871924935242843400392315260110873196146859273158730195456027736012514923877821858885305028314167025743298438771165437258835247768825327076380396670007276072004505628861993828873682035003134807448428157711842059717418924706666683022149300086311995983123779296875E-181 +4.819839730205768770591204417179666249984350519644999222666635629131236434383756545316292715785053369269961045855021796373874146870195311535573405060727998514752372856768630698407306462335218979654452495156797911393746624214458125513860305425339929824118389107505629521526865520374741934013594983447173418142782197336506109447650579982817949945080395343471271396839497007503670817306311150988417831659724215499304981069088056516215058666663395570139982737600803375244140625E-181 +9.639679460411535935853295791095387368601679207414388608315164233821586682777809679537796870387437104154845188117853278373289615039763327953464417470480922070583313101810176010649902448249822971116811172588497810974384987048568680078463052022174639229371854631746039091205547202502984775564371777061005662833405148659687754233087451767049553765065415276079334001455214400901125772398765774736407000626961489685631542368411943483784941333336604429860017262399196624755859375E-181 +9.63967946041153754118240883435933249996870103928999844533327125826247286876751309063258543157010673853992209171004359274774829374039062307114681012145599702950474571353726139681461292467043795930890499031359582278749324842891625102772061085067985964823677821501125904305373104074948386802718996689434683628556439467301221889530115996563589989016079068694254279367899401500734163461262230197683566331944843099860996213817611303243011733332679114027996547520160675048828125E-181 +1.927935892082307187170659158219077473720335841482877721663032846764317336555561935907559374077487420830969037623570655674657923007952665590692883494096184414116662620362035202129980489649964594223362234517699562194876997409713736015692610404434927845874370926349207818241109440500596955112874355412201132566681029731937550846617490353409910753013083055215866800291042880180225154479753154947281400125392297937126308473682388696756988266667320885972003452479839324951171875E-180 +1.92793589208230750823648176687186649999374020785799968906665425165249457375350261812651708631402134770798441834200871854954965874807812461422936202429119940590094914270745227936292258493408759186178099806271916455749864968578325020554412217013597192964735564300225180861074620814989677360543799337886936725711287893460244377906023199312717997803215813738850855873579880300146832692252446039536713266388968619972199242763522260648602346666535822805599309504032135009765625E-180 +3.85587178416461437434131831643815494744067168296575544332606569352863467311112387181511874815497484166193807524714131134931584601590533118138576698819236882823332524072407040425996097929992918844672446903539912438975399481942747203138522080886985569174874185269841563648221888100119391022574871082440226513336205946387510169323498070681982150602616611043173360058208576036045030895950630989456280025078459587425261694736477739351397653333464177194400690495967864990234375E-180 +3.8558717841646150164729635337437329999874804157159993781333085033049891475070052362530341726280426954159688366840174370990993174961562492284587240485823988118018982854149045587258451698681751837235619961254383291149972993715665004110882443402719438592947112860045036172214924162997935472108759867577387345142257578692048875581204639862543599560643162747770171174715976060029366538450489207907342653277793723994439848552704452129720469333307164561119861900806427001953125E-180 +7.7117435683292287486826366328763098948813433659315108866521313870572693462222477436302374963099496833238761504942826226986316920318106623627715339763847376564666504814481408085199219585998583768934489380707982487795079896388549440627704416177397113834974837053968312729644377620023878204514974216488045302667241189277502033864699614136396430120523322208634672011641715207209006179190126197891256005015691917485052338947295547870279530666692835438880138099193572998046875E-180 +7.711743568329230032945927067487465999974960831431998756266617006609978295014010472506068345256085390831937673368034874198198634992312498456917448097164797623603796570829809117451690339736350367447123992250876658229994598743133000822176488680543887718589422572009007234442984832599587094421751973515477469028451515738409775116240927972508719912128632549554034234943195212005873307690097841581468530655558744798887969710540890425944093866661432912223972380161285400390625E-180 +1.5423487136658457497365273265752619789762686731863021773304262774114538692444495487260474992619899366647752300988565245397263384063621324725543067952769475312933300962896281617039843917199716753786897876141596497559015979277709888125540883235479422766994967410793662545928875524004775640902994843297609060533448237855500406772939922827279286024104664441726934402328343041441801235838025239578251201003138383497010467789459109574055906133338567087776027619838714599609375E-179 +1.542348713665846006589185413497493199994992166286399751253323401321995659002802094501213669051217078166387534673606974839639726998462499691383489619432959524720759314165961823490338067947270073489424798450175331645998919748626600164435297736108777543717884514401801446888596966519917418884350394703095493805690303147681955023248185594501743982425726509910806846988639042401174661538019568316293706131111748959777593942108178085188818773332286582444794476032257080078125E-179 +3.084697427331691499473054653150523957952537346372604354660852554822907738488899097452094998523979873329550460197713049079452676812724264945108613590553895062586660192579256323407968783439943350757379575228319299511803195855541977625108176647095884553398993482158732509185775104800955128180598968659521812106689647571100081354587984565455857204820932888345386880465668608288360247167605047915650240200627676699402093557891821914811181226667713417555205523967742919921875E-179 +3.08469742733169201317837082699498639998998433257279950250664680264399131800560418900242733810243415633277506934721394967927945399692499938276697923886591904944151862833192364698067613589454014697884959690035066329199783949725320032887059547221755508743576902880360289377719393303983483776870078940619098761138060629536391004649637118900348796485145301982161369397727808480234932307603913663258741226222349791955518788421635617037763754666457316488958895206451416015625E-179 +6.16939485466338299894610930630104791590507469274520870932170510964581547697779819490418999704795974665910092039542609815890535362544852989021722718110779012517332038515851264681593756687988670151475915045663859902360639171108395525021635329419176910679798696431746501837155020960191025636119793731904362421337929514220016270917596913091171440964186577669077376093133721657672049433521009583130048040125535339880418711578364382962236245333542683511041104793548583984375E-179 +6.1693948546633840263567416539899727999799686651455990050132936052879826360112083780048546762048683126655501386944278993585589079938499987655339584777318380988830372566638472939613522717890802939576991938007013265839956789945064006577411909444351101748715380576072057875543878660796696755374015788123819752227612125907278200929927423780069759297029060396432273879545561696046986461520782732651748245244469958391103757684327123407552750933291463297791779041290283203125E-179 +1.23387897093267659978922186126020958318101493854904174186434102192916309539555963898083799940959194933182018407908521963178107072508970597804344543622155802503466407703170252936318751337597734030295183009132771980472127834221679105004327065883835382135959739286349300367431004192038205127223958746380872484267585902844003254183519382618234288192837315533815475218626744331534409886704201916626009608025107067976083742315672876592447249066708536702208220958709716796875E-178 +1.2338789709326768052713483307979945599959937330291198010026587210575965272022416756009709352409736625331100277388855798717117815987699997531067916955463676197766074513327694587922704543578160587915398387601402653167991357989012801315482381888870220349743076115214411575108775732159339351074803157624763950445522425181455640185985484756013951859405812079286454775909112339209397292304156546530349649048893991678220751536865424681510550186658292659558355808258056640625E-178 +2.4677579418653531995784437225204191663620298770980834837286820438583261907911192779616759988191838986636403681581704392635621414501794119560868908724431160500693281540634050587263750267519546806059036601826554396094425566844335821000865413176767076427191947857269860073486200838407641025444791749276174496853517180568800650836703876523646857638567463106763095043725348866306881977340840383325201921605021413595216748463134575318489449813341707340441644191741943359375E-178 +2.467757941865353610542696661595989119991987466058239602005317442115193054404483351201941870481947325066220055477771159743423563197539999506213583391092735239553214902665538917584540908715632117583079677520280530633598271597802560263096476377774044069948615223042882315021755146431867870214960631524952790089104485036291128037197096951202790371881162415857290955181822467841879458460831309306069929809778798335644150307373084936302110037331658531911671161651611328125E-178 +4.935515883730706399156887445040838332724059754196166967457364087716652381582238555923351997638367797327280736316340878527124282900358823912173781744886232100138656308126810117452750053503909361211807320365310879218885113368867164200173082635353415285438389571453972014697240167681528205088958349855234899370703436113760130167340775304729371527713492621352619008745069773261376395468168076665040384321004282719043349692626915063697889962668341468088328838348388671875E-178 +4.93551588373070722108539332319197823998397493211647920401063488423038610880896670240388374096389465013244011095554231948684712639507999901242716678218547047910642980533107783516908181743126423516615935504056106126719654319560512052619295275554808813989723044608576463004351029286373574042992126304990558017820897007258225607439419390240558074376232483171458191036364493568375891692166261861213985961955759667128830061474616987260422007466331706382334232330322265625E-178 +9.87103176746141279831377489008167666544811950839233393491472817543330476316447711184670399527673559465456147263268175705424856580071764782434756348977246420027731261625362023490550010700781872242361464073062175843777022673773432840034616527070683057087677914290794402939448033536305641017791669971046979874140687222752026033468155060945874305542698524270523801749013954652275279093633615333008076864200856543808669938525383012739577992533668293617665767669677734375E-178 +9.8710317674614144421707866463839564799679498642329584080212697684607722176179334048077674819277893002648802219110846389736942527901599980248543335643709409582128596106621556703381636348625284703323187100811221225343930863912102410523859055110961762797944608921715292600870205857274714808598425260998111603564179401451645121487883878048111614875246496634291638207272898713675178338433252372242797192391151933425766012294923397452084401493266341276466846466064453125E-178 +1.97420635349228255966275497801633533308962390167846678698294563508666095263289542236934079905534711893091229452653635141084971316014352956486951269795449284005546252325072404698110002140156374448472292814612435168755404534754686568006923305414136611417535582858158880587889606707261128203558333994209395974828137444550405206693631012189174861108539704854104760349802790930455055818726723066601615372840171308761733987705076602547915598506733658723533153533935546875E-177 +1.9742063534922828884341573292767912959935899728465916816042539536921544435235866809615534963855578600529760443822169277947388505580319996049708667128741881916425719221324311340676327269725056940664637420162244245068786172782420482104771811022192352559588921784343058520174041171454942961719685052199622320712835880290329024297576775609622322975049299326858327641454579742735035667686650474448559438478230386685153202458984679490416880298653268255293369293212890625E-177 +3.9484127069845651193255099560326706661792478033569335739658912701733219052657908447386815981106942378618245890530727028216994263202870591297390253959089856801109250465014480939622000428031274889694458562922487033751080906950937313601384661082827322283507116571631776117577921341452225640711666798841879194965627488910081041338726202437834972221707940970820952069960558186091011163745344613320323074568034261752346797541015320509583119701346731744706630706787109375E-177 +3.948412706984565776868314658553582591987179945693183363208507907384308887047173361923106992771115720105952088764433855589477701116063999209941733425748376383285143844264862268135265453945011388132927484032448849013757234556484096420954362204438470511917784356868611704034808234290988592343937010439924464142567176058065804859515355121924464595009859865371665528290915948547007133537330094889711887695646077337030640491796935898083376059730653651058673858642578125E-177 +7.896825413969130238651019912065341332358495606713867147931782540346643810531581689477363196221388475723649178106145405643398852640574118259478050791817971360221850093002896187924400085606254977938891712584497406750216181390187462720276932216565464456701423314326355223515584268290445128142333359768375838993125497782016208267745240487566994444341588194164190413992111637218202232749068922664064614913606852350469359508203064101916623940269346348941326141357421875E-177 +7.89682541396913155373662931710716518397435989138636672641701581476861777409434672384621398554223144021190417752886771117895540223212799841988346685149675276657028768852972453627053090789002277626585496806489769802751446911296819284190872440887694102383556871373722340806961646858197718468787402087984892828513435211613160971903071024384892919001971973074333105658183189709401426707466018977942377539129215467406128098359387179616675211946130730211734771728515625E-177 +1.579365082793826047730203982413068266471699121342773429586356508069328762106316337895472639244277695144729835621229081128679770528114823651895610158363594272044370018600579237584880017121250995587778342516899481350043236278037492544055386443313092891340284662865271044703116853658089025628466671953675167798625099556403241653549048097513398888868317638832838082798422327443640446549813784532812922982721370470093871901640612820383324788053869269788265228271484375E-176 +1.57936508279382631074732586342143303679487197827727334528340316295372355481886934476924279710844628804238083550577354223579108044642559968397669337029935055331405753770594490725410618157800455525317099361297953960550289382259363856838174488177538820476711374274744468161392329371639543693757480417596978565702687042322632194380614204876978583800394394614866621131636637941880285341493203795588475507825843093481225619671877435923335042389226146042346954345703125E-176 +3.15873016558765209546040796482613653294339824268554685917271301613865752421263267579094527848855539028945967124245816225735954105622964730379122031672718854408874003720115847516976003424250199117555668503379896270008647255607498508811077288662618578268056932573054208940623370731617805125693334390735033559725019911280648330709809619502679777773663527766567616559684465488728089309962756906562584596544274094018774380328122564076664957610773853957653045654296875E-176 +3.1587301655876526214946517268428660735897439565545466905668063259074471096377386895384855942168925760847616710115470844715821608928511993679533867405987011066281150754118898145082123631560091105063419872259590792110057876451872771367634897635507764095342274854948893632278465874327908738751496083519395713140537408464526438876122840975395716760078878922973324226327327588376057068298640759117695101565168618696245123934375487184667008477845229208469390869140625E-176 +6.3174603311753041909208159296522730658867964853710937183454260322773150484252653515818905569771107805789193424849163245147190821124592946075824406334543770881774800744023169503395200684850039823511133700675979254001729451121499701762215457732523715653611386514610841788124674146323561025138666878147006711945003982256129666141961923900535955554732705553313523311936893097745617861992551381312516919308854818803754876065624512815332991522154770791530609130859375E-176 +6.317460331175305242989303453685732147179487913109093381133612651814894219275477379076971188433785152169523342023094168943164321785702398735906773481197402213256230150823779629016424726312018221012683974451918158422011575290374554273526979527101552819068454970989778726455693174865581747750299216703879142628107481692905287775224568195079143352015775784594664845265465517675211413659728151823539020313033723739249024786875097436933401695569045841693878173828125E-176 +1.2634920662350608381841631859304546131773592970742187436690852064554630096850530703163781113954221561157838684969832649029438164224918589215164881266908754176354960148804633900679040136970007964702226740135195850800345890224299940352443091546504743130722277302922168357624934829264712205027733375629401342389000796451225933228392384780107191110946541110662704662387378619549123572398510276262503383861770963760750975213124902563066598304430954158306121826171875E-175 +1.263492066235061048597860690737146429435897582621818676226722530362978843855095475815394237686757030433904668404618833788632864357140479747181354696239480442651246030164755925803284945262403644202536794890383631684402315058074910854705395905420310563813690994197955745291138634973116349550059843340775828525621496338581057555044913639015828670403155156918932969053093103535042282731945630364707804062606744747849804957375019487386680339113809168338775634765625E-175 +2.526984132470121676368326371860909226354718594148437487338170412910926019370106140632756222790844312231567736993966529805887632844983717843032976253381750835270992029760926780135808027394001592940445348027039170160069178044859988070488618309300948626144455460584433671524986965852942441005546675125880268477800159290245186645678476956021438222189308222132540932477475723909824714479702055252500676772354192752150195042624980512613319660886190831661224365234375E-175 +2.52698413247012209719572138147429285887179516524363735245344506072595768771019095163078847537351406086780933680923766757726572871428095949436270939247896088530249206032951185160656989052480728840507358978076726336880463011614982170941079181084062112762738198839591149058227726994623269910011968668155165705124299267716211511008982727803165734080631031383786593810618620707008456546389126072941560812521348949569960991475003897477336067822761833667755126953125E-175 +5.05396826494024335273665274372181845270943718829687497467634082582185203874021228126551244558168862446313547398793305961177526568996743568606595250676350167054198405952185356027161605478800318588089069605407834032013835608971997614097723661860189725228891092116886734304997393170588488201109335025176053695560031858049037329135695391204287644437861644426508186495495144781964942895940411050500135354470838550430039008524996102522663932177238166332244873046875E-175 +5.0539682649402441943914427629485857177435903304872747049068901214519153754203819032615769507470281217356186736184753351545314574285619189887254187849579217706049841206590237032131397810496145768101471795615345267376092602322996434188215836216812422552547639767918229811645545398924653982002393733631033141024859853543242302201796545560633146816126206276757318762123724141401691309277825214588312162504269789913992198295000779495467213564552366733551025390625E-175 +1.01079365298804867054733054874436369054188743765937499493526816516437040774804245625310248911633772489262709479758661192235505313799348713721319050135270033410839681190437071205432321095760063717617813921081566806402767121794399522819544732372037945045778218423377346860999478634117697640221867005035210739112006371609807465827139078240857528887572328885301637299099028956392988579188082210100027070894167710086007801704999220504532786435447633266448974609375E-174 +1.0107936529880488388782885525897171435487180660974549409813780242903830750840763806523153901494056243471237347236950670309062914857123837977450837569915843541209968241318047406426279562099229153620294359123069053475218520464599286837643167243362484510509527953583645962329109079784930796400478746726206628204971970708648460440359309112126629363225241255351463752424744828280338261855565042917662432500853957982798439659000155899093442712910473346710205078125E-174 +2.0215873059760973410946610974887273810837748753187499898705363303287408154960849125062049782326754497852541895951732238447101062759869742744263810027054006682167936238087414241086464219152012743523562784216313361280553424358879904563908946474407589009155643684675469372199895726823539528044373401007042147822401274321961493165427815648171505777514465777060327459819805791278597715837616442020005414178833542017201560340999844100906557287089526653289794921875E-174 +2.021587305976097677756577105179434287097436132194909881962756048580766150168152761304630780298811248694247469447390134061812582971424767595490167513983168708241993648263609481285255912419845830724058871824613810695043704092919857367528633448672496902101905590716729192465821815956986159280095749345241325640994394141729692088071861822425325872645048251070292750484948965656067652371113008583532486500170791596559687931800031179818688542582094669342041015625E-174 +4.043174611952194682189322194977454762167549750637499979741072660657481630992169825012409956465350899570508379190346447689420212551973948548852762005410801336433587247617482848217292843830402548704712556843262672256110684871775980912781789294881517801831128736935093874439979145364707905608874680201408429564480254864392298633085563129634301155502893155412065491963961158255719543167523288404001082835766708403440312068199968820181311457417905330657958984375E-174 +4.04317461195219535551315421035886857419487226438981976392551209716153230033630552260926156059762249738849493889478026812362516594284953519098033502796633741648398729652721896257051182483969166144811774364922762139008740818583971473505726689734499380420381118143345838493164363191397231856019149869048265128198878828345938417614372364485065174529009650214058550096989793131213530474222601716706497300034158319311937586360006235963737708516418933868408203125E-174 +8.08634922390438936437864438995490952433509950127499995948214532131496326198433965002481991293070179914101675838069289537884042510394789709770552401082160267286717449523496569643458568766080509740942511368652534451222136974355196182556357858976303560366225747387018774887995829072941581121774936040281685912896050972878459726617112625926860231100578631082413098392792231651143908633504657680800216567153341680688062413639993764036262291483581066131591796875E-174 +8.0863492239043907110263084207177371483897445287796395278510241943230646006726110452185231211952449947769898777895605362472503318856990703819606700559326748329679745930544379251410236496793833228962354872984552427801748163716794294701145337946899876084076223628669167698632872638279446371203829973809653025639775765669187683522874472897013034905801930042811710019397958626242706094844520343341299460006831663862387517272001247192747541703283786773681640625E-174 +1.61726984478087787287572887799098190486701990025499999189642906426299265239686793000496398258614035982820335167613857907576808502078957941954110480216432053457343489904699313928691713753216101948188502273730506890244427394871039236511271571795260712073245149477403754977599165814588316224354987208056337182579210194575691945323422525185372046220115726216482619678558446330228781726700931536160043313430668336137612482727998752807252458296716213226318359375E-173 +1.6172698447808781422052616841435474296779489057559279055702048388646129201345222090437046242390489989553979755579121072494500663771398140763921340111865349665935949186108875850282047299358766645792470974596910485560349632743358858940229067589379975216815244725733833539726574527655889274240765994761930605127955153133837536704574894579402606981160386008562342003879591725248541218968904068668259892001366332772477503454400249438549508340656757354736328125E-173 +3.2345396895617557457514577559819638097340398005099999837928581285259853047937358600099279651722807196564067033522771581515361700415791588390822096043286410691468697980939862785738342750643220389637700454746101378048885478974207847302254314359052142414649029895480750995519833162917663244870997441611267436515842038915138389064684505037074409244023145243296523935711689266045756345340186307232008662686133667227522496545599750561450491659343242645263671875E-173 +3.234539689561756284410523368287094859355897811511855811140409677729225840269044418087409248478097997910795951115824214498900132754279628152784268022373069933187189837221775170056409459871753329158494194919382097112069926548671771788045813517875995043363048945146766707945314905531177854848153198952386121025591030626767507340914978915880521396232077201712468400775918345049708243793780813733651978400273266554495500690880049887709901668131351470947265625E-173 +6.469079379123511491502915511963927619468079601019999967585716257051970609587471720019855930344561439312813406704554316303072340083158317678164419208657282138293739596187972557147668550128644077927540090949220275609777095794841569460450862871810428482929805979096150199103966632583532648974199488322253487303168407783027677812936901007414881848804629048659304787142337853209151269068037261446401732537226733445504499309119950112290098331868648529052734375E-173 +6.46907937912351256882104673657418971871179562302371162228081935545845168053808883617481849695619599582159190223164842899780026550855925630556853604474613986637437967444355034011281891974350665831698838983876419422413985309734354357609162703575199008672609789029353341589062981106235570969630639790477224205118206125353501468182995783176104279246415440342493680155183669009941648758756162746730395680054653310899100138176009977541980333626270294189453125E-173 +1.293815875824702298300583102392785523893615920203999993517143251410394121917494344003971186068912287862562681340910863260614468016631663535632883841731456427658747919237594511429533710025728815585508018189844055121955419158968313892090172574362085696585961195819230039820793326516706529794839897664450697460633681556605535562587380201482976369760925809731860957428467570641830253813607452289280346507445346689100899861823990022458019666373729705810546875E-172 +1.29381587582470251376420934731483794374235912460474232445616387109169033610761776723496369939123919916431838044632968579956005310171185126111370720894922797327487593488871006802256378394870133166339767796775283884482797061946870871521832540715039801734521957805870668317812596221247114193926127958095444841023641225070700293636599156635220855849283088068498736031036733801988329751751232549346079136010930662179820027635201995508396066725254058837890625E-172 +2.58763175164940459660116620478557104778723184040799998703428650282078824383498868800794237213782457572512536268182172652122893603326332707126576768346291285531749583847518902285906742005145763117101603637968811024391083831793662778418034514872417139317192239163846007964158665303341305958967979532890139492126736311321107112517476040296595273952185161946372191485693514128366050762721490457856069301489069337820179972364798004491603933274745941162109375E-172 +2.5876317516494050275284186946296758874847182492094846489123277421833806722152355344699273987824783983286367608926593715991201062034237025222274144178984559465497518697774201360451275678974026633267953559355056776896559412389374174304366508143007960346904391561174133663562519244249422838785225591619088968204728245014140058727319831327044171169856617613699747206207346760397665950350246509869215827202186132435964005527040399101679213345050811767578125E-172 +5.1752635032988091932023324095711420955744636808159999740685730056415764876699773760158847442756491514502507253636434530424578720665266541425315353669258257106349916769503780457181348401029152623420320727593762204878216766358732555683606902974483427863438447832769201592831733060668261191793595906578027898425347262264221422503495208059319054790437032389274438297138702825673210152544298091571213860297813867564035994472959600898320786654949188232421875E-172 +5.175263503298810055056837389259351774969436498418969297824655484366761344430471068939854797564956796657273521785318743198240212406847405044454828835796911893099503739554840272090255135794805326653590711871011355379311882477874834860873301628601592069380878312234826732712503848849884567757045118323817793640945649002828011745463966265408834233971323522739949441241469352079533190070049301973843165440437226487192801105408079820335842669010162353515625E-172 +1.0350527006597618386404664819142284191148927361631999948137146011283152975339954752031769488551298302900501450727286906084915744133053308285063070733851651421269983353900756091436269680205830524684064145518752440975643353271746511136721380594896685572687689566553840318566346612133652238358719181315605579685069452452844284500699041611863810958087406477854887659427740565134642030508859618314242772059562773512807198894591920179664157330989837646484375E-171 +1.035052700659762011011367477851870354993887299683793859564931096873352268886094213787970959512991359331454704357063748639648042481369481008890965767159382378619900747910968054418051027158961065330718142374202271075862376495574966972174660325720318413876175662446965346542500769769976913551409023664763558728189129800565602349092793253081766846794264704547989888248293870415906638014009860394768633088087445297438560221081615964067168533802032470703125E-171 +2.070105401319523677280932963828456838229785472326399989627429202256630595067990950406353897710259660580100290145457381216983148826610661657012614146770330284253996670780151218287253936041166104936812829103750488195128670654349302227344276118979337114537537913310768063713269322426730447671743836263121115937013890490568856900139808322372762191617481295570977531885548113026928406101771923662848554411912554702561439778918384035932831466197967529296875E-171 +2.07010540131952402202273495570374070998777459936758771912986219374670453777218842757594191902598271866290940871412749727929608496273896201778193153431876475723980149582193610883610205431792213066143628474840454215172475299114993394434932065144063682775235132489393069308500153953995382710281804732952711745637825960113120469818558650616353369358852940909597977649658774083181327602801972078953726617617489059487712044216323192813433706760406494140625E-171 +4.14021080263904735456186592765691367645957094465279997925485840451326119013598190081270779542051932116020058029091476243396629765322132331402522829354066056850799334156030243657450787208233220987362565820750097639025734130869860445468855223795867422907507582662153612742653864485346089534348767252624223187402778098113771380027961664474552438323496259114195506377109622605385681220354384732569710882382510940512287955783676807186566293239593505859375E-171 +4.1402108026390480440454699114074814199755491987351754382597243874934090755443768551518838380519654373258188174282549945585921699254779240355638630686375295144796029916438722176722041086358442613228725694968090843034495059822998678886986413028812736555047026497878613861700030790799076542056360946590542349127565192022624093963711730123270673871770588181919595529931754816636265520560394415790745323523497811897542408843264638562686741352081298828125E-171 +8.2804216052780947091237318553138273529191418893055999585097168090265223802719638016254155908410386423204011605818295248679325953064426466280504565870813211370159866831206048731490157441646644197472513164150019527805146826173972089093771044759173484581501516532430722548530772897069217906869753450524844637480555619622754276005592332894910487664699251822839101275421924521077136244070876946513942176476502188102457591156735361437313258647918701171875E-171 +8.280421605278096088090939822814962839951098397470350876519448774986818151088753710303767676103930874651637634856509989117184339850955848071127726137275059028959205983287744435344408217271688522645745138993618168606899011964599735777397282605762547311009405299575722772340006158159815308411272189318108469825513038404524818792742346024654134774354117636383919105986350963327253104112078883158149064704699562379508481768652927712537348270416259765625E-171 +1.6560843210556189418247463710627654705838283778611199917019433618053044760543927603250831181682077284640802321163659049735865190612885293256100913174162642274031973366241209746298031488329328839494502632830003905561029365234794417818754208951834696916300303306486144509706154579413843581373950690104968927496111123924550855201118466578982097532939850364567820255084384904215427248814175389302788435295300437620491518231347072287462651729583740234375E-170 +1.656084321055619217618187964562992567990219679494070175303889754997363630217750742060753535220786174930327526971301997823436867970191169614225545227455011805791841196657548887068881643454337704529149027798723633721379802392919947155479456521152509462201881059915144554468001231631963061682254437863621693965102607680904963758548469204930826954870823527276783821197270192665450620822415776631629812940939912475901696353730585542507469654083251953125E-170 +3.312168642111237883649492742125530941167656755722239983403886723610608952108785520650166236336415456928160464232731809947173038122577058651220182634832528454806394673248241949259606297665865767898900526566000781112205873046958883563750841790366939383260060661297228901941230915882768716274790138020993785499222224784910171040223693315796419506587970072913564051016876980843085449762835077860557687059060087524098303646269414457492530345916748046875E-170 +3.31216864211123843523637592912598513598043935898814035060777950999472726043550148412150707044157234986065505394260399564687373594038233922845109045491002361158368239331509777413776328690867540905829805559744726744275960478583989431095891304230501892440376211983028910893600246326392612336450887572724338793020521536180992751709693840986165390974164705455356764239454038533090124164483155326325962588187982495180339270746117108501493930816650390625E-170 +6.62433728422247576729898548425106188233531351144447996680777344722121790421757104130033247267283091385632092846546361989434607624515411730244036526966505690961278934649648389851921259533173153579780105313200156222441174609391776712750168358073387876652012132259445780388246183176553743254958027604198757099844444956982034208044738663159283901317594014582712810203375396168617089952567015572111537411812017504819660729253882891498506069183349609375E-170 +6.6243372842224768704727518582519702719608787179762807012155590199894545208710029682430141408831446997213101078852079912937474718807646784569021809098200472231673647866301955482755265738173508181165961111948945348855192095716797886219178260846100378488075242396605782178720049265278522467290177514544867758604104307236198550341938768197233078194832941091071352847890807706618024832896631065265192517637596499036067854149223421700298786163330078125E-170 +1.32486745684449515345979709685021237646706270228889599336155468944424358084351420826006649453456618277126418569309272397886921524903082346048807305393301138192255786929929677970384251906634630715956021062640031244488234921878355342550033671614677575330402426451889156077649236635310748650991605520839751419968888991396406841608947732631856780263518802916542562040675079233723417990513403114422307482362403500963932145850776578299701213836669921875E-169 +1.3248674568444953740945503716503940543921757435952561402431118039978909041742005936486028281766289399442620215770415982587494943761529356913804361819640094446334729573260391096551053147634701636233192222389789069771038419143359577243835652169220075697615048479321156435744009853055704493458035502908973551720820861447239710068387753639446615638966588218214270569578161541323604966579326213053038503527519299807213570829844684340059757232666015625E-169 +2.6497349136889903069195941937004247529341254045777919867231093788884871616870284165201329890691323655425283713861854479577384304980616469209761461078660227638451157385985935594076850381326926143191204212528006248897646984375671068510006734322935515066080485290377831215529847327062149730198321104167950283993777798279281368321789546526371356052703760583308512408135015846744683598102680622884461496472480700192786429170155315659940242767333984375E-169 +2.649734913688990748189100743300788108784351487190512280486223607995781808348401187297205656353257879888524043154083196517498988752305871382760872363928018889266945914652078219310210629526940327246638444477957813954207683828671915448767130433844015139523009695864231287148801970611140898691607100581794710344164172289447942013677550727889323127793317643642854113915632308264720993315865242610607700705503859961442714165968936868011951446533203125E-169 +5.299469827377980613839188387400849505868250809155583973446218757776974323374056833040265978138264731085056742772370895915476860996123293841952292215732045527690231477197187118815370076265385228638240842505601249779529396875134213702001346864587103013216097058075566243105969465412429946039664220833590056798755559655856273664357909305274271210540752116661702481627003169348936719620536124576892299294496140038557285834031063131988048553466796875E-169 +5.29946982737798149637820148660157621756870297438102456097244721599156361669680237459441131270651575977704808630816639303499797750461174276552174472785603777853389182930415643862042125905388065449327688895591562790841536765734383089753426086768803027904601939172846257429760394122228179738321420116358942068832834457889588402735510145577864625558663528728570822783126461652944198663173048522121540141100771992288542833193787373602390289306640625E-169 +1.059893965475596122767837677480169901173650161831116794689243751555394864674811366608053195627652946217011348554474179183095372199224658768390458443146409105538046295439437423763074015253077045727648168501120249955905879375026842740400269372917420602643219411615113248621193893082485989207932844166718011359751111931171254732871581861054854242108150423332340496325400633869787343924107224915378459858899228007711457166806212626397609710693359375E-168 +1.05989396547559629927564029732031524351374059487620491219448944319831272333936047491888226254130315195540961726163327860699959550092234855310434894557120755570677836586083128772408425181077613089865537779118312558168307353146876617950685217353760605580920387834569251485952078824445635947664284023271788413766566891577917680547102029115572925111732705745714164556625292330588839732634609704424308028220154398457708566638757474720478057861328125E-168 +2.11978793095119224553567535496033980234730032366223358937848750311078972934962273321610639125530589243402269710894835836619074439844931753678091688629281821107609259087887484752614803050615409145529633700224049991181175875005368548080053874583484120528643882323022649724238778616497197841586568833343602271950222386234250946574316372210970848421630084666468099265080126773957468784821444983075691971779845601542291433361242525279521942138671875E-168 +2.1197879309511925985512805946406304870274811897524098243889788863966254466787209498377645250826063039108192345232665572139991910018446971062086978911424151114135567317216625754481685036215522617973107555823662511633661470629375323590137043470752121116184077566913850297190415764889127189532856804654357682753313378315583536109420405823114585022346541149142832911325058466117767946526921940884861605644030879691541713327751494944095611572265625E-168 +4.2395758619023844910713507099206796046946006473244671787569750062215794586992454664322127825106117848680453942178967167323814887968986350735618337725856364221521851817577496950522960610123081829105926740044809998236235175001073709616010774916696824105728776464604529944847755723299439568317313766668720454390044477246850189314863274442194169684326016933293619853016025354791493756964288996615138394355969120308458286672248505055904388427734375E-168 +4.239575861902385197102561189281260974054962379504819648777957772793250893357441899675529050165212607821638469046533114427998382003689394212417395782284830222827113463443325150896337007243104523594621511164732502326732294125875064718027408694150424223236815513382770059438083152977825437906571360930871536550662675663116707221884081164622917004469308229828566582265011693223553589305384388176972321128806175938308342665550298988819122314453125E-168 +8.479151723804768982142701419841359209389201294648934357513950012443158917398490932864425565021223569736090788435793433464762977593797270147123667545171272844304370363515499390104592122024616365821185348008961999647247035000214741923202154983339364821145755292920905988969551144659887913663462753333744090878008895449370037862972654888438833936865203386658723970603205070958298751392857799323027678871193824061691657334449701011180877685546875E-168 +8.47915172380477039420512237856252194810992475900963929755591554558650178671488379935105810033042521564327693809306622885599676400737878842483479156456966044565422692688665030179267401448620904718924302232946500465346458825175012943605481738830084844647363102676554011887616630595565087581314272186174307310132535132623341444376816232924583400893861645965713316453002338644710717861076877635394464225761235187661668533110059797763824462890625E-168 +1.695830344760953796428540283968271841877840258929786871502790002488631783479698186572885113004244713947218157687158686692952595518759454029424733509034254568860874072703099878020918424404923273164237069601792399929449407000042948384640430996667872964229151058584181197793910228931977582732692550666748818175601779089874007572594530977687766787373040677331744794120641014191659750278571559864605535774238764812338331466889940202236175537109375E-167 +1.69583034476095407884102447571250438962198495180192785951118310911730035734297675987021162006608504312865538761861324577119935280147575768496695831291393208913084538537733006035853480289724180943784860446589300093069291765035002588721096347766016968929472620535310802377523326119113017516262854437234861462026507026524668288875363246584916680178772329193142663290600467728942143572215375527078892845152247037532333706622011959552764892578125E-167 +3.39166068952190759285708056793654368375568051785957374300558000497726356695939637314577022600848942789443631537431737338590519103751890805884946701806850913772174814540619975604183684880984654632847413920358479985889881400008589676928086199333574592845830211716836239558782045786395516546538510133349763635120355817974801514518906195537553357474608135466348958824128202838331950055714311972921107154847752962467666293377988040447235107421875E-167 +3.3916606895219081576820489514250087792439699036038557190223662182346007146859535197404232401321700862573107752372264915423987056029515153699339166258278641782616907707546601207170696057944836188756972089317860018613858353007000517744219269553203393785894524107062160475504665223822603503252570887446972292405301405304933657775072649316983336035754465838628532658120093545788428714443075105415778569030449407506466741324402391910552978515625E-167 +6.7833213790438151857141611358730873675113610357191474860111600099545271339187927462915404520169788557888726307486347467718103820750378161176989340361370182754434962908123995120836736976196930926569482784071695997177976280001717935385617239866714918569166042343367247911756409157279103309307702026669952727024071163594960302903781239107510671494921627093269791764825640567666390011142862394584221430969550592493533258675597608089447021484375E-167 +6.783321379043816315364097902850017558487939807207711438044732436469201429371907039480846480264340172514621550474452983084797411205903030739867833251655728356523381541509320241434139211588967237751394417863572003722771670601400103548843853910640678757178904821412432095100933044764520700650514177489394458481060281060986731555014529863396667207150893167725706531624018709157685742888615021083155713806089881501293348264880478382110595703125E-167 +1.3566642758087630371428322271746174735022722071438294972022320019909054267837585492583080904033957711577745261497269493543620764150075632235397868072274036550886992581624799024167347395239386185313896556814339199435595256000343587077123447973342983713833208468673449582351281831455820661861540405333990545404814232718992060580756247821502134298984325418653958352965128113533278002228572478916844286193910118498706651735119521617889404296875E-166 +1.356664275808763263072819580570003511697587961441542287608946487293840285874381407896169296052868034502924310094890596616959482241180606147973566650331145671304676308301864048286827842317793447550278883572714400744554334120280020709768770782128135751435780964282486419020186608952904140130102835497878891696212056212197346311002905972679333441430178633545141306324803741831537148577723004216631142761217976300258669652976095676422119140625E-166 +2.713328551617526074285664454349234947004544414287658994404464003981810853567517098516616180806791542315549052299453898708724152830015126447079573614454807310177398516324959804833469479047877237062779311362867839887119051200068717415424689594668596742766641693734689916470256366291164132372308081066798109080962846543798412116151249564300426859796865083730791670593025622706655600445714495783368857238782023699741330347023904323577880859375E-166 +2.71332855161752652614563916114000702339517592288308457521789297458768057174876281579233859210573606900584862018978119323391896448236121229594713330066229134260935261660372809657365568463558689510055776714542880148910866824056004141953754156425627150287156192856497283804037321790580828026020567099575778339242411242439469262200581194535866688286035726709028261264960748366307429715544600843326228552243595260051733930595219135284423828125E-166 +5.42665710323505214857132890869846989400908882857531798880892800796362170713503419703323236161358308463109810459890779741744830566003025289415914722890961462035479703264991960966693895809575447412555862272573567977423810240013743483084937918933719348553328338746937983294051273258232826474461616213359621816192569308759682423230249912860085371959373016746158334118605124541331120089142899156673771447756404739948266069404780864715576171875E-166 +5.4266571032350530522912783222800140467903518457661691504357859491753611434975256315846771842114721380116972403795623864678379289647224245918942666013245826852187052332074561931473113692711737902011155342908576029782173364811200828390750831285125430057431238571299456760807464358116165605204113419915155667848482248487893852440116238907173337657207145341805652252992149673261485943108920168665245710448719052010346786119043827056884765625E-166 +1.08533142064701042971426578173969397880181776571506359776178560159272434142700683940664647232271661692621962091978155948348966113200605057883182944578192292407095940652998392193338779161915089482511172454514713595484762048002748696616987583786743869710665667749387596658810254651646565294892323242671924363238513861751936484646049982572017074391874603349231666823721024908266224017828579831334754289551280947989653213880956172943115234375E-165 +1.0853314206470106104582556644560028093580703691532338300871571898350722286995051263169354368422944276023394480759124772935675857929444849183788533202649165370437410466414912386294622738542347580402231068581715205956434672962240165678150166257025086011486247714259891352161492871623233121040822683983031133569696449697578770488023247781434667531441429068361130450598429934652297188621784033733049142089743810402069357223808765411376953125E-165 +2.1706628412940208594285315634793879576036355314301271955235712031854486828540136788132929446454332338524392418395631189669793222640121011576636588915638458481419188130599678438667755832383017896502234490902942719096952409600549739323397516757348773942133133549877519331762050930329313058978464648534384872647702772350387296929209996514403414878374920669846333364744204981653244803565715966266950857910256189597930642776191234588623046875E-165 +2.170662841294021220916511328912005618716140738306467660174314379670144457399010252633870873684588855204678896151824954587135171585888969836757706640529833074087482093282982477258924547708469516080446213716343041191286934592448033135630033251405017202297249542851978270432298574324646624208164536796606226713939289939515754097604649556286933506288285813672226090119685986930459437724356806746609828417948762080413871444761753082275390625E-165 +4.341325682588041718857063126958775915207271062860254391047142406370897365708027357626585889290866467704878483679126237933958644528024202315327317783127691696283837626119935687733551166476603579300446898180588543819390481920109947864679503351469754788426626709975503866352410186065862611795692929706876974529540554470077459385841999302880682975674984133969266672948840996330648960713143193253390171582051237919586128555238246917724609375E-165 +4.34132568258804244183302265782401123743228147661293532034862875934028891479802050526774174736917771040935779230364990917427034317177793967351541328105966614817496418656596495451784909541693903216089242743268608238257386918489606627126006650281003440459449908570395654086459714864929324841632907359321245342787857987903150819520929911257386701257657162734445218023937197386091887544871361349321965683589752416082774288952350616455078125E-165 +8.68265136517608343771412625391755183041454212572050878209428481274179473141605471525317177858173293540975696735825247586791728905604840463065463556625538339256767525223987137546710233295320715860089379636117708763878096384021989572935900670293950957685325341995100773270482037213172522359138585941375394905908110894015491877168399860576136595134996826793853334589768199266129792142628638650678034316410247583917225711047649383544921875E-165 +8.6826513651760848836660453156480224748645629532258706406972575186805778295960410105354834947383554208187155846072998183485406863435558793470308265621193322963499283731319299090356981908338780643217848548653721647651477383697921325425201330056200688091889981714079130817291942972985864968326581471864249068557571597580630163904185982251477340251531432546889043604787439477218377508974272269864393136717950483216554857790470123291015625E-165 +1.73653027303521668754282525078351036608290842514410175641885696254835894628321094305063435571634658708195139347165049517358345781120968092613092711325107667851353505044797427509342046659064143172017875927223541752775619276804397914587180134058790191537065068399020154654096407442634504471827717188275078981181622178803098375433679972115227319026999365358770666917953639853225958428525727730135606863282049516783445142209529876708984375E-164 +1.7365302730352169767332090631296044949729125906451741281394515037361155659192082021070966989476710841637431169214599636697081372687111758694061653124238664592699856746263859818071396381667756128643569709730744329530295476739584265085040266011240137618377996342815826163458388594597172993665316294372849813711514319516126032780837196450295468050306286509377808720957487895443675501794854453972878627343590096643310971558094024658203125E-164 +3.4730605460704333750856505015670207321658168502882035128377139250967178925664218861012687114326931741639027869433009903471669156224193618522618542265021533570270701008959485501868409331812828634403575185444708350555123855360879582917436026811758038307413013679804030930819281488526900894365543437655015796236324435760619675086735994423045463805399873071754133383590727970645191685705145546027121372656409903356689028441905975341796875E-164 +3.473060546070433953466418126259208989945825181290348256278903007472231131838416404214193397895342168327486233842919927339416274537422351738812330624847732918539971349252771963614279276333551225728713941946148865906059095347916853017008053202248027523675599268563165232691677718919434598733063258874569962742302863903225206556167439290059093610061257301875561744191497579088735100358970890794575725468718019328662194311618804931640625E-164 +6.946121092140866750171301003134041464331633700576407025675427850193435785132843772202537422865386348327805573886601980694333831244838723704523708453004306714054140201791897100373681866362565726880715037088941670111024771072175916583487205362351607661482602735960806186163856297705380178873108687531003159247264887152123935017347198884609092761079974614350826676718145594129038337141029109205424274531281980671337805688381195068359375E-164 +6.94612109214086790693283625251841797989165036258069651255780601494446226367683280842838679579068433665497246768583985467883254907484470347762466124969546583707994269850554392722855855266710245145742788389229773181211819069583370603401610640449605504735119853712633046538335543783886919746612651774913992548460572780645041311233487858011818722012251460375112348838299515817747020071794178158915145093743603865732438862323760986328125E-164 +1.389224218428173350034260200626808292866326740115281405135085570038687157026568754440507484573077269665561114777320396138866766248967744740904741690600861342810828040358379420074736373272513145376143007417788334022204954214435183316697441072470321532296520547192161237232771259541076035774621737506200631849452977430424787003469439776921818552215994922870165335343629118825807667428205821841084854906256396134267561137676239013671875E-163 +1.38922421842817358138656725050368359597833007251613930251156120298889245273536656168567735915813686733099449353716797093576650981496894069552493224993909316741598853970110878544571171053342049029148557677845954636242363813916674120680322128089921100947023970742526609307667108756777383949322530354982798509692114556129008262246697571602363744402450292075022469767659903163549404014358835631783029018748720773146487772464752197265625E-163 +2.77844843685634670006852040125361658573265348023056281027017114007737431405313750888101496914615453933112222955464079227773353249793548948180948338120172268562165608071675884014947274654502629075228601483557666804440990842887036663339488214494064306459304109438432247446554251908215207154924347501240126369890595486084957400693887955384363710443198984574033067068725823765161533485641164368216970981251279226853512227535247802734375E-163 +2.7784484368563471627731345010073671919566601450322786050231224059777849054707331233713547183162737346619889870743359418715330196299378813910498644998781863348319770794022175708914234210668409805829711535569190927248472762783334824136064425617984220189404794148505321861533421751355476789864506070996559701938422911225801652449339514320472748880490058415004493953531980632709880802871767126356605803749744154629297554492950439453125E-163 +5.5568968737126934001370408025072331714653069604611256205403422801547486281062750177620299382923090786622444591092815845554670649958709789636189667624034453712433121614335176802989454930900525815045720296711533360888198168577407332667897642898812861291860821887686449489310850381643041430984869500248025273978119097216991480138777591076872742088639796914806613413745164753032306697128232873643394196250255845370702445507049560546875E-163 +5.556896873712694325546269002014734383913320290064557210046244811955569810941466246742709436632547469323977974148671883743066039259875762782099728999756372669663954158804435141782846842133681961165942307113838185449694552556666964827212885123596844037880958829701064372306684350271095357972901214199311940387684582245160330489867902864094549776098011683000898790706396126541976160574353425271321160749948830925859510898590087890625E-163 +1.1113793747425386800274081605014466342930613920922251241080684560309497256212550035524059876584618157324488918218563169110934129991741957927237933524806890742486624322867035360597890986180105163009144059342306672177639633715481466533579528579762572258372164377537289897862170076328608286196973900049605054795623819443398296027755518215374548417727959382961322682749032950606461339425646574728678839250051169074140489101409912109375E-162 +1.111379374742538865109253800402946876782664058012911442009248962391113962188293249348541887326509493864795594829734376748613207851975152556419945799951274533932790831760887028356569368426736392233188461422767637089938910511333392965442577024719368807576191765940212874461336870054219071594580242839862388077536916449032066097973580572818909955219602336600179758141279225308395232114870685054264232149989766185171902179718017578125E-162 +2.222758749485077360054816321002893268586122784184450248216136912061899451242510007104811975316923631464897783643712633822186825998348391585447586704961378148497324864573407072119578197236021032601828811868461334435527926743096293306715905715952514451674432875507457979572434015265721657239394780009921010959124763888679659205551103643074909683545591876592264536549806590121292267885129314945735767850010233814828097820281982421875E-162 +2.22275874948507773021850760080589375356532811602582288401849792478222792437658649869708377465301898772959118965946875349722641570395030511283989159990254906786558166352177405671313873685347278446637692284553527417987782102266678593088515404943873761515238353188042574892267374010843814318916048567972477615507383289806413219594716114563781991043920467320035951628255845061679046422974137010852846429997953237034380435943603515625E-162 +4.44551749897015472010963264200578653717224556836890049643227382412379890248502001420962395063384726292979556728742526764437365199669678317089517340992275629699464972914681414423915639447204206520365762373692266887105585348619258661343181143190502890334886575101491595914486803053144331447878956001984202191824952777735931841110220728614981936709118375318452907309961318024258453577025862989147153570002046762965619564056396484375E-162 +4.4455174989701554604370152016117875071306562320516457680369958495644558487531729973941675493060379754591823793189375069944528314079006102256797831998050981357311633270435481134262774737069455689327538456910705483597556420453335718617703080988774752303047670637608514978453474802168762863783209713594495523101476657961282643918943222912756398208784093464007190325651169012335809284594827402170569285999590647406876087188720703125E-162 +8.8910349979403094402192652840115730743444911367378009928645476482475978049700400284192479012676945258595911345748505352887473039933935663417903468198455125939892994582936282884783127889440841304073152474738453377421117069723851732268636228638100578066977315020298319182897360610628866289575791200396840438364990555547186368222044145722996387341823675063690581461992263604851690715405172597829430714000409352593123912811279296875E-162 +8.891034997940310920874030403223575014261312464103291536073991699128911697506345994788335098612075950918364758637875013988905662815801220451359566399610196271462326654087096226852554947413891137865507691382141096719511284090667143723540616197754950460609534127521702995690694960433752572756641942718899104620295331592256528783788644582551279641756818692801438065130233802467161856918965480434113857199918129481375217437744140625E-162 +1.7782069995880618880438530568023146148688982273475601985729095296495195609940080056838495802535389051719182269149701070577494607986787132683580693639691025187978598916587256576956625577888168260814630494947690675484223413944770346453727245727620115613395463004059663836579472122125773257915158240079368087672998111109437273644408829144599277468364735012738116292398452720970338143081034519565886142800081870518624782562255859375E-161 +1.778206999588062184174806080644715002852262492820658307214798339825782339501269198957667019722415190183672951727575002797781132563160244090271913279922039254292465330817419245370510989482778227573101538276428219343902256818133428744708123239550990092121906825504340599138138992086750514551328388543779820924059066318451305756757728916510255928351363738560287613026046760493432371383793096086822771439983625896275043487548828125E-161 +3.556413999176123776087706113604629229737796454695120397145819059299039121988016011367699160507077810343836453829940214115498921597357426536716138727938205037595719783317451315391325115577633652162926098989538135096844682788954069290745449145524023122679092600811932767315894424425154651583031648015873617534599622221887454728881765828919855493672947002547623258479690544194067628616206903913177228560016374103724956512451171875E-161 +3.55641399917612436834961216128943000570452498564131661442959667965156467900253839791533403944483038036734590345515000559556226512632048818054382655984407850858493066163483849074102197896555645514620307655285643868780451363626685748941624647910198018424381365100868119827627798417350102910265677708755964184811813263690261151351545783302051185670272747712057522605209352098686474276758619217364554287996725179255008697509765625E-161 +7.11282799835224755217541222720925845947559290939024079429163811859807824397603202273539832101415562068767290765988042823099784319471485307343227745587641007519143956663490263078265023115526730432585219797907627019368936557790813858149089829104804624535818520162386553463178884885030930316606329603174723506919924444377490945776353165783971098734589400509524651695938108838813525723241380782635445712003274820744991302490234375E-161 +7.1128279983522487366992243225788600114090499712826332288591933593031293580050767958306680788896607607346918069103000111911245302526409763610876531196881570171698613232696769814820439579311129102924061531057128773756090272725337149788324929582039603684876273020173623965525559683470020582053135541751192836962362652738052230270309156660410237134054549542411504521041870419737294855351723843472910857599345035851001739501953125E-161 +1.42256559967044951043508244544185169189511858187804815885832762371961564879520640454707966420283112413753458153197608564619956863894297061468645549117528201503828791332698052615653004623105346086517043959581525403873787311558162771629817965820960924907163704032477310692635776977006186063321265920634944701383984888875498189155270633156794219746917880101904930339187621767762705144648276156527089142400654964148998260498046875E-160 +1.4225655996704497473398448645157720022818099942565266457718386718606258716010153591661336157779321521469383613820600022382249060505281952722175306239376314034339722646539353962964087915862225820584812306211425754751218054545067429957664985916407920736975254604034724793105111936694004116410627108350238567392472530547610446054061831332082047426810909908482300904208374083947458971070344768694582171519869007170200347900390625E-160 +2.8451311993408990208701648908837033837902371637560963177166552474392312975904128090941593284056622482750691630639521712923991372778859412293729109823505640300765758266539610523130600924621069217303408791916305080774757462311632554325963593164192184981432740806495462138527155395401237212664253184126988940276796977775099637831054126631358843949383576020380986067837524353552541028929655231305417828480130992829799652099609375E-160 +2.845131199340899494679689729031544004563619988513053291543677343721251743202030718332267231555864304293876722764120004476449812101056390544435061247875262806867944529307870792592817583172445164116962461242285150950243610909013485991532997183281584147395050920806944958621022387338800823282125421670047713478494506109522089210812366266416409485362181981696460180841674816789491794214068953738916434303973801434040069580078125E-160 +5.690262398681798041740329781767406767580474327512192635433310494878462595180825618188318656811324496550138326127904342584798274555771882458745821964701128060153151653307922104626120184924213843460681758383261016154951492462326510865192718632838436996286548161299092427705431079080247442532850636825397788055359395555019927566210825326271768789876715204076197213567504870710508205785931046261083565696026198565959930419921875E-160 +5.69026239868179898935937945806308800912723997702610658308735468744250348640406143666453446311172860858775344552824000895289962420211278108887012249575052561373588905861574158518563516634489032823392492248457030190048722181802697198306599436656316829479010184161388991724204477467760164656425084334009542695698901221904417842162473253283281897072436396339292036168334963357898358842813790747783286860794760286808013916015625E-160 +1.138052479736359608348065956353481353516094865502438527086662098975692519036165123637663731362264899310027665225580868516959654911154376491749164392940225612030630330661584420925224036984842768692136351676652203230990298492465302173038543726567687399257309632259818485541086215816049488506570127365079557611071879111003985513242165065254353757975343040815239442713500974142101641157186209252216713139205239713191986083984375E-159 +1.13805247973635979787187589161261760182544799540522131661747093748850069728081228733290689262234572171755068910564800179057992484042255621777402449915010512274717781172314831703712703326897806564678498449691406038009744436360539439661319887331263365895802036832277798344840895493552032931285016866801908539139780244380883568432494650656656379414487279267858407233666992671579671768562758149556657372158952057361602783203125E-159 +2.27610495947271921669613191270696270703218973100487705417332419795138503807233024727532746272452979862005533045116173703391930982230875298349832878588045122406126066132316884185044807396968553738427270335330440646198059698493060434607708745313537479851461926451963697108217243163209897701314025473015911522214375822200797102648433013050870751595068608163047888542700194828420328231437241850443342627841047942638397216796875E-159 +2.2761049594727195957437517832252352036508959908104426332349418749770013945616245746658137852446914434351013782112960035811598496808451124355480489983002102454943556234462966340742540665379561312935699689938281207601948887272107887932263977466252673179160407366455559668968179098710406586257003373360381707827956048876176713686498930131331275882897455853571681446733398534315934353712551629911331474431790411472320556640625E-159 +4.5522099189454384333922638254139254140643794620097541083466483959027700761446604945506549254490595972401106609023234740678386196446175059669966575717609024481225213226463376837008961479393710747685454067066088129239611939698612086921541749062707495970292385290392739421643448632641979540262805094603182304442875164440159420529686602610174150319013721632609577708540038965684065646287448370088668525568209588527679443359375E-159 +4.552209918945439191487503566450470407301791981620885266469883749954002789123249149331627570489382886870202756422592007162319699361690224871096097996600420490988711246892593268148508133075912262587139937987656241520389777454421577586452795493250534635832081473291111933793635819742081317251400674672076341565591209775235342737299786026266255176579491170714336289346679706863186870742510325982266294886358082294464111328125E-159 +9.104419837890876866784527650827850828128758924019508216693296791805540152289320989101309850898119194480221321804646948135677239289235011933993315143521804896245042645292675367401792295878742149537090813413217625847922387939722417384308349812541499194058477058078547884328689726528395908052561018920636460888575032888031884105937320522034830063802744326521915541708007793136813129257489674017733705113641917705535888671875E-159 +9.10441983789087838297500713290094081460358396324177053293976749990800557824649829866325514097876577374040551284518401432463939872338044974219219599320084098197742249378518653629701626615182452517427987597531248304077955490884315517290559098650106927166416294658222386758727163948416263450280134934415268313118241955047068547459957205253251035315898234142867257869335941372637374148502065196453258977271616458892822265625E-159 +1.820883967578175373356905530165570165625751784803901643338659358361108030457864197820261970179623838896044264360929389627135447857847002386798663028704360979249008529058535073480358459175748429907418162682643525169584477587944483476861669962508299838811695411615709576865737945305679181610512203784127292177715006577606376821187464104406966012760548865304383108341601558627362625851497934803546741022728383541107177734375E-158 +1.82088396757817567659500142658018816292071679264835410658795349998160111564929965973265102819575315474808110256903680286492787974467608994843843919864016819639548449875703730725940325323036490503485597519506249660815591098176863103458111819730021385433283258931644477351745432789683252690056026986883053662623648391009413709491991441050650207063179646828573451573867188274527474829700413039290651795454323291778564453125E-158 +3.64176793515635074671381106033114033125150356960780328667731871672221606091572839564052394035924767779208852872185877925427089571569400477359732605740872195849801705811707014696071691835149685981483632536528705033916895517588896695372333992501659967762339082323141915373147589061135836322102440756825458435543001315521275364237492820881393202552109773060876621668320311725472525170299586960709348204545676708221435546875E-158 +3.6417679351563513531900028531603763258414335852967082131759069999632022312985993194653020563915063094961622051380736057298557594893521798968768783972803363927909689975140746145188065064607298100697119503901249932163118219635372620691622363946004277086656651786328895470349086557936650538011205397376610732524729678201882741898398288210130041412635929365714690314773437654905494965940082607858130359090864658355712890625E-158 +7.2835358703127014934276221206622806625030071392156065733546374334444321218314567912810478807184953555841770574437175585085417914313880095471946521148174439169960341162341402939214338367029937196296726507305741006783379103517779339074466798500331993552467816464628383074629517812227167264420488151365091687108600263104255072847498564176278640510421954612175324333664062345094505034059917392141869640909135341644287109375E-158 +7.283535870312702706380005706320752651682867170593416426351813999926404462597198638930604112783012618992324410276147211459711518978704359793753756794560672785581937995028149229037613012921459620139423900780249986432623643927074524138324472789200855417331330357265779094069817311587330107602241079475322146504945935640376548379679657642026008282527185873142938062954687530981098993188016521571626071818172931671142578125E-158 +1.4567071740625402986855244241324561325006014278431213146709274866888864243662913582562095761436990711168354114887435117017083582862776019094389304229634887833992068232468280587842867673405987439259345301461148201356675820703555867814893359700066398710493563292925676614925903562445433452884097630273018337421720052620851014569499712835255728102084390922435064866732812469018901006811983478428373928181827068328857421875E-157 +1.456707174062540541276001141264150530336573434118683285270362799985280892519439727786120822556602523798464882055229442291942303795740871958750751358912134557116387599005629845807522602584291924027884780156049997286524728785414904827664894557840171083466266071453155818813963462317466021520448215895064429300989187128075309675935931528405201656505437174628587612590937506196219798637603304314325214363634586334228515625E-157 +2.913414348125080597371048848264912265001202855686242629341854973377772848732582716512419152287398142233670822977487023403416716572555203818877860845926977566798413646493656117568573534681197487851869060292229640271335164140711173562978671940013279742098712658585135322985180712489086690576819526054603667484344010524170202913899942567051145620416878184487012973346562493803780201362396695685674785636365413665771484375E-157 +2.91341434812508108255200228252830106067314686823736657054072559997056178503887945557224164511320504759692976411045888458388460759148174391750150271782426911423277519801125969161504520516858384805576956031209999457304945757082980965532978911568034216693253214290631163762792692463493204304089643179012885860197837425615061935187186305681040331301087434925717522518187501239243959727520660862865042872726917266845703125E-157 +5.82682869625016119474209769652982453000240571137248525868370994675554569746516543302483830457479628446734164595497404680683343314511040763775572169185395513359682729298731223513714706936239497570373812058445928054267032828142234712595734388002655948419742531717027064597036142497817338115363905210920733496868802104834040582779988513410229124083375636897402594669312498760756040272479339137134957127273082733154296875E-157 +5.8268286962501621651040045650566021213462937364747331410814511999411235700777589111444832902264100951938595282209177691677692151829634878350030054356485382284655503960225193832300904103371676961115391206241999891460989151416596193106595782313606843338650642858126232752558538492698640860817928635802577172039567485123012387037437261136208066260217486985143504503637500247848791945504132172573008574545383453369140625E-157 +1.16536573925003223894841953930596490600048114227449705173674198935110913949303308660496766091495925689346832919099480936136668662902208152755114433837079102671936545859746244702742941387247899514074762411689185610853406565628446942519146877600531189683948506343405412919407228499563467623072781042184146699373760420966808116555997702682045824816675127379480518933862499752151208054495867827426991425454616546630859375E-156 +1.1653657392500324330208009130113204242692587472949466282162902399882247140155517822288966580452820190387719056441835538335538430365926975670006010871297076456931100792045038766460180820674335392223078241248399978292197830283319238621319156462721368667730128571625246550511707698539728172163585727160515434407913497024602477407487452227241613252043497397028700900727500049569758389100826434514601714909076690673828125E-156 +2.3307314785000644778968390786119298120009622845489941034734839787022182789860661732099353218299185137869366583819896187227333732580441630551022886767415820534387309171949248940548588277449579902814952482337837122170681313125689388503829375520106237936789701268681082583881445699912693524614556208436829339874752084193361623311199540536409164963335025475896103786772499950430241610899173565485398285090923309326171875E-156 +2.330731478500064866041601826022640848538517494589893256432580479976449428031103564457793316090564038077543811288367107667107686073185395134001202174259415291386220158409007753292036164134867078444615648249679995658439566056663847724263831292544273733546025714325049310102341539707945634432717145432103086881582699404920495481497490445448322650408699479405740180145500009913951677820165286902920342981815338134765625E-156 +4.661462957000128955793678157223859624001924569097988206946967957404436557972132346419870643659837027573873316763979237445466746516088326110204577353483164106877461834389849788109717655489915980562990496467567424434136262625137877700765875104021247587357940253736216516776289139982538704922911241687365867974950416838672324662239908107281832992667005095179220757354499990086048322179834713097079657018184661865234375E-156 +4.66146295700012973208320365204528169707703498917978651286516095995289885606220712891558663218112807615508762257673421533421537214637079026800240434851883058277244031681801550658407232826973415688923129649935999131687913211332769544852766258508854746709205142865009862020468307941589126886543429086420617376316539880984099096299498089089664530081739895881148036029100001982790335564033057380584068596363067626953125E-156 +9.32292591400025791158735631444771924800384913819597641389393591480887311594426469283974128731967405514774663352795847489093349303217665222040915470696632821375492366877969957621943531097983196112598099293513484886827252525027575540153175020804249517471588050747243303355257827996507740984582248337473173594990083367734464932447981621456366598533401019035844151470899998017209664435966942619415931403636932373046875E-156 +9.3229259140002594641664073040905633941540699783595730257303219199057977121244142578311732643622561523101752451534684306684307442927415805360048086970376611655448806336360310131681446565394683137784625929987199826337582642266553908970553251701770949341841028573001972404093661588317825377308685817284123475263307976196819819259899617817932906016347979176229607205820000396558067112806611476116813719272613525390625E-156 +1.86458518280005158231747126288954384960076982763919528277878718296177462318885293856794825746393481102954932670559169497818669860643533044408183094139326564275098473375593991524388706219596639222519619858702696977365450505005515108030635004160849903494317610149448660671051565599301548196916449667494634718998016673546892986489596324291273319706680203807168830294179999603441932887193388523883186280727386474609375E-155 +1.8645851828000518928332814608181126788308139956719146051460643839811595424248828515662346528724512304620350490306936861336861488585483161072009617394075322331089761267272062026336289313078936627556925185997439965267516528453310781794110650340354189868368205714600394480818732317663565075461737163456824695052661595239363963851979923563586581203269595835245921441164000079311613422561322295223362743854522705078125E-155 +3.7291703656001031646349425257790876992015396552783905655575743659235492463777058771358965149278696220590986534111833899563733972128706608881636618827865312855019694675118798304877741243919327844503923971740539395473090101001103021606127000832169980698863522029889732134210313119860309639383289933498926943799603334709378597297919264858254663941336040761433766058835999920688386577438677704776637256145477294921875E-155 +3.729170365600103785666562921636225357661627991343829210292128767962319084849765703132469305744902460924070098061387372267372297717096632214401923478815064466217952253454412405267257862615787325511385037199487993053503305690662156358822130068070837973673641142920078896163746463532713015092347432691364939010532319047872792770395984712717316240653919167049184288232800015862322684512264459044672548770904541015625E-155 +7.458340731200206329269885051558175398403079310556781131115148731847098492755411754271793029855739244118197306822366779912746794425741321776327323765573062571003938935023759660975548248783865568900784794348107879094618020200220604321225400166433996139772704405977946426842062623972061927876657986699785388759920666941875719459583852971650932788267208152286753211767199984137677315487735540955327451229095458984375E-155 +7.45834073120020757133312584327245071532325598268765842058425753592463816969953140626493861148980492184814019612277474453474459543419326442880384695763012893243590450690882481053451572523157465102277007439897598610700661138132431271764426013614167594734728228584015779232749292706542603018469486538272987802106463809574558554079196942543463248130783833409836857646560003172464536902452891808934509754180908203125E-155 +1.491668146240041265853977010311635079680615862111356226223029746369419698551082350854358605971147848823639461364473355982549358885148264355265464753114612514200787787004751932195109649756773113780156958869621575818923604040044120864245080033286799227954540881195589285368412524794412385575331597339957077751984133388375143891916770594330186557653441630457350642353439996827535463097547108191065490245819091796875E-154 +1.49166814624004151426662516865449014306465119653753168411685150718492763393990628125298772229796098436962803922455494890694891908683865288576076939152602578648718090138176496210690314504631493020455401487979519722140132227626486254352885202722833518946945645716803155846549858541308520603693897307654597560421292761914911710815839388508692649626156766681967371529312000634492907380490578361786901950836181640625E-154 +2.98333629248008253170795402062327015936123172422271245244605949273883939710216470170871721194229569764727892272894671196509871777029652871053092950622922502840157557400950386439021929951354622756031391773924315163784720808008824172849016006657359845590908176239117857073682504958882477115066319467991415550396826677675028778383354118866037311530688326091470128470687999365507092619509421638213098049163818359375E-154 +2.9833362924800830285332503373089802861293023930750633682337030143698552678798125625059754445959219687392560784491098978138978381736773057715215387830520515729743618027635299242138062900926298604091080297595903944428026445525297250870577040544566703789389129143360631169309971708261704120738779461530919512084258552382982342163167877701738529925231353336393474305862400126898581476098115672357380390167236328125E-154 +5.9666725849601650634159080412465403187224634484454249048921189854776787942043294034174344238845913952945578454578934239301974355405930574210618590124584500568031511480190077287804385990270924551206278354784863032756944161601764834569803201331471969118181635247823571414736500991776495423013263893598283110079365335535005755676670823773207462306137665218294025694137599873101418523901884327642619609832763671875E-154 +5.966672584960166057066500674617960572258604786150126736467406028739710535759625125011950889191843937478512156898219795627795676347354611543043077566104103145948723605527059848427612580185259720818216059519180788885605289105059450174115408108913340757877825828672126233861994341652340824147755892306183902416851710476596468432633575540347705985046270667278694861172480025379716295219623134471476078033447265625E-154 +1.1933345169920330126831816082493080637444926896890849809784237970955357588408658806834868847769182790589115690915786847860394871081186114842123718024916900113606302296038015457560877198054184910241255670956972606551388832320352966913960640266294393823636327049564714282947300198355299084602652778719656622015873067107001151135334164754641492461227533043658805138827519974620283704780376865528523921966552734375E-153 +1.193334516992033211413300134923592114451720957230025347293481205747942107151925025002390177838368787495702431379643959125559135269470922308608615513220820629189744721105411969685522516037051944163643211903836157777121057821011890034823081621782668151575565165734425246772398868330468164829551178461236780483370342095319293686526715108069541197009254133455738972234496005075943259043924626894295215606689453125E-153 +2.386669033984066025366363216498616127488985379378169961956847594191071517681731761366973769553836558117823138183157369572078974216237222968424743604983380022721260459207603091512175439610836982048251134191394521310277766464070593382792128053258878764727265409912942856589460039671059816920530555743931324403174613421400230227066832950928298492245506608731761027765503994924056740956075373105704784393310546875E-153 +2.38666903398406642282660026984718422890344191446005069458696241149588421430385005000478035567673757499140486275928791825111827053894184461721723102644164125837948944221082393937104503207410388832728642380767231555424211564202378006964616324356533630315113033146885049354479773666093632965910235692247356096674068419063858737305343021613908239401850826691147794446899201015188651808784925378859043121337890625E-153 +4.77333806796813205073272643299723225497797075875633992391369518838214303536346352273394753910767311623564627636631473914415794843247444593684948720996676004544252091841520618302435087922167396409650226838278904262055553292814118676558425610651775752945453081982588571317892007934211963384106111148786264880634922684280046045413366590185659698449101321746352205553100798984811348191215074621140956878662109375E-153 +4.7733380679681328456532005396943684578068838289201013891739248229917684286077001000095607113534751499828097255185758365022365410778836892344344620528832825167589788844216478787420900641482077766545728476153446311084842312840475601392923264871306726063022606629377009870895954733218726593182047138449471219334813683812771747461068604322781647880370165338229558889379840203037730361756985075771808624267578125E-153 +9.5466761359362641014654528659944645099559415175126798478273903767642860707269270454678950782153462324712925527326294782883158968649488918736989744199335200908850418368304123660487017584433479281930045367655780852411110658562823735311685122130355150589090616396517714263578401586842392676821222229757252976126984536856009209082673318037131939689820264349270441110620159796962269638243014924228191375732421875E-153 +9.546676135936265691306401079388736915613767657840202778347849645983536857215400200019121422706950299965619451037151673004473082155767378468868924105766565033517957768843295757484180128296415553309145695230689262216968462568095120278584652974261345212604521325875401974179190946643745318636409427689894243866962736762554349492213720864556329576074033067645911777875968040607546072351397015154361724853515625E-153 +1.9093352271872528202930905731988929019911883035025359695654780753528572141453854090935790156430692464942585105465258956576631793729897783747397948839867040181770083673660824732097403516886695856386009073531156170482222131712564747062337024426071030117818123279303542852715680317368478535364244445951450595225396907371201841816534663607426387937964052869854088222124031959392453927648602984845638275146484375E-152 +1.909335227187253138261280215877747383122753531568040555669569929196707371443080040003824284541390059993123890207430334600894616431153475693773784821153313006703591553768659151496836025659283110661829139046137852443393692513619024055716930594852269042520904265175080394835838189328749063727281885537978848773392547352510869898442744172911265915214806613529182355575193608121509214470279403030872344970703125E-152 +3.818670454374505640586181146397785803982376607005071939130956150705714428290770818187158031286138492988517021093051791315326358745979556749479589767973408036354016734732164946419480703377339171277201814706231234096444426342512949412467404885214206023563624655860708570543136063473695707072848889190290119045079381474240368363306932721485277587592810573970817644424806391878490785529720596969127655029296875E-152 +3.81867045437450627652256043175549476624550706313608111133913985839341474288616008000764856908278011998624778041486066920178923286230695138754756964230662601340718310753731830299367205131856622132365827809227570488678738502723804811143386118970453808504180853035016078967167637865749812745456377107595769754678509470502173979688548834582253183042961322705836471115038721624301842894055880606174468994140625E-152 +7.63734090874901128117236229279557160796475321401014387826191230141142885658154163637431606257227698597703404218610358263065271749195911349895917953594681607270803346946432989283896140675467834255440362941246246819288885268502589882493480977042841204712724931172141714108627212694739141414569777838058023809015876294848073672661386544297055517518562114794163528884961278375698157105944119393825531005859375E-152 +7.6373409087490125530451208635109895324910141262721622226782797167868294857723201600152971381655602399724955608297213384035784657246139027750951392846132520268143662150746366059873441026371324426473165561845514097735747700544760962228677223794090761700836170607003215793433527573149962549091275421519153950935701894100434795937709766916450636608592264541167294223007744324860368578811176121234893798828125E-152 +1.52746818174980225623447245855911432159295064280202877565238246028228577131630832727486321251445539719540680843722071652613054349839182269979183590718936321454160669389286597856779228135093566851088072588249249363857777053700517976498696195408568240942544986234428342821725442538947828282913955567611604761803175258969614734532277308859411103503712422958832705776992255675139631421188823878765106201171875E-151 +1.5274681817498025106090241727021979064982028252544324445356559433573658971544640320030594276331120479944991121659442676807156931449227805550190278569226504053628732430149273211974688205274264885294633112369102819547149540108952192445735444758818152340167234121400643158686705514629992509818255084303830790187140378820086959187541953383290127321718452908233458844601548864972073715762235224246978759765625E-151 +3.0549363634996045124689449171182286431859012856040575513047649205645715426326166545497264250289107943908136168744414330522610869967836453995836718143787264290832133877857319571355845627018713370217614517649849872771555410740103595299739239081713648188508997246885668564345088507789565656582791113522320952360635051793922946906455461771882220700742484591766541155398451135027926284237764775753021240234375E-151 +3.054936363499605021218048345404395812996405650508864889071311886714731794308928064006118855266224095988998224331888535361431386289845561110038055713845300810725746486029854642394937641054852977058926622473820563909429908021790438489147088951763630468033446824280128631737341102925998501963651016860766158037428075764017391837508390676658025464343690581646691768920309772994414743152447044849395751953125E-151 +6.109872726999209024937889834236457286371802571208115102609529841129143085265233309099452850057821588781627233748882866104522173993567290799167343628757452858166426775571463914271169125403742674043522903529969974554311082148020719059947847816342729637701799449377133712869017701557913131316558222704464190472127010358784589381291092354376444140148496918353308231079690227005585256847552955150604248046875E-151 +6.10987272699921004243609669080879162599281130101772977814262377342946358861785612801223771053244819197799644866377707072286277257969112222007611142769060162145149297205970928478987528210970595411785324494764112781885981604358087697829417790352726093606689364856025726347468220585199700392730203372153231607485615152803478367501678135331605092868738116329338353784061954598882948630489408969879150390625E-151 +1.221974545399841804987577966847291457274360514241623020521905968225828617053046661819890570011564317756325446749776573220904434798713458159833468725751490571633285355114292782854233825080748534808704580705993994910862216429604143811989569563268545927540359889875426742573803540311582626263311644540892838094425402071756917876258218470875288828029699383670661646215938045401117051369510591030120849609375E-150 +1.22197454539984200848721933816175832519856226020354595562852475468589271772357122560244754210648963839559928973275541414457255451593822444401522228553812032429029859441194185695797505642194119082357064898952822556377196320871617539565883558070545218721337872971205145269493644117039940078546040674430646321497123030560695673500335627066321018573747623265867670756812390919776589726097881793975830078125E-150 +2.44394909079968360997515593369458291454872102848324604104381193645165723410609332363978114002312863551265089349955314644180886959742691631966693745150298114326657071022858556570846765016149706961740916141198798982172443285920828762397913912653709185508071977975085348514760708062316525252662328908178567618885080414351383575251643694175057765605939876734132329243187609080223410273902118206024169921875E-150 +2.4439490907996840169744386763235166503971245204070919112570495093717854354471424512048950842129792767911985794655108282891451090318764488880304445710762406485805971888238837139159501128438823816471412979790564511275439264174323507913176711614109043744267574594241029053898728823407988015709208134886129264299424606112139134700067125413264203714749524653173534151362478183955317945219576358795166015625E-150 +4.8878981815993672199503118673891658290974420569664920820876238729033144682121866472795622800462572710253017869991062928836177391948538326393338749030059622865331414204571711314169353003229941392348183228239759796434488657184165752479582782530741837101614395595017069702952141612463305050532465781635713523777016082870276715050328738835011553121187975346826465848637521816044682054780423641204833984375E-150 +4.887898181599368033948877352647033300794249040814183822514099018743570870894284902409790168425958553582397158931021656578290218063752897776060889142152481297161194377647767427831900225687764763294282595958112902255087852834864701582635342322821808748853514918848205810779745764681597603141841626977225852859884921222427826940013425082652840742949904930634706830272495636791063589043915271759033203125E-150 +9.775796363198734439900623734778331658194884113932984164175247745806628936424373294559124560092514542050603573998212585767235478389707665278667749806011924573066282840914342262833870600645988278469636645647951959286897731436833150495916556506148367420322879119003413940590428322492661010106493156327142704755403216574055343010065747767002310624237595069365293169727504363208936410956084728240966796875E-150 +9.77579636319873606789775470529406660158849808162836764502819803748714174178856980481958033685191710716479431786204331315658043612750579555212177828430496259432238875529553485566380045137552952658856519191622580451017570566972940316527068464564361749770702983769641162155949152936319520628368325395445170571976984244485565388002685016530568148589980986126941366054499127358212717808783054351806640625E-150 +1.955159272639746887980124746955666331638976822786596832835049549161325787284874658911824912018502908410120714799642517153447095677941533055733549961202384914613256568182868452566774120129197655693927329129590391857379546287366630099183311301229673484064575823800682788118085664498532202021298631265428540951080643314811068602013149553400462124847519013873058633945500872641787282191216945648193359375E-149 +1.95515927263974721357955094105881332031769961632567352900563960749742834835771396096391606737038342143295886357240866263131608722550115911042435565686099251886447775105910697113276009027510590531771303838324516090203514113394588063305413692912872349954140596753928232431189830587263904125673665079089034114395396848897113077600537003306113629717996197225388273210899825471642543561756610870361328125E-149 +3.91031854527949377596024949391133266327795364557319366567009909832265157456974931782364982403700581682024142959928503430689419135588306611146709992240476982922651313636573690513354824025839531138785465825918078371475909257473326019836662260245934696812915164760136557623617132899706440404259726253085708190216128662962213720402629910680092424969503802774611726789100174528357456438243389129638671875E-149 +3.9103185452794944271591018821176266406353992326513470580112792149948566967154279219278321347407668428659177271448173252626321744510023182208487113137219850377289555021182139422655201805502118106354260767664903218040702822678917612661082738582574469990828119350785646486237966117452780825134733015817806822879079369779422615520107400661222725943599239445077654642179965094328508712351322174072265625E-149 +7.8206370905589875519204989878226653265559072911463873313401981966453031491394986356472996480740116336404828591985700686137883827117661322229341998448095396584530262727314738102670964805167906227757093165183615674295181851494665203967332452049186939362583032952027311524723426579941288080851945250617141638043225732592442744080525982136018484993900760554922345357820034905671491287648677825927734375E-149 +7.820637090558988854318203764235253281270798465302694116022558429989713393430855843855664269481533685731835454289634650525264348902004636441697422627443970075457911004236427884531040361100423621270852153532980643608140564535783522532216547716514893998165623870157129297247593223490556165026946603163561364575815873955884523104021480132244545188719847889015530928435993018865701742470264434814453125E-149 +1.5641274181117975103840997975645330653111814582292774662680396393290606298278997271294599296148023267280965718397140137227576765423532264445868399689619079316906052545462947620534192961033581245551418633036723134859036370298933040793466490409837387872516606590405462304944685315988257616170389050123428327608645146518488548816105196427203696998780152110984469071564006981134298257529735565185546875E-148 +1.564127418111797770863640752847050656254159693060538823204511685997942678686171168771132853896306737146367090857926930105052869780400927288339484525488794015091582200847285576906208072220084724254170430706596128721628112907156704506443309543302978799633124774031425859449518644698111233005389320632712272915163174791176904620804296026448909037743969577803106185687198603773140348494052886962890625E-148 +3.128254836223595020768199595129066130622362916458554932536079278658121259655799454258919859229604653456193143679428027445515353084706452889173679937923815863381210509092589524106838592206716249110283726607344626971807274059786608158693298081967477574503321318081092460988937063197651523234077810024685665521729029303697709763221039285440739399756030422196893814312801396226859651505947113037109375E-148 +3.12825483622359554172728150569410131250831938612107764640902337199588535737234233754226570779261347429273418171585386021010573956080185457667896905097758803018316440169457115381241614444016944850834086141319225744325622581431340901288661908660595759926624954806285171889903728939622246601077864126542454583032634958235380924160859205289781807548793915560621237137439720754628069698810577392578125E-148 +6.25650967244719004153639919025813226124472583291710986507215855731624251931159890851783971845920930691238628735885605489103070616941290577834735987584763172676242101818517904821367718441343249822056745321468925394361454811957321631738659616393495514900664263616218492197787412639530304646815562004937133104345805860739541952644207857088147879951206084439378762862560279245371930301189422607421875E-148 +6.2565096724471910834545630113882026250166387722421552928180467439917707147446846750845314155852269485854683634317077204202114791216037091533579381019551760603663288033891423076248322888803388970166817228263845148865124516286268180257732381732119151985324990961257034377980745787924449320215572825308490916606526991647076184832171841057956361509758783112124247427487944150925613939762115478515625E-148 +1.25130193448943800830727983805162645224894516658342197301443171146324850386231978170356794369184186138247725747177121097820614123388258115566947197516952634535248420363703580964273543688268649964411349064293785078872290962391464326347731923278699102980132852723243698439557482527906060929363112400987426620869161172147908390528841571417629575990241216887875752572512055849074386060237884521484375E-147 +1.2513019344894382166909126022776405250033277544484310585636093487983541429489369350169062831170453897170936726863415440840422958243207418306715876203910352120732657606778284615249664577760677794033363445652769029773024903257253636051546476346423830397064998192251406875596149157584889864043114565061698183321305398329415236966434368211591272301951756622424849485497588830185122787952423095703125E-147 +2.5026038689788760166145596761032529044978903331668439460288634229264970077246395634071358873836837227649545149435424219564122824677651623113389439503390526907049684072740716192854708737653729992882269812858757015774458192478292865269546384655739820596026570544648739687911496505581212185872622480197485324173832234429581678105768314283525915198048243377575150514502411169814877212047576904296875E-147 +2.502603868978876433381825204555281050006655508896862117127218697596708285897873870033812566234090779434187345372683088168084591648641483661343175240782070424146531521355656923049932915552135558806672689130553805954604980651450727210309295269284766079412999638450281375119229831516977972808622913012339636664261079665883047393286873642318254460390351324484969897099517766037024557590484619140625E-147 +5.005207737957752033229119352206505808995780666333687892057726845852994015449279126814271774767367445529909029887084843912824564935530324622677887900678105381409936814548143238570941747530745998576453962571751403154891638495658573053909276931147964119205314108929747937582299301116242437174524496039497064834766446885916335621153662856705183039609648675515030102900482233962975442409515380859375E-147 +5.00520773795775286676365040911056210001331101779372423425443739519341657179574774006762513246818155886837469074536617633616918329728296732268635048156414084829306304271131384609986583110427111761334537826110761190920996130290145442061859053856953215882599927690056275023845966303395594561724582602467927332852215933176609478657374728463650892078070264896993979419903553207404911518096923828125E-147 +1.001041547591550406645823870441301161799156133266737578411545369170598803089855825362854354953473489105981805977416968782564912987106064924535577580135621076281987362909628647714188349506149199715290792514350280630978327699131714610781855386229592823841062821785949587516459860223248487434904899207899412966953289377183267124230732571341036607921929735103006020580096446792595088481903076171875E-146 +1.00104154759155057335273008182211242000266220355874484685088747903868331435914954801352502649363631177367493814907323526723383665945659346453727009631282816965861260854226276921997316622085422352266907565222152238184199226058029088412371810771390643176519985538011255004769193260679118912344916520493585466570443186635321895731474945692730178415614052979398795883980710641480982303619384765625E-146 +2.00208309518310081329164774088260232359831226653347515682309073834119760617971165072570870990694697821196361195483393756512982597421212984907115516027124215256397472581925729542837669901229839943058158502870056126195665539826342922156371077245918564768212564357189917503291972044649697486980979841579882593390657875436653424846146514268207321584385947020601204116019289358519017696380615234375E-146 +2.0020830951831011467054601636442248400053244071174896937017749580773666287182990960270500529872726235473498762981464705344676733189131869290745401926256563393172252170845255384399463324417084470453381513044430447636839845211605817682474362154278128635303997107602251000953838652135823782468983304098717093314088637327064379146294989138546035683122810595879759176796142128296196460723876953125E-146 +4.0041661903662016265832954817652046471966245330669503136461814766823952123594233014514174198138939564239272239096678751302596519484242596981423103205424843051279494516385145908567533980245967988611631700574011225239133107965268584431274215449183712953642512871437983500658394408929939497396195968315976518678131575087330684969229302853641464316877189404120240823203857871703803539276123046875E-146 +4.004166190366202293410920327288449680010648814234979387403549916154733257436598192054100105974545247094699752596292941068935346637826373858149080385251312678634450434169051076879892664883416894090676302608886089527367969042321163536494872430855625727060799421520450200190767730427164756493796660819743418662817727465412875829258997827709207136624562119175951835359228425659239292144775390625E-146 +8.008332380732403253166590963530409294393249066133900627292362953364790424718846602902834839627787912847854447819335750260519303896848519396284620641084968610255898903277029181713506796049193597722326340114802245047826621593053716886254843089836742590728502574287596700131678881785987899479239193663195303735626315017466136993845860570728292863375437880824048164640771574340760707855224609375E-146 +8.00833238073240458682184065457689936002129762846995877480709983230946651487319638410820021194909049418939950519258588213787069327565274771629816077050262535726890086833810215375978532976683378818135260521777217905473593808464232707298974486171125145412159884304090040038153546085432951298759332163948683732563545493082575165851799565541841427324912423835190367071845685131847858428955078125E-146 +1.601666476146480650633318192706081858878649813226780125458472590672958084943769320580566967925557582569570889563867150052103860779369703879256924128216993722051179780655405836342701359209838719544465268022960449009565324318610743377250968617967348518145700514857519340026335776357197579895847838732639060747125263003493227398769172114145658572675087576164809632928154314868152141571044921875E-145 +1.60166647614648091736436813091537987200425952569399175496141996646189330297463927682164004238981809883787990103851717642757413865513054954325963215410052507145378017366762043075195706595336675763627052104355443581094718761692846541459794897234225029082431976860818008007630709217086590259751866432789736746512709098616515033170359913108368285464982484767038073414369137026369571685791015625E-145 +3.20333295229296130126663638541216371775729962645356025091694518134591616988753864116113393585111516513914177912773430010420772155873940775851384825643398744410235956131081167268540271841967743908893053604592089801913064863722148675450193723593469703629140102971503868005267155271439515979169567746527812149425052600698645479753834422829131714535017515232961926585630862973630428314208984375E-145 +3.2033329522929618347287362618307597440085190513879835099228399329237866059492785536432800847796361976757598020770343528551482773102610990865192643082010501429075603473352408615039141319067335152725410420871088716218943752338569308291958979446845005816486395372163601601526141843417318051950373286557947349302541819723303006634071982621673657092996496953407614682873827405273914337158203125E-145 +6.4066659045859226025332727708243274355145992529071205018338903626918323397750772823222678717022303302782835582554686002084154431174788155170276965128679748882047191226216233453708054368393548781778610720918417960382612972744429735090038744718693940725828020594300773601053431054287903195833913549305562429885010520139729095950766884565826342907003503046592385317126172594726085662841796875E-145 +6.406665904585923669457472523661519488017038102775967019845679865847573211898557107286560169559272395351519604154068705710296554620522198173038528616402100285815120694670481723007828263813467030545082084174217743243788750467713861658391795889369001163297279074432720320305228368683463610390074657311589469860508363944660601326814396524334731418599299390681522936574765481054782867431640625E-145 +1.2813331809171845205066545541648654871029198505814241003667780725383664679550154564644535743404460660556567116510937200416830886234957631034055393025735949776409438245243246690741610873678709756355722144183683592076522594548885947018007748943738788145165604118860154720210686210857580639166782709861112485977002104027945819190153376913165268581400700609318477063425234518945217132568359375E-144 +1.281333180917184733891494504732303897603407620555193403969135973169514642379711421457312033911854479070303920830813741142059310924104439634607705723280420057163024138934096344601565652762693406109016416834843548648757750093542772331678359177873800232659455814886544064061045673736692722078014931462317893972101672788932120265362879304866946283719859878136304587314953096210956573486328125E-144 +2.562666361834369041013309108329730974205839701162848200733556145076732935910030912928907148680892132111313423302187440083366177246991526206811078605147189955281887649048649338148322174735741951271144428836736718415304518909777189403601549788747757629033120823772030944042137242171516127833356541972222497195400420805589163838030675382633053716280140121863695412685046903789043426513671875E-144 +2.56266636183436946778298900946460779520681524111038680793827194633902928475942284291462406782370895814060784166162748228411862184820887926921541144656084011432604827786819268920313130552538681221803283366968709729751550018708554466335671835574760046531891162977308812812209134747338544415602986292463578794420334557786424053072575860973389256743971975627260917462990619242191314697265625E-144 +5.12533272366873808202661821665946194841167940232569640146711229015346587182006182585781429736178426422262684660437488016673235449398305241362215721029437991056377529809729867629664434947148390254228885767347343683060903781955437880720309957749551525806624164754406188808427448434303225566671308394444499439080084161117832767606135076526610743256028024372739082537009380757808685302734375E-144 +5.1253327236687389355659780189292155904136304822207736158765438926780585695188456858292481356474179162812156833232549645682372436964177585384308228931216802286520965557363853784062626110507736244360656673393741945950310003741710893267134367114952009306378232595461762562441826949467708883120597258492715758884066911557284810614515172194677851348794395125452183492598123848438262939453125E-144 +1.02506654473374761640532364333189238968233588046513928029342245803069317436401236517156285947235685284452536932087497603334647089879661048272443144205887598211275505961945973525932886989429678050845777153469468736612180756391087576144061991549910305161324832950881237761685489686860645113334261678888899887816016832223566553521227015305322148651205604874547816507401876151561737060546875E-143 +1.0250665447337477871131956037858431180827260964441547231753087785356117139037691371658496271294835832562431366646509929136474487392835517076861645786243360457304193111472770756812525222101547248872131334678748389190062000748342178653426873422990401861275646519092352512488365389893541776624119451698543151776813382311456962122903034438935570269758879025090436698519624769687652587890625E-143 +2.0501330894674952328106472866637847793646717609302785605868449160613863487280247303431257189447137056890507386417499520666929417975932209654488628841177519642255101192389194705186577397885935610169155430693893747322436151278217515228812398309982061032264966590176247552337097937372129022666852335777779977563203366444713310704245403061064429730241120974909563301480375230312347412109375E-143 +2.050133089467495574226391207571686236165452192888309446350617557071223427807538274331699254258967166512486273329301985827294897478567103415372329157248672091460838622294554151362505044420309449774426266935749677838012400149668435730685374684598080372255129303818470502497673077978708355324823890339708630355362676462291392424580606887787114053951775805018087339703924953937530517578125E-143 +4.100266178934990465621294573327569558729343521860557121173689832122772697456049460686251437889427411378101477283499904133385883595186441930897725768235503928451020238477838941037315479577187122033831086138778749464487230255643503045762479661996412206452993318035249510467419587474425804533370467155555995512640673288942662140849080612212885946048224194981912660296075046062469482421875E-143 +4.10026617893499114845278241514337247233090438577661889270123511414244685561507654866339850851793433302497254665860397165458979495713420683074465831449734418292167724458910830272501008884061889954885253387149935567602480029933687146137074936919616074451025860763694100499534615595741671064964778067941726071072535292458278484916121377557422810790355161003617467940784990787506103515625E-143 +8.20053235786998093124258914665513911745868704372111424234737966424554539491209892137250287577885482275620295456699980826677176719037288386179545153647100785690204047695567788207463095915437424406766217227755749892897446051128700609152495932399282441290598663607049902093483917494885160906674093431111199102528134657788532428169816122442577189209644838996382532059215009212493896484375E-143 +8.2005323578699822969055648302867449446618087715532377854024702282848937112301530973267970170358686660499450933172079433091795899142684136614893166289946883658433544891782166054500201776812377990977050677429987113520496005986737429227414987383923214890205172152738820099906923119148334212992955613588345214214507058491655696983224275511484562158071032200723493588156998157501220703125E-143 +1.64010647157399618624851782933102782349173740874422284846947593284910907898241978427450057515577096455124059091339996165335435343807457677235909030729420157138040809539113557641492619183087484881353243445551149978579489210225740121830499186479856488258119732721409980418696783498977032181334818686222239820505626931557706485633963224488515437841928967799276506411843001842498779296875E-142 +1.6401064715739964593811129660573489889323617543106475570804940456569787422460306194653594034071737332099890186634415886618359179828536827322978633257989376731686708978356433210900040355362475598195410135485997422704099201197347485845482997476784642978041034430547764019981384623829666842598591122717669042842901411698331139396644855102296912431614206440144698717631399631500244140625E-142 +3.2802129431479923724970356586620556469834748174884456969389518656982181579648395685490011503115419291024811818267999233067087068761491535447181806145884031427608161907822711528298523836617496976270648689110229995715897842045148024366099837295971297651623946544281996083739356699795406436266963737244447964101125386311541297126792644897703087568385793559855301282368600368499755859375E-142 +3.280212943147992918762225932114697977864723508621295114160988091313957484492061238930718806814347466419978037326883177323671835965707365464595726651597875346337341795671286642180008071072495119639082027097199484540819840239469497169096599495356928595608206886109552803996276924765933368519718224543533808568580282339666227879328971020459382486322841288028939743526279926300048828125E-142 +6.560425886295984744994071317324111293966949634976891393877903731396436315929679137098002300623083858204962363653599846613417413752298307089436361229176806285521632381564542305659704767323499395254129737822045999143179568409029604873219967459194259530324789308856399216747871339959081287253392747448889592820225077262308259425358528979540617513677158711971060256473720073699951171875E-142 +6.56042588629598583752445186422939595572944701724259022832197618262791496898412247786143761362869493283995607465376635464734367193141473092919145330319575069267468359134257328436001614214499023927816405419439896908163968047893899433819319899071385719121641377221910560799255384953186673703943644908706761713716056467933245575865794204091876497264568257605787948705255985260009765625E-142 +1.312085177259196948998814263464822258793389926995378278775580746279287263185935827419600460124616771640992472730719969322683482750459661417887272245835361257104326476312908461131940953464699879050825947564409199828635913681805920974643993491838851906064957861771279843349574267991816257450678549489777918564045015452461651885071705795908123502735431742394212051294744014739990234375E-141 +1.31208517725919716750489037284587919114588940344851804566439523652558299379682449557228752272573898656799121493075327092946873438628294618583829066063915013853493671826851465687200322842899804785563281083887979381632793609578779886763863979814277143824328275444382112159851076990637334740788728981741352342743211293586649115173158840818375299452913651521157589741051197052001953125E-141 +2.62417035451839389799762852692964451758677985399075655755116149255857452637187165483920092024923354328198494546143993864536696550091932283577454449167072251420865295262581692226388190692939975810165189512881839965727182736361184194928798698367770381212991572354255968669914853598363251490135709897955583712809003090492330377014341159181624700547086348478842410258948802947998046875E-141 +2.6241703545183943350097807456917583822917788068970360913287904730511659875936489911445750454514779731359824298615065418589374687725658923716765813212783002770698734365370293137440064568579960957112656216777595876326558721915755977352772795962855428764865655088876422431970215398127466948157745796348270468548642258717329823034631768163675059890582730304231517948210239410400390625E-141 +5.2483407090367877959952570538592890351735597079815131151023229851171490527437433096784018404984670865639698909228798772907339310018386456715490889833414450284173059052516338445277638138587995162033037902576367993145436547272236838985759739673554076242598314470851193733982970719672650298027141979591116742561800618098466075402868231836324940109417269695768482051789760589599609375E-141 +5.248340709036788670019561491383516764583557613794072182657580946102331975187297982289150090902955946271964859723013083717874937545131784743353162642556600554139746873074058627488012913715992191422531243355519175265311744383151195470554559192571085752973131017775284486394043079625493389631549159269654093709728451743465964606926353632735011978116546060846303589642047882080078125E-141 +1.0496681418073575591990514107718578070347119415963026230204645970234298105487486619356803680996934173127939781845759754581467862003677291343098177966682890056834611810503267689055527627717599032406607580515273598629087309454447367797151947934710815248519662894170238746796594143934530059605428395918223348512360123619693215080573646367264988021883453939153696410357952117919921875E-140 +1.049668141807357734003912298276703352916711522758814436531516189220466395037459596457830018180591189254392971944602616743574987509026356948670632528511320110827949374614811725497602582743198438284506248671103835053062348876630239094110911838514217150594626203555056897278808615925098677926309831853930818741945690348693192921385270726547002395623309212169260717928409576416015625E-140 +2.099336283614715118398102821543715614069423883192605246040929194046859621097497323871360736199386834625587956369151950916293572400735458268619635593336578011366922362100653537811105525543519806481321516103054719725817461890889473559430389586942163049703932578834047749359318828786906011921085679183644669702472024723938643016114729273452997604376690787830739282071590423583984375E-140 +2.09933628361471546800782459655340670583342304551762887306303237844093279007491919291566003636118237850878594388920523348714997501805271389734126505702264022165589874922962345099520516548639687656901249734220767010612469775326047818822182367702843430118925240711011379455761723185019735585261966370786163748389138069738638584277054145309400479124661842433852143585681915283203125E-140 +4.19867256722943023679620564308743122813884776638521049208185838809371924219499464774272147239877366925117591273830390183258714480147091653723927118667315602273384472420130707562221105108703961296264303220610943945163492378177894711886077917388432609940786515766809549871863765757381202384217135836728933940494404944787728603222945854690599520875338157566147856414318084716796875E-140 +4.1986725672294309360156491931068134116668460910352577461260647568818655801498383858313200727223647570175718877784104669742999500361054277946825301140452804433117974984592469019904103309727937531380249946844153402122493955065209563764436473540568686023785048142202275891152344637003947117052393274157232749677827613947727716855410829061880095824932368486770428717136383056640625E-140 +8.3973451344588604735924112861748624562776955327704209841637167761874384843899892954854429447975473385023518254766078036651742896029418330744785423733463120454676894484026141512444221021740792259252860644122188789032698475635578942377215583477686521988157303153361909974372753151476240476843427167345786788098880988957545720644589170938119904175067631513229571282863616943359375E-140 +8.397345134458861872031298386213626823333692182070515492252129513763731160299676771662640145444729514035143775556820933948599900072210855589365060228090560886623594996918493803980820661945587506276049989368830680424498791013041912752887294708113737204757009628440455178230468927400789423410478654831446549935565522789545543371082165812376019164986473697354085743427276611328125E-140 +1.6794690268917720947184822572349724912555391065540841968327433552374876968779978590970885889595094677004703650953215607330348579205883666148957084746692624090935378896805228302488844204348158451850572128824437757806539695127115788475443116695537304397631460630672381994874550630295248095368685433469157357619776197791509144128917834187623980835013526302645914256572723388671875E-139 +1.679469026891772374406259677242725364666738436414103098450425902752746232059935354332528029088945902807028755111364186789719980014442171117873012045618112177324718999383698760796164132389117501255209997873766136084899758202608382550577458941622747440951401925688091035646093785480157884682095730966289309987113104557909108674216433162475203832997294739470817148685455322265625E-139 +3.358938053783544189436964514469944982511078213108168393665486710474975393755995718194177177919018935400940730190643121466069715841176733229791416949338524818187075779361045660497768840869631690370114425764887551561307939025423157695088623339107460879526292126134476398974910126059049619073737086693831471523955239558301828825783566837524796167002705260529182851314544677734375E-139 +3.35893805378354474881251935448545072933347687282820619690085180550549246411987070866505605817789180561405751022272837357943996002888434223574602409123622435464943799876739752159232826477823500251041999574753227216979951640521676510115491788324549488190280385137618207129218757096031576936419146193257861997422620911581821734843286632495040766599458947894163429737091064453125E-139 +6.71787610756708837887392902893988996502215642621633678733097342094995078751199143638835435583803787080188146038128624293213943168235346645958283389867704963637415155872209132099553768173926338074022885152977510312261587805084631539017724667821492175905258425226895279794982025211809923814747417338766294304791047911660365765156713367504959233400541052105836570262908935546875E-139 +6.7178761075670894976250387089709014586669537456564123938017036110109849282397414173301121163557836112281150204454567471588799200577686844714920481824724487092988759975347950431846565295564700050208399914950645443395990328104335302023098357664909897638056077027523641425843751419206315387283829238651572399484524182316364346968657326499008153319891789578832685947418212890625E-139 +1.34357522151341767577478580578797799300443128524326735746619468418999015750239828727767087116760757416037629207625724858642788633647069329191656677973540992727483031174441826419910753634785267614804577030595502062452317561016926307803544933564298435181051685045379055958996405042361984762949483467753258860958209582332073153031342673500991846680108210421167314052581787109375E-138 +1.3435752215134178995250077417941802917333907491312824787603407222021969856479482834660224232711567222456230040890913494317759840115537368942984096364944897418597751995069590086369313059112940010041679982990129088679198065620867060404619671532981979527611215405504728285168750283841263077456765847730314479896904836463272869393731465299801630663978357915766537189483642578125E-138 +2.6871504430268353515495716115759559860088625704865347149323893683799803150047965745553417423352151483207525841525144971728557726729413865838331335594708198545496606234888365283982150726957053522960915406119100412490463512203385261560708986712859687036210337009075811191799281008472396952589896693550651772191641916466414630606268534700198369336021642084233462810516357421875E-138 +2.687150443026835799050015483588360583466781498262564957520681444404393971295896566932044846542313444491246008178182698863551968023107473788596819272988979483719550399013918017273862611822588002008335996598025817735839613124173412080923934306596395905522243081100945657033750056768252615491353169546062895979380967292654573878746293059960326132795671583153307437896728515625E-138 +5.374300886053670703099143223151911972017725140973069429864778736759960630009593149110683484670430296641505168305028994345711545345882773167666267118941639709099321246977673056796430145391410704592183081223820082498092702440677052312141797342571937407242067401815162238359856201694479390517979338710130354438328383293282926121253706940039673867204328416846692562103271484375E-138 +5.37430088605367159810003096717672116693356299652512991504136288880878794259179313386408969308462688898249201635636539772710393604621494757719363854597795896743910079802783603454772522364517600401667199319605163547167922624834682416184786861319279181104448616220189131406750011353650523098270633909212579195876193458530914775749258611992065226559134316630661487579345703125E-138 +1.074860177210734140619828644630382394403545028194613885972955747351992126001918629822136696934086059328301033661005798869142309069176554633533253423788327941819864249395534611359286029078282140918436616244764016499618540488135410462428359468514387481448413480363032447671971240338895878103595867742026070887665676658656585224250741388007934773440865683369338512420654296875E-137 +1.07486017721073431962000619343534423338671259930502598300827257776175758851835862677281793861692537779649840327127307954542078720924298951543872770919559179348782015960556720690954504472903520080333439863921032709433584524966936483236957372263855836220889723244037826281350002270730104619654126781842515839175238691706182955149851722398413045311826863326132297515869140625E-137 +2.14972035442146828123965728926076478880709005638922777194591149470398425200383725964427339386817211865660206732201159773828461813835310926706650684757665588363972849879106922271857205815656428183687323248952803299923708097627082092485671893702877496289682696072606489534394248067779175620719173548405214177533135331731317044850148277601586954688173136673867702484130859375E-137 +2.1497203544214686392400123868706884667734251986100519660165451555235151770367172535456358772338507555929968065425461590908415744184859790308774554183911835869756403192111344138190900894580704016066687972784206541886716904993387296647391474452771167244177944648807565256270000454146020923930825356368503167835047738341236591029970344479682609062365372665226459503173828125E-137 +4.2994407088429365624793145785215295776141801127784555438918229894079685040076745192885467877363442373132041346440231954765692362767062185341330136951533117672794569975821384454371441163131285636737464649790560659984741619525416418497134378740575499257936539214521297906878849613555835124143834709681042835506627066346263408970029655520317390937634627334773540496826171875E-137 +4.299440708842937278480024773741376933546850397220103932033090311047030354073434507091271754467701511185993613085092318181683148836971958061754910836782367173951280638422268827638180178916140803213337594556841308377343380998677459329478294890554233448835588929761513051254000090829204184786165071273700633567009547668247318205994068895936521812473074533045291900634765625E-137 +8.598881417685873124958629157043059155228360225556911087783645978815937008015349038577093575472688474626408269288046390953138472553412437068266027390306623534558913995164276890874288232626257127347492929958112131996948323905083283699426875748115099851587307842904259581375769922711167024828766941936208567101325413269252681794005931104063478187526925466954708099365234375E-137 +8.59888141768587455696004954748275386709370079444020786406618062209406070814686901418254350893540302237198722617018463636336629767394391612350982167356473434790256127684453765527636035783228160642667518911368261675468676199735491865895658978110846689767117785952302610250800018165840836957233014254740126713401909533649463641198813779187304362494614906609058380126953125E-137 +1.719776283537174624991725831408611831045672045111382217556729195763187401603069807715418715094537694925281653857609278190627694510682487413653205478061324706911782799032855378174857646525251425469498585991622426399389664781016656739885375149623019970317461568580851916275153984542233404965753388387241713420265082653850536358801186220812695637505385093390941619873046875E-136 +1.71977628353717491139200990949655077341874015888804157281323612441881214162937380283650870178708060447439744523403692727267325953478878322470196433471294686958051225536890753105527207156645632128533503782273652335093735239947098373179131795622169337953423557190460522050160003633168167391446602850948025342680381906729892728239762755837460872498922981321811676025390625E-136 +3.43955256707434924998345166281722366209134409022276443511345839152637480320613961543083743018907538985056330771521855638125538902136497482730641095612264941382356559806571075634971529305050285093899717198324485279877932956203331347977075029924603994063492313716170383255030796908446680993150677677448342684053016530770107271760237244162539127501077018678188323974609375E-136 +3.4395525670743498227840198189931015468374803177760831456264722488376242832587476056730174035741612089487948904680738545453465190695775664494039286694258937391610245107378150621105441431329126425706700756454730467018747047989419674635826359124433867590684711438092104410032000726633633478289320570189605068536076381345978545647952551167492174499784596264362335205078125E-136 +6.8791051341486984999669033256344473241826881804455288702269167830527496064122792308616748603781507797011266154304371127625107780427299496546128219122452988276471311961314215126994305861010057018779943439664897055975586591240666269595415005984920798812698462743234076651006159381689336198630135535489668536810603306154021454352047448832507825500215403735637664794921875E-136 +6.879105134148699645568039637986203093674960635552166291252944497675248566517495211346034807148322417897589780936147709090693038139155132898807857338851787478322049021475630124221088286265825285141340151290946093403749409597883934927165271824886773518136942287618420882006400145326726695657864114037921013707215276269195709129590510233498434899956919252872467041015625E-136 +1.3758210268297396999933806651268894648365376360891057740453833566105499212824558461723349720756301559402253230860874225525021556085459899309225643824490597655294262392262843025398861172202011403755988687932979411195117318248133253919083001196984159762539692548646815330201231876337867239726027107097933707362120661230804290870409489766501565100043080747127532958984375E-135 +1.375821026829739929113607927597240618734992127110433258250588899535049713303499042269206961429664483579517956187229541818138607627831026579761571467770357495664409804295126024844217657253165057028268030258189218680749881919576786985433054364977354703627388457523684176401280029065345339131572822807584202741443055253839141825918102046699686979991383850574493408203125E-135 +2.751642053659479399986761330253778929673075272178211548090766713221099842564911692344669944151260311880450646172174845105004311217091979861845128764898119531058852478452568605079772234440402280751197737586595882239023463649626650783816600239396831952507938509729363066040246375267573447945205421419586741472424132246160858174081897953300313020008616149425506591796875E-135 +2.75164205365947985822721585519448123746998425422086651650117779907009942660699808453841392285932896715903591237445908363627721525566205315952314293554071499132881960859025204968843531450633011405653606051637843736149976383915357397086610872995470940725477691504736835280256005813069067826314564561516840548288611050767828365183620409339937395998276770114898681640625E-135 +5.50328410731895879997352266050755785934615054435642309618153342644219968512982338468933988830252062376090129234434969021000862243418395972369025752979623906211770495690513721015954446888080456150239547517319176447804692729925330156763320047879366390501587701945872613208049275053514689589041084283917348294484826449232171634816379590660062604001723229885101318359375E-135 +5.5032841073189597164544317103889624749399685084417330330023555981401988532139961690768278457186579343180718247489181672725544305113241063190462858710814299826576392171805040993768706290126602281130721210327568747229995276783071479417322174599094188145095538300947367056051201162613813565262912912303368109657722210153565673036724081867987479199655354022979736328125E-135 +1.10065682146379175999470453210151157186923010887128461923630668528843993702596467693786797766050412475218025846886993804200172448683679194473805150595924781242354099138102744203190889377616091230047909503463835289560938545985066031352664009575873278100317540389174522641609855010702937917808216856783469658896965289846434326963275918132012520800344645977020263671875E-134 +1.1006568214637919432908863420777924949879937016883466066004711196280397706427992338153655691437315868636143649497836334545108861022648212638092571742162859965315278434361008198753741258025320456226144242065513749445999055356614295883464434919818837629019107660189473411210240232522762713052582582460673621931544442030713134607344816373597495839931070804595947265625E-134 +2.2013136429275835199894090642030231437384602177425692384726133705768798740519293538757359553210082495043605169377398760840034489736735838894761030119184956248470819827620548840638177875523218246009581900692767057912187709197013206270532801915174655620063508077834904528321971002140587583561643371356693931779393057969286865392655183626402504160068929195404052734375E-134 +2.201313642927583886581772684155584989975987403376693213200942239256079541285598467630731138287463173727228729899567266909021772204529642527618514348432571993063055686872201639750748251605064091245228848413102749889199811071322859176692886983963767525803821532037894682242048046504552542610516516492134724386308888406142626921468963274719499167986214160919189453125E-134 +4.402627285855167039978818128406046287476920435485138476945226741153759748103858707751471910642016499008721033875479752168006897947347167778952206023836991249694163965524109768127635575104643649201916380138553411582437541839402641254106560383034931124012701615566980905664394200428117516712328674271338786355878611593857373078531036725280500832013785839080810546875E-134 +4.40262728585516777316354536831116997995197480675338642640188447851215908257119693526146227657492634745445745979913453381804354440905928505523702869686514398612611137374440327950149650321012818249045769682620549977839962214264571835338577396792753505160764306407578936448409609300910508522103303298426944877261777681228525384293792654943899833597242832183837890625E-134 +8.80525457171033407995763625681209257495384087097027695389045348230751949620771741550294382128403299801744206775095950433601379589469433555790441204767398249938832793104821953625527115020928729840383276027710682316487508367880528250821312076606986224802540323113396181132878840085623503342465734854267757271175722318771474615706207345056100166402757167816162109375E-134 +8.8052545717103355463270907366223399599039496135067728528037689570243181651423938705229245531498526949089149195982690676360870888181185701104740573937302879722522227474888065590029930064202563649809153936524109995567992442852914367067715479358550701032152861281515787289681921860182101704420660659685388975452355536245705076858758530988779966719448566436767578125E-134 +1.76105091434206681599152725136241851499076817419405539077809069646150389924154348310058876425680659960348841355019190086720275917893886711158088240953479649987766558620964390725105423004185745968076655205542136463297501673576105650164262415321397244960508064622679236226575768017124700668493146970853551454235144463754294923141241469011220033280551433563232421875E-133 +1.7610509143420671092654181473244679919807899227013545705607537914048636330284787741045849106299705389817829839196538135272174177636237140220948114787460575944504445494977613118005986012840512729961830787304821999113598488570582873413543095871710140206430572256303157457936384372036420340884132131937077795090471107249141015371751706197755993343889713287353515625E-133 +3.5221018286841336319830545027248370299815363483881107815561813929230077984830869662011775285136131992069768271003838017344055183578777342231617648190695929997553311724192878145021084600837149193615331041108427292659500334715221130032852483064279448992101612924535847245315153603424940133698629394170710290847028892750858984628248293802244006656110286712646484375E-133 +3.522101828684134218530836294648935983961579845402709141121507582809727266056957548209169821259941077963565967839307627054434835527247428044189622957492115188900889098995522623601197202568102545992366157460964399822719697714116574682708619174342028041286114451260631491587276874407284068176826426387415559018094221449828203074350341239551198668777942657470703125E-133 +7.044203657368267263966109005449674059963072696776221563112362785846015596966173932402355057027226398413953654200767603468811036715755468446323529638139185999510662344838575629004216920167429838723066208221685458531900066943044226006570496612855889798420322584907169449063030720684988026739725878834142058169405778550171796925649658760448801331222057342529296875E-133 +7.04420365736826843706167258929787196792315969080541828224301516561945453211391509641833964251988215592713193567861525410886967105449485608837924591498423037780177819799104524720239440513620509198473231492192879964543939542823314936541723834868405608257222890252126298317455374881456813635365285277483111803618844289965640614870068247910239733755588531494140625E-133 +1.408840731473653452793221801089934811992614539355244312622472557169203119393234786480471011405445279682790730840153520693762207343151093689264705927627837199902132468967715125800843384033485967744613241644337091706380013388608845201314099322571177959684064516981433889812606144136997605347945175766828411633881155710034359385129931752089760266244411468505859375E-132 +1.40884073147365368741233451785957439358463193816108365644860303312389090642278301928366792850397643118542638713572305082177393421089897121767584918299684607556035563959820904944047888102724101839694646298438575992908787908564662987308344766973681121651444578050425259663491074976291362727073057055496622360723768857993128122974013649582047946751117706298828125E-132 +2.81768146294730690558644360217986962398522907871048862524494511433840623878646957296094202281089055936558146168030704138752441468630218737852941185525567439980426493793543025160168676806697193548922648328867418341276002677721769040262819864514235591936812903396286777962521228827399521069589035153365682326776231142006871877025986350417952053248882293701171875E-132 +2.8176814629473073748246690357191487871692638763221673128972060662477818128455660385673358570079528623708527742714461016435478684217979424353516983659936921511207112791964180988809577620544820367938929259687715198581757581712932597461668953394736224330288915610085051932698214995258272545414611411099324472144753771598625624594802729916409589350223541259765625E-132 +5.6353629258946138111728872043597392479704581574209772504898902286768124775729391459218840456217811187311629233606140827750488293726043747570588237105113487996085298758708605032033735361339438709784529665773483668255200535544353808052563972902847118387362580679257355592504245765479904213917807030673136465355246228401374375405197270083590410649776458740234375E-132 +5.635362925894614749649338071438297574338527752644334625794412132495563625691132077134671714015905724741705548542892203287095736843595884870703396731987384302241422558392836197761915524108964073587785851937543039716351516342586519492333790678947244866057783122017010386539642999051654509082922282219864894428950754319725124918960545983281917870044708251953125E-132 +1.1270725851789227622345774408719478495940916314841954500979780457353624955145878291843768091243562237462325846721228165550097658745208749514117647421022697599217059751741721006406747072267887741956905933154696733651040107108870761610512794580569423677472516135851471118500849153095980842783561406134627293071049245680274875081039454016718082129955291748046875E-131 +1.127072585178922949929867614287659514867705550528866925158882426499112725138226415426934342803181144948341109708578440657419147368719176974140679346397476860448284511678567239552383104821792814717557170387508607943270303268517303898466758135789448973211556624403402077307928599810330901816584456443972978885790150863945024983792109196656383574008941650390625E-131 +2.254145170357845524469154881743895699188183262968390900195956091470724991029175658368753618248712447492465169344245633110019531749041749902823529484204539519843411950348344201281349414453577548391381186630939346730208021421774152322102558916113884735494503227170294223700169830619196168556712281226925458614209849136054975016207890803343616425991058349609375E-131 +2.25414517035784589985973522857531902973541110105773385031776485299822545027645283085386868560636228989668221941715688131483829473743835394828135869279495372089656902335713447910476620964358562943511434077501721588654060653703460779693351627157889794642311324880680415461585719962066180363316891288794595777158030172789004996758421839331276714801788330078125E-131 +4.50829034071569104893830976348779139837636652593678180039191218294144998205835131673750723649742489498493033868849126622003906349808349980564705896840907903968682390069668840256269882890715509678276237326187869346041604284354830464420511783222776947098900645434058844740033966123839233711342456245385091722841969827210995003241578160668723285198211669921875E-131 +4.5082903407156917997194704571506380594708222021154677006355297059964509005529056617077373712127245797933644388343137626296765894748767078965627173855899074417931380467142689582095324192871712588702286815500344317730812130740692155938670325431577958928462264976136083092317143992413236072663378257758919155431606034557800999351684367866255342960357666015625E-131 +9.0165806814313820978766195269755827967527330518735636007838243658828999641167026334750144729948497899698606773769825324400781269961669996112941179368181580793736478013933768051253976578143101935655247465237573869208320856870966092884102356644555389419780129086811768948006793224767846742268491249077018344568393965442199000648315632133744657039642333984375E-131 +9.016580681431383599438940914301276118941644404230935401271059411992901801105811323415474742425449159586728877668627525259353178949753415793125434771179814883586276093428537916419064838574342517740457363100068863546162426148138431187734065086315591785692452995227216618463428798482647214532675651551783831086321206911560199870336873573251068592071533203125E-131 +1.8033161362862764195753239053951165593505466103747127201567648731765799928233405266950028945989699579939721354753965064880156253992333999222588235873636316158747295602786753610250795315628620387131049493047514773841664171374193218576820471328911077883956025817362353789601358644953569348453698249815403668913678793088439800129663126426748931407928466796875E-130 +1.803316136286276719887788182860255223788328880846187080254211882398580360221162264683094948485089831917345775533725505051870635789950683158625086954235962976717255218685707583283812967714868503548091472620013772709232485229627686237546813017263118357138490599045443323692685759696529442906535130310356766217264241382312039974067374714650213718414306640625E-130 +3.606632272572552839150647810790233118701093220749425440313529746353159985646681053390005789197939915987944270950793012976031250798466799844517647174727263231749459120557350722050159063125724077426209898609502954768332834274838643715364094265782215576791205163472470757920271728990713869690739649963080733782735758617687960025932625285349786281585693359375E-130 +3.60663227257255343977557636572051044757665776169237416050842376479716072044232452936618989697017966383469155106745101010374127157990136631725017390847192595343451043737141516656762593542973700709618294524002754541846497045925537247509362603452623671427698119809088664738537151939305888581307026062071353243452848276462407994813474942930042743682861328125E-130 +7.21326454514510567830129562158046623740218644149885088062705949270631997129336210678001157839587983197588854190158602595206250159693359968903529434945452646349891824111470144410031812625144815485241979721900590953666566854967728743072818853156443115358241032694494151584054345798142773938147929992616146756547151723537592005186525057069957256317138671875E-130 +7.2132645451451068795511527314410208951533155233847483210168475295943214408846490587323797939403593276693831021349020202074825431598027326345003478169438519068690208747428303331352518708594740141923658904800550908369299409185107449501872520690524734285539623961817732947707430387861177716261405212414270648690569655292481598962694988586008548736572265625E-130 +1.44265290902902113566025912431609324748043728829977017612541189854126399425867242135600231567917596639517770838031720519041250031938671993780705886989090529269978364822294028882006362525028963097048395944380118190733313370993545748614563770631288623071648206538898830316810869159628554787629585998523229351309430344707518401037305011413991451263427734375E-129 +1.4426529090290213759102305462882041790306631046769496642033695059188642881769298117464759587880718655338766204269804040414965086319605465269000695633887703813738041749485660666270503741718948028384731780960110181673859881837021489900374504138104946857107924792363546589541486077572235543252281042482854129738113931058496319792538997717201709747314453125E-129 +2.8853058180580422713205182486321864949608745765995403522508237970825279885173448427120046313583519327903554167606344103808250006387734398756141177397818105853995672964458805776401272505005792619409679188876023638146662674198709149722912754126257724614329641307779766063362173831925710957525917199704645870261886068941503680207461002282798290252685546875E-129 +2.885305818058042751820461092576408358061326209353899328406739011837728576353859623492951917576143731067753240853960808082993017263921093053800139126777540762747608349897132133254100748343789605676946356192022036334771976367404297980074900827620989371421584958472709317908297215514447108650456208496570825947622786211699263958507799543440341949462890625E-129 +5.770611636116084542641036497264372989921749153199080704501647594165055977034689685424009262716703865580710833521268820761650001277546879751228235479563621170799134592891761155280254501001158523881935837775204727629332534839741829944582550825251544922865928261555953212672434766385142191505183439940929174052377213788300736041492200456559658050537109375E-129 +5.77061163611608550364092218515281671612265241870779865681347802367545715270771924698590383515228746213550648170792161616598603452784218610760027825355508152549521669979426426650820149668757921135389271238404407266954395273480859596014980165524197874284316991694541863581659443102889421730091241699314165189524557242339852791701559908688068389892578125E-129 +1.154122327223216908528207299452874597984349830639816140900329518833011195406937937084801852543340773116142166704253764152330000255509375950245647095912724234159826918578352231056050900200231704776387167555040945525866506967948365988916510165050308984573185652311190642534486953277028438301036687988185834810475442757660147208298440091311931610107421875E-128 +1.15412232722321710072818443703056334322453048374155973136269560473509143054154384939718076703045749242710129634158432323319720690556843722152005565071101630509904333995885285330164029933751584227077854247680881453390879054696171919202996033104839574856863398338908372716331888620577884346018248339862833037904911448467970558340311981737613677978515625E-128 +2.30824465444643381705641459890574919596869966127963228180065903766602239081387587416960370508668154623228433340850752830466000051101875190049129419182544846831965383715670446211210180040046340955277433511008189105173301393589673197783302033010061796914637130462238128506897390655405687660207337597637166962095088551532029441659688018262386322021484375E-128 +2.3082446544464342014563688740611266864490609674831194627253912094701828610830876987943615340609149848542025926831686464663944138111368744430401113014220326101980866799177057066032805986750316845415570849536176290678175810939234383840599206620967914971372679667781674543266377724115576869203649667972566607580982289693594111668062396347522735595703125E-128 +4.6164893088928676341128291978114983919373993225592645636013180753320447816277517483392074101733630924645686668170150566093200010220375038009825883836508969366393076743134089242242036008009268191055486702201637821034660278717934639556660406602012359382927426092447625701379478131081137532041467519527433392419017710306405888331937603652477264404296875E-128 +4.616489308892868402912737748122253372898121934966238925450782418940365722166175397588723068121829969708405185366337292932788827622273748886080222602844065220396173359835411413206561197350063369083114169907235258135635162187846876768119841324193582994274535933556334908653275544823115373840729933594513321516196457938718822333612479269504547119140625E-128 +9.232978617785735268225658395622996783874798645118529127202636150664089563255503496678414820346726184929137333634030113218640002044075007601965176767301793873278615348626817848448407201601853638211097340440327564206932055743586927911332081320402471876585485218489525140275895626216227506408293503905486678483803542061281177666387520730495452880859375E-128 +9.23297861778573680582547549624450674579624386993247785090156483788073144433235079517744613624365993941681037073267458586557765524454749777216044520568813044079234671967082282641312239470012673816622833981447051627127032437569375353623968264838716598854907186711266981730655108964623074768145986718902664303239291587743764466722495853900909423828125E-128 +1.846595723557147053645131679124599356774959729023705825440527230132817912651100699335682964069345236985827466726806022643728000408815001520393035353460358774655723069725363569689681440320370727642219468088065512841386411148717385582266416264080494375317097043697905028055179125243245501281658700781097335696760708412256235533277504146099090576171875E-127 +1.84659572355714736116509509924890134915924877398649557018031296757614628886647015903548922724873198788336207414653491717311553104890949955443208904113762608815846934393416456528262447894002534763324566796289410325425406487513875070724793652967743319770981437342253396346131021792924614953629197343780532860647858317548752893344499170780181884765625E-127 +3.69319144711429410729026335824919871354991945804741165088105446026563582530220139867136592813869047397165493345361204528745600081763000304078607070692071754931144613945072713937936288064074145528443893617613102568277282229743477116453283252816098875063419408739581005611035825048649100256331740156219467139352141682451247106655500829219818115234375E-127 +3.6931914471142947223301901984978026983184975479729911403606259351522925777329403180709784544974639757667241482930698343462310620978189991088641780822752521763169386878683291305652489578800506952664913359257882065085081297502775014144958730593548663954196287468450679269226204358584922990725839468756106572129571663509750578668899834156036376953125E-127 +7.3863828942285882145805267164983974270998389160948233017621089205312716506044027973427318562773809479433098669072240905749120016352600060815721414138414350986228922789014542787587257612814829105688778723522620513655456445948695423290656650563219775012683881747916201122207165009729820051266348031243893427870428336490249421331100165843963623046875E-127 +7.386382894228589444660380396995605396636995095945982280721251870304585155465880636141956908994927951533448296586139668692462124195637998217728356164550504352633877375736658261130497915760101390532982671851576413017016259500555002828991746118709732790839257493690135853845240871716984598145167893751221314425914332701950115733779966831207275390625E-127 +1.4772765788457176429161053432996794854199677832189646603524217841062543301208805594685463712554761895886619733814448181149824003270520012163144282827682870197245784557802908557517451522562965821137755744704524102731091289189739084658131330112643955002536776349583240224441433001945964010253269606248778685574085667298049884266220033168792724609375E-126 +1.477276578845717888932076079399121079327399019189196456144250374060917031093176127228391381798985590306689659317227933738492424839127599643545671232910100870526775475147331652226099583152020278106596534370315282603403251900111000565798349223741946558167851498738027170769048174343396919629033578750244262885182866540390023146755993366241455078125E-126 +2.954553157691435285832210686599358970839935566437929320704843568212508660241761118937092742510952379177323946762889636229964800654104002432628856565536574039449156911560581711503490304512593164227551148940904820546218257837947816931626266022528791000507355269916648044888286600389192802050653921249755737114817133459609976853244006633758544921875E-126 +2.95455315769143577786415215879824215865479803837839291228850074812183406218635225445678276359797118061337931863445586747698484967825519928709134246582020174105355095029466330445219916630404055621319306874063056520680650380022200113159669844748389311633570299747605434153809634868679383925806715750048852577036573308078004629351198673248291015625E-126 +5.90910631538287057166442137319871794167987113287585864140968713642501732048352223787418548502190475835464789352577927245992960130820800486525771313107314807889831382312116342300698060902518632845510229788180964109243651567589563386325253204505758200101471053983329608977657320077838560410130784249951147422963426691921995370648801326751708984375E-126 +5.9091063153828715557283043175964843173095960767567858245770014962436681243727045089135655271959423612267586372689117349539696993565103985741826849316404034821071019005893266089043983326080811124263861374812611304136130076004440022631933968949677862326714059949521086830761926973735876785161343150009770515407314661615600925870239734649658203125E-126 +1.18182126307657411433288427463974358833597422657517172828193742728500346409670444757483709700438095167092957870515585449198592026164160097305154262621462961577966276462423268460139612180503726569102045957636192821848730313517912677265050640901151640020294210796665921795531464015567712082026156849990229484592685338384399074129760265350341796875E-125 +1.1818212630765743111456608635192968634619192153513571649154002992487336248745409017827131054391884722453517274537823469907939398713020797148365369863280806964214203801178653217808796665216162224852772274962522260827226015200888004526386793789935572465342811989904217366152385394747175357032268630001954103081462932323120185174047946929931640625E-125 +2.3636425261531482286657685492794871766719484531503434565638748545700069281934088951496741940087619033418591574103117089839718405232832019461030852524292592315593255292484653692027922436100745313820409191527238564369746062703582535453010128180230328004058842159333184359106292803113542416405231369998045896918537067676879814825952053070068359375E-125 +2.363642526153148622291321727038593726923838430702714329830800598497467249749081803565426210878376944490703454907564693981587879742604159429673073972656161392842840760235730643561759333043232444970554454992504452165445203040177600905277358757987114493068562397980843473230477078949435071406453726000390820616292586464624037034809589385986328125E-125 +4.727285052306296457331537098558974353343896906300686913127749709140013856386817790299348388017523806683718314820623417967943681046566403892206170504858518463118651058496930738405584487220149062764081838305447712873949212540716507090602025636046065600811768431866636871821258560622708483281046273999609179383707413535375962965190410614013671875E-125 +4.72728505230629724458264345407718745384767686140542865966160119699493449949816360713085242175675388898140690981512938796317575948520831885934614794531232278568568152047146128712351866608646488994110890998500890433089040608035520181055471751597422898613712479596168694646095415789887014281290745200078164123258517292924807406961917877197265625E-125 +9.45457010461259291466307419711794870668779381260137382625549941828002771277363558059869677603504761336743662964124683593588736209313280778441234100971703692623730211699386147681116897444029812552816367661089542574789842508143301418120405127209213120162353686373327374364251712124541696656209254799921835876741482707075192593038082122802734375E-125 +9.4545701046125944891652869081543749076953537228108573193232023939898689989963272142617048435135077779628138196302587759263515189704166377186922958906246455713713630409429225742470373321729297798822178199700178086617808121607104036211094350319484579722742495919233738929219083157977402856258149040015632824651703458584961481392383575439453125E-125 +1.89091402092251858293261483942358974133755876252027476525109988365600554255472711611973935520700952267348732592824936718717747241862656155688246820194340738524746042339877229536223379488805962510563273532217908514957968501628660283624081025441842624032470737274665474872850342424908339331241850959984367175348296541415038518607616424560546875E-124 +1.8909140209225188978330573816308749815390707445621714638646404787979737997992654428523409687027015555925627639260517551852703037940833275437384591781249291142742726081885845148494074664345859559764435639940035617323561624321420807242218870063896915944548499183846747785843816631595480571251629808003126564930340691716992296278476715087890625E-124 +3.7818280418450371658652296788471794826751175250405495305021997673120110851094542322394787104140190453469746518564987343743549448372531231137649364038868147704949208467975445907244675897761192502112654706443581702991593700325732056724816205088368524806494147454933094974570068484981667866248370191996873435069659308283007703721523284912109375E-124 +3.781828041845037795666114763261749963078141489124342927729280957595947599598530885704681937405403111185125527852103510370540607588166655087476918356249858228548545216377169029698814932869171911952887127988007123464712324864284161448443774012779383188909699836769349557168763326319096114250325961600625312986068138343398459255695343017578125E-124 +7.563656083690074331730459357694358965350235050081099061004399534624022170218908464478957420828038090693949303712997468748709889674506246227529872807773629540989841693595089181448935179552238500422530941288716340598318740065146411344963241017673704961298829490986618994914013696996333573249674038399374687013931861656601540744304656982421875E-124 +7.56365608369007559133222952652349992615628297824868585545856191519189519919706177140936387481080622237025105570420702074108121517633331017495383671249971645709709043275433805939762986573834382390577425597601424692942464972856832289688754802555876637781939967353869911433752665263819222850065192320125062597213627668679691851139068603515625E-124 +1.512731216738014866346091871538871793070047010016219812200879906924804434043781692895791484165607618138789860742599493749741977934901249245505974561554725908197968338719017836289787035910447700084506188257743268119663748013029282268992648203534740992259765898197323798982802739399266714649934807679874937402786372331320308148860931396484375E-123 +1.51273121673801511826644590530469998523125659564973717109171238303837903983941235428187277496216124447405021114084140414821624303526666203499076734249994329141941808655086761187952597314766876478115485119520284938588492994571366457937750960511175327556387993470773982286750533052763844570013038464025012519442725533735938370227813720703125E-123 +3.02546243347602973269218374307774358614009402003243962440175981384960886808756338579158296833121523627757972148519898749948395586980249849101194912310945181639593667743803567257957407182089540016901237651548653623932749602605856453798529640706948198451953179639464759796560547879853342929986961535974987480557274466264061629772186279296875E-123 +3.0254624334760302365328918106093999704625131912994743421834247660767580796788247085637455499243224889481004222816828082964324860705333240699815346849998865828388361731017352237590519462953375295623097023904056987717698598914273291587550192102235065511277598694154796457350106610552768914002607692805002503888545106747187674045562744140625E-123 +6.0509248669520594653843674861554871722801880400648792488035196276992177361751267715831659366624304725551594429703979749989679117396049969820238982462189036327918733548760713451591481436417908003380247530309730724786549920521171290759705928141389639690390635927892951959312109575970668585997392307194997496111454893252812325954437255859375E-123 +6.050924866952060473065783621218799940925026382598948684366849532153516159357649417127491099848644977896200844563365616592864972141066648139963069369999773165677672346203470447518103892590675059124619404780811397543539719782854658317510038420447013102255519738830959291470021322110553782800521538561000500777709021349437534809112548828125E-123 +1.2101849733904118930768734972310974344560376080129758497607039255398435472350253543166331873324860945110318885940795949997935823479209993964047796492437807265583746709752142690318296287283581600676049506061946144957309984104234258151941185628277927938078127185578590391862421915194133717199478461438999499222290978650562465190887451171875E-122 +1.210184973390412094613156724243759988185005276519789736873369906430703231871529883425498219969728995579240168912673123318572994428213329627992613873999954633135534469240694089503620778518135011824923880956162279508707943956570931663502007684089402620451103947766191858294004264422110756560104307712200100155541804269887506961822509765625E-122 +2.420369946780823786153746994462194868912075216025951699521407851079687094470050708633266374664972189022063777188159189999587164695841998792809559298487561453116749341950428538063659257456716320135209901212389228991461996820846851630388237125655585587615625437115718078372484383038826743439895692287799899844458195730112493038177490234375E-122 +2.42036994678082418922631344848751997637001055303957947374673981286140646374305976685099643993945799115848033782534624663714598885642665925598522774799990926627106893848138817900724155703627002364984776191232455901741588791314186332700401536817880524090220789553238371658800852884422151312020861542440020031108360853977501392364501953125E-122 +4.84073989356164757230749398892438973782415043205190339904281570215937418894010141726653274932994437804412755437631837999917432939168399758561911859697512290623349868390085707612731851491343264027041980242477845798292399364169370326077647425131117117523125087423143615674496876607765348687979138457559979968891639146022498607635498046875E-122 +4.8407398935616483784526268969750399527400211060791589474934796257228129274861195337019928798789159823169606756506924932742919777128533185119704554959998185325421378769627763580144831140725400472996955238246491180348317758262837266540080307363576104818044157910647674331760170576884430262404172308488004006221672170795500278472900390625E-122 +9.6814797871232951446149879778487794756483008641038067980856314043187483778802028345330654986598887560882551087526367599983486587833679951712382371939502458124669973678017141522546370298268652805408396048495569159658479872833874065215529485026223423504625017484628723134899375321553069737595827691511995993778327829204499721527099609375E-122 +9.681479787123296756905253793950079905480042212158317894986959251445625854972239067403985759757831964633921351301384986548583955425706637023940910991999637065084275753925552716028966228145080094599391047649298236069663551652567453308016061472715220963608831582129534866352034115376886052480834461697600801244334434159100055694580078125E-122 +1.9362959574246590289229975955697558951296601728207613596171262808637496755760405669066130997319777512176510217505273519996697317566735990342476474387900491624933994735603428304509274059653730561081679209699113831931695974566774813043105897005244684700925003496925744626979875064310613947519165538302399198755665565840899944305419921875E-121 +1.936295957424659351381050758790015981096008442431663578997391850289125170994447813480797151951566392926784270260276997309716791085141327404788182198399927413016855150785110543205793245629016018919878209529859647213932710330513490661603212294543044192721766316425906973270406823075377210496166892339520160248866886831820011138916015625E-121 +3.872591914849318057845995191139511790259320345641522719234252561727499351152081133813226199463955502435302043501054703999339463513347198068495294877580098324986798947120685660901854811930746112216335841939822766386339194913354962608621179401048936940185000699385148925395975012862122789503833107660479839751133113168179988861083984375E-121 +3.87259191484931870276210151758003196219201688486332715799478370057825034198889562696159430390313278585356854052055399461943358217028265480957636439679985482603371030157022108641158649125803203783975641905971929442786542066102698132320642458908608838544353263285181394654081364615075442099233378467904032049773377366364002227783203125E-121 +7.74518382969863611569199038227902358051864069128304543846850512345499870230416226762645239892791100487060408700210940799867892702669439613699058975516019664997359789424137132180370962386149222443267168387964553277267838982670992521724235880209787388037000139877029785079195002572424557900766621532095967950226622633635997772216796875E-121 +7.7451838296986374055242030351600639243840337697266543159895674011565006839777912539231886078062655717071370810411079892388671643405653096191527287935997096520674206031404421728231729825160640756795128381194385888557308413220539626464128491781721767708870652657036278930816272923015088419846675693580806409954675473272800445556640625E-121 +1.54903676593972722313839807645580471610372813825660908769370102469099974046083245352529047978558220097412081740042188159973578540533887922739811795103203932999471957884827426436074192477229844488653433677592910655453567796534198504344847176041957477607400027975405957015839000514484911580153324306419193590045324526727199554443359375E-120 +1.5490367659397274811048406070320127848768067539453308631979134802313001367955582507846377215612531143414274162082215978477734328681130619238305457587199419304134841206280884345646345965032128151359025676238877177711461682644107925292825698356344353541774130531407255786163254584603017683969335138716161281990935094654560089111328125E-120 +3.0980735318794544462767961529116094322074562765132181753874020493819994809216649070505809595711644019482416348008437631994715708106777584547962359020640786599894391576965485287214838495445968897730686735518582131090713559306839700868969435208391495521480005595081191403167800102896982316030664861283838718009064905345439910888671875E-120 +3.098073531879454962209681214064025569753613507890661726395826960462600273591116501569275443122506228682854832416443195695546865736226123847661091517439883860826968241256176869129269193006425630271805135247775435542292336528821585058565139671268870708354826106281451157232650916920603536793867027743232256398187018930912017822265625E-120 +6.196147063758908892553592305823218864414912553026436350774804098763998961843329814101161919142328803896483269601687526398943141621355516909592471804128157319978878315393097057442967699089193779546137347103716426218142711861367940173793887041678299104296001119016238280633560020579396463206132972256767743601812981069087982177734375E-120 +6.19614706375890992441936242812805113950722701578132345279165392092520054718223300313855088624501245736570966483288639139109373147245224769532218303487976772165393648251235373825853838601285126054361027049555087108458467305764317011713027934253774141670965221256290231446530183384120707358773405548646451279637403786182403564453125E-120 +1.239229412751781778510718461164643772882982510605287270154960819752799792368665962820232383828465760779296653920337505279788628324271103381918494360825631463995775663078619411488593539817838755909227469420743285243628542372273588034758777408335659820859200223803247656126712004115879292641226594451353548720362596213817596435546875E-119 +1.23922941275178198488387248562561022790144540315626469055833078418504010943644660062771017724900249147314193296657727827821874629449044953906443660697595354433078729650247074765170767720257025210872205409911017421691693461152863402342605586850754828334193044251258046289306036676824141471754681109729290255927480757236480712890625E-119 +2.47845882550356355702143692232928754576596502121057454030992163950559958473733192564046476765693152155859330784067501055957725664854220676383698872165126292799155132615723882297718707963567751181845493884148657048725708474454717606951755481667131964171840044760649531225342400823175858528245318890270709744072519242763519287109375E-119 +2.4784588255035639697677449712512204558028908063125293811166615683700802188728932012554203544980049829462838659331545565564374925889808990781288732139519070886615745930049414953034153544051405042174441081982203484338338692230572680468521117370150965666838608850251609257861207335364828294350936221945858051185496151447296142578125E-119 +4.9569176510071271140428738446585750915319300424211490806198432790111991694746638512809295353138630431171866156813500211191545132970844135276739774433025258559831026523144776459543741592713550236369098776829731409745141694890943521390351096333426392834368008952129906245068480164635171705649063778054141948814503848552703857421875E-119 +4.956917651007127939535489942502440911605781612625058762233323136740160437745786402510840708996009965892567731866309113112874985177961798156257746427903814177323149186009882990606830708810281008434888216396440696867667738446114536093704223474030193133367721770050321851572241467072965658870187244389171610237099230289459228515625E-119 +9.913835302014254228085747689317150183063860084842298161239686558022398338949327702561859070627726086234373231362700042238309026594168827055347954886605051711966205304628955291908748318542710047273819755365946281949028338978188704278070219266685278566873601790425981249013696032927034341129812755610828389762900769710540771484375E-119 +9.91383530201425587907097988500488182321156322525011752446664627348032087549157280502168141799201993178513546373261822622574997035592359631251549285580762835464629837201976598121366141762056201686977643279288139373533547689222907218740844694806038626673544354010064370314448293414593131774037448877834322047419846057891845703125E-119 +1.982767060402850845617149537863430036612772016968459632247937311604479667789865540512371814125545217246874646272540008447661805318833765411069590977321010342393241060925791058381749663708542009454763951073189256389805667795637740855614043853337055713374720358085196249802739206585406868225962551122165677952580153942108154296875E-118 +1.98276706040285117581419597700097636464231264505002350489332925469606417509831456100433628359840398635702709274652364524514999407118471926250309857116152567092925967440395319624273228352411240337395528655857627874706709537844581443748168938961207725334708870802012874062889658682918626354807489775566864409483969211578369140625E-118 +3.96553412080570169123429907572686007322554403393691926449587462320895933557973108102474362825109043449374929254508001689532361063766753082213918195464202068478648212185158211676349932741708401890952790214637851277961133559127548171122808770667411142674944071617039249960547841317081373645192510224433135590516030788421630859375E-118 +3.9655341208057023516283919540019527292846252901000470097866585093921283501966291220086725671968079727140541854930472904902999881423694385250061971423230513418585193488079063924854645670482248067479105731171525574941341907568916288749633787792241545066941774160402574812577931736583725270961497955113372881896793842315673828125E-118 +7.9310682416114033824685981514537201464510880678738385289917492464179186711594621620494872565021808689874985850901600337906472212753350616442783639092840413695729642437031642335269986548341680378190558042927570255592226711825509634224561754133482228534988814323407849992109568263416274729038502044886627118103206157684326171875E-118 +7.931068241611404703256783908003905458569250580200094019573317018784256700393258244017345134393615945428108370986094580980599976284738877050012394284646102683717038697615812784970929134096449613495821146234305114988268381513783257749926757558448309013388354832080514962515586347316745054192299591022674576379358768463134765625E-118 +1.5862136483222806764937196302907440292902176135747677057983498492835837342318924324098974513004361737974997170180320067581294442550670123288556727818568082739145928487406328467053997309668336075638111608585514051118445342365101926844912350826696445706997762864681569998421913652683254945807700408977325423620641231536865234375E-117 +1.586213648322280940651356781600781091713850116040018803914663403756851340078651648803469026878723189085621674197218916196119995256947775410002478856929220536743407739523162556994185826819289922699164229246861022997653676302756651549985351511689661802677670966416102992503117269463349010838459918204534915275871753692626953125E-117 +3.172427296644561352987439260581488058580435227149535411596699698567167468463784864819794902600872347594999434036064013516258888510134024657711345563713616547829185697481265693410799461933667215127622321717102810223689068473020385368982470165339289141399552572936313999684382730536650989161540081795465084724128246307373046875E-117 +3.17242729664456188130271356320156218342770023208003760782932680751370268015730329760693805375744637817124334839443783239223999051389555082000495771385844107348681547904632511398837165363857984539832845849372204599530735260551330309997070302337932360535534193283220598500623453892669802167691983640906983055174350738525390625E-117 +6.34485459328912270597487852116297611716087045429907082319339939713433493692756972963958980520174469518999886807212802703251777702026804931542269112742723309565837139496253138682159892386733443025524464343420562044737813694604077073796494033067857828279910514587262799936876546107330197832308016359093016944825649261474609375E-117 +6.3448545932891237626054271264031243668554004641600752156586536150274053603146065952138761075148927563424866967888756647844799810277911016400099154277168821469736309580926502279767433072771596907966569169874440919906147052110266061999414060467586472107106838656644119700124690778533960433538396728181396611034870147705078125E-117 +1.26897091865782454119497570423259522343217409085981416463867987942686698738551394592791796104034893903799977361442560540650355540405360986308453822548544661913167427899250627736431978477346688605104892868684112408947562738920815414759298806613571565655982102917452559987375309221466039566461603271818603388965129852294921875E-116 +1.2689709186578247525210854252806248733710800928320150431317307230054810720629213190427752215029785512684973393577751329568959962055582203280019830855433764293947261916185300455953486614554319381593313833974888183981229410422053212399882812093517294421421367731328823940024938155706792086707679345636279322206974029541015625E-116 +2.5379418373156490823899514084651904468643481817196283292773597588537339747710278918558359220806978780759995472288512108130071108081072197261690764509708932382633485579850125547286395695469337721020978573736822481789512547784163082951859761322714313131196420583490511997475061844293207913292320654363720677793025970458984375E-116 +2.537941837315649505042170850561249746742160185664030086263461446010962144125842638085550443005957102536994678715550265913791992411116440656003966171086752858789452383237060091190697322910863876318662766794977636796245882084410642479976562418703458884284273546265764788004987631141358417341535869127255864441394805908203125E-116 +5.075883674631298164779902816930380893728696363439256658554719517707467949542055783711671844161395756151999094457702421626014221616214439452338152901941786476526697115970025109457279139093867544204195714747364496357902509556832616590371952264542862626239284116698102399495012368858641582658464130872744135558605194091796875E-116 +5.07588367463129901008434170112249949348432037132806017252692289202192428825168527617110088601191420507398935743110053182758398482223288131200793234217350571757890476647412018238139464582172775263732553358995527359249176416882128495995312483740691776856854709253152957600997526228271683468307173825451172888278961181640625E-116 +1.015176734926259632955980563386076178745739272687851331710943903541493589908411156742334368832279151230399818891540484325202844323242887890467630580388357295305339423194005021891455827818773508840839142949472899271580501911366523318074390452908572525247856823339620479899002473771728316531692826174548827111721038818359375E-115 +1.01517673492625980201686834022449989869686407426561203450538457840438485765033705523422017720238284101479787148622010636551679696444657626240158646843470114351578095329482403647627892916434555052746510671799105471849835283376425699199062496748138355371370941850630591520199505245654336693661434765090234577655792236328125E-115 +2.03035346985251926591196112677215235749147854537570266342188780708298717981682231348466873766455830246079963778308096865040568864648577578093526116077671459061067884638801004378291165563754701768167828589894579854316100382273304663614878090581714505049571364667924095979800494754345663306338565234909765422344207763671875E-115 +2.0303534698525196040337366804489997973937281485312240690107691568087697153006741104684403544047656820295957429724402127310335939288931525248031729368694022870315619065896480729525578583286911010549302134359821094369967056675285139839812499349627671074274188370126118304039901049130867338732286953018046915531158447265625E-115 +4.0607069397050385318239222535443047149829570907514053268437756141659743596336446269693374753291166049215992755661619373008113772929715515618705223215534291812213576927760200875658233112750940353633565717978915970863220076454660932722975618116342901009914272933584819195960098950869132661267713046981953084468841552734375E-115 +4.060706939705039208067473360897999594787456297062448138021538313617539430601348220936880708809531364059191485944880425462067187857786305049606345873738804574063123813179296145905115716657382202109860426871964218873993411335057027967962499869925534214854837674025223660807980209826173467746457390603609383106231689453125E-115 +8.121413879410077063647844507088609429965914181502810653687551228331948719267289253938674950658233209843198551132323874601622754585943103123741044643106858362442715385552040175131646622550188070726713143595783194172644015290932186544595123623268580201982854586716963839192019790173826532253542609396390616893768310546875E-115 +8.12141387941007841613494672179599918957491259412489627604307662723507886120269644187376141761906272811838297188976085092413437571557261009921269174747760914812624762635859229181023143331476440421972085374392843774798682267011405593592499973985106842970967534805044732161596041965234693549291478120721876621246337890625E-115 +1.624282775882015412729568901417721885993182836300562130737510245666389743853457850787734990131646641968639710226464774920324550917188620624748208928621371672488543077110408035026329324510037614145342628719156638834528803058186437308919024724653716040396570917343392767838403958034765306450708521879278123378753662109375E-114 +1.62428277588201568322698934435919983791498251882497925520861532544701577224053928837475228352381254562367659437795217018482687514311452201984253834949552182962524952527171845836204628666295288084394417074878568754959736453402281118718499994797021368594193506961008946432319208393046938709858295624144375324249267578125E-114 +3.24856555176403082545913780283544377198636567260112426147502049133277948770691570157546998026329328393727942045292954984064910183437724124949641785724274334497708615422081607005265864902007522829068525743831327766905760611637287461783804944930743208079314183468678553567680791606953061290141704375855624675750732421875E-114 +3.2485655517640313664539786887183996758299650376499585104172306508940315444810785767495045670476250912473531887559043403696537502862290440396850766989910436592504990505434369167240925733259057616878883414975713750991947290680456223743699998959404273718838701392201789286463841678609387741971659124828875064849853515625E-114 +6.4971311035280616509182756056708875439727313452022485229500409826655589754138314031509399605265865678745588409058590996812982036687544824989928357144854866899541723084416321401053172980401504565813705148766265553381152122327457492356760988986148641615862836693735710713536158321390612258028340875171124935150146484375E-114 +6.497131103528062732907957377436799351659930075299917020834461301788063088962157153499009134095250182494706377511808680739307500572458088079370153397982087318500998101086873833448185146651811523375776682995142750198389458136091244748739999791880854743767740278440357857292768335721877548394331824965775012969970703125E-114 +1.2994262207056123301836551211341775087945462690404497045900081965331117950827662806301879921053173135749117681811718199362596407337508964997985671428970973379908344616883264280210634596080300913162741029753253110676230424465491498471352197797229728323172567338747142142707231664278122451605668175034224987030029296875E-113 +1.299426220705612546581591475487359870331986015059983404166892260357612617792431430699801826819050036498941275502361736147861500114491617615874030679596417463700199620217374766689637029330362304675155336599028550039677891627218248949747999958376170948753548055688071571458553667144375509678866364993155002593994140625E-113 +2.598852441411224660367310242268355017589092538080899409180016393066223590165532561260375984210634627149823536362343639872519281467501792999597134285794194675981668923376652856042126919216060182632548205950650622135246084893098299694270439559445945664634513467749428428541446332855624490321133635006844997406005859375E-113 +2.59885244141122509316318295097471974066397203011996680833378452071522523558486286139960365363810007299788255100472347229572300022898323523174806135919283492740039924043474953337927405866072460935031067319805710007935578325443649789949599991675234189750709611137614314291710733428875101935773272998631000518798828125E-113 +5.19770488282244932073462048453671003517818507616179881836003278613244718033106512252075196842126925429964707272468727974503856293500358599919426857158838935196333784675330571208425383843212036526509641190130124427049216978619659938854087911889189132926902693549885685708289266571124898064226727001368999481201171875E-113 +5.1977048828224501863263659019494394813279440602399336166675690414304504711697257227992073072762001459957651020094469445914460004579664704634961227183856698548007984808694990667585481173214492187006213463961142001587115665088729957989919998335046837950141922227522862858342146685775020387154654599726200103759765625E-113 +1.03954097656448986414692409690734200703563701523235976367200655722648943606621302450415039368425385085992941454493745594900771258700071719983885371431767787039266756935066114241685076768642407305301928238026024885409843395723931987770817582377837826585380538709977137141657853314224979612845345400273799896240234375E-112 +1.0395409765644900372652731803898878962655888120479867233335138082860900942339451445598414614552400291991530204018893889182892000915932940926992245436771339709601596961738998133517096234642898437401242692792228400317423133017745991597983999667009367590028384445504572571668429337155004077430930919945240020751953125E-112 +2.0790819531289797282938481938146840140712740304647195273440131144529788721324260490083007873685077017198588290898749118980154251740014343996777074286353557407853351387013222848337015353728481461060385647605204977081968679144786397554163516475567565317076107741995427428331570662844995922569069080054759979248046875E-112 +2.079081953128980074530546360779775792531177624095973446667027616572180188467890289119682922910480058398306040803778777836578400183186588185398449087354267941920319392347799626703419246928579687480248538558445680063484626603549198319596799933401873518005676889100914514333685867431000815486186183989048004150390625E-112 +4.158163906257959456587696387629368028142548060929439054688026228905957744264852098016601574737015403439717658179749823796030850348002868799355414857270711481570670277402644569667403070745696292212077129521040995416393735828957279510832703295113513063415221548399085485666314132568999184513813816010951995849609375E-112 +4.15816390625796014906109272155955158506235524819194689333405523314436037693578057823936584582096011679661208160755755567315680036637317637079689817470853588384063878469559925340683849385715937496049707711689136012696925320709839663919359986680374703601135377820182902866737173486200163097237236797809600830078125E-112 +8.31632781251591891317539277525873605628509612185887810937605245781191548852970419603320314947403080687943531635949964759206170069600573759871082971454142296314134055480528913933480614149139258442415425904208199083278747165791455902166540659022702612683044309679817097133262826513799836902762763202190399169921875E-112 +8.3163278125159202981221854431191031701247104963838937866681104662887207538715611564787316916419202335932241632151151113463136007327463527415937963494170717676812775693911985068136769877143187499209941542337827202539385064141967932783871997336074940720227075564036580573347434697240032619447447359561920166015625E-112 +1.66326556250318378263507855505174721125701922437177562187521049156238309770594083920664062989480616137588706327189992951841234013920114751974216594290828459262826811096105782786696122829827851688483085180841639816655749433158291180433308131804540522536608861935963419426652565302759967380552552640438079833984375E-111 +1.6632655625031840596244370886238206340249420992767787573336220932577441507743122312957463383283840467186448326430230222692627201465492705483187592698834143535362555138782397013627353975428637499841988308467565440507877012828393586556774399467214988144045415112807316114669486939448006523889489471912384033203125E-111 +3.3265311250063675652701571101034944225140384487435512437504209831247661954118816784132812597896123227517741265437998590368246802784022950394843318858165691852565362219221156557339224565965570337696617036168327963331149886631658236086661626360908104507321772387192683885330513060551993476110510528087615966796875E-111 +3.326531125006368119248874177247641268049884198553557514667244186515488301548624462591492676656768093437289665286046044538525440293098541096637518539766828707072511027756479402725470795085727499968397661693513088101575402565678717311354879893442997628809083022561463222933897387889601304777897894382476806640625E-111 +6.653062250012735130540314220206988845028076897487102487500841966249532390823763356826562519579224645503548253087599718073649360556804590078968663771633138370513072443844231311467844913193114067539323407233665592666229977326331647217332325272181620901464354477438536777066102612110398695222102105617523193359375E-111 +6.65306225001273623849774835449528253609976839710711502933448837303097660309724892518298535331353618687457933057209208907705088058619708219327503707953365741414502205551295880545094159017145499993679532338702617620315080513135743462270975978688599525761816604512292644586779477577920260955579578876495361328125E-111 +1.330612450002547026108062844041397769005615379497420497500168393249906478164752671365312503915844929100709650617519943614729872111360918015793732754326627674102614488768846262293568982638622813507864681446733118533245995465266329443466465054436324180292870895487707355413220522422079739044420421123504638671875E-110 +1.33061245000254724769954967089905650721995367942142300586689767460619532061944978503659707066270723737491586611441841781541017611723941643865500741590673148282900441110259176109018831803429099998735906467740523524063016102627148692454195195737719905152363320902458528917355895515584052191115915775299072265625E-110 +2.66122490000509405221612568808279553801123075899484099500033678649981295632950534273062500783168985820141930123503988722945974422272183603158746550865325534820522897753769252458713796527724562701572936289346623706649199093053265888693293010887264836058574179097541471082644104484415947808884084224700927734375E-110 +2.6612249000050944953990993417981130144399073588428460117337953492123906412388995700731941413254144747498317322288368356308203522344788328773100148318134629656580088222051835221803766360685819999747181293548104704812603220525429738490839039147543981030472664180491705783471179103116810438223183155059814453125E-110 +5.3224498000101881044322513761655910760224615179896819900006735729996259126590106854612500156633797164028386024700797744589194884454436720631749310173065106964104579550753850491742759305544912540314587257869324741329839818610653177738658602177452967211714835819508294216528820896883189561776816844940185546875E-110 +5.322449800010188990798198683596226028879814717685692023467590698424781282477799140146388282650828949499663464457673671261640704468957665754620029663626925931316017644410367044360753272137163999949436258709620940962520644105085947698167807829508796206094532836098341156694235820623362087644636631011962890625E-110 +1.0644899600020376208864502752331182152044923035979363980001347145999251825318021370922500031326759432805677204940159548917838976890887344126349862034613021392820915910150770098348551861108982508062917451573864948265967963722130635547731720435490593442342967163901658843305764179376637912355363368988037109375E-109 +1.064489960002037798159639736719245205775962943537138404693518139684956256495559828029277656530165789899932692891534734252328140893791533150924005932725385186263203528882073408872150654427432799989887251741924188192504128821017189539633561565901759241218906567219668231338847164124672417528927326202392578125E-109 +2.128979920004075241772900550466236430408984607195872796000269429199850365063604274184500006265351886561135440988031909783567795378177468825269972406922604278564183182030154019669710372221796501612583490314772989653193592744426127109546344087098118688468593432780331768661152835875327582471072673797607421875E-109 +2.12897992000407559631927947343849041155192588707427680938703627936991251299111965605855531306033157979986538578306946850465628178758306630184801186545077037252640705776414681774430130885486559997977450348384837638500825764203437907926712313180351848243781313443933646267769432824934483505785465240478515625E-109 +4.25795984000815048354580110093247286081796921439174559200053885839970073012720854836900001253070377312227088197606381956713559075635493765053994481384520855712836636406030803933942074444359300322516698062954597930638718548885225421909268817419623737693718686556066353732230567175065516494214534759521484375E-109 +4.2579598400081511926385589468769808231038517741485536187740725587398250259822393121171106261206631595997307715661389370093125635751661326036960237309015407450528141155282936354886026177097311999595490069676967527700165152840687581585342462636070369648756262688786729253553886564986896701157093048095703125E-109 +8.5159196800163009670916022018649457216359384287834911840010777167994014602544170967380000250614075462445417639521276391342711815127098753010798896276904171142567327281206160786788414888871860064503339612590919586127743709777045084381853763483924747538743737311213270746446113435013103298842906951904296875E-109 +8.515919680016302385277117893753961646207703548297107237548145117479650051964478624234221252241326319199461543132277874018625127150332265207392047461803081490105628231056587270977205235419462399919098013935393505540033030568137516317068492527214073929751252537757345850710777312997379340231418609619140625E-109 +1.7031839360032601934183204403729891443271876857566982368002155433598802920508834193476000050122815092489083527904255278268542363025419750602159779255380834228513465456241232157357682977774372012900667922518183917225548741955409016876370752696784949507748747462242654149289222687002620659768581390380859375E-108 +1.703183936003260477055423578750792329241540709659421447509629023495930010392895724846844250448265263839892308626455574803725025430066453041478409492360616298021125646211317454195441047083892479983819602787078701108006606113627503263413698505442814785950250507551469170142155462599475868046283721923828125E-108 +3.406367872006520386836640880745978288654375371513396473600431086719760584101766838695200010024563018497816705580851055653708472605083950120431955851076166845702693091248246431471536595554874402580133584503636783445109748391081803375274150539356989901549749492448530829857844537400524131953716278076171875E-108 +3.40636787200652095411084715750158465848308141931884289501925804699186002078579144969368850089653052767978461725291114960745005086013290608295681898472123259604225129242263490839088209416778495996763920557415740221601321222725500652682739701088562957190050101510293834028431092519895173609256744384765625E-108 +6.81273574401304077367328176149195657730875074302679294720086217343952116820353367739040002004912603699563341116170211130741694521016790024086391170215233369140538618249649286294307319110974880516026716900727356689021949678216360675054830107871397980309949898489706165971568907480104826390743255615234375E-108 +6.8127357440130419082216943150031693169661628386376857900385160939837200415715828993873770017930610553595692345058222992149001017202658121659136379694424651920845025848452698167817641883355699199352784111483148044320264244545100130536547940217712591438010020302058766805686218503979034721851348876953125E-108 +1.36254714880260815473465635229839131546175014860535858944017243468790423364070673547808000400982520739912668223234042226148338904203358004817278234043046673828107723649929857258861463822194976103205343380145471337804389935643272135010966021574279596061989979697941233194313781496020965278148651123046875E-107 +1.3625471488026083816443388630006338633932325677275371580077032187967440083143165798774754003586122110719138469011644598429800203440531624331827275938884930384169005169690539633563528376671139839870556822296629608864052848909020026107309588043542518287602004060411753361137243700795806944370269775390625E-107 +2.7250942976052163094693127045967826309235002972107171788803448693758084672814134709561600080196504147982533644646808445229667780840671600963455646808609334765621544729985971451772292764438995220641068676029094267560877987128654427002193204314855919212397995939588246638862756299204193055629730224609375E-107 +2.725094297605216763288677726001267726786465135455074316015406437593488016628633159754950800717224422143827693802328919685960040688106324866365455187776986076833801033938107926712705675334227967974111364459325921772810569781804005221461917608708503657520400812082350672227448740159161388874053955078125E-107 +5.450188595210432618938625409193565261847000594421434357760689738751616934562826941912320016039300829596506728929361689045933556168134320192691129361721866953124308945997194290354458552887799044128213735205818853512175597425730885400438640862971183842479599187917649327772551259840838611125946044921875E-107 +5.45018859521043352657735545200253545357293027091014863203081287518697603325726631950990160143444884428765538760465783937192008137621264973273091037555397215366760206787621585342541135066845593594822272891865184354562113956360801044292383521741700731504080162416470134445489748031832277774810791015625E-107 +1.090037719042086523787725081838713052369400118884286871552137947750323386912565388382464003207860165919301345785872337809186711233626864038538225872344373390624861789199438858070891710577559808825642747041163770702435119485146177080087728172594236768495919837583529865554510251968167722225189208984375E-106 +1.09003771904208670531547109040050709071458605418202972640616257503739520665145326390198032028688976885753107752093156787438401627524252994654618207511079443073352041357524317068508227013369118718964454578373036870912422791272160208858476704348340146300816032483294026889097949606366455554962158203125E-106 +2.18007543808417304757545016367742610473880023776857374310427589550064677382513077676492800641572033183860269157174467561837342246725372807707645174468874678124972357839887771614178342115511961765128549408232754140487023897029235416017545634518847353699183967516705973110902050393633544445037841796875E-106 +2.1800754380841734106309421808010141814291721083640594528123251500747904133029065278039606405737795377150621550418631357487680325504850598930923641502215888614670408271504863413701645402673823743792890915674607374182484558254432041771695340869668029260163206496658805377819589921273291110992431640625E-106 +4.3601508761683460951509003273548522094776004755371474862085517910012935476502615535298560128314406636772053831434893512367468449345074561541529034893774935624994471567977554322835668423102392353025709881646550828097404779405847083203509126903769470739836793503341194622180410078726708889007568359375E-106 +4.360150876168346821261884361602028362858344216728118905624650300149580826605813055607921281147559075430124310083726271497536065100970119786184728300443177722934081654300972682740329080534764748758578183134921474836496911650886408354339068173933605852032641299331761075563917984254658222198486328125E-106 +8.720301752336692190301800654709704418955200951074294972417103582002587095300523107059712025662881327354410766286978702473493689869014912308305806978754987124998894313595510864567133684620478470605141976329310165619480955881169416640701825380753894147967358700668238924436082015745341777801513671875E-106 +8.72030175233669364252376872320405672571668843345623781124930060029916165321162611121584256229511815086024862016745254299507213020194023957236945660088635544586816330860194536548065816106952949751715636626984294967299382330177281670867813634786721170406528259866352215112783596850931644439697265625E-106 +1.744060350467338438060360130941940883791040190214858994483420716400517419060104621411942405132576265470882153257395740494698737973802982461661161395750997424999778862719102172913426736924095694121028395265862033123896191176233883328140365076150778829593471740133647784887216403149068355560302734375E-105 +1.74406035046733872850475374464081134514333768669124756224986012005983233064232522224316851245902363017204972403349050859901442604038804791447389132017727108917363266172038907309613163221390589950343127325396858993459876466035456334173562726957344234081305651973270443022556719370186328887939453125E-105 +3.48812070093467687612072026188388176758208038042971798896684143280103483812020924282388481026515253094176430651479148098939747594760596492332232279150199484999955772543820434582685347384819138824205679053172406624779238235246776665628073015230155765918694348026729556977443280629813671112060546875E-105 +3.4881207009346774570095074892816226902866753733824951244997202401196646612846504444863370249180472603440994480669810171980288520807760958289477826403545421783472653234407781461922632644278117990068625465079371798691975293207091266834712545391468846816261130394654088604511343874037265777587890625E-105 +6.9762414018693537522414405237677635351641607608594359779336828656020696762404184856477696205303050618835286130295829619787949518952119298466446455830039896999991154508764086916537069476963827764841135810634481324955847647049355333125614603046031153183738869605345911395488656125962734222412109375E-105 +6.976241401869354914019014978563245380573350746764990248999440480239329322569300888972674049836094520688198896133962034396057704161552191657895565280709084356694530646881556292384526528855623598013725093015874359738395058641418253366942509078293769363252226078930817720902268774807453155517578125E-105 +1.3952482803738707504482881047535527070328321521718871955867365731204139352480836971295539241060610123767057226059165923957589903790423859693289291166007979399998230901752817383307413895392765552968227162126896264991169529409871066625122920609206230636747773921069182279097731225192546844482421875E-104 +1.395248280373870982803802995712649076114670149352998049799888096047865864513860177794534809967218904137639779226792406879211540832310438331579113056141816871338906129376311258476905305771124719602745018603174871947679011728283650673388501815658753872650445215786163544180453754961490631103515625E-104 +2.790496560747741500896576209507105414065664304343774391173473146240827870496167394259107848212122024753411445211833184791517980758084771938657858233201595879999646180350563476661482779078553110593645432425379252998233905881974213325024584121841246127349554784213836455819546245038509368896484375E-104 +2.79049656074774196560760599142529815222934029870599609959977619209573172902772035558906961993443780827527955845358481375842308166462087666315822611228363374267781225875262251695381061154224943920549003720634974389535802345656730134677700363131750774530089043157232708836090750992298126220703125E-104 +5.58099312149548300179315241901421082813132860868754878234694629248165574099233478851821569642424404950682289042366636958303596151616954387731571646640319175999929236070112695332296555815710622118729086485075850599646781176394842665004916824368249225469910956842767291163909249007701873779296875E-104 +5.5809931214954839312152119828505963044586805974119921991995523841914634580554407111781392398688756165505591169071696275168461633292417533263164522245672674853556245175052450339076212230844988784109800744126994877907160469131346026935540072626350154906017808631446541767218150198459625244140625E-104 +1.11619862429909660035863048380284216562626572173750975646938925849633114819846695770364313928484880990136457808473327391660719230323390877546314329328063835199985847214022539066459311163142124423745817297015170119929356235278968533000983364873649845093982191368553458232781849801540374755859375E-103 +1.1161986242990967862430423965701192608917361194823984398399104768382926916110881422356278479737751233101118233814339255033692326658483506652632904449134534970711249035010490067815242446168997756821960148825398975581432093826269205387108014525270030981203561726289308353443630039691925048828125E-103 +2.2323972485981932007172609676056843312525314434750195129387785169926622963969339154072862785696976198027291561694665478332143846064678175509262865865612767039997169442804507813291862232628424884749163459403034023985871247055793706600196672974729969018796438273710691646556369960308074951171875E-103 +2.232397248598193572486084793140238521783472238964796879679820953676585383222176284471255695947550246620223646762867851006738465331696701330526580889826906994142249807002098013563048489233799551364392029765079795116286418765253841077421602905054006196240712345257861670688726007938385009765625E-103 +4.464794497196386401434521935211368662505062886950039025877557033985324592793867830814572557139395239605458312338933095666428769212935635101852573173122553407999433888560901562658372446525684976949832691880606804797174249411158741320039334594945993803759287654742138329311273992061614990234375E-103 +4.46479449719638714497216958628047704356694447792959375935964190735317076644435256894251139189510049324044729352573570201347693066339340266105316177965381398828449961400419602712609697846759910272878405953015959023257283753050768215484320581010801239248142469051572334137745201587677001953125E-103 +8.92958899439277280286904387042273732501012577390007805175511406797064918558773566162914511427879047921091662467786619133285753842587127020370514634624510681599886777712180312531674489305136995389966538376121360959434849882231748264007866918989198760751857530948427665862254798412322998046875E-103 +8.9295889943927742899443391725609540871338889558591875187192838147063415328887051378850227837902009864808945870514714040269538613267868053221063235593076279765689992280083920542521939569351982054575681190603191804651456750610153643096864116202160247849628493810314466827549040317535400390625E-103 +1.78591779887855456057380877408454746500202515478001561035102281359412983711754713232582902285575809584218332493557323826657150768517425404074102926924902136319977355542436062506334897861027399077993307675224272191886969976446349652801573383797839752150371506189685533172450959682464599609375E-102 +1.7859177988785548579888678345121908174267777911718375037438567629412683065777410275770045567580401972961789174102942808053907722653573610644212647118615255953137998456016784108504387913870396410915136238120638360930291350122030728619372823240432049569925698762062893365509808063507080078125E-102 +3.5718355977571091211476175481690949300040503095600312207020456271882596742350942646516580457115161916843666498711464765331430153703485080814820585384980427263995471108487212501266979572205479815598661535044854438377393995289269930560314676759567950430074301237937106634490191936492919921875E-102 +3.571835597757109715977735669024381634853555582343675007487713525882536613155482055154009113516080394592357834820588561610781544530714722128842529423723051190627599691203356821700877582774079282183027247624127672186058270024406145723874564648086409913985139752412578673101961612701416015625E-102 +7.143671195514218242295235096338189860008100619120062441404091254376519348470188529303316091423032383368733299742292953066286030740697016162964117076996085452799094221697442500253395914441095963119732307008970887675478799057853986112062935351913590086014860247587421326898038387298583984375E-102 +7.14367119551421943195547133804876326970711116468735001497542705176507322631096411030801822703216078918471566964117712322156308906142944425768505884744610238125519938240671364340175516554815856436605449524825534437211654004881229144774912929617281982797027950482515734620392322540283203125E-102 +1.428734239102843648459047019267637972001620123824012488280818250875303869694037705860663218284606476673746659948458590613257206148139403232592823415399217090559818844339488500050679182888219192623946461401794177535095759811570797222412587070382718017202972049517484265379607677459716796875E-101 +1.42873423910284388639109426760975265394142223293747000299508541035301464526219282206160364540643215783694313392823542464431261781228588885153701176948922047625103987648134272868035103310963171287321089904965106887442330800976245828954982585923456396559405590096503146924078464508056640625E-101 +2.85746847820568729691809403853527594400324024764802497656163650175060773938807541172132643656921295334749331989691718122651441229627880646518564683079843418111963768867897700010135836577643838524789292280358835507019151962314159444482517414076543603440594409903496853075921535491943359375E-101 +2.8574684782056877727821885352195053078828444658749400059901708207060292905243856441232072908128643156738862678564708492886252356245717777030740235389784409525020797529626854573607020662192634257464217980993021377488466160195249165790996517184691279311881118019300629384815692901611328125E-101 +5.7149369564113745938361880770705518880064804952960499531232730035012154787761508234426528731384259066949866397938343624530288245925576129303712936615968683622392753773579540002027167315528767704957858456071767101403830392462831888896503482815308720688118881980699370615184307098388671875E-101 +5.714936956411375545564377070439010615765688931749880011980341641412058581048771288246414581625728631347772535712941698577250471249143555406148047077956881905004159505925370914721404132438526851492843596198604275497693232039049833158199303436938255862376223603860125876963138580322265625E-101 +1.1429873912822749187672376154141103776012960990592099906246546007002430957552301646885305746276851813389973279587668724906057649185115225860742587323193736724478550754715908000405433463105753540991571691214353420280766078492566377779300696563061744137623776396139874123036861419677734375E-100 +1.142987391282275109112875414087802123153137786349976002396068328282411716209754257649282916325145726269554507142588339715450094249828711081229609415591376381000831901185074182944280826487705370298568719239720855099538646407809966631639860687387651172475244720772025175392627716064453125E-100 +2.285974782564549837534475230828220755202592198118419981249309201400486191510460329377061149255370362677994655917533744981211529837023045172148517464638747344895710150943181600081086692621150708198314338242870684056153215698513275555860139312612348827524755279227974824607372283935546875E-100 +2.28597478256455021822575082817560424630627557269995200479213665656482343241950851529856583265029145253910901428517667943090018849965742216245921883118275276200166380237014836588856165297541074059713743847944171019907729281561993326327972137477530234495048944154405035078525543212890625E-100 +4.57194956512909967506895046165644151040518439623683996249861840280097238302092065875412229851074072535598931183506748996242305967404609034429703492927749468979142030188636320016217338524230141639662867648574136811230643139702655111172027862522469765504951055845594964921474456787109375E-100 +4.5719495651291004364515016563512084926125511453999040095842733131296468648390170305971316653005829050782180285703533588618003769993148443249184376623655055240033276047402967317771233059508214811942748769588834203981545856312398665265594427495506046899009788830881007015705108642578125E-100 +9.1438991302581993501379009233128830208103687924736799249972368056019447660418413175082445970214814507119786236701349799248461193480921806885940698585549893795828406037727264003243467704846028327932573529714827362246128627940531022234405572504493953100990211169118992984294891357421875E-100 +9.143899130258200872903003312702416985225102290799808019168546626259293729678034061194263330601165810156436057140706717723600753998629688649836875324731011048006655209480593463554246611901642962388549753917766840796309171262479733053118885499101209379801957766176201403141021728515625E-100 +1.8287798260516398700275801846625766041620737584947359849994473611203889532083682635016489194042962901423957247340269959849692238696184361377188139717109978759165681207545452800648693540969205665586514705942965472449225725588106204446881114500898790620198042233823798596858978271484375E-99 +1.828779826051640174580600662540483397045020458159961603833709325251858745935606812238852666120233162031287211428141343544720150799725937729967375064946202209601331041896118692710849322380328592477709950783553368159261834252495946610623777099820241875960391553235240280628204345703125E-99 +3.657559652103279740055160369325153208324147516989471969998894722240777906416736527003297838808592580284791449468053991969938447739236872275437627943421995751833136241509090560129738708193841133117302941188593094489845145117621240889376222900179758124039608446764759719371795654296875E-99 +3.65755965210328034916120132508096679409004091631992320766741865050371749187121362447770533224046632406257442285628268708944030159945187545993475012989240441920266208379223738542169864476065718495541990156710673631852366850499189322124755419964048375192078310647048056125640869140625E-99 +7.31511930420655948011032073865030641664829503397894393999778944448155581283347305400659567761718516056958289893610798393987689547847374455087525588684399150366627248301818112025947741638768226623460588237718618897969029023524248177875244580035951624807921689352951943874359130859375E-99 +7.3151193042065606983224026501619335881800818326398464153348373010074349837424272489554106644809326481251488457125653741788806031989037509198695002597848088384053241675844747708433972895213143699108398031342134726370473370099837864424951083992809675038415662129409611225128173828125E-99 +1.46302386084131189602206414773006128332965900679578878799955788889631116256669461080131913552343703211391657978722159678797537909569474891017505117736879830073325449660363622405189548327753645324692117647543723779593805804704849635575048916007190324961584337870590388774871826171875E-98 +1.4630238608413121396644805300323867176360163665279692830669674602014869967484854497910821328961865296250297691425130748357761206397807501839739000519569617676810648335168949541686794579042628739821679606268426945274094674019967572884990216798561935007683132425881922245025634765625E-98 +2.9260477216826237920441282954601225666593180135915775759991157777926223251333892216026382710468740642278331595744431935759507581913894978203501023547375966014665089932072724481037909665550729064938423529508744755918761160940969927115009783201438064992316867574118077754974365234375E-98 +2.926047721682624279328961060064773435272032733055938566133934920402973993496970899582164265792373059250059538285026149671552241279561500367947800103913923535362129667033789908337358915808525747964335921253685389054818934803993514576998043359712387001536626485176384449005126953125E-98 +5.852095443365247584088256590920245133318636027183155151998231555585244650266778443205276542093748128455666319148886387151901516382778995640700204709475193202933017986414544896207581933110145812987684705901748951183752232188193985423001956640287612998463373514823615550994873046875E-98 +5.85209544336524855865792212012954687054406546611187713226786984080594798699394179916432853158474611850011907657005229934310448255912300073589560020782784707072425933406757981667471783161705149592867184250737077810963786960798702915399608671942477400307325297035276889801025390625E-98 +1.170419088673049516817651318184049026663727205436631030399646311117048930053355688641055308418749625691133263829777277430380303276555799128140040941895038640586603597282908979241516386622029162597536941180349790236750446437638797084600391328057522599692674702964723110198974609375E-97 +1.17041908867304971173158442402590937410881309322237542645357396816118959739878835983286570631694922370002381531401045986862089651182460014717912004156556941414485186681351596333494356632341029918573436850147415562192757392159740583079921734388495480061465059407055377960205078125E-97 +2.34083817734609903363530263636809805332745441087326206079929262223409786010671137728211061683749925138226652765955455486076060655311159825628008188379007728117320719456581795848303277324405832519507388236069958047350089287527759416920078265611504519938534940592944622039794921875E-97 +2.3408381773460994234631688480518187482176261864447508529071479363223791947975767196657314126338984474000476306280209197372417930236492002943582400831311388282897037336270319266698871326468205983714687370029483112438551478431948116615984346877699096012293011881411075592041015625E-97 +4.6816763546921980672706052727361961066549088217465241215985852444681957202134227545642212336749985027645330553191091097215212131062231965125601637675801545623464143891316359169660655464881166503901477647213991609470017857505551883384015653122300903987706988118588924407958984375E-97 +4.681676354692198846926337696103637496435252372889501705814295872644758389595153439331462825267796894800095261256041839474483586047298400588716480166262277656579407467254063853339774265293641196742937474005896622487710295686389623323196869375539819202458602376282215118408203125E-97 +9.363352709384396134541210545472392213309817643493048243197170488936391440426845509128442467349997005529066110638218219443042426212446393025120327535160309124692828778263271833932131092976233300780295529442798321894003571501110376676803130624460180797541397623717784881591796875E-97 +9.36335270938439769385267539220727499287050474577900341162859174528951677919030687866292565053559378960019052251208367894896717209459680117743296033252455531315881493450812770667954853058728239348587494801179324497542059137277924664639373875107963840491720475256443023681640625E-97 +1.872670541876879226908242109094478442661963528698609648639434097787278288085369101825688493469999401105813222127643643888608485242489278605024065507032061824938565755652654366786426218595246660156059105888559664378800714300222075335360626124892036159508279524743556976318359375E-96 +1.87267054187687953877053507844145499857410094915580068232571834905790335583806137573258513010711875792003810450241673578979343441891936023548659206650491106263176298690162554133590970611745647869717498960235864899508411827455584932927874775021592768098344095051288604736328125E-96 +3.74534108375375845381648421818895688532392705739721929727886819557455657617073820365137698693999880221162644425528728777721697048497855721004813101406412364987713151130530873357285243719049332031211821177711932875760142860044415067072125224978407231901655904948711395263671875E-96 +3.7453410837537590775410701568829099971482018983116013646514366981158067116761227514651702602142375158400762090048334715795868688378387204709731841330098221252635259738032510826718194122349129573943499792047172979901682365491116986585574955004318553619668819010257720947265625E-96 +7.4906821675075169076329684363779137706478541147944385945577363911491131523414764073027539738799976044232528885105745755544339409699571144200962620281282472997542630226106174671457048743809866406242364235542386575152028572008883013414425044995681446380331180989742279052734375E-96 +7.490682167507518155082140313765819994296403796623202729302873396231613423352245502930340520428475031680152418009666943159173737675677440941946368266019644250527051947606502165343638824469825914788699958409434595980336473098223397317114991000863710723933763802051544189453125E-96 +1.4981364335015033815265936872755827541295708229588877189115472782298226304682952814605507947759995208846505777021149151108867881939914228840192524056256494599508526045221234934291409748761973281248472847108477315030405714401776602682885008999136289276066236197948455810546875E-95 +1.498136433501503631016428062753163998859280759324640545860574679246322684670449100586068104085695006336030483601933388631834747535135488188389273653203928850105410389521300433068727764893965182957739991681886919196067294619644679463422998200172742144786752760410308837890625E-95 +2.996272867003006763053187374551165508259141645917775437823094556459645260936590562921101589551999041769301155404229830221773576387982845768038504811251298919901705209044246986858281949752394656249694569421695463006081142880355320536577001799827257855213247239589691162109375E-95 +2.99627286700300726203285612550632799771856151864928109172114935849264536934089820117213620817139001267206096720386677726366949507027097637677854730640785770021082077904260086613745552978793036591547998336377383839213458923928935892684599640034548428957350552082061767578125E-95 +5.99254573400601352610637474910233101651828329183555087564618911291929052187318112584220317910399808353860231080845966044354715277596569153607700962250259783980341041808849397371656389950478931249938913884339092601216228576071064107315400359965451571042649447917938232421875E-95 +5.9925457340060145240657122510126559954371230372985621834422987169852907386817964023442724163427800253441219344077335545273389901405419527535570946128157154004216415580852017322749110595758607318309599667275476767842691784785787178536919928006909685791470110416412353515625E-95 +1.19850914680120270522127494982046620330365665836711017512923782258385810437463622516844063582079961670772046216169193208870943055519313830721540192450051956796068208361769879474331277990095786249987782776867818520243245715214212821463080071993090314208529889583587646484375E-94 +1.1985091468012029048131424502025311990874246074597124366884597433970581477363592804688544832685560050688243868815467109054677980281083905507114189225631430800843283116170403464549822119151721463661919933455095353568538356957157435707383985601381937158294022083282470703125E-94 +2.3970182936024054104425498996409324066073133167342203502584756451677162087492724503368812716415992334154409243233838641774188611103862766144308038490010391359213641672353975894866255598019157249997556555373563704048649143042842564292616014398618062841705977916717529296875E-94 +2.397018293602405809626284900405062398174849214919424873376919486794116295472718560937708966537112010137648773763093421810935596056216781101422837845126286160168656623234080692909964423830344292732383986691019070713707671391431487141476797120276387431658804416656494140625E-94 +4.794036587204810820885099799281864813214626633468440700516951290335432417498544900673762543283198466830881848646767728354837722220772553228861607698002078271842728334470795178973251119603831449999511311074712740809729828608568512858523202879723612568341195583343505859375E-94 +4.79403658720481161925256980081012479634969842983884974675383897358823259094543712187541793307422402027529754752618684362187119211243356220284567569025257232033731324646816138581992884766068858546476797338203814142741534278286297428295359424055277486331760883331298828125E-94 +9.58807317440962164177019959856372962642925326693688140103390258067086483499708980134752508656639693366176369729353545670967544444154510645772321539600415654368545666894159035794650223920766289999902262214942548161945965721713702571704640575944722513668239116668701171875E-94 +9.5880731744096232385051396016202495926993968596776994935076779471764651818908742437508358661484480405505950950523736872437423842248671244056913513805051446406746264929363227716398576953213771709295359467640762828548306855657259485659071884811055497266352176666259765625E-94 +1.91761463488192432835403991971274592528585065338737628020678051613417296699941796026950501731327938673235273945870709134193508888830902129154464307920083130873709133378831807158930044784153257999980452442988509632389193144342740514340928115188944502733647823333740234375E-93 +1.9176146348819246477010279203240499185398793719355398987015355894352930363781748487501671732296896081101190190104747374487484768449734248811382702761010289281349252985872645543279715390642754341859071893528152565709661371131451897131814376962211099453270435333251953125E-93 +3.8352292697638486567080798394254918505717013067747525604135610322683459339988359205390100346265587734647054789174141826838701777766180425830892861584016626174741826675766361431786008956830651599996090488597701926477838628868548102868185623037788900546729564666748046875E-93 +3.835229269763849295402055840648099837079758743871079797403071178870586072756349697500334346459379216220238038020949474897496953689946849762276540552202057856269850597174529108655943078128550868371814378705630513141932274226290379426362875392442219890654087066650390625E-93 +7.670458539527697313416159678850983701143402613549505120827122064536691867997671841078020069253117546929410957834828365367740355553236085166178572316803325234948365335153272286357201791366130319999218097719540385295567725773709620573637124607557780109345912933349609375E-93 +7.67045853952769859080411168129619967415951748774215959480614235774117214551269939500066869291875843244047607604189894979499390737989369952455308110440411571253970119434905821731188615625710173674362875741126102628386454845258075885272575078488443978130817413330078125E-93 +1.534091707905539462683231935770196740228680522709901024165424412907338373599534368215604013850623509385882191566965673073548071110647217033235714463360665046989673067030654457271440358273226063999843619543908077059113545154741924114727424921511556021869182586669921875E-92 +1.53409170790553971816082233625923993483190349754843191896122847154823442910253987900013373858375168648809521520837978995899878147597873990491061622088082314250794023886981164346237723125142034734872575148225220525677290969051615177054515015697688795626163482666015625E-92 +3.06818341581107892536646387154039348045736104541980204833084882581467674719906873643120802770124701877176438313393134614709614222129443406647142892672133009397934613406130891454288071654645212799968723908781615411822709030948384822945484984302311204373836517333984375E-92 +3.0681834158110794363216446725184798696638069950968638379224569430964688582050797580002674771675033729761904304167595799179975629519574798098212324417616462850158804777396232869247544625028406946974515029645044105135458193810323035410903003139537759125232696533203125E-92 +6.1363668316221578507329277430807869609147220908396040966616976516293534943981374728624160554024940375435287662678626922941922844425888681329428578534426601879586922681226178290857614330929042559993744781756323082364541806189676964589096996860462240874767303466796875E-92 +6.136366831622158872643289345036959739327613990193727675844913886192937716410159516000534954335006745952380860833519159835995125903914959619642464883523292570031760955479246573849508925005681389394903005929008821027091638762064607082180600627907551825046539306640625E-92 +1.2272733663244315701465855486161573921829444181679208193323395303258706988796274945724832110804988075087057532535725384588384568885177736265885715706885320375917384536245235658171522866185808511998748956351264616472908361237935392917819399372092448174953460693359375E-91 +1.227273366324431774528657869007391947865522798038745535168982777238587543282031903200106990867001349190476172166703831967199025180782991923928492976704658514006352191095849314769901785001136277878980601185801764205418327752412921416436120125581510365009307861328125E-91 +2.454546732648863140293171097232314784365888836335841638664679060651741397759254989144966422160997615017411506507145076917676913777035547253177143141377064075183476907249047131634304573237161702399749791270252923294581672247587078583563879874418489634990692138671875E-91 +2.45454673264886354905731573801478389573104559607749107033796555447717508656406380640021398173400269838095234433340766393439805036156598384785698595340931702801270438219169862953980357000227255575796120237160352841083665550482584283287224025116302073001861572265625E-91 +4.90909346529772628058634219446462956873177767267168327732935812130348279551850997828993284432199523003482301301429015383535382755407109450635428628275412815036695381449809426326860914647432340479949958254050584658916334449517415716712775974883697926998138427734375E-91 +4.9090934652977270981146314760295677914620911921549821406759311089543501731281276128004279634680053967619046886668153278687961007231319676957139719068186340560254087643833972590796071400045451115159224047432070568216733110096516856657444805023260414600372314453125E-91 +9.8181869305954525611726843889292591374635553453433665546587162426069655910370199565798656886439904600696460260285803076707076551081421890127085725655082563007339076289961885265372182929486468095989991650810116931783266889903483143342555194976739585399627685546875E-91 +9.818186930595454196229262952059135582924182384309964281351862217908700346256255225600855926936010793523809377333630655737592201446263935391427943813637268112050817528766794518159214280009090223031844809486414113643346622019303371331488961004652082920074462890625E-91 +1.9636373861190905122345368777858518274927110690686733109317432485213931182074039913159731377287980920139292052057160615341415310216284378025417145131016512601467815257992377053074436585897293619197998330162023386356653377980696628668511038995347917079925537109375E-90 +1.963637386119090839245852590411827116584836476861992856270372443581740069251251045120171185387202158704761875466726131147518440289252787078285588762727453622410163505753358903631842856001818044606368961897282822728669324403860674266297792200930416584014892578125E-90 +3.927274772238181024469073755571703654985422138137346621863486497042786236414807982631946275457596184027858410411432123068283062043256875605083429026203302520293563051598475410614887317179458723839599666032404677271330675596139325733702207799069583415985107421875E-90 +3.92727477223818167849170518082365423316967295372398571254074488716348013850250209024034237077440431740952375093345226229503688057850557415657117752545490724482032701150671780726368571200363608921273792379456564545733864880772134853259558440186083316802978515625E-90 +7.85454954447636204893814751114340730997084427627469324372697299408557247282961596526389255091519236805571682082286424613656612408651375121016685805240660504058712610319695082122977463435891744767919933206480935454266135119227865146740441559813916683197021484375E-90 +7.8545495444763633569834103616473084663393459074479714250814897743269602770050041804806847415488086348190475018669045245900737611570111483131423550509098144896406540230134356145273714240072721784254758475891312909146772976154426970651911688037216663360595703125E-90 +1.57090990889527240978762950222868146199416885525493864874539459881711449456592319305277851018303847361114336416457284922731322481730275024203337161048132100811742522063939016424595492687178348953583986641296187090853227023845573029348088311962783336639404296875E-89 +1.5709099088952726713966820723294616932678691814895942850162979548653920554010008360961369483097617269638095003733809049180147522314022296626284710101819628979281308046026871229054742848014544356850951695178262581829354595230885394130382337607443332672119140625E-89 +3.1418198177905448195752590044573629239883377105098772974907891976342289891318463861055570203660769472222867283291456984546264496346055004840667432209626420162348504412787803284919098537435669790716797328259237418170645404769114605869617662392556667327880859375E-89 +3.141819817790545342793364144658923386535738362979188570032595909730784110802001672192273896619523453927619000746761809836029504462804459325256942020363925795856261609205374245810948569602908871370190339035652516365870919046177078826076467521488666534423828125E-89 +6.283639635581089639150518008914725847976675421019754594981578395268457978263692772211114040732153894444573456658291396909252899269211000968133486441925284032469700882557560656983819707487133958143359465651847483634129080953822921173923532478511333465576171875E-89 +6.28363963558109068558672828931784677307147672595837714006519181946156822160400334438454779323904690785523800149352361967205900892560891865051388404072785159171252321841074849162189713920581774274038067807130503273174183809235415765215293504297733306884765625E-89 +1.256727927116217927830103601782945169595335084203950918996315679053691595652738554442222808146430778888914691331658279381850579853842200193626697288385056806493940176511512131396763941497426791628671893130369496726825816190764584234784706495702266693115234375E-88 +1.25672792711621813711734565786356935461429534519167542801303836389231364432080066887690955864780938157104760029870472393441180178512178373010277680814557031834250464368214969832437942784116354854807613561426100654634836761847083153043058700859546661376953125E-88 +2.51345585423243585566020720356589033919067016840790183799263135810738319130547710888444561629286155777782938266331655876370115970768440038725339457677011361298788035302302426279352788299485358325734378626073899345365163238152916846956941299140453338623046875E-88 +2.5134558542324362742346913157271387092285906903833508560260767277846272886416013377538191172956187631420952005974094478688236035702435674602055536162911406366850092873642993966487588556823270970961522712285220130926967352369416630608611740171909332275390625E-88 +5.0269117084648717113204144071317806783813403368158036759852627162147663826109542177688912325857231155556587653266331175274023194153688007745067891535402272259757607060460485255870557659897071665146875725214779869073032647630583369391388259828090667724609375E-88 +5.026911708464872548469382631454277418457181380766701712052153455569254577283202675507638234591237526284190401194818895737647207140487134920411107232582281273370018574728598793297517711364654194192304542457044026185393470473883326121722348034381866455078125E-88 +1.0053823416929743422640828814263561356762680673631607351970525432429532765221908435537782465171446231111317530653266235054804638830737601549013578307080454451951521412092097051174111531979414333029375145042955973814606529526116673878277651965618133544921875E-87 +1.005382341692974509693876526290855483691436276153340342410430691113850915456640535101527646918247505256838080238963779147529441428097426984082221446516456254674003714945719758659503542272930838838460908491408805237078694094776665224344469606876373291015625E-87 +2.010764683385948684528165762852712271352536134726321470394105086485906553044381687107556493034289246222263506130653247010960927766147520309802715661416090890390304282418419410234822306395882866605875029008591194762921305905223334775655530393123626708984375E-87 +2.01076468338594901938775305258171096738287255230668068482086138222770183091328107020305529383649501051367616047792755829505888285619485396816444289303291250934800742989143951731900708454586167767692181698281761047415738818955333044868893921375274658203125E-87 +4.02152936677189736905633152570542454270507226945264294078821017297181310608876337421511298606857849244452701226130649402192185553229504061960543132283218178078060856483683882046964461279176573321175005801718238952584261181044666955131106078624725341796875E-87 +4.0215293667718980387755061051634219347657451046133613696417227644554036618265621404061105876729900210273523209558551165901177657123897079363288857860658250186960148597828790346380141690917233553538436339656352209483147763791066608973778784275054931640625E-87 +8.0430587335437947381126630514108490854101445389052858815764203459436262121775267484302259721371569848890540245226129880438437110645900812392108626456643635615612171296736776409392892255835314664235001160343647790516852236208933391026221215724945068359375E-87 +8.043058733543796077551012210326843869531490209226722739283445528910807323653124280812221175345980042054704641911710233180235531424779415872657771572131650037392029719565758069276028338183446710707687267931270441896629552758213321794755756855010986328125E-87 +1.6086117467087589476225326102821698170820289077810571763152840691887252424355053496860451944274313969778108049045225976087687422129180162478421725291328727123122434259347355281878578451167062932847000232068729558103370447241786678205244243144989013671875E-86 +1.608611746708759215510202442065368773906298041845344547856689105782161464730624856162444235069196008410940928382342046636047106284955883174531554314426330007478405943913151613855205667636689342141537453586254088379325910551642664358951151371002197265625E-86 +3.217223493417517895245065220564339634164057815562114352630568138377450484871010699372090388854862793955621609809045195217537484425836032495684345058265745424624486851869471056375715690233412586569400046413745911620674089448357335641048848628997802734375E-86 +3.21722349341751843102040488413073754781259608369068909571337821156432292946124971232488847013839201682188185676468409327209421256991176634906310862885266001495681188782630322771041133527337868428307490717250817675865182110328532871790230274200439453125E-86 +6.43444698683503579049013044112867926832811563112422870526113627675490096974202139874418077770972558791124321961809039043507496885167206499136869011653149084924897370373894211275143138046682517313880009282749182324134817889671467128209769725799560546875E-86 +6.4344469868350368620408097682614750956251921673813781914267564231286458589224994246497769402767840336437637135293681865441884251398235326981262172577053200299136237756526064554208226705467573685661498143450163535173036422065706574358046054840087890625E-86 +1.28688939736700715809802608822573585366562312622484574105222725535098019394840427974883615554194511758224864392361807808701499377033441299827373802330629816984979474074778842255028627609336503462776001856549836464826963577934293425641953945159912109375E-85 +1.2868893973670073724081619536522950191250384334762756382853512846257291717844998849299553880553568067287527427058736373088376850279647065396252434515410640059827247551305212910841645341093514737132299628690032707034607284413141314871609210968017578125E-85 +2.5737787947340143161960521764514717073312462524496914821044545107019603878968085594976723110838902351644972878472361561740299875406688259965474760466125963396995894814955768451005725521867300692555200371309967292965392715586858685128390789031982421875E-85 +2.573778794734014744816323907304590038250076866952551276570702569251458343568999769859910776110713613457505485411747274617675370055929413079250486903082128011965449510261042582168329068218702947426459925738006541406921456882628262974321842193603515625E-85 +5.147557589468028632392104352902943414662492504899382964208909021403920775793617118995344622167780470328994575694472312348059975081337651993094952093225192679399178962991153690201145104373460138511040074261993458593078543117371737025678157806396484375E-85 +5.14755758946802948963264781460918007650015373390510255314140513850291668713799953971982155222142722691501097082349454923535074011185882615850097380616425602393089902052208516433665813643740589485291985147601308281384291376525652594864368438720703125E-85 +1.029511517893605726478420870580588682932498500979876592841781804280784155158723423799068924433556094065798915138894462469611995016267530398618990418645038535879835792598230738040229020874692027702208014852398691718615708623474347405135631561279296875E-84 +1.02951151789360589792652956292183601530003074678102051062828102770058333742759990794396431044428544538300219416469890984707014802237176523170019476123285120478617980410441703286733162728748117897058397029520261656276858275305130518972873687744140625E-84 +2.05902303578721145295684174116117736586499700195975318568356360856156831031744684759813784886711218813159783027778892493922399003253506079723798083729007707175967158519646147608045804174938405540441602970479738343723141724694869481027126312255859375E-84 +2.0590230357872117958530591258436720306000614935620410212565620554011666748551998158879286208885708907660043883293978196941402960447435304634003895224657024095723596082088340657346632545749623579411679405904052331255371655061026103794574737548828125E-84 +4.1180460715744229059136834823223547317299940039195063713671272171231366206348936951962756977342243762631956605555778498784479800650701215944759616745801541435193431703929229521609160834987681108088320594095947668744628344938973896205425262451171875E-84 +4.118046071574423591706118251687344061200122987124082042513124110802333349710399631775857241777141781532008776658795639388280592089487060926800779044931404819144719216417668131469326509149924715882335881180810466251074331012205220758914947509765625E-84 +8.236092143148845811827366964644709463459988007839012742734254434246273241269787390392551395468448752526391321111155699756895960130140243188951923349160308287038686340785845904321832166997536221617664118819189533748925668987794779241085052490234375E-84 +8.23609214314884718341223650337468812240024597424816408502624822160466669942079926355171448355428356306401755331759127877656118417897412185360155808986280963828943843283533626293865301829984943176467176236162093250214866202441044151782989501953125E-84 +1.647218428629769162365473392928941892691997601567802548546850886849254648253957478078510279093689750505278264222231139951379192026028048637790384669832061657407737268157169180864366433399507244323532823763837906749785133797558955848217010498046875E-83 +1.64721842862976943668244730067493762448004919484963281700524964432093333988415985271034289671085671261280351066351825575531223683579482437072031161797256192765788768656706725258773060365996988635293435247232418650042973240488208830356597900390625E-83 +3.29443685725953832473094678585788378538399520313560509709370177369850929650791495615702055818737950101055652844446227990275838405205609727558076933966412331481547453631433836172873286679901448864706564752767581349957026759511791169643402099609375E-83 +3.2944368572595388733648946013498752489600983896992656340104992886418666797683197054206857934217134252256070213270365115106244736715896487414406232359451238553157753731341345051754612073199397727058687049446483730008594648097641766071319580078125E-83 +6.5888737145190766494618935717157675707679904062712101941874035473970185930158299123140411163747590020211130568889245598055167681041121945511615386793282466296309490726286767234574657335980289772941312950553516269991405351902358233928680419921875E-83 +6.588873714519077746729789202699750497920196779398531268020998577283733359536639410841371586843426850451214042654073023021248947343179297482881246471890247710631550746268269010350922414639879545411737409889296746001718929619528353214263916015625E-83 +1.3177747429038153298923787143431535141535980812542420388374807094794037186031659824628082232749518004042226113777849119611033536208224389102323077358656493259261898145257353446914931467196057954588262590110703253998281070380471646785736083984375E-82 +1.317774742903815549345957840539950099584039355879706253604199715456746671907327882168274317368685370090242808530814604604249789468635859496576249294378049542126310149253653802070184482927975909082347481977859349200343785923905670642852783203125E-82 +2.635549485807630659784757428686307028307196162508484077674961418958807437206331964925616446549903600808445222755569823922206707241644877820464615471731298651852379629051470689382986293439211590917652518022140650799656214076094329357147216796875E-82 +2.63554948580763109869191568107990019916807871175941250720839943091349334381465576433654863473737074018048561706162920920849957893727171899315249858875609908425262029850730760414036896585595181816469496395571869840068757184781134128570556640625E-82 +5.27109897161526131956951485737261405661439232501696815534992283791761487441266392985123289309980720161689044551113964784441341448328975564092923094346259730370475925810294137876597258687842318183530503604428130159931242815218865871429443359375E-82 +5.2710989716152621973838313621598003983361574235188250144167988618269866876293115286730972694747414803609712341232584184169991578745434379863049971775121981685052405970146152082807379317119036363293899279114373968013751436956226825714111328125E-82 +1.05421979432305226391390297147452281132287846500339363106998456758352297488253278597024657861996144032337808910222792956888268289665795112818584618869251946074095185162058827575319451737568463636706100720885626031986248563043773174285888671875E-81 +1.0542197943230524394767662724319600796672314847037650028833597723653973375258623057346194538949482960721942468246516836833998315749086875972609994355024396337010481194029230416561475863423807272658779855822874793602750287391245365142822265625E-81 +2.1084395886461045278278059429490456226457569300067872621399691351670459497650655719404931572399228806467561782044558591377653657933159022563716923773850389214819037032411765515063890347513692727341220144177125206397249712608754634857177734375E-81 +2.108439588646104878953532544863920159334462969407530005766719544730794675051724611469238907789896592144388493649303367366799663149817375194521998871004879267402096238805846083312295172684761454531755971164574958720550057478249073028564453125E-81 +4.216879177292209055655611885898091245291513860013574524279938270334091899530131143880986314479845761293512356408911718275530731586631804512743384754770077842963807406482353103012778069502738545468244028835425041279449942521750926971435546875E-81 +4.21687917729220975790706508972784031866892593881506001153343908946158935010344922293847781557979318428877698729860673473359932629963475038904399774200975853480419247761169216662459034536952290906351194232914991744110011495649814605712890625E-81 +8.43375835458441811131122377179618249058302772002714904855987654066818379906026228776197262895969152258702471281782343655106146317326360902548676950954015568592761481296470620602555613900547709093648805767085008255889988504350185394287109375E-81 +8.4337583545844195158141301794556806373378518776301200230668781789231787002068984458769556311595863685775539745972134694671986525992695007780879954840195170696083849552233843332491806907390458181270238846582998348822002299129962921142578125E-81 +1.68675167091688362226224475435923649811660554400542980971197530813363675981205245755239452579193830451740494256356468731021229263465272180509735390190803113718552296259294124120511122780109541818729761153417001651177997700870037078857421875E-80 +1.6867516709168839031628260358911361274675703755260240046133756357846357400413796891753911262319172737155107949194426938934397305198539001556175990968039034139216769910446768666498361381478091636254047769316599669764400459825992584228515625E-80 +3.3735033418337672445244895087184729962332110880108596194239506162672735196241049151047890515838766090348098851271293746204245852693054436101947078038160622743710459251858824824102224556021908363745952230683400330235599540174007415771484375E-80 +3.373503341833767806325652071782272254935140751052048009226751271569271480082759378350782252463834547431021589838885387786879461039707800311235198193607806827843353982089353733299672276295618327250809553863319933952880091965198516845703125E-80 +6.747006683667534489048979017436945992466422176021719238847901232534547039248209830209578103167753218069619770254258749240849170538610887220389415607632124548742091850371764964820444911204381672749190446136680066047119908034801483154296875E-80 +6.74700668366753561265130414356454450987028150210409601845350254313854296016551875670156450492766909486204317967777077557375892207941560062247039638721561365568670796417870746659934455259123665450161910772663986790576018393039703369140625E-80 +1.349401336733506897809795803487389198493284435204343847769580246506909407849641966041915620633550643613923954050851749848169834107722177444077883121526424909748418370074352992964088982240876334549838089227336013209423981606960296630859375E-79 +1.34940133673350712253026082871290890197405630042081920369070050862770859203310375134031290098553381897240863593555415511475178441588312012449407927744312273113734159283574149331986891051824733090032382154532797358115203678607940673828125E-79 +2.69880267346701379561959160697477839698656887040868769553916049301381881569928393208383124126710128722784790810170349969633966821544435488815576624305284981949683674014870598592817796448175266909967617845467202641884796321392059326171875E-79 +2.6988026734670142450605216574258178039481126008416384073814010172554171840662075026806258019710676379448172718711083102295035688317662402489881585548862454622746831856714829866397378210364946618006476430906559471623040735721588134765625E-79 +5.3976053469340275912391832139495567939731377408173753910783209860276376313985678641676624825342025744556958162034069993926793364308887097763115324861056996389936734802974119718563559289635053381993523569093440528376959264278411865234375E-79 +5.397605346934028490121043314851635607896225201683276814762802034510834368132415005361251603942135275889634543742216620459007137663532480497976317109772490924549366371342965973279475642072989323601295286181311894324608147144317626953125E-79 +1.0795210693868055182478366427899113587946275481634750782156641972055275262797135728335324965068405148911391632406813998785358672861777419552623064972211399277987346960594823943712711857927010676398704713818688105675391852855682373046875E-78 +1.079521069386805698024208662970327121579245040336655362952560406902166873626483001072250320788427055177926908748443324091801427532706496099595263421954498184909873274268593194655895128414597864720259057236262378864921629428863525390625E-78 +2.159042138773611036495673285579822717589255096326950156431328394411055052559427145667064993013681029782278326481362799757071734572355483910524612994442279855597469392118964788742542371585402135279740942763737621135078370571136474609375E-78 +2.15904213877361139604841732594065424315849008067331072590512081380433374725296600214450064157685411035585381749688664818360285506541299219919052684390899636981974654853718638931179025682919572944051811447252475772984325885772705078125E-78 +4.31808427754722207299134657115964543517851019265390031286265678882211010511885429133412998602736205956455665296272559951414346914471096782104922598888455971119493878423792957748508474317080427055948188552747524227015674114227294921875E-78 +4.3180842775472227920968346518813084863169801613466214518102416276086674945059320042890012831537082207117076349937732963672057101308259843983810536878179927396394930970743727786235805136583914588810362289450495154596865177154541015625E-78 +8.6361685550944441459826931423192908703570203853078006257253135776442202102377085826682599720547241191291133059254511990282869382894219356420984519777691194223898775684758591549701694863416085411189637710549504845403134822845458984375E-78 +8.636168555094445584193669303762616972633960322693242903620483255217334989011864008578002566307416441423415269987546592734411420261651968796762107375635985479278986194148745557247161027316782917762072457890099030919373035430908203125E-78 +1.7272337110188888291965386284638581740714040770615601251450627155288440420475417165336519944109448238258226611850902398056573876578843871284196903955538238844779755136951718309940338972683217082237927542109900969080626964569091796875E-77 +1.727233711018889116838733860752523394526792064538648580724096651043466997802372801715600513261483288284683053997509318546882284052330393759352421475127197095855797238829749111449432205463356583552414491578019806183874607086181640625E-77 +3.454467422037777658393077256927716348142808154123120250290125431057688084095083433067303988821889647651645322370180479611314775315768774256839380791107647768955951027390343661988067794536643416447585508421980193816125392913818359375E-77 +3.45446742203777823367746772150504678905358412907729716144819330208693399560474560343120102652296657656936610799501863709376456810466078751870484295025439419171159447765949822289886441092671316710482898315603961236774921417236328125E-77 +6.90893484407555531678615451385543269628561630824624050058025086211537616819016686613460797764377929530329064474036095922262955063153754851367876158221529553791190205478068732397613558907328683289517101684396038763225078582763671875E-77 +6.9089348440755564673549354430100935781071682581545943228963866041738679912094912068624020530459331531387322159900372741875291362093215750374096859005087883834231889553189964457977288218534263342096579663120792247354984283447265625E-77 +1.38178696881511106335723090277108653925712326164924810011605017242307523363803337322692159552875585906065812894807219184452591012630750970273575231644305910758238041095613746479522711781465736657903420336879207752645015716552734375E-76 +1.3817869688151112934709870886020187156214336516309188645792773208347735982418982413724804106091866306277464431980074548375058272418643150074819371801017576766846377910637992891595457643706852668419315932624158449470996856689453125E-76 +2.7635739376302221267144618055421730785142465232984962002321003448461504672760667464538431910575117181213162578961443836890518202526150194054715046328861182151647608219122749295904542356293147331580684067375841550529003143310546875E-76 +2.763573937630222586941974177204037431242867303261837729158554641669547196483796482744960821218373261255492886396014909675011654483728630014963874360203515353369275582127598578319091528741370533683863186524831689894199371337890625E-76 +5.527147875260444253428923611084346157028493046596992400464200689692300934552133492907686382115023436242632515792288767378103640505230038810943009265772236430329521643824549859180908471258629466316136813475168310105800628662109375E-76 +5.52714787526044517388394835440807486248573460652367545831710928333909439296759296548992164243674652251098577279202981935002330896745726002992774872040703070673855116425519715663818305748274106736772637304966337978839874267578125E-76 +1.105429575052088850685784722216869231405698609319398480092840137938460186910426698581537276423004687248526503158457753475620728101046007762188601853154447286065904328764909971836181694251725893263227362695033662021160125732421875E-75 +1.10542957505208903477678967088161497249714692130473509166342185666781887859351859309798432848734930450219715455840596387000466179349145200598554974408140614134771023285103943132763661149654821347354527460993267595767974853515625E-75 +2.21085915010417770137156944443373846281139721863879696018568027587692037382085339716307455284600937449705300631691550695124145620209201552437720370630889457213180865752981994367236338850345178652645472539006732404232025146484375E-75 +2.2108591501041780695535793417632299449942938426094701833268437133356377571870371861959686569746986090043943091168119277400093235869829040119710994881628122826954204657020788626552732229930964269470905492198653519153594970703125E-75 +4.4217183002083554027431388888674769256227944372775939203713605517538407476417067943261491056920187489941060126338310139024829124041840310487544074126177891442636173150596398873447267770069035730529094507801346480846405029296875E-75 +4.421718300208356139107158683526459889988587685218940366653687426671275514374074372391937313949397218008788618233623855480018647173965808023942198976325624565390840931404157725310546445986192853894181098439730703830718994140625E-75 +8.843436600416710805486277777734953851245588874555187840742721103507681495283413588652298211384037497988212025267662027804965824808368062097508814825235578288527234630119279774689453554013807146105818901560269296169281005859375E-75 +8.84343660041671227821431736705291977997717537043788073330737485334255102874814874478387462789879443601757723646724771096003729434793161604788439795265124913078168186280831545062109289197238570778836219687946140766143798828125E-75 +1.768687320083342161097255555546990770249117774911037568148544220701536299056682717730459642276807499597642405053532405560993164961673612419501762965047115657705446926023855954937890710802761429221163780312053859233856201171875E-74 +1.76868732008334245564286347341058395599543507408757614666147497066851020574962974895677492557975888720351544729344954219200745886958632320957687959053024982615633637256166309012421857839447714155767243937589228153228759765625E-74 +3.53737464016668432219451111109398154049823554982207513629708844140307259811336543546091928455361499919528481010706481112198632992334722483900352593009423131541089385204771190987578142160552285844232756062410771846771240234375E-74 +3.5373746401666849112857269468211679119908701481751522933229499413370204114992594979135498511595177744070308945868990843840149177391726464191537591810604996523126727451233261802484371567889542831153448787517845630645751953125E-74 +7.0747492803333686443890222221879630809964710996441502725941768828061451962267308709218385691072299983905696202141296222439726598466944496780070518601884626308217877040954238197515628432110457168846551212482154369354248046875E-74 +7.074749280333369822571453893642335823981740296350304586645899882674040822998518995827099702319035548814061789173798168768029835478345292838307518362120999304625345490246652360496874313577908566230689757503569126129150390625E-74 +1.4149498560666737288778044444375926161992942199288300545188353765612290392453461741843677138214459996781139240428259244487945319693388899356014103720376925261643575408190847639503125686422091433769310242496430873870849609375E-73 +1.414949856066673964514290778728467164796348059270060917329179976534808164599703799165419940463807109762812357834759633753605967095669058567661503672424199860925069098049330472099374862715581713246137951500713825225830078125E-73 +2.829899712133347457755608888875185232398588439857660109037670753122458078490692348368735427642891999356227848085651848897589063938677779871202820744075385052328715081638169527900625137284418286753862048499286174774169921875E-73 +2.82989971213334792902858155745693432959269611854012183465835995306961632919940759833083988092761421952562471566951926750721193419133811713532300734484839972185013819609866094419874972543116342649227590300142765045166015625E-73 +5.65979942426669491551121777775037046479717687971532021807534150624491615698138469673747085528578399871245569617130369779517812787735555974240564148815077010465743016327633905580125027456883657350772409699857234954833984375E-73 +5.6597994242666958580571631149138686591853922370802436693167199061392326583988151966616797618552284390512494313390385350144238683826762342706460146896967994437002763921973218883974994508623268529845518060028553009033203125E-73 +1.13195988485333898310224355555007409295943537594306404361506830124898323139627693934749417105715679974249113923426073955903562557547111194848112829763015402093148603265526781116025005491376731470154481939971446990966796875E-72 +1.1319598848533391716114326229827737318370784474160487338633439812278465316797630393323359523710456878102498862678077070028847736765352468541292029379393598887400552784394643776794998901724653705969103612005710601806640625E-72 +2.2639197697066779662044871111001481859188707518861280872301366024979664627925538786949883421143135994849822784685214791180712511509422238969622565952603080418629720653105356223205001098275346294030896387994289398193359375E-72 +2.263919769706678343222865245965547463674156894832097467726687962455693063359526078664671904742091375620499772535615414005769547353070493708258405875878719777480110556878928755358999780344930741193820722401142120361328125E-72 +4.527839539413355932408974222200296371837741503772256174460273204995932925585107757389976684228627198969964556937042958236142502301884447793924513190520616083725944130621071244641000219655069258806179277598857879638671875E-72 +4.52783953941335668644573049193109492734831378966419493545337592491138612671905215732934380948418275124099954507123082801153909470614098741651681175175743955496022111375785751071799956068986148238764144480228424072265625E-72 +9.05567907882671186481794844440059274367548300754451234892054640999186585117021551477995336845725439793992911387408591647228500460376889558784902638104123216745188826124214248928200043931013851761235855519771575927734375E-72 +9.0556790788267133728914609838621898546966275793283898709067518498227722534381043146586876189683655024819990901424616560230781894122819748330336235035148791099204422275157150214359991213797229647752828896045684814453125E-72 +1.81113581576534237296358968888011854873509660150890246978410928199837317023404310295599067369145087958798582277481718329445700092075377911756980527620824643349037765224842849785640008786202770352247171103954315185546875E-71 +1.8111358157653426745782921967724379709393255158656779741813503699645544506876208629317375237936731004963998180284923312046156378824563949666067247007029758219840884455031430042871998242759445929550565779209136962890625E-71 +3.6222716315306847459271793777602370974701932030178049395682185639967463404680862059119813473829017591759716455496343665889140018415075582351396105524164928669807553044968569957128001757240554070449434220790863037109375E-71 +3.622271631530685349156584393544875941878651031731355948362700739929108901375241725863475047587346200992799636056984662409231275764912789933213449401405951643968176891006286008574399648551889185910113155841827392578125E-71 +7.244543263061369491854358755520474194940386406035609879136437127993492680936172411823962694765803518351943291099268733177828003683015116470279221104832985733961510608993713991425600351448110814089886844158172607421875E-71 +7.24454326306137069831316878708975188375730206346271189672540147985821780275048345172695009517469240198559927211396932481846255152982557986642689880281190328793635378201257201714879929710377837182022631168365478515625E-71 +1.448908652612273898370871751104094838988077281207121975827287425598698536187234482364792538953160703670388658219853746635565600736603023294055844220966597146792302121798742798285120070289622162817977368831634521484375E-70 +1.44890865261227413966263375741795037675146041269254237934508029597164356055009669034539001903493848039711985442279386496369251030596511597328537976056238065758727075640251440342975985942075567436404526233673095703125E-70 +2.89781730522454779674174350220818967797615456241424395165457485119739707237446896472958507790632140734077731643970749327113120147320604658811168844193319429358460424359748559657024014057924432563595473766326904296875E-70 +2.8978173052245482793252675148359007535029208253850847586901605919432871211001933806907800380698769607942397088455877299273850206119302319465707595211247613151745415128050288068595197188415113487280905246734619140625E-70 +5.7956346104490955934834870044163793559523091248284879033091497023947941447489379294591701558126428146815546328794149865422624029464120931762233768838663885871692084871949711931404802811584886512719094753265380859375E-70 +5.795634610449096558650535029671801507005841650770169517380321183886574242200386761381560076139753921588479417691175459854770041223860463893141519042249522630349083025610057613719039437683022697456181049346923828125E-70 +1.1591269220898191186966974008832758711904618249656975806618299404789588289497875858918340311625285629363109265758829973084524805892824186352446753767732777174338416974389942386280960562316977302543818950653076171875E-69 +1.159126922089819311730107005934360301401168330154033903476064236777314848440077352276312015227950784317695883538235091970954008244772092778628303808449904526069816605122011522743807887536604539491236209869384765625E-69 +2.318253844179638237393394801766551742380923649931395161323659880957917657899575171783668062325057125872621853151765994616904961178564837270489350753546555434867683394877988477256192112463395460508763790130615234375E-69 +2.31825384417963862346021401186872060280233666030806780695212847355462969688015470455262403045590156863539176707647018394190801648954418555725660761689980905213963321024402304548761577507320907898247241973876953125E-69 +4.63650768835927647478678960353310348476184729986279032264731976191583531579915034356733612465011425174524370630353198923380992235712967454097870150709311086973536678975597695451238422492679092101752758026123046875E-69 +4.6365076883592772469204280237374412056046733206161356139042569471092593937603094091052480609118031372707835341529403678838160329790883711145132152337996181042792664204880460909752315501464181579649448394775390625E-69 +9.2730153767185529495735792070662069695236945997255806452946395238316706315983006871346722493002285034904874126070639784676198447142593490819574030141862217394707335795119539090247684498535818420350551605224609375E-69 +9.273015376718554493840856047474882411209346641232271227808513894218518787520618818210496121823606274541567068305880735767632065958176742229026430467599236208558532840976092181950463100292836315929889678955078125E-69 +1.8546030753437105899147158414132413939047389199451161290589279047663341263196601374269344498600457006980974825214127956935239689428518698163914806028372443478941467159023907818049536899707163684070110321044921875E-68 +1.854603075343710898768171209494976482241869328246454245561702778843703757504123763642099224364721254908313413661176147153526413191635348445805286093519847241711706568195218436390092620058567263185977935791015625E-68 +3.709206150687421179829431682826482787809477839890232258117855809532668252639320274853868899720091401396194965042825591387047937885703739632782961205674488695788293431804781563609907379941432736814022064208984375E-68 +3.70920615068742179753634241898995296448373865649290849112340555768740751500824752728419844872944250981662682732235229430705282638327069689161057218703969448342341313639043687278018524011713452637195587158203125E-68 +7.41841230137484235965886336565296557561895567978046451623571161906533650527864054970773779944018280279238993008565118277409587577140747926556592241134897739157658686360956312721981475988286547362804412841796875E-68 +7.4184123013748435950726848379799059289674773129858169822468111153748150300164950545683968974588850196332536546447045886141056527665413937832211443740793889668468262727808737455603704802342690527439117431640625E-68 +1.48368246027496847193177267313059311512379113595609290324714232381306730105572810994154755988803656055847798601713023655481917515428149585311318448226979547831531737272191262544396295197657309472560882568359375E-67 +1.4836824602749687190145369675959811857934954625971633964493622230749630060032990109136793794917770039266507309289409177228211305533082787566442288748158777933693652545561747491120740960468538105487823486328125E-67 +2.9673649205499369438635453462611862302475822719121858064942846476261346021114562198830951197760731211169559720342604731096383503085629917062263689645395909566306347454438252508879259039531461894512176513671875E-67 +2.967364920549937438029073935191962371586990925194326792898724446149926012006598021827358758983554007853301461857881835445642261106616557513288457749631755586738730509112349498224148192093707621097564697265625E-67 +5.934729841099873887727090692522372460495164543824371612988569295252269204222912439766190239552146242233911944068520946219276700617125983412452737929079181913261269490887650501775851807906292378902435302734375E-67 +5.93472984109987487605814787038392474317398185038865358579744889229985202401319604365471751796710801570660292371576367089128452221323311502657691549926351117347746101822469899644829638418741524219512939453125E-67 +1.186945968219974777545418138504474492099032908764874322597713859050453840844582487953238047910429248446782388813704189243855340123425196682490547585815836382652253898177530100355170361581258475780487060546875E-66 +1.18694596821997497521162957407678494863479637007773071715948977845997040480263920873094350359342160314132058474315273417825690444264662300531538309985270223469549220364493979928965927683748304843902587890625E-66 +2.37389193643994955509083627700894898419806581752974864519542771810090768168916497590647609582085849689356477762740837848771068024685039336498109517163167276530450779635506020071034072316251695156097412109375E-66 +2.3738919364399499504232591481535698972695927401554614343189795569199408096052784174618870071868432062826411694863054683565138088852932460106307661997054044693909844072898795985793185536749660968780517578125E-66 +4.7477838728798991101816725540178979683961316350594972903908554362018153633783299518129521916417169937871295552548167569754213604937007867299621903432633455306090155927101204014206814463250339031219482421875E-66 +4.747783872879899900846518296307139794539185480310922868637959113839881619210556834923774014373686412565282338972610936713027617770586492021261532399410808938781968814579759197158637107349932193756103515625E-66 +9.495567745759798220363345108035795936792263270118994580781710872403630726756659903625904383283433987574259110509633513950842720987401573459924380686526691061218031185420240802841362892650067806243896484375E-66 +9.49556774575979980169303659261427958907837096062184573727591822767976323842111366984754802874737282513056467794522187342605523554117298404252306479882161787756393762915951839431727421469986438751220703125E-66 +1.899113549151959644072669021607159187358452654023798916156342174480726145351331980725180876656686797514851822101926702790168544197480314691984876137305338212243606237084048160568272578530013561248779296875E-65 +1.89911354915195996033860731852285591781567419212436914745518364553595264768422273396950960574947456502611293558904437468521104710823459680850461295976432357551278752583190367886345484293997287750244140625E-65 +3.79822709830391928814533804321431837471690530804759783231268434896145229070266396145036175331337359502970364420385340558033708839496062938396975227461067642448721247416809632113654515706002712249755859375E-65 +3.7982270983039199206772146370457118356313483842487382949103672910719052953684454679390192114989491300522258711780887493704220942164691936170092259195286471510255750516638073577269096858799457550048828125E-65 +7.5964541966078385762906760864286367494338106160951956646253686979229045814053279229007235066267471900594072884077068111606741767899212587679395045492213528489744249483361926422730903141200542449951171875E-65 +7.596454196607839841354429274091423671262696768497476589820734582143810590736890935878038422997898260104451742356177498740844188432938387234018451839057294302051150103327614715453819371759891510009765625E-65 +1.5192908393215677152581352172857273498867621232190391329250737395845809162810655845801447013253494380118814576815413622321348353579842517535879009098442705697948849896672385284546180628240108489990234375E-64 +1.519290839321567968270885854818284734252539353699495317964146916428762118147378187175607684599579652020890348471235499748168837686587677446803690367811458860410230020665522943090763874351978302001953125E-64 +3.038581678643135430516270434571454699773524246438078265850147479169161832562131169160289402650698876023762915363082724464269670715968503507175801819688541139589769979334477056909236125648021697998046875E-64 +3.03858167864313593654177170963656946850507870739899063592829383285752423629475637435121536919915930404178069694247099949633767537317535489360738073562291772082046004133104588618152774870395660400390625E-64 +6.07716335728627086103254086914290939954704849287615653170029495833832366512426233832057880530139775204752583072616544892853934143193700701435160363937708227917953995866895411381847225129604339599609375E-64 +6.0771633572862718730835434192731389370101574147979812718565876657150484725895127487024307383983186080835613938849419989926753507463507097872147614712458354416409200826620917723630554974079132080078125E-64 +1.21543267145725417220650817382858187990940969857523130634005899166766473302485246766411576106027955040950516614523308978570786828638740140287032072787541645583590799173379082276369445025920867919921875E-63 +1.2154326714572543746167086838546277874020314829595962543713175331430096945179025497404861476796637216167122787769883997985350701492701419574429522942491670883281840165324183544726110994815826416015625E-63 +2.4308653429145083444130163476571637598188193971504626126801179833353294660497049353282315221205591008190103322904661795714157365727748028057406414557508329116718159834675816455273889005184173583984375E-63 +2.430865342914508749233417367709255574804062965919192508742635066286019389035805099480972295359327443233424557553976799597070140298540283914885904588498334176656368033064836708945222198963165283203125E-63 +4.861730685829016688826032695314327519637638794300925225360235966670658932099409870656463044241118201638020664580932359142831473145549605611481282911501665823343631966935163291054777801036834716796875E-63 +4.86173068582901749846683473541851114960812593183838501748527013257203877807161019896194459071865488646684911510795359919414028059708056782977180917699666835331273606612967341789044439792633056640625E-63 +9.72346137165803337765206539062865503927527758860185045072047193334131786419881974131292608848223640327604132916186471828566294629109921122296256582300333164668726393387032658210955560207366943359375E-63 +9.7234613716580349969336694708370222992162518636767700349705402651440775561432203979238891814373097729336982302159071983882805611941611356595436183539933367066254721322593468357808887958526611328125E-63 +1.94469227433160667553041307812573100785505551772037009014409438666826357283976394826258521769644728065520826583237294365713258925821984224459251316460066632933745278677406531642191112041473388671875E-62 +1.9446922743316069993867338941674044598432503727353540069941080530288155112286440795847778362874619545867396460431814396776561122388322271319087236707986673413250944264518693671561777591705322265625E-62 +3.8893845486632133510608261562514620157101110354407401802881887733365271456795278965251704353928945613104165316647458873142651785164396844891850263292013326586749055735481306328438222408294677734375E-62 +3.889384548663213998773467788334808919686500745470708013988216106057631022457288159169555672574923909173479292086362879355312224477664454263817447341597334682650188852903738734312355518341064453125E-62 +7.778769097326426702121652312502924031420222070881480360576377546673054291359055793050340870785789122620833063329491774628530357032879368978370052658402665317349811147096261265687644481658935546875E-62 +7.77876909732642799754693557666961783937300149094141602797643221211526204491457631833911134514984781834695858417272575871062444895532890852763489468319466936530037770580747746862471103668212890625E-62 +1.555753819465285340424330462500584806284044414176296072115275509334610858271811158610068174157157824524166612665898354925706071406575873795674010531680533063469962229419252253137528896331787109375E-61 +1.55575381946528559950938711533392356787460029818828320559528644242305240898291526366782226902996956366939171683454515174212488979106578170552697893663893387306007554116149549372494220733642578125E-61 +3.11150763893057068084866092500116961256808882835259214423055101866922171654362231722013634831431564904833322533179670985141214281315174759134802106336106612693992445883850450627505779266357421875E-61 +3.1115076389305711990187742306678471357492005963765664111905728848461048179658305273356445380599391273387834336690903034842497795821315634110539578732778677461201510823229909874498844146728515625E-61 +6.2230152778611413616973218500023392251361776567051842884611020373384434330872446344402726966286312980966664506635934197028242856263034951826960421267221322538798489176770090125501155853271484375E-61 +6.223015277861142398037548461335694271498401192753132822381145769692209635931661054671289076119878254677566867338180606968499559164263126822107915746555735492240302164645981974899768829345703125E-61 +1.2446030555722282723394643700004678450272355313410368576922204074676886866174489268880545393257262596193332901327186839405648571252606990365392084253444264507759697835354018025100231170654296875E-60 +1.244603055572228479607509692267138854299680238550626564476229153938441927186332210934257815223975650935513373467636121393699911832852625364421583149311147098448060432929196394979953765869140625E-60 +2.489206111144456544678928740000935690054471062682073715384440814935377373234897853776109078651452519238666580265437367881129714250521398073078416850688852901551939567070803605020046234130859375E-60 +2.48920611114445695921501938453427770859936047710125312895245830787688385437266442186851563044795130187102674693527224278739982366570525072884316629862229419689612086585839278995990753173828125E-60 +4.97841222228891308935785748000187138010894212536414743076888162987075474646979570755221815730290503847733316053087473576225942850104279614615683370137770580310387913414160721004009246826171875E-60 +4.9784122222889139184300387690685554171987209542025062579049166157537677087453288437370312608959026037420534938705444855747996473314105014576863325972445883937922417317167855799198150634765625E-60 +9.9568244445778261787157149600037427602178842507282948615377632597415094929395914151044363146058100769546663210617494715245188570020855922923136674027554116062077582682832144200801849365234375E-60 +9.956824444577827836860077538137110834397441908405012515809833231507535417490657687474062521791805207484106987741088971149599294662821002915372665194489176787584483463433571159839630126953125E-60 +1.9913648889155652357431429920007485520435768501456589723075526519483018985879182830208872629211620153909332642123498943049037714004171184584627334805510823212415516536566428840160369873046875E-59 +1.991364888915565567372015507627422166879488381681002503161966646301507083498131537494812504358361041496821397548217794229919858932564200583074533038897835357516896692686714231967926025390625E-59 +3.982729777831130471486285984001497104087153700291317944615105303896603797175836566041774525842324030781866528424699788609807542800834236916925466961102164642483103307313285768032073974609375E-59 +3.98272977783113113474403101525484433375897676336200500632393329260301416699626307498962500871672208299364279509643558845983971786512840116614906607779567071503379338537342846393585205078125E-59 +7.96545955566226094297257196800299420817430740058263588923021060779320759435167313208354905168464806156373305684939957721961508560166847383385093392220432928496620661462657153606414794921875E-59 +7.9654595556622622694880620305096886675179535267240100126478665852060283339925261499792500174334441659872855901928711769196794357302568023322981321555913414300675867707468569278717041015625E-59 +1.59309191113245218859451439360059884163486148011652717784604212155864151887033462641670981033692961231274661136987991544392301712033369476677018678444086585699324132292531430721282958984375E-58 +1.5930919111324524538976124061019377335035907053448020025295733170412056667985052299958500034866888331974571180385742353839358871460513604664596264311182682860135173541493713855743408203125E-58 +3.1861838222649043771890287872011976832697229602330543556920842431172830377406692528334196206738592246254932227397598308878460342406673895335403735688817317139864826458506286144256591796875E-58 +3.186183822264904907795224812203875467007181410689604005059146634082411333597010459991700006973377666394914236077148470767871774292102720932919252862236536572027034708298742771148681640625E-58 +6.372367644529808754378057574402395366539445920466108711384168486234566075481338505666839241347718449250986445479519661775692068481334779067080747137763463427972965291701257228851318359375E-58 +6.37236764452980981559044962440775093401436282137920801011829326816482266719402091998340001394675533278982847215429694153574354858420544186583850572447307314405406941659748554229736328125E-58 +1.274473528905961750875611514880479073307889184093221742276833697246913215096267701133367848269543689850197289095903932355138413696266955813416149427552692685594593058340251445770263671875E-57 +1.27447352890596196311808992488155018680287256427584160202365865363296453343880418399668000278935106655796569443085938830714870971684108837316770114489461462881081388331949710845947265625E-57 +2.54894705781192350175122302976095814661577836818644348455366739449382643019253540226673569653908737970039457819180786471027682739253391162683229885510538537118918611668050289154052734375E-57 +2.5489470578119239262361798497631003736057451285516832040473173072659290668776083679933600055787021331159313888617187766142974194336821767463354022897892292576216277666389942169189453125E-57 +5.0978941156238470035024460595219162932315567363728869691073347889876528603850708045334713930781747594007891563836157294205536547850678232536645977102107707423783722333610057830810546875E-57 +5.097894115623847852472359699526200747211490257103366408094634614531858133755216735986720011157404266231862777723437553228594838867364353492670804579578458515243255533277988433837890625E-57 +1.0195788231247694007004892119043832586463113472745773938214669577975305720770141609066942786156349518801578312767231458841107309570135646507329195420421541484756744466722011566162109375E-56 +1.019578823124769570494471939905240149442298051420673281618926922906371626751043347197344002231480853246372555544687510645718967773472870698534160915915691703048651106655597686767578125E-56 +2.039157646249538801400978423808766517292622694549154787642933915595061144154028321813388557231269903760315662553446291768221461914027129301465839084084308296951348893344402313232421875E-56 +2.03915764624953914098894387981048029888459610284134656323785384581274325350208669439468800446296170649274511108937502129143793554694574139706832183183138340609730221331119537353515625E-56 +4.07831529249907760280195684761753303458524538909830957528586783119012228830805664362677711446253980752063132510689258353644292382805425860293167816816861659390269778668880462646484375E-56 +4.0783152924990782819778877596209605977691922056826931264757076916254865070041733887893760089259234129854902221787500425828758710938914827941366436636627668121946044266223907470703125E-56 +8.1566305849981552056039136952350660691704907781966191505717356623802445766161132872535542289250796150412626502137851670728858476561085172058633563363372331878053955733776092529296875E-56 +8.156630584998156563955775519241921195538384411365386252951415383250973014008346777578752017851846825970980444357500085165751742187782965588273287327325533624389208853244781494140625E-56 +1.6313261169996310411207827390470132138340981556393238301143471324760489153232226574507108457850159230082525300427570334145771695312217034411726712672674466375610791146755218505859375E-55 +1.631326116999631312791155103848384239107676882273077250590283076650194602801669355515750403570369365194196088871500017033150348437556593117654657465465106724877841770648956298828125E-55 +3.262652233999262082241565478094026427668196311278647660228694264952097830646445314901421691570031846016505060085514066829154339062443406882345342534534893275122158229351043701171875E-55 +3.26265223399926262558231020769676847821535376454615450118056615330038920560333871103150080714073873038839217774300003406630069687511318623530931493093021344975568354129791259765625E-55 +6.52530446799852416448313095618805285533639262255729532045738852990419566129289062980284338314006369203301012017102813365830867812488681376469068506906978655024431645870208740234375E-55 +6.5253044679985252511646204153935369564307075290923090023611323066007784112066774220630016142814774607767843554860000681326013937502263724706186298618604268995113670825958251953125E-55 +1.30506089359970483289662619123761057106727852451145906409147770598083913225857812596056867662801273840660202403420562673166173562497736275293813701381395731004886329174041748046875E-54 +1.3050608935997050502329240830787073912861415058184618004722264613201556822413354844126003228562954921553568710972000136265202787500452744941237259723720853799022734165191650390625E-54 +2.6101217871994096657932523824752211421345570490229181281829554119616782645171562519211373532560254768132040480684112534633234712499547255058762740276279146200977265834808349609375E-54 +2.610121787199410100465848166157414782572283011636923600944452922640311364482670968825200645712590984310713742194400027253040557500090548988247451944744170759804546833038330078125E-54 +5.220243574398819331586504764950442284269114098045836256365910823923356529034312503842274706512050953626408096136822506926646942499909451011752548055255829240195453166961669921875E-54 +5.22024357439882020093169633231482956514456602327384720188890584528062272896534193765040129142518196862142748438880005450608111500018109797649490388948834151960909366607666015625E-54 +1.044048714879763866317300952990088456853822819609167251273182164784671305806862500768454941302410190725281619227364501385329388499981890202350509611051165848039090633392333984375E-53 +1.04404871487976404018633926646296591302891320465476944037778116905612454579306838753008025828503639372428549687776001090121622300003621959529898077789766830392181873321533203125E-53 +2.08809742975952773263460190598017691370764563921833450254636432956934261161372500153690988260482038145056323845472900277065877699996378040470101922210233169607818126678466796875E-53 +2.0880974297595280803726785329259318260578264093095388807555623381122490915861367750601605165700727874485709937555200218024324460000724391905979615557953366078436374664306640625E-53 +4.1761948595190554652692038119603538274152912784366690050927286591386852232274500030738197652096407629011264769094580055413175539999275608094020384442046633921563625335693359375E-53 +4.176194859519056160745357065851863652115652818619077761511124676224498183172273550120321033140145574897141987511040043604864892000144878381195923111590673215687274932861328125E-53 +8.352389719038110930538407623920707654830582556873338010185457318277370446454900006147639530419281525802252953818916011082635107999855121618804076888409326784312725067138671875E-53 +8.35238971903811232149071413170372730423130563723815552302224935244899636634454710024064206628029114979428397502208008720972978400028975676239184622318134643137454986572265625E-53 +1.670477943807622186107681524784141530966116511374667602037091463655474089290980001229527906083856305160450590763783202216527021599971024323760815377681865356862545013427734375E-52 +1.67047794380762246429814282634074546084626112744763110460444987048979927326890942004812841325605822995885679500441601744194595680005795135247836924463626928627490997314453125E-52 +3.34095588761524437221536304956828306193223302274933520407418292731094817858196000245905581216771261032090118152756640443305404319994204864752163075536373071372509002685546875E-52 +3.3409558876152449285962856526814909216925222548952622092088997409795985465378188400962568265121164599177135900088320348838919136001159027049567384892725385725498199462890625E-52 +6.6819117752304887444307260991365661238644660454986704081483658546218963571639200049181116243354252206418023630551328088661080863998840972950432615107274614274501800537109375E-52 +6.681911775230489857192571305362981843385044509790524418417799481959197093075637680192513653024232919835427180017664069767783827200231805409913476978545077145099639892578125E-52 +1.3363823550460977488861452198273132247728932090997340816296731709243792714327840009836223248670850441283604726110265617732216172799768194590086523021454922854900360107421875E-51 +1.336382355046097971438514261072596368677008901958104883683559896391839418615127536038502730604846583967085436003532813953556765440046361081982695395709015429019927978515625E-51 +2.672764710092195497772290439654626449545786418199468163259346341848758542865568001967244649734170088256720945222053123546443234559953638918017304604290984570980072021484375E-51 +2.67276471009219594287702852214519273735401780391620976736711979278367883723025507207700546120969316793417087200706562790711353088009272216396539079141803085803985595703125E-51 +5.34552942018439099554458087930925289909157283639893632651869268369751708573113600393448929946834017651344189044410624709288646911990727783603460920858196914196014404296875E-51 +5.3455294201843918857540570442903854747080356078324195347342395855673576744605101441540109224193863358683417440141312558142270617601854443279307815828360617160797119140625E-51 +1.06910588403687819910891617586185057981831456727978726530373853673950341714622720078689785989366803530268837808882124941857729382398145556720692184171639382839202880859375E-50 +1.0691058840368783771508114088580770949416071215664839069468479171134715348921020288308021844838772671736683488028262511628454123520370888655861563165672123432159423828125E-50 +2.1382117680737563982178323517237011596366291345595745306074770734790068342924544015737957197873360706053767561776424988371545876479629111344138436834327876567840576171875E-50 +2.138211768073756754301622817716154189883214243132967813893695834226943069784204057661604368967754534347336697605652502325690824704074177731172312633134424686431884765625E-50 +4.276423536147512796435664703447402319273258269119149061214954146958013668584908803147591439574672141210753512355284997674309175295925822268827687366865575313568115234375E-50 +4.27642353614751350860324563543230837976642848626593562778739166845388613956840811532320873793550906869467339521130500465138164940814835546234462526626884937286376953125E-50 +8.55284707229502559287132940689480463854651653823829812242990829391602733716981760629518287914934428242150702471056999534861835059185164453765537473373115062713623046875E-50 +8.5528470722950270172064912708646167595328569725318712555747833369077722791368162306464174758710181373893467904226100093027632988162967109246892505325376987457275390625E-50 +1.71056941445900511857426588137896092770930330764765962448598165878320546743396352125903657582986885648430140494211399906972367011837032890753107494674623012542724609375E-49 +1.7105694144590054034412982541729233519065713945063742511149566673815544558273632461292834951742036274778693580845220018605526597632593421849378501065075397491455078125E-49 +3.4211388289180102371485317627579218554186066152953192489719633175664109348679270425180731516597377129686028098842279981394473402367406578150621498934924602508544921875E-49 +3.421138828918010806882596508345846703813142789012748502229913334763108911654726492258566990348407254955738716169044003721105319526518684369875700213015079498291015625E-49 +6.842277657836020474297063525515843710837213230590638497943926635132821869735854085036146303319475425937205619768455996278894680473481315630124299786984920501708984375E-49 +6.84227765783602161376519301669169340762628557802549700445982666952621782330945298451713398069681450991147743233808800744221063905303736873975140042603015899658203125E-49 +1.368455531567204094859412705103168742167442646118127699588785327026564373947170817007229260663895085187441123953691199255778936094696263126024859957396984100341796875E-48 +1.36845553156720432275303860333833868152525711560509940089196533390524356466189059690342679613936290198229548646761760148844212781060747374795028008520603179931640625E-48 +2.73691106313440818971882541020633748433488529223625539917757065405312874789434163401445852132779017037488224790738239851155787218939252625204971991479396820068359375E-48 +2.7369110631344086455060772066766773630505142312101988017839306678104871293237811938068535922787258039645909729352352029768842556212149474959005601704120635986328125E-48 +5.4738221262688163794376508204126749686697705844725107983551413081062574957886832680289170426555803407497644958147647970231157443787850525040994398295879364013671875E-48 +5.473822126268817291012154413353354726101028462420397603567861335620974258647562387613707184557451607929181945870470405953768511242429894991801120340824127197265625E-48 +1.0947644252537632758875301640825349937339541168945021596710282616212514991577366536057834085311160681499528991629529594046231488757570105008198879659175872802734375E-47 +1.094764425253763458202430882670670945220205692484079520713572267124194851729512477522741436911490321585836389174094081190753702248485978998360224068164825439453125E-47 +2.189528850507526551775060328165069987467908233789004319342056523242502998315473307211566817062232136299905798325905918809246297751514021001639775931835174560546875E-47 +2.18952885050752691640486176534134189044041138496815904142714453424838970345902495504548287382298064317167277834818816238150740449697195799672044813632965087890625E-47 +4.37905770101505310355012065633013997493581646757800863868411304648500599663094661442313363412446427259981159665181183761849259550302804200327955186367034912109375E-47 +4.3790577010150538328097235306826837808808227699363180828542890684967794069180499100909657476459612863433455566963763247630148089939439159934408962726593017578125E-47 +8.7581154020301062071002413126602799498716329351560172773682260929700119932618932288462672682489285451996231933036236752369851910060560840065591037273406982421875E-47 +8.758115402030107665619447061365367561761645539872636165708578136993558813836099820181931495291922572686691113392752649526029617987887831986881792545318603515625E-47 +1.7516230804060212414200482625320559899743265870312034554736452185940023986523786457692534536497857090399246386607247350473970382012112168013118207454681396484375E-46 +1.751623080406021533123889412273073512352329107974527233141715627398711762767219964036386299058384514537338222678550529905205923597577566397376358509063720703125E-46 +3.503246160812042482840096525064111979948653174062406910947290437188004797304757291538506907299571418079849277321449470094794076402422433602623641490936279296875E-46 +3.50324616081204306624777882454614702470465821594905446628343125479742352553443992807277259811676902907467644535710105981041184719515513279475271701812744140625E-46 +7.00649232162408496568019305012822395989730634812481382189458087437600959460951458307701381459914283615969855464289894018958815280484486720524728298187255859375E-46 +7.0064923216240861324955576490922940494093164318981089325668625095948470510688798561455451962335380581493528907142021196208236943903102655895054340362548828125E-46 +1.40129846432481699313603861002564479197946126962496276437891617487520191892190291661540276291982856723193971092857978803791763056096897344104945659637451171875E-45 +1.4012984643248172264991115298184588098818632863796217865133725019189694102137759712291090392467076116298705781428404239241647388780620531179010868072509765625E-45 +2.8025969286496339862720772200512895839589225392499255287578323497504038378438058332308055258396571344638794218571595760758352611219379468820989131927490234375E-45 +2.802596928649634452998223059636917619763726572759243573026745003837938820427551942458218078493415223259741156285680847848329477756124106235802173614501953125E-45 +5.605193857299267972544154440102579167917845078499851057515664699500807675687611666461611051679314268927758843714319152151670522243875893764197826385498046875E-45 +5.60519385729926890599644611927383523952745314551848714605349000767587764085510388491643615698683044651948231257136169569665895551224821247160434722900390625E-45 +1.121038771459853594508830888020515833583569015699970211503132939900161535137522333292322210335862853785551768742863830430334104448775178752839565277099609375E-44 +1.12103877145985378119928922385476704790549062910369742921069800153517552817102077698328723139736608930389646251427233913933179110244964249432086944580078125E-44 +2.24207754291970718901766177604103166716713803139994042300626587980032307027504466658464442067172570757110353748572766086066820889755035750567913055419921875E-44 +2.2420775429197075623985784477095340958109812582073948584213960030703510563420415539665744627947321786077929250285446782786635822048992849886417388916015625E-44 +4.4841550858394143780353235520820633343342760627998808460125317596006461405500893331692888413434514151422070749714553217213364177951007150113582611083984375E-44 +4.484155085839415124797156895419068191621962516414789716842792006140702112684083107933148925589464357215585850057089356557327164409798569977283477783203125E-44 +8.968310171678828756070647104164126668668552125599761692025063519201292281100178666338577682686902830284414149942910643442672835590201430022716522216796875E-44 +8.96831017167883024959431379083813638324392503282957943368558401228140422536816621586629785117892871443117170011417871311465432881959713995456695556640625E-44 +1.793662034335765751214129420832825333733710425119952338405012703840258456220035733267715536537380566056882829988582128688534567118040286004543304443359375E-43 +1.79366203433576604991886275816762727664878500656591588673711680245628084507363324317325957023578574288623434002283574262293086576391942799091339111328125E-43 +3.58732406867153150242825884166565066746742085023990467681002540768051691244007146653543107307476113211376565997716425737706913423608057200908660888671875E-43 +3.5873240686715320998377255163352545532975700131318317734742336049125616901472664863465191404715714857724686800456714852458617315278388559818267822265625E-43 +7.1746481373430630048565176833313013349348417004798093536200508153610338248801429330708621461495222642275313199543285147541382684721611440181732177734375E-43 +7.174648137343064199675451032670509106595140026263663546948467209825123380294532972693038280943142971544937360091342970491723463055677711963653564453125E-43 +1.4349296274686126009713035366662602669869683400959618707240101630722067649760285866141724292299044528455062639908657029508276536944322288036346435546875E-42 +1.434929627468612839935090206534101821319028005252732709389693441965024676058906594538607656188628594308987472018268594098344692611135542392730712890625E-42 +2.869859254937225201942607073332520533973936680191923741448020326144413529952057173228344858459808905691012527981731405901655307388864457607269287109375E-42 +2.86985925493722567987018041306820364263805601050546541877938688393004935211781318907721531237725718861797494403653718819668938522227108478546142578125E-42 +5.73971850987445040388521414666504106794787336038384748289604065228882705990411434645668971691961781138202505596346281180331061477772891521453857421875E-42 +5.7397185098744513597403608261364072852761120210109308375587737678600987042356263781544306247545143772359498880730743763933787704445421695709228515625E-42 +1.14794370197489008077704282933300821358957467207676949657920813045776541198082286929133794338392356227640501119269256236066212295554578304290771484375E-41 +1.1479437019748902719480721652272814570552224042021861675117547535720197408471252756308861249509028754471899776146148752786757540889084339141845703125E-41 +2.2958874039497801615540856586660164271791493441535389931584162609155308239616457385826758867678471245528100223853851247213242459110915660858154296875E-41 +2.295887403949780543896144330454562914110444808404372335023509507144039481694250551261772249901805750894379955229229750557351508177816867828369140625E-41 +4.591774807899560323108171317332032854358298688307077986316832521831061647923291477165351773535694249105620044770770249442648491822183132171630859375E-41 +4.59177480789956108779228866090912582822088961680874467004701901428807896338850110252354449980361150178875991045845950111470301635563373565673828125E-41 +9.18354961579912064621634263466406570871659737661415597263366504366212329584658295433070354707138849821124008954154049888529698364436626434326171875E-41 +9.1835496157991221755845773218182516564417792336174893400940380285761579267770022050470889996072230035775198209169190022294060327112674713134765625E-41 +1.83670992315982412924326852693281314174331947532283119452673300873242465916931659086614070941427769964224801790830809977705939672887325286865234375E-40 +1.8367099231598244351169154643636503312883558467234978680188076057152315853554004410094177999214446007155039641833838004458812065422534942626953125E-40 +3.6734198463196482584865370538656262834866389506456623890534660174648493183386331817322814188285553992844960358166161995541187934577465057373046875E-40 +3.673419846319648870233830928727300662576711693446995736037615211430463170710800882018835599842889201431007928366767600891762413084506988525390625E-40 +7.346839692639296516973074107731252566973277901291324778106932034929698636677266363464562837657110798568992071633232399108237586915493011474609375E-40 +7.34683969263929774046766185745460132515342338689399147207523042286092634142160176403767119968577840286201585673353520178352482616901397705078125E-40 +1.469367938527859303394614821546250513394655580258264955621386406985939727335453272692912567531422159713798414326646479821647517383098602294921875E-39 +1.46936793852785954809353237149092026503068467737879829441504608457218526828432035280753423993715568057240317134670704035670496523380279541015625E-39 +2.93873587705571860678922964309250102678931116051652991124277281397187945467090654538582513506284431942759682865329295964329503476619720458984375E-39 +2.9387358770557190961870647429818405300613693547575965888300921691443705365686407056150684798743113611448063426934140807134099304676055908203125E-39 +5.8774717541114372135784592861850020535786223210330598224855456279437589093418130907716502701256886388551936573065859192865900695323944091796875E-39 +5.877471754111438192374129485963681060122738709515193177660184338288741073137281411230136959748622722289612685386828161426819860935211181640625E-39 +1.1754943508222874427156918572370004107157244642066119644971091255887517818683626181543300540251377277710387314613171838573180139064788818359375E-38 +1.175494350822287638474825897192736212024547741903038635532036867657748214627456282246027391949724544457922537077365632285363972187042236328125E-38 +2.350988701644574885431383714474000821431448928413223928994218251177503563736725236308660108050275455542077462922634367714636027812957763671875E-38 +2.35098870164457527694965179438547242404909548380607727106407373531549642925491256449205478389944908891584507415473126457072794437408447265625E-38 +4.70197740328914977086276742894800164286289785682644785798843650235500712747345047261732021610055091108415492584526873542927205562591552734375E-38 +4.7019774032891505538993035887709448480981909676121545421281474706309928585098251289841095677988981778316901483094625291414558887481689453125E-38 +9.4039548065782995417255348578960032857257957136528957159768730047100142549469009452346404322011018221683098516905374708585441112518310546875E-38 +9.403954806578301107798607177541889696196381935224309084256294941261985717019650257968219135597796355663380296618925058282911777496337890625E-38 +1.8807909613156599083451069715792006571451591427305791431953746009420028509893801890469280864402203644336619703381074941717088222503662109375E-37 +1.880790961315660221559721435508377939239276387044861816851258988252397143403930051593643827119559271132676059323785011656582355499267578125E-37 +3.761581922631319816690213943158401314290318285461158286390749201884005701978760378093856172880440728867323940676214988343417644500732421875E-37 +3.76158192263132044311944287101675587847855277408972363370251797650479428680786010318728765423911854226535211864757002331316471099853515625E-37 +7.52316384526263963338042788631680262858063657092231657278149840376801140395752075618771234576088145773464788135242997668683528900146484375E-37 +7.5231638452626408862388857420335117569571055481794472674050359530095885736157202063745753084782370845307042372951400466263294219970703125E-37 +1.50463276905252792667608557726336052571612731418446331455629968075360228079150415123754246915217629154692957627048599533736705780029296875E-36 +1.5046327690525281772477771484067023513914211096358894534810071906019177147231440412749150616956474169061408474590280093252658843994140625E-36 +3.0092655381050558533521711545267210514322546283689266291125993615072045615830083024750849383043525830938591525409719906747341156005859375E-36 +3.009265538105056354495554296813404702782842219271778906962014381203835429446288082549830123391294833812281694918056018650531768798828125E-36 +6.018531076210111706704342309053442102864509256737853258225198723014409123166016604950169876608705166187718305081943981349468231201171875E-36 +6.01853107621011270899110859362680940556568443854355781392402876240767085889257616509966024678258966762456338983611203730106353759765625E-36 +1.203706215242022341340868461810688420572901851347570651645039744602881824633203320990033975321741033237543661016388796269893646240234375E-35 +1.20370621524202254179822171872536188111313688770871156278480575248153417177851523301993204935651793352491267796722240746021270751953125E-35 +2.40741243048404468268173692362137684114580370269514130329007948920576364926640664198006795064348206647508732203277759253978729248046875E-35 +2.4074124304840450835964434374507237622262737754174231255696115049630683435570304660398640987130358670498253559344448149204254150390625E-35 +4.8148248609680893653634738472427536822916074053902826065801589784115272985328132839601359012869641329501746440655551850795745849609375E-35 +4.814824860968090167192886874901447524452547550834846251139223009926136687114060932079728197426071734099650711868889629840850830078125E-35 +9.629649721936178730726947694485507364583214810780565213160317956823054597065626567920271802573928265900349288131110370159149169921875E-35 +9.62964972193618033438577374980289504890509510166969250227844601985227337422812186415945639485214346819930142373777925968170166015625E-35 +1.925929944387235746145389538897101472916642962156113042632063591364610919413125313584054360514785653180069857626222074031829833984375E-34 +1.92592994438723606687715474996057900978101902033393850045568920397045467484562437283189127897042869363986028474755585193634033203125E-34 +3.85185988877447149229077907779420294583328592431222608526412718272922183882625062716810872102957130636013971525244414806365966796875E-34 +3.8518598887744721337543094999211580195620380406678770009113784079409093496912487456637825579408573872797205694951117038726806640625E-34 +7.7037197775489429845815581555884058916665718486244521705282543654584436776525012543362174420591426127202794305048882961273193359375E-34 +7.703719777548944267508618999842316039124076081335754001822756815881818699382497491327565115881714774559441138990223407745361328125E-34 +1.5407439555097885969163116311176811783333143697248904341056508730916887355305002508672434884118285225440558861009776592254638671875E-33 +1.540743955509788853501723799968463207824815216267150800364551363176363739876499498265513023176342954911888227798044681549072265625E-33 +3.081487911019577193832623262235362356666628739449780868211301746183377471061000501734486976823657045088111772201955318450927734375E-33 +3.08148791101957770700344759993692641564963043253430160072910272635272747975299899653102604635268590982377645559608936309814453125E-33 +6.16297582203915438766524652447072471333325747889956173642260349236675494212200100346897395364731409017622354440391063690185546875E-33 +6.1629758220391554140068951998738528312992608650686032014582054527054549595059979930620520927053718196475529111921787261962890625E-33 +1.23259516440783087753304930489414494266665149577991234728452069847335098842440020069379479072946281803524470888078212738037109375E-32 +1.2325951644078310828013790399747705662598521730137206402916410905410909919011995986124104185410743639295105822384357452392578125E-32 +2.4651903288156617550660986097882898853333029915598246945690413969467019768488004013875895814589256360704894177615642547607421875E-32 +2.465190328815662165602758079949541132519704346027441280583282181082181983802399197224820837082148727859021164476871490478515625E-32 +4.930380657631323510132197219576579770666605983119649389138082793893403953697600802775179162917851272140978835523128509521484375E-32 +4.93038065763132433120551615989908226503940869205488256116656436216436396760479839444964167416429745571804232895374298095703125E-32 +9.86076131526264702026439443915315954133321196623929877827616558778680790739520160555035832583570254428195767104625701904296875E-32 +9.8607613152626486624110323197981645300788173841097651223331287243287279352095967888992833483285949114360846579074859619140625E-32 +1.97215226305252940405287888783063190826664239324785975565523311755736158147904032111007166516714050885639153420925140380859375E-31 +1.9721522630525297324822064639596329060157634768219530244666257448657455870419193577798566696657189822872169315814971923828125E-31 +3.9443045261050588081057577756612638165332847864957195113104662351147231629580806422201433303342810177127830684185028076171875E-31 +3.944304526105059464964412927919265812031526953643906048933251489731491174083838715559713339331437964574433863162994384765625E-31 +7.888609052210117616211515551322527633066569572991439022620932470229446325916161284440286660668562035425566136837005615234375E-31 +7.88860905221011892992882585583853162406305390728781209786650297946298234816767743111942667866287592914886772632598876953125E-31 +1.577721810442023523242303110264505526613313914598287804524186494045889265183232256888057332133712407085113227367401123046875E-30 +1.57772181044202378598576517116770632481261078145756241957330059589259646963353548622388533573257518582977354526519775390625E-30 +3.15544362088404704648460622052901105322662782919657560904837298809177853036646451377611466426742481417022645473480224609375E-30 +3.1554436208840475719715303423354126496252215629151248391466011917851929392670709724477706714651503716595470905303955078125E-30 +6.3108872417680940929692124410580221064532556583931512180967459761835570607329290275522293285348496283404529094696044921875E-30 +6.310887241768095143943060684670825299250443125830249678293202383570385878534141944895541342930300743319094181060791015625E-30 +1.2621774483536188185938424882116044212906511316786302436193491952367114121465858055104458657069699256680905818939208984375E-29 +1.262177448353619028788612136934165059850088625166049935658640476714077175706828388979108268586060148663818836212158203125E-29 +2.524354896707237637187684976423208842581302263357260487238698390473422824293171611020891731413939851336181163787841796875E-29 +2.52435489670723805757722427386833011970017725033209987131728095342815435141365677795821653717212029732763767242431640625E-29 +5.04870979341447527437536995284641768516260452671452097447739678094684564858634322204178346282787970267236232757568359375E-29 +5.0487097934144761151544485477366602394003545006641997426345619068563087028273135559164330743442405946552753448486328125E-29 +1.00974195868289505487507399056928353703252090534290419489547935618936912971726864440835669256557594053447246551513671875E-28 +1.0097419586828952230308897095473320478800709001328399485269123813712617405654627111832866148688481189310550689697265625E-28 +2.0194839173657901097501479811385670740650418106858083897909587123787382594345372888167133851311518810689449310302734375E-28 +2.019483917365790446061779419094664095760141800265679897053824762742523481130925422366573229737696237862110137939453125E-28 +4.038967834731580219500295962277134148130083621371616779581917424757476518869074577633426770262303762137889862060546875E-28 +4.03896783473158089212355883818932819152028360053135979410764952548504696226185084473314645947539247572422027587890625E-28 +8.07793566946316043900059192455426829626016724274323355916383484951495303773814915526685354052460752427577972412109375E-28 +8.0779356694631617842471176763786563830405672010627195882152990509700939245237016894662929189507849514484405517578125E-28 +1.61558713389263208780011838491085365925203344854864671183276696990299060754762983105337070810492150485515594482421875E-27 +1.6155871338926323568494235352757312766081134402125439176430598101940187849047403378932585837901569902896881103515625E-27 +3.2311742677852641756002367698217073185040668970972934236655339398059812150952596621067414162098430097103118896484375E-27 +3.231174267785264713698847070551462553216226880425087835286119620388037569809480675786517167580313980579376220703125E-27 +6.462348535570528351200473539643414637008133794194586847331067879611962430190519324213482832419686019420623779296875E-27 +6.46234853557052942739769414110292510643245376085017567057223924077607513961896135157303433516062796115875244140625E-27 +1.292469707114105670240094707928682927401626758838917369466213575922392486038103864842696566483937203884124755859375E-26 +1.29246970711410588547953882822058502128649075217003513411444784815521502792379227031460686703212559223175048828125E-26 +2.58493941422821134048018941585736585480325351767783473893242715184478497207620772968539313296787440776824951171875E-26 +2.5849394142282117709590776564411700425729815043400702682288956963104300558475845406292137340642511844635009765625E-26 +5.1698788284564226809603788317147317096065070353556694778648543036895699441524154593707862659357488155364990234375E-26 +5.169878828456423541918155312882340085145963008680140536457791392620860111695169081258427468128502368927001953125E-26 +1.0339757656912845361920757663429463419213014070711338955729708607379139888304830918741572531871497631072998046875E-25 +1.033975765691284708383631062576468017029192601736028107291558278524172022339033816251685493625700473785400390625E-25 +2.067951531382569072384151532685892683842602814142267791145941721475827977660966183748314506374299526214599609375E-25 +2.06795153138256941676726212515293603405838520347205621458311655704834404467806763250337098725140094757080078125E-25 +4.13590306276513814476830306537178536768520562828453558229188344295165595532193236749662901274859905242919921875E-25 +4.1359030627651388335345242503058720681167704069441124291662331140966880893561352650067419745028018951416015625E-25 +8.2718061255302762895366061307435707353704112565690711645837668859033119106438647349932580254971981048583984375E-25 +8.271806125530277667069048500611744136233540813888224858332466228193376178712270530013483949005603790283203125E-25 +1.6543612251060552579073212261487141470740822513138142329167533771806623821287729469986516050994396209716796875E-24 +1.654361225106055533413809700122348827246708162777644971666493245638675235742454106002696789801120758056640625E-24 +3.308722450212110515814642452297428294148164502627628465833506754361324764257545893997303210198879241943359375E-24 +3.30872245021211106682761940024469765449341632555528994333298649127735047148490821200539357960224151611328125E-24 +6.61744490042422103162928490459485658829632900525525693166701350872264952851509178799460642039775848388671875E-24 +6.6174449004242221336552388004893953089868326511105798866659729825547009429698164240107871592044830322265625E-24 +1.32348898008484420632585698091897131765926580105105138633340270174452990570301835759892128407955169677734375E-23 +1.3234889800848444267310477600978790617973665302221159773331945965109401885939632848021574318408966064453125E-23 +2.6469779601696884126517139618379426353185316021021027726668054034890598114060367151978425681591033935546875E-23 +2.646977960169688853462095520195758123594733060444231954666389193021880377187926569604314863681793212890625E-23 +5.293955920339376825303427923675885270637063204204205545333610806978119622812073430395685136318206787109375E-23 +5.29395592033937770692419104039151624718946612088846390933277838604376075437585313920862972736358642578125E-23 +1.058791184067875365060685584735177054127412640840841109066722161395623924562414686079137027263641357421875E-22 +1.05879118406787554138483820807830324943789322417769278186655567720875215087517062784172594547271728515625E-22 +2.11758236813575073012137116947035410825482528168168221813344432279124784912482937215827405452728271484375E-22 +2.1175823681357510827696764161566064988757864483553855637331113544175043017503412556834518909454345703125E-22 +4.2351647362715014602427423389407082165096505633633644362668886455824956982496587443165481090545654296875E-22 +4.235164736271502165539352832313212997751572896710771127466222708835008603500682511366903781890869140625E-22 +8.470329472543002920485484677881416433019301126726728872533777291164991396499317488633096218109130859375E-22 +8.47032947254300433107870566462642599550314579342154225493244541767001720700136502273380756378173828125E-22 +1.694065894508600584097096935576283286603860225345345774506755458232998279299863497726619243621826171875E-21 +1.69406589450860086621574113292528519910062915868430845098648908353400344140027300454676151275634765625E-21 +3.38813178901720116819419387115256657320772045069069154901351091646599655859972699545323848724365234375E-21 +3.3881317890172017324314822658505703982012583173686169019729781670680068828005460090935230255126953125E-21 +6.7762635780344023363883877423051331464154409013813830980270218329319931171994539909064769744873046875E-21 +6.776263578034403464862964531701140796402516634737233803945956334136013765601092018187046051025390625E-21 +1.3552527156068804672776775484610266292830881802762766196054043665863986234398907981812953948974609375E-20 +1.355252715606880692972592906340228159280503326947446760789191266827202753120218403637409210205078125E-20 +2.710505431213760934555355096922053258566176360552553239210808733172797246879781596362590789794921875E-20 +2.71050543121376138594518581268045631856100665389489352157838253365440550624043680727481842041015625E-20 +5.42101086242752186911071019384410651713235272110510647842161746634559449375956319272518157958984375E-20 +5.4210108624275227718903716253609126371220133077897870431567650673088110124808736145496368408203125E-20 +1.08420217248550437382214203876882130342647054422102129568432349326911889875191263854503631591796875E-19 +1.0842021724855045543780743250721825274244026615579574086313530134617622024961747229099273681640625E-19 +2.1684043449710087476442840775376426068529410884420425913686469865382377975038252770900726318359375E-19 +2.168404344971009108756148650144365054848805323115914817262706026923524404992349445819854736328125E-19 +4.336808689942017495288568155075285213705882176884085182737293973076475595007650554180145263671875E-19 +4.33680868994201821751229730028873010969761064623182963452541205384704880998469889163970947265625E-19 +8.67361737988403499057713631015057042741176435376817036547458794615295119001530110836029052734375E-19 +8.6736173798840364350245946005774602193952212924636592690508241076940976199693977832794189453125E-19 +1.73472347597680699811542726203011408548235287075363407309491758923059023800306022167205810546875E-18 +1.7347234759768072870049189201154920438790442584927318538101648215388195239938795566558837890625E-18 +3.4694469519536139962308545240602281709647057415072681461898351784611804760061204433441162109375E-18 +3.469446951953614574009837840230984087758088516985463707620329643077639047987759113311767578125E-18 +6.938893903907227992461709048120456341929411483014536292379670356922360952012240886688232421875E-18 +6.93889390390722914801967568046196817551617703397092741524065928615527809597551822662353515625E-18 +1.387778780781445598492341809624091268385882296602907258475934071384472190402448177337646484375E-17 +1.38777878078144582960393513609239363510323540679418548304813185723105561919510364532470703125E-17 +2.77555756156289119698468361924818253677176459320581451695186814276894438080489635467529296875E-17 +2.7755575615628916592078702721847872702064708135883709660962637144621112383902072906494140625E-17 +5.5511151231257823939693672384963650735435291864116290339037362855378887616097927093505859375E-17 +5.551115123125783318415740544369574540412941627176741932192527428924222476780414581298828125E-17 +1.1102230246251564787938734476992730147087058372823258067807472571075777523219585418701171875E-16 +1.110223024625156663683148108873914908082588325435348386438505485784844495356082916259765625E-16 +2.220446049250312957587746895398546029417411674564651613561494514215155504643917083740234375E-16 +2.22044604925031332736629621774782981616517665087069677287701097156968899071216583251953125E-16 +4.44089209850062591517549379079709205883482334912930322712298902843031100928783416748046875E-16 +4.4408920985006266547325924354956596323303533017413935457540219431393779814243316650390625E-16 +8.8817841970012518303509875815941841176696466982586064542459780568606220185756683349609375E-16 +8.881784197001253309465184870991319264660706603482787091508043886278755962848663330078125E-16 +1.7763568394002503660701975163188368235339293396517212908491956113721244037151336669921875E-15 +1.776356839400250661893036974198263852932141320696557418301608777255751192569732666015625E-15 +3.552713678800500732140395032637673647067858679303442581698391222744248807430267333984375E-15 +3.55271367880050132378607394839652770586428264139311483660321755451150238513946533203125E-15 +7.10542735760100146428079006527534729413571735860688516339678244548849761486053466796875E-15 +7.1054273576010026475721478967930554117285652827862296732064351090230047702789306640625E-15 +1.42108547152020029285615801305506945882714347172137703267935648909769952297210693359375E-14 +1.4210854715202005295144295793586110823457130565572459346412870218046009540557861328125E-14 +2.8421709430404005857123160261101389176542869434427540653587129781953990459442138671875E-14 +2.842170943040401059028859158717222164691426113114491869282574043609201908111572265625E-14 +5.684341886080801171424632052220277835308573886885508130717425956390798091888427734375E-14 +5.68434188608080211805771831743444432938285222622898373856514808721840381622314453125E-14 +1.136868377216160234284926410444055567061714777377101626143485191278159618377685546875E-13 +1.13686837721616042361154366348688886587657044524579674771302961744368076324462890625E-13 +2.27373675443232046856985282088811113412342955475420325228697038255631923675537109375E-13 +2.2737367544323208472230873269737777317531408904915934954260592348873615264892578125E-13 +4.5474735088646409371397056417762222682468591095084065045739407651126384735107421875E-13 +4.547473508864641694446174653947555463506281780983186990852118469774723052978515625E-13 +9.094947017729281874279411283552444536493718219016813009147881530225276947021484375E-13 +9.09494701772928338889234930789511092701256356196637398170423693954944610595703125E-13 +1.818989403545856374855882256710488907298743643803362601829576306045055389404296875E-12 +1.81898940354585667777846986157902218540251271239327479634084738790988922119140625E-12 +3.63797880709171274971176451342097781459748728760672520365915261209011077880859375E-12 +3.6379788070917133555569397231580443708050254247865495926816947758197784423828125E-12 +7.2759576141834254994235290268419556291949745752134504073183052241802215576171875E-12 +7.275957614183426711113879446316088741610050849573099185363389551639556884765625E-12 +1.4551915228366850998847058053683911258389949150426900814636610448360443115234375E-11 +1.455191522836685342222775889263217748322010169914619837072677910327911376953125E-11 +2.910383045673370199769411610736782251677989830085380162927322089672088623046875E-11 +2.91038304567337068444555177852643549664402033982923967414535582065582275390625E-11 +5.82076609134674039953882322147356450335597966017076032585464417934417724609375E-11 +5.8207660913467413688911035570528709932880406796584793482907116413116455078125E-11 +1.16415321826934807990776464429471290067119593203415206517092883586883544921875E-10 +1.1641532182693482737782207114105741986576081359316958696581423282623291015625E-10 +2.3283064365386961598155292885894258013423918640683041303418576717376708984375E-10 +2.328306436538696547556441422821148397315216271863391739316284656524658203125E-10 +4.656612873077392319631058577178851602684783728136608260683715343475341796875E-10 +4.65661287307739309511288284564229679463043254372678347863256931304931640625E-10 +9.31322574615478463926211715435770320536956745627321652136743068695068359375E-10 +9.3132257461547861902257656912845935892608650874535669572651386260986328125E-10 +1.86264514923095692785242343087154064107391349125464330427348613739013671875E-9 +1.8626451492309572380451531382569187178521730174907133914530277252197265625E-9 +3.7252902984619138557048468617430812821478269825092866085469722747802734375E-9 +3.725290298461914476090306276513837435704346034981426782906055450439453125E-9 +7.450580596923827711409693723486162564295653965018573217093944549560546875E-9 +7.45058059692382895218061255302767487140869206996285356581211090087890625E-9 +1.490116119384765542281938744697232512859130793003714643418788909912109375E-8 +1.49011611938476579043612251060553497428173841399257071316242218017578125E-8 +2.98023223876953108456387748939446502571826158600742928683757781982421875E-8 +2.9802322387695315808722450212110699485634768279851414263248443603515625E-8 +5.9604644775390621691277549787889300514365231720148585736751556396484375E-8 +5.960464477539063161744490042422139897126953655970282852649688720703125E-8 +1.1920928955078124338255509957577860102873046344029717147350311279296875E-7 +1.192092895507812632348898008484427979425390731194056570529937744140625E-7 +2.384185791015624867651101991515572020574609268805943429470062255859375E-7 +2.38418579101562526469779601696885595885078146238811314105987548828125E-7 +4.76837158203124973530220398303114404114921853761188685894012451171875E-7 +4.7683715820312505293955920339377119177015629247762262821197509765625E-7 +9.5367431640624994706044079660622880822984370752237737178802490234375E-7 +9.536743164062501058791184067875423835403125849552452564239501953125E-7 +0.0000019073486328124998941208815932124576164596874150447547435760498046875 +0.000001907348632812500211758236813575084767080625169910490512847900390625 +0.000003814697265624999788241763186424915232919374830089509487152099609375 +0.00000381469726562500042351647362715016953416125033982098102569580078125 +0.00000762939453124999957648352637284983046583874966017901897430419921875 +0.0000076293945312500008470329472543003390683225006796419620513916015625 +0.0000152587890624999991529670527456996609316774993203580379486083984375 +0.000015258789062500001694065894508600678136645001359283924102783203125 +0.000030517578124999998305934105491399321863354998640716075897216796875 +0.00003051757812500000338813178901720135627329000271856784820556640625 +0.00006103515624999999661186821098279864372670999728143215179443359375 +0.0000610351562500000067762635780344027125465800054371356964111328125 +0.0001220703124999999932237364219655972874534199945628643035888671875 +0.000122070312500000013552527156068805425093160010874271392822265625 +0.000244140624999999986447472843931194574906839989125728607177734375 +0.00024414062500000002710505431213761085018632002174854278564453125 +0.00048828124999999997289494568786238914981367997825145721435546875 +0.0004882812500000000542101086242752217003726400434970855712890625 +0.0009765624999999999457898913757247782996273599565029144287109375 +0.000976562500000000108420217248550443400745280086994171142578125 +0.001953124999999999891579782751449556599254719913005828857421875 +0.00195312500000000021684043449710088680149056017398834228515625 +0.00390624999999999978315956550289911319850943982601165771484375 +0.0039062500000000004336808689942017736029811203479766845703125 +0.0078124999999999995663191310057982263970188796520233154296875 +0.007812500000000000867361737988403547205962240695953369140625 +0.015624999999999999132638262011596452794037759304046630859375 +0.01562500000000000173472347597680709441192448139190673828125 +0.03124999999999999826527652402319290558807551860809326171875 +0.0312500000000000034694469519536141888238489627838134765625 +0.0624999999999999965305530480463858111761510372161865234375 +0.062500000000000006938893903907228377647697925567626953125 +0.124999999999999993061106096092771622352302074432373046875 +0.12500000000000001387778780781445675529539585113525390625 +0.24999999999999998612221219218554324470460414886474609375 +0.2500000000000000277555756156289135105907917022705078125 +0.4999999999999999722444243843710864894092082977294921875 +0.500000000000000055511151231257827021181583404541015625 +0.999999999999999944488848768742172978818416595458984375 +1.00000000000000011102230246251565404236316680908203125 +1.99999999999999988897769753748434595763683319091796875 +2.0000000000000002220446049250313080847263336181640625 +3.9999999999999997779553950749686919152736663818359375 +4.000000000000000444089209850062616169452667236328125 +7.999999999999999555910790149937383830547332763671875 +8.00000000000000088817841970012523233890533447265625 +15.99999999999999911182158029987476766109466552734375 +16.0000000000000017763568394002504646778106689453125 +31.9999999999999982236431605997495353221893310546875 +32.000000000000003552713678800500929355621337890625 +63.999999999999996447286321199499070644378662109375 +64.00000000000000710542735760100185871124267578125 +127.99999999999999289457264239899814128875732421875 +128.0000000000000142108547152020037174224853515625 +255.9999999999999857891452847979962825775146484375 +256.000000000000028421709430404007434844970703125 +511.999999999999971578290569595992565155029296875 +512.00000000000005684341886080801486968994140625 +1023.99999999999994315658113919198513031005859375 +1024.0000000000001136868377216160297393798828125 +2047.9999999999998863131622783839702606201171875 +2048.000000000000227373675443232059478759765625 +4095.999999999999772626324556767940521240234375 +4096.00000000000045474735088646411895751953125 +8191.99999999999954525264911353588104248046875 +8192.0000000000009094947017729282379150390625 +16383.9999999999990905052982270717620849609375 +16384.000000000001818989403545856475830078125 +32767.999999999998181010596454143524169921875 +32768.00000000000363797880709171295166015625 +65535.99999999999636202119290828704833984375 +65536.0000000000072759576141834259033203125 +131071.9999999999927240423858165740966796875 +131072.000000000014551915228366851806640625 +262143.999999999985448084771633148193359375 +262144.00000000002910383045673370361328125 +524287.99999999997089616954326629638671875 +524288.0000000000582076609134674072265625 +1048575.9999999999417923390865325927734375 +1048576.000000000116415321826934814453125 +2097151.999999999883584678173065185546875 +2097152.00000000023283064365386962890625 +4194303.99999999976716935634613037109375 +4194304.0000000004656612873077392578125 +8388607.9999999995343387126922607421875 +8388608.000000000931322574615478515625 +16777215.999999999068677425384521484375 +16777216.00000000186264514923095703125 +33554431.99999999813735485076904296875 +33554432.0000000037252902984619140625 +67108863.9999999962747097015380859375 +67108864.000000007450580596923828125 +134217727.999999992549419403076171875 +134217728.00000001490116119384765625 +268435455.99999998509883880615234375 +268435456.0000000298023223876953125 +536870911.9999999701976776123046875 +536870912.000000059604644775390625 +1073741823.999999940395355224609375 +1073741824.00000011920928955078125 +2147483647.99999988079071044921875 +2147483648.0000002384185791015625 +4294967295.9999997615814208984375 +4294967296.000000476837158203125 +8589934591.999999523162841796875 +8589934592.00000095367431640625 +17179869183.99999904632568359375 +17179869184.0000019073486328125 +34359738367.9999980926513671875 +34359738368.000003814697265625 +68719476735.999996185302734375 +68719476736.00000762939453125 +137438953471.99999237060546875 +137438953472.0000152587890625 +274877906943.9999847412109375 +274877906944.000030517578125 +549755813887.999969482421875 +549755813888.00006103515625 +1099511627775.99993896484375 +1099511627776.0001220703125 +2199023255551.9998779296875 +2199023255552.000244140625 +4398046511103.999755859375 +4398046511104.00048828125 +8796093022207.99951171875 +8796093022208.0009765625 +17592186044415.9990234375 +17592186044416.001953125 +35184372088831.998046875 +35184372088832.00390625 +70368744177663.99609375 +70368744177664.0078125 +140737488355327.9921875 +140737488355328.015625 +281474976710655.984375 +281474976710656.03125 +562949953421311.96875 +562949953421312.0625 +1125899906842623.9375 +1125899906842624.125 +2251799813685247.875 +2251799813685248.25 +4503599627370495.75 +4503599627370496.5 +9007199254740991.5 +9007199254740993.0 +18014398509481983.0 +18014398509481986.0 +36028797018963966.0 +36028797018963972.0 +72057594037927932.0 +72057594037927944.0 +144115188075855864.0 +144115188075855888.0 +288230376151711728.0 +288230376151711776.0 +576460752303423456.0 +576460752303423552.0 +1152921504606846912.0 +1152921504606847104.0 +2305843009213693824.0 +2305843009213694208.0 +4611686018427387648.0 +4611686018427388416.0 +9223372036854775296.0 +9223372036854776832.0 +18446744073709550592.0 +18446744073709553664.0 +36893488147419101184.0 +36893488147419107328.0 +73786976294838202368.0 +73786976294838214656.0 +147573952589676404736.0 +147573952589676429312.0 +295147905179352809472.0 +295147905179352858624.0 +590295810358705618944.0 +590295810358705717248.0 +1180591620717411237888.0 +1180591620717411434496.0 +2361183241434822475776.0 +2361183241434822868992.0 +4722366482869644951552.0 +4722366482869645737984.0 +9444732965739289903104.0 +9444732965739291475968.0 +18889465931478579806208.0 +18889465931478582951936.0 +37778931862957159612416.0 +37778931862957165903872.0 +75557863725914319224832.0 +75557863725914331807744.0 +151115727451828638449664.0 +151115727451828663615488.0 +302231454903657276899328.0 +302231454903657327230976.0 +604462909807314553798656.0 +604462909807314654461952.0 +1208925819614629107597312.0 +1208925819614629308923904.0 +2417851639229258215194624.0 +2417851639229258617847808.0 +4835703278458516430389248.0 +4835703278458517235695616.0 +9671406556917032860778496.0 +9671406556917034471391232.0 +19342813113834065721556992.0 +19342813113834068942782464.0 +38685626227668131443113984.0 +38685626227668137885564928.0 +77371252455336262886227968.0 +77371252455336275771129856.0 +154742504910672525772455936.0 +154742504910672551542259712.0 +309485009821345051544911872.0 +309485009821345103084519424.0 +618970019642690103089823744.0 +618970019642690206169038848.0 +1237940039285380206179647488.0 +1237940039285380412338077696.0 +2475880078570760412359294976.0 +2475880078570760824676155392.0 +4951760157141520824718589952.0 +4951760157141521649352310784.0 +9903520314283041649437179904.0 +9903520314283043298704621568.0 +19807040628566083298874359808.0 +19807040628566086597409243136.0 +39614081257132166597748719616.0 +39614081257132173194818486272.0 +79228162514264333195497439232.0 +79228162514264346389636972544.0 +158456325028528666390994878464.0 +158456325028528692779273945088.0 +316912650057057332781989756928.0 +316912650057057385558547890176.0 +633825300114114665563979513856.0 +633825300114114771117095780352.0 +1267650600228229331127959027712.0 +1267650600228229542234191560704.0 +2535301200456458662255918055424.0 +2535301200456459084468383121408.0 +5070602400912917324511836110848.0 +5070602400912918168936766242816.0 +10141204801825834649023672221696.0 +10141204801825836337873532485632.0 +20282409603651669298047344443392.0 +20282409603651672675747064971264.0 +40564819207303338596094688886784.0 +40564819207303345351494129942528.0 +81129638414606677192189377773568.0 +81129638414606690702988259885056.0 +162259276829213354384378755547136.0 +162259276829213381405976519770112.0 +324518553658426708768757511094272.0 +324518553658426762811953039540224.0 +649037107316853417537515022188544.0 +649037107316853525623906079080448.0 +1298074214633706835075030044377088.0 +1298074214633707051247812158160896.0 +2596148429267413670150060088754176.0 +2596148429267414102495624316321792.0 +5192296858534827340300120177508352.0 +5192296858534828204991248632643584.0 +10384593717069654680600240355016704.0 +10384593717069656409982497265287168.0 +20769187434139309361200480710033408.0 +20769187434139312819964994530574336.0 +41538374868278618722400961420066816.0 +41538374868278625639929989061148672.0 +83076749736557237444801922840133632.0 +83076749736557251279859978122297344.0 +166153499473114474889603845680267264.0 +166153499473114502559719956244594688.0 +332306998946228949779207691360534528.0 +332306998946229005119439912489189376.0 +664613997892457899558415382721069056.0 +664613997892458010238879824978378752.0 +1329227995784915799116830765442138112.0 +1329227995784916020477759649956757504.0 +2658455991569831598233661530884276224.0 +2658455991569832040955519299913515008.0 +5316911983139663196467323061768552448.0 +5316911983139664081911038599827030016.0 +10633823966279326392934646123537104896.0 +10633823966279328163822077199654060032.0 +21267647932558652785869292247074209792.0 +21267647932558656327644154399308120064.0 +42535295865117305571738584494148419584.0 +42535295865117312655288308798616240128.0 +85070591730234611143477168988296839168.0 +85070591730234625310576617597232480256.0 +170141183460469222286954337976593678336.0 +170141183460469250621153235194464960512.0 +340282366920938444573908675953187356672.0 +340282366920938501242306470388929921024.0 +680564733841876889147817351906374713344.0 +680564733841877002484612940777859842048.0 +1361129467683753778295634703812749426688.0 +1361129467683754004969225881555719684096.0 +2722258935367507556591269407625498853376.0 +2722258935367508009938451763111439368192.0 +5444517870735015113182538815250997706752.0 +5444517870735016019876903526222878736384.0 +10889035741470030226365077630501995413504.0 +10889035741470032039753807052445757472768.0 +21778071482940060452730155261003990827008.0 +21778071482940064079507614104891514945536.0 +43556142965880120905460310522007981654016.0 +43556142965880128159015228209783029891072.0 +87112285931760241810920621044015963308032.0 +87112285931760256318030456419566059782144.0 +174224571863520483621841242088031926616064.0 +174224571863520512636060912839132119564288.0 +348449143727040967243682484176063853232128.0 +348449143727041025272121825678264239128576.0 +696898287454081934487364968352127706464256.0 +696898287454082050544243651356528478257152.0 +1393796574908163868974729936704255412928512.0 +1393796574908164101088487302713056956514304.0 +2787593149816327737949459873408510825857024.0 +2787593149816328202176974605426113913028608.0 +5575186299632655475898919746817021651714048.0 +5575186299632656404353949210852227826057216.0 +11150372599265310951797839493634043303428096.0 +11150372599265312808707898421704455652114432.0 +22300745198530621903595678987268086606856192.0 +22300745198530625617415796843408911304228864.0 +44601490397061243807191357974536173213712384.0 +44601490397061251234831593686817822608457728.0 +89202980794122487614382715949072346427424768.0 +89202980794122502469663187373635645216915456.0 +178405961588244975228765431898144692854849536.0 +178405961588245004939326374747271290433830912.0 +356811923176489950457530863796289385709699072.0 +356811923176490009878652749494542580867661824.0 +713623846352979900915061727592578771419398144.0 +713623846352980019757305498989085161735323648.0 +1427247692705959801830123455185157542838796288.0 +1427247692705960039514610997978170323470647296.0 +2854495385411919603660246910370315085677592576.0 +2854495385411920079029221995956340646941294592.0 +5708990770823839207320493820740630171355185152.0 +5708990770823840158058443991912681293882589184.0 +11417981541647678414640987641481260342710370304.0 +11417981541647680316116887983825362587765178368.0 +22835963083295356829281975282962520685420740608.0 +22835963083295360632233775967650725175530356736.0 +45671926166590713658563950565925041370841481216.0 +45671926166590721264467551935301450351060713472.0 +91343852333181427317127901131850082741682962432.0 +91343852333181442528935103870602900702121426944.0 +182687704666362854634255802263700165483365924864.0 +182687704666362885057870207741205801404242853888.0 +365375409332725709268511604527400330966731849728.0 +365375409332725770115740415482411602808485707776.0 +730750818665451418537023209054800661933463699456.0 +730750818665451540231480830964823205616971415552.0 +1461501637330902837074046418109601323866927398912.0 +1461501637330903080462961661929646411233942831104.0 +2923003274661805674148092836219202647733854797824.0 +2923003274661806160925923323859292822467885662208.0 +5846006549323611348296185672438405295467709595648.0 +5846006549323612321851846647718585644935771324416.0 +11692013098647222696592371344876810590935419191296.0 +11692013098647224643703693295437171289871542648832.0 +23384026197294445393184742689753621181870838382592.0 +23384026197294449287407386590874342579743085297664.0 +46768052394588890786369485379507242363741676765184.0 +46768052394588898574814773181748685159486170595328.0 +93536104789177781572738970759014484727483353530368.0 +93536104789177797149629546363497370318972341190656.0 +187072209578355563145477941518028969454966707060736.0 +187072209578355594299259092726994740637944682381312.0 +374144419156711126290955883036057938909933414121472.0 +374144419156711188598518185453989481275889364762624.0 +748288838313422252581911766072115877819866828242944.0 +748288838313422377197036370907978962551778729525248.0 +1496577676626844505163823532144231755639733656485888.0 +1496577676626844754394072741815957925103557459050496.0 +2993155353253689010327647064288463511279467312971776.0 +2993155353253689508788145483631915850207114918100992.0 +5986310706507378020655294128576927022558934625943552.0 +5986310706507379017576290967263831700414229836201984.0 +11972621413014756041310588257153854045117869251887104.0 +11972621413014758035152581934527663400828459672403968.0 +23945242826029512082621176514307708090235738503774208.0 +23945242826029516070305163869055326801656919344807936.0 +47890485652059024165242353028615416180471477007548416.0 +47890485652059032140610327738110653603313838689615872.0 +95780971304118048330484706057230832360942954015096832.0 +95780971304118064281220655476221307206627677379231744.0 +191561942608236096660969412114461664721885908030193664.0 +191561942608236128562441310952442614413255354758463488.0 +383123885216472193321938824228923329443771816060387328.0 +383123885216472257124882621904885228826510709516926976.0 +766247770432944386643877648457846658887543632120774656.0 +766247770432944514249765243809770457653021419033853952.0 +1532495540865888773287755296915693317775087264241549312.0 +1532495540865889028499530487619540915306042838067707904.0 +3064991081731777546575510593831386635550174528483098624.0 +3064991081731778056999060975239081830612085676135415808.0 +6129982163463555093151021187662773271100349056966197248.0 +6129982163463556113998121950478163661224171352270831616.0 +12259964326927110186302042375325546542200698113932394496.0 +12259964326927112227996243900956327322448342704541663232.0 +24519928653854220372604084750651093084401396227864788992.0 +24519928653854224455992487801912654644896685409083326464.0 +49039857307708440745208169501302186168802792455729577984.0 +49039857307708448911984975603825309289793370818166652928.0 +98079714615416881490416339002604372337605584911459155968.0 +98079714615416897823969951207650618579586741636333305856.0 +196159429230833762980832678005208744675211169822918311936.0 +196159429230833795647939902415301237159173483272666611712.0 +392318858461667525961665356010417489350422339645836623872.0 +392318858461667591295879804830602474318346966545333223424.0 +784637716923335051923330712020834978700844679291673247744.0 +784637716923335182591759609661204948636693933090666446848.0 +1569275433846670103846661424041669957401689358583346495488.0 +1569275433846670365183519219322409897273387866181332893696.0 +3138550867693340207693322848083339914803378717166692990976.0 +3138550867693340730367038438644819794546775732362665787392.0 +6277101735386680415386645696166679829606757434333385981952.0 +6277101735386681460734076877289639589093551464725331574784.0 +12554203470773360830773291392333359659213514868666771963904.0 +12554203470773362921468153754579279178187102929450663149568.0 +25108406941546721661546582784666719318427029737333543927808.0 +25108406941546725842936307509158558356374205858901326299136.0 +50216813883093443323093165569333438636854059474667087855616.0 +50216813883093451685872615018317116712748411717802652598272.0 +100433627766186886646186331138666877273708118949334175711232.0 +100433627766186903371745230036634233425496823435605305196544.0 +200867255532373773292372662277333754547416237898668351422464.0 +200867255532373806743490460073268466850993646871210610393088.0 +401734511064747546584745324554667509094832475797336702844928.0 +401734511064747613486980920146536933701987293742421220786176.0 +803469022129495093169490649109335018189664951594673405689856.0 +803469022129495226973961840293073867403974587484842441572352.0 +1606938044258990186338981298218670036379329903189346811379712.0 +1606938044258990453947923680586147734807949174969684883144704.0 +3213876088517980372677962596437340072758659806378693622759424.0 +3213876088517980907895847361172295469615898349939369766289408.0 +6427752177035960745355925192874680145517319612757387245518848.0 +6427752177035961815791694722344590939231796699878739532578816.0 +12855504354071921490711850385749360291034639225514774491037696.0 +12855504354071923631583389444689181878463593399757479065157632.0 +25711008708143842981423700771498720582069278451029548982075392.0 +25711008708143847263166778889378363756927186799514958130315264.0 +51422017416287685962847401542997441164138556902059097964150784.0 +51422017416287694526333557778756727513854373599029916260630528.0 +102844034832575371925694803085994882328277113804118195928301568.0 +102844034832575389052667115557513455027708747198059832521261056.0 +205688069665150743851389606171989764656554227608236391856603136.0 +205688069665150778105334231115026910055417494396119665042522112.0 +411376139330301487702779212343979529313108455216472783713206272.0 +411376139330301556210668462230053820110834988792239330085044224.0 +822752278660602975405558424687959058626216910432945567426412544.0 +822752278660603112421336924460107640221669977584478660170088448.0 +1645504557321205950811116849375918117252433820865891134852825088.0 +1645504557321206224842673848920215280443339955168957320340176896.0 +3291009114642411901622233698751836234504867641731782269705650176.0 +3291009114642412449685347697840430560886679910337914640680353792.0 +6582018229284823803244467397503672469009735283463564539411300352.0 +6582018229284824899370695395680861121773359820675829281360707584.0 +13164036458569647606488934795007344938019470566927129078822600704.0 +13164036458569649798741390791361722243546719641351658562721415168.0 +26328072917139295212977869590014689876038941133854258157645201408.0 +26328072917139299597482781582723444487093439282703317125442830336.0 +52656145834278590425955739180029379752077882267708516315290402816.0 +52656145834278599194965563165446888974186878565406634250885660672.0 +105312291668557180851911478360058759504155764535417032630580805632.0 +105312291668557198389931126330893777948373757130813268501771321344.0 +210624583337114361703822956720117519008311529070834065261161611264.0 +210624583337114396779862252661787555896747514261626537003542642688.0 +421249166674228723407645913440235038016623058141668130522323222528.0 +421249166674228793559724505323575111793495028523253074007085285376.0 +842498333348457446815291826880470076033246116283336261044646445056.0 +842498333348457587119449010647150223586990057046506148014170570752.0 +1684996666696914893630583653760940152066492232566672522089292890112.0 +1684996666696915174238898021294300447173980114093012296028341141504.0 +3369993333393829787261167307521880304132984465133345044178585780224.0 +3369993333393830348477796042588600894347960228186024592056682283008.0 +6739986666787659574522334615043760608265968930266690088357171560448.0 +6739986666787660696955592085177201788695920456372049184113364566016.0 +13479973333575319149044669230087521216531937860533380176714343120896.0 +13479973333575321393911184170354403577391840912744098368226729132032.0 +26959946667150638298089338460175042433063875721066760353428686241792.0 +26959946667150642787822368340708807154783681825488196736453458264064.0 +53919893334301276596178676920350084866127751442133520706857372483584.0 +53919893334301285575644736681417614309567363650976393472906916528128.0 +107839786668602553192357353840700169732255502884267041413714744967168.0 +107839786668602571151289473362835228619134727301952786945813833056256.0 +215679573337205106384714707681400339464511005768534082827429489934336.0 +215679573337205142302578946725670457238269454603905573891627666112512.0 +431359146674410212769429415362800678929022011537068165654858979868672.0 +431359146674410284605157893451340914476538909207811147783255332225024.0 +862718293348820425538858830725601357858044023074136331309717959737344.0 +862718293348820569210315786902681828953077818415622295566510664450048.0 +1725436586697640851077717661451202715716088046148272662619435919474688.0 +1725436586697641138420631573805363657906155636831244591133021328900096.0 +3450873173395281702155435322902405431432176092296545325238871838949376.0 +3450873173395282276841263147610727315812311273662489182266042657800192.0 +6901746346790563404310870645804810862864352184593090650477743677898752.0 +6901746346790564553682526295221454631624622547324978364532085315600384.0 +13803492693581126808621741291609621725728704369186181300955487355797504.0 +13803492693581129107365052590442909263249245094649956729064170631200768.0 +27606985387162253617243482583219243451457408738372362601910974711595008.0 +27606985387162258214730105180885818526498490189299913458128341262401536.0 +55213970774324507234486965166438486902914817476744725203821949423190016.0 +55213970774324516429460210361771637052996980378599826916256682524803072.0 +110427941548649014468973930332876973805829634953489450407643898846380032.0 +110427941548649032858920420723543274105993960757199653832513365049606144.0 +220855883097298028937947860665753947611659269906978900815287797692760064.0 +220855883097298065717840841447086548211987921514399307665026730099212288.0 +441711766194596057875895721331507895223318539813957801630575595385520128.0 +441711766194596131435681682894173096423975843028798615330053460198424576.0 +883423532389192115751791442663015790446637079627915603261151190771040256.0 +883423532389192262871363365788346192847951686057597230660106920396849152.0 +1766847064778384231503582885326031580893274159255831206522302381542080512.0 +1766847064778384525742726731576692385695903372115194461320213840793698304.0 +3533694129556768463007165770652063161786548318511662413044604763084161024.0 +3533694129556769051485453463153384771391806744230388922640427681587396608.0 +7067388259113536926014331541304126323573096637023324826089209526168322048.0 +7067388259113538102970906926306769542783613488460777845280855363174793216.0 +14134776518227073852028663082608252647146193274046649652178419052336644096.0 +14134776518227076205941813852613539085567226976921555690561710726349586432.0 +28269553036454147704057326165216505294292386548093299304356838104673288192.0 +28269553036454152411883627705227078171134453953843111381123421452699172864.0 +56539106072908295408114652330433010588584773096186598608713676209346576384.0 +56539106072908304823767255410454156342268907907686222762246842905398345728.0 +113078212145816590816229304660866021177169546192373197217427352418693152768.0 +113078212145816609647534510820908312684537815815372445524493685810796691456.0 +226156424291633181632458609321732042354339092384746394434854704837386305536.0 +226156424291633219295069021641816625369075631630744891048987371621593382912.0 +452312848583266363264917218643464084708678184769492788869709409674772611072.0 +452312848583266438590138043283633250738151263261489782097974743243186765824.0 +904625697166532726529834437286928169417356369538985577739418819349545222144.0 +904625697166532877180276086567266501476302526522979564195949486486373531648.0 +1809251394333065453059668874573856338834712739077971155478837638699090444288.0 +1809251394333065754360552173134533002952605053045959128391898972972747063296.0 +3618502788666130906119337749147712677669425478155942310957675277398180888576.0 +3618502788666131508721104346269066005905210106091918256783797945945494126592.0 +7237005577332261812238675498295425355338850956311884621915350554796361777152.0 +7237005577332263017442208692538132011810420212183836513567595891890988253184.0 +14474011154664523624477350996590850710677701912623769243830701109592723554304.0 +14474011154664526034884417385076264023620840424367673027135191783781976506368.0 +28948022309329047248954701993181701421355403825247538487661402219185447108608.0 +28948022309329052069768834770152528047241680848735346054270383567563953012736.0 +57896044618658094497909403986363402842710807650495076975322804438370894217216.0 +57896044618658104139537669540305056094483361697470692108540767135127906025472.0 +115792089237316188995818807972726805685421615300990153950645608876741788434432.0 +115792089237316208279075339080610112188966723394941384217081534270255812050944.0 +231584178474632377991637615945453611370843230601980307901291217753483576868864.0 +231584178474632416558150678161220224377933446789882768434163068540511624101888.0 +463168356949264755983275231890907222741686461203960615802582435506967153737728.0 +463168356949264833116301356322440448755866893579765536868326137081023248203776.0 +926336713898529511966550463781814445483372922407921231605164871013934307475456.0 +926336713898529666232602712644880897511733787159531073736652274162046496407552.0 +1852673427797059023933100927563628890966745844815842463210329742027868614950912.0 +1852673427797059332465205425289761795023467574319062147473304548324092992815104.0 +3705346855594118047866201855127257781933491689631684926420659484055737229901824.0 +3705346855594118664930410850579523590046935148638124294946609096648185985630208.0 +7410693711188236095732403710254515563866983379263369852841318968111474459803648.0 +7410693711188237329860821701159047180093870297276248589893218193296371971260416.0 +14821387422376472191464807420509031127733966758526739705682637936222948919607296.0 +14821387422376474659721643402318094360187740594552497179786436386592743942520832.0 +29642774844752944382929614841018062255467933517053479411365275872445897839214592.0 +29642774844752949319443286804636188720375481189104994359572872773185487885041664.0 +59285549689505888765859229682036124510935867034106958822730551744891795678429184.0 +59285549689505898638886573609272377440750962378209988719145745546370975770083328.0 +118571099379011777531718459364072249021871734068213917645461103489783591356858368.0 +118571099379011797277773147218544754881501924756419977438291491092741951540166656.0 +237142198758023555063436918728144498043743468136427835290922206979567182713716736.0 +237142198758023594555546294437089509763003849512839954876582982185483903080333312.0 +474284397516047110126873837456288996087486936272855670581844413959134365427433472.0 +474284397516047189111092588874179019526007699025679909753165964370967806160666624.0 +948568795032094220253747674912577992174973872545711341163688827918268730854866944.0 +948568795032094378222185177748358039052015398051359819506331928741935612321333248.0 +1897137590064188440507495349825155984349947745091422682327377655836537461709733888.0 +1897137590064188756444370355496716078104030796102719639012663857483871224642666496.0 +3794275180128376881014990699650311968699895490182845364654755311673074923419467776.0 +3794275180128377512888740710993432156208061592205439278025327714967742449285332992.0 +7588550360256753762029981399300623937399790980365690729309510623346149846838935552.0 +7588550360256755025777481421986864312416123184410878556050655429935484898570665984.0 +15177100720513507524059962798601247874799581960731381458619021246692299693677871104.0 +15177100720513510051554962843973728624832246368821757112101310859870969797141331968.0 +30354201441027015048119925597202495749599163921462762917238042493384599387355742208.0 +30354201441027020103109925687947457249664492737643514224202621719741939594282663936.0 +60708402882054030096239851194404991499198327842925525834476084986769198774711484416.0 +60708402882054040206219851375894914499328985475287028448405243439483879188565327872.0 +121416805764108060192479702388809982998396655685851051668952169973538397549422968832.0 +121416805764108080412439702751789828998657970950574056896810486878967758377130655744.0 +242833611528216120384959404777619965996793311371702103337904339947076795098845937664.0 +242833611528216160824879405503579657997315941901148113793620973757935516754261311488.0 +485667223056432240769918809555239931993586622743404206675808679894153590197691875328.0 +485667223056432321649758811007159315994631883802296227587241947515871033508522622976.0 +971334446112864481539837619110479863987173245486808413351617359788307180395383750656.0 +971334446112864643299517622014318631989263767604592455174483895031742067017045245952.0 +1942668892225728963079675238220959727974346490973616826703234719576614360790767501312.0 +1942668892225729286599035244028637263978527535209184910348967790063484134034090491904.0 +3885337784451457926159350476441919455948692981947233653406469439153228721581535002624.0 +3885337784451458573198070488057274527957055070418369820697935580126968268068180983808.0 +7770675568902915852318700952883838911897385963894467306812938878306457443163070005248.0 +7770675568902917146396140976114549055914110140836739641395871160253936536136361967616.0 +15541351137805831704637401905767677823794771927788934613625877756612914886326140010496.0 +15541351137805834292792281952229098111828220281673479282791742320507873072272723935232.0 +31082702275611663409274803811535355647589543855577869227251755513225829772652280020992.0 +31082702275611668585584563904458196223656440563346958565583484641015746144545447870464.0 +62165404551223326818549607623070711295179087711155738454503511026451659545304560041984.0 +62165404551223337171169127808916392447312881126693917131166969282031492289090895740928.0 +124330809102446653637099215246141422590358175422311476909007022052903319090609120083968.0 +124330809102446674342338255617832784894625762253387834262333938564062984578181791481856.0 +248661618204893307274198430492282845180716350844622953818014044105806638181218240167936.0 +248661618204893348684676511235665569789251524506775668524667877128125969156363582963712.0 +497323236409786614548396860984565690361432701689245907636028088211613276362436480335872.0 +497323236409786697369353022471331139578503049013551337049335754256251938312727165927424.0 +994646472819573229096793721969131380722865403378491815272056176423226552724872960671744.0 +994646472819573394738706044942662279157006098027102674098671508512503876625454331854848.0 +1989292945639146458193587443938262761445730806756983630544112352846453105449745921343488.0 +1989292945639146789477412089885324558314012196054205348197343017025007753250908663709696.0 +3978585891278292916387174887876525522891461613513967261088224705692906210899491842686976.0 +3978585891278293578954824179770649116628024392108410696394686034050015506501817327419392.0 +7957171782556585832774349775753051045782923227027934522176449411385812421798983685373952.0 +7957171782556587157909648359541298233256048784216821392789372068100031013003634654838784.0 +15914343565113171665548699551506102091565846454055869044352898822771624843597967370747904.0 +15914343565113174315819296719082596466512097568433642785578744136200062026007269309677568.0 +31828687130226343331097399103012204183131692908111738088705797645543249687195934741495808.0 +31828687130226348631638593438165192933024195136867285571157488272400124052014538619355136.0 +63657374260452686662194798206024408366263385816223476177411595291086499374391869482991616.0 +63657374260452697263277186876330385866048390273734571142314976544800248104029077238710272.0 +127314748520905373324389596412048816732526771632446952354823190582172998748783738965983232.0 +127314748520905394526554373752660771732096780547469142284629953089600496208058154477420544.0 +254629497041810746648779192824097633465053543264893904709646381164345997497567477931966464.0 +254629497041810789053108747505321543464193561094938284569259906179200992416116308954841088.0 +509258994083621493297558385648195266930107086529787809419292762328691994995134955863932928.0 +509258994083621578106217495010643086928387122189876569138519812358401984832232617909682176.0 +1018517988167242986595116771296390533860214173059575618838585524657383989990269911727865856.0 +1018517988167243156212434990021286173856774244379753138277039624716803969664465235819364352.0 +2037035976334485973190233542592781067720428346119151237677171049314767979980539823455731712.0 +2037035976334486312424869980042572347713548488759506276554079249433607939328930471638728704.0 +4074071952668971946380467085185562135440856692238302475354342098629535959961079646911463424.0 +4074071952668972624849739960085144695427096977519012553108158498867215878657860943277457408.0 +8148143905337943892760934170371124270881713384476604950708684197259071919922159293822926848.0 +8148143905337945249699479920170289390854193955038025106216316997734431757315721886554914816.0 +16296287810675887785521868340742248541763426768953209901417368394518143839844318587645853696.0 +16296287810675890499398959840340578781708387910076050212432633995468863514631443773109829632.0 +32592575621351775571043736681484497083526853537906419802834736789036287679688637175291707392.0 +32592575621351780998797919680681157563416775820152100424865267990937727029262887546219659264.0 +65185151242703551142087473362968994167053707075812839605669473578072575359377274350583414784.0 +65185151242703561997595839361362315126833551640304200849730535981875454058525775092439318528.0 +130370302485407102284174946725937988334107414151625679211338947156145150718754548701166829568.0 +130370302485407123995191678722724630253667103280608401699461071963750908117051550184878637056.0 +260740604970814204568349893451875976668214828303251358422677894312290301437509097402333659136.0 +260740604970814247990383357445449260507334206561216803398922143927501816234103100369757274112.0 +521481209941628409136699786903751953336429656606502716845355788624580602875018194804667318272.0 +521481209941628495980766714890898521014668413122433606797844287855003632468206200739514548224.0 +1042962419883256818273399573807503906672859313213005433690711577249161205750036389609334636544.0 +1042962419883256991961533429781797042029336826244867213595688575710007264936412401479029096448.0 +2085924839766513636546799147615007813345718626426010867381423154498322411500072779218669273088.0 +2085924839766513983923066859563594084058673652489734427191377151420014529872824802958058192896.0 +4171849679533027273093598295230015626691437252852021734762846308996644823000145558437338546176.0 +4171849679533027967846133719127188168117347304979468854382754302840029059745649605916116385792.0 +8343699359066054546187196590460031253382874505704043469525692617993289646000291116874677092352.0 +8343699359066055935692267438254376336234694609958937708765508605680058119491299211832232771584.0 +16687398718132109092374393180920062506765749011408086939051385235986579292000582233749354184704.0 +16687398718132111871384534876508752672469389219917875417531017211360116238982598423664465543168.0 +33374797436264218184748786361840125013531498022816173878102770471973158584001164467498708369408.0 +33374797436264223742769069753017505344938778439835750835062034422720232477965196847328931086336.0 +66749594872528436369497572723680250027062996045632347756205540943946317168002328934997416738816.0 +66749594872528447485538139506035010689877556879671501670124068845440464955930393694657862172672.0 +133499189745056872738995145447360500054125992091264695512411081887892634336004657869994833477632.0 +133499189745056894971076279012070021379755113759343003340248137690880929911860787389315724345344.0 +266998379490113745477990290894721000108251984182529391024822163775785268672009315739989666955264.0 +266998379490113789942152558024140042759510227518686006680496275381761859823721574778631448690688.0 +533996758980227490955980581789442000216503968365058782049644327551570537344018631479979333910528.0 +533996758980227579884305116048280085519020455037372013360992550763523719647443149557262897381376.0 +1067993517960454981911961163578884000433007936730117564099288655103141074688037262959958667821056.0 +1067993517960455159768610232096560171038040910074744026721985101527047439294886299114525794762752.0 +2135987035920909963823922327157768000866015873460235128198577310206282149376074525919917335642112.0 +2135987035920910319537220464193120342076081820149488053443970203054094878589772598229051589525504.0 +4271974071841819927647844654315536001732031746920470256397154620412564298752149051839834671284224.0 +4271974071841820639074440928386240684152163640298976106887940406108189757179545196458103179051008.0 +8543948143683639855295689308631072003464063493840940512794309240825128597504298103679669342568448.0 +8543948143683641278148881856772481368304327280597952213775880812216379514359090392916206358102016.0 +17087896287367279710591378617262144006928126987681881025588618481650257195008596207359338685136896.0 +17087896287367282556297763713544962736608654561195904427551761624432759028718180785832412716204032.0 +34175792574734559421182757234524288013856253975363762051177236963300514390017192414718677370273792.0 +34175792574734565112595527427089925473217309122391808855103523248865518057436361571664825432408064.0 +68351585149469118842365514469048576027712507950727524102354473926601028780034384829437354740547584.0 +68351585149469130225191054854179850946434618244783617710207046497731036114872723143329650864816128.0 +136703170298938237684731028938097152055425015901455048204708947853202057560068769658874709481095168.0 +136703170298938260450382109708359701892869236489567235420414092995462072229745446286659301729632256.0 +273406340597876475369462057876194304110850031802910096409417895706404115120137539317749418962190336.0 +273406340597876520900764219416719403785738472979134470840828185990924144459490892573318603459264512.0 +546812681195752950738924115752388608221700063605820192818835791412808230240275078635498837924380672.0 +546812681195753041801528438833438807571476945958268941681656371981848288918981785146637206918529024.0 +1093625362391505901477848231504777216443400127211640385637671582825616460480550157270997675848761344.0 +1093625362391506083603056877666877615142953891916537883363312743963696577837963570293274413837058048.0 +2187250724783011802955696463009554432886800254423280771275343165651232920961100314541995351697522688.0 +2187250724783012167206113755333755230285907783833075766726625487927393155675927140586548827674116096.0 +4374501449566023605911392926019108865773600508846561542550686331302465841922200629083990703395045376.0 +4374501449566024334412227510667510460571815567666151533453250975854786311351854281173097655348232192.0 +8749002899132047211822785852038217731547201017693123085101372662604931683844401258167981406790090752.0 +8749002899132048668824455021335020921143631135332303066906501951709572622703708562346195310696464384.0 +17498005798264094423645571704076435463094402035386246170202745325209863367688802516335962813580181504.0 +17498005798264097337648910042670041842287262270664606133813003903419145245407417124692390621392928768.0 +34996011596528188847291143408152870926188804070772492340405490650419726735377605032671925627160363008.0 +34996011596528194675297820085340083684574524541329212267626007806838290490814834249384781242785857536.0 +69992023193056377694582286816305741852377608141544984680810981300839453470755210065343851254320726016.0 +69992023193056389350595640170680167369149049082658424535252015613676580981629668498769562485571715072.0 +139984046386112755389164573632611483704755216283089969361621962601678906941510420130687702508641452032.0 +139984046386112778701191280341360334738298098165316849070504031227353161963259336997539124971143430144.0 +279968092772225510778329147265222967409510432566179938723243925203357813883020840261375405017282904064.0 +279968092772225557402382560682720669476596196330633698141008062454706323926518673995078249942286860288.0 +559936185544451021556658294530445934819020865132359877446487850406715627766041680522750810034565808128.0 +559936185544451114804765121365441338953192392661267396282016124909412647853037347990156499884573720576.0 +1119872371088902043113316589060891869638041730264719754892975700813431255532083361045501620069131616256.0 +1119872371088902229609530242730882677906384785322534792564032249818825295706074695980312999769147441152.0 +2239744742177804086226633178121783739276083460529439509785951401626862511064166722091003240138263232512.0 +2239744742177804459219060485461765355812769570645069585128064499637650591412149391960625999538294882304.0 +4479489484355608172453266356243567478552166921058879019571902803253725022128333444182006480276526465024.0 +4479489484355608918438120970923530711625539141290139170256128999275301182824298783921251999076589764608.0 +8958978968711216344906532712487134957104333842117758039143805606507450044256666888364012960553052930048.0 +8958978968711217836876241941847061423251078282580278340512257998550602365648597567842503998153179529216.0 +17917957937422432689813065424974269914208667684235516078287611213014900088513333776728025921106105860096.0 +17917957937422435673752483883694122846502156565160556681024515997101204731297195135685007996306359058432.0 +35835915874844865379626130849948539828417335368471032156575222426029800177026667553456051842212211720192.0 +35835915874844871347504967767388245693004313130321113362049031994202409462594390271370015992612718116864.0 +71671831749689730759252261699897079656834670736942064313150444852059600354053335106912103684424423440384.0 +71671831749689742695009935534776491386008626260642226724098063988404818925188780542740031985225436233728.0 +143343663499379461518504523399794159313669341473884128626300889704119200708106670213824207368848846880768.0 +143343663499379485390019871069552982772017252521284453448196127976809637850377561085480063970450872467456.0 +286687326998758923037009046799588318627338682947768257252601779408238401416213340427648414737697693761536.0 +286687326998758970780039742139105965544034505042568906896392255953619275700755122170960127940901744934912.0 +573374653997517846074018093599176637254677365895536514505203558816476802832426680855296829475395387523072.0 +573374653997517941560079484278211931088069010085137813792784511907238551401510244341920255881803489869824.0 +1146749307995035692148036187198353274509354731791073029010407117632953605664853361710593658950790775046144.0 +1146749307995035883120158968556423862176138020170275627585569023814477102803020488683840511763606979739648.0 +2293498615990071384296072374396706549018709463582146058020814235265907211329706723421187317901581550092288.0 +2293498615990071766240317937112847724352276040340551255171138047628954205606040977367681023527213959479296.0 +4586997231980142768592144748793413098037418927164292116041628470531814422659413446842374635803163100184576.0 +4586997231980143532480635874225695448704552080681102510342276095257908411212081954735362047054427918958592.0 +9173994463960285537184289497586826196074837854328584232083256941063628845318826893684749271606326200369152.0 +9173994463960287064961271748451390897409104161362205020684552190515816822424163909470724094108855837917184.0 +18347988927920571074368578995173652392149675708657168464166513882127257690637653787369498543212652400738304.0 +18347988927920574129922543496902781794818208322724410041369104381031633644848327818941448188217711675834368.0 +36695977855841142148737157990347304784299351417314336928333027764254515381275307574738997086425304801476608.0 +36695977855841148259845086993805563589636416645448820082738208762063267289696655637882896376435423351668736.0 +73391955711682284297474315980694609568598702834628673856666055528509030762550615149477994172850609602953216.0 +73391955711682296519690173987611127179272833290897640165476417524126534579393311275765792752870846703337472.0 +146783911423364568594948631961389219137197405669257347713332111057018061525101230298955988345701219205906432.0 +146783911423364593039380347975222254358545666581795280330952835048253069158786622551531585505741693406674944.0 +293567822846729137189897263922778438274394811338514695426664222114036123050202460597911976691402438411812864.0 +293567822846729186078760695950444508717091333163590560661905670096506138317573245103063171011483386813349888.0 +587135645693458274379794527845556876548789622677029390853328444228072246100404921195823953382804876823625728.0 +587135645693458372157521391900889017434182666327181121323811340193012276635146490206126342022966773626699776.0 +1174271291386916548759589055691113753097579245354058781706656888456144492200809842391647906765609753647251456.0 +1174271291386916744315042783801778034868365332654362242647622680386024553270292980412252684045933547253399552.0 +2348542582773833097519178111382227506195158490708117563413313776912288984401619684783295813531219507294502912.0 +2348542582773833488630085567603556069736730665308724485295245360772049106540585960824505368091867094506799104.0 +4697085165547666195038356222764455012390316981416235126826627553824577968803239369566591627062439014589005824.0 +4697085165547666977260171135207112139473461330617448970590490721544098213081171921649010736183734189013598208.0 +9394170331095332390076712445528910024780633962832470253653255107649155937606478739133183254124878029178011648.0 +9394170331095333954520342270414224278946922661234897941180981443088196426162343843298021472367468378027196416.0 +18788340662190664780153424891057820049561267925664940507306510215298311875212957478266366508249756058356023296.0 +18788340662190667909040684540828448557893845322469795882361962886176392852324687686596042944734936756054392832.0 +37576681324381329560306849782115640099122535851329881014613020430596623750425914956532733016499512116712046592.0 +37576681324381335818081369081656897115787690644939591764723925772352785704649375373192085889469873512108785664.0 +75153362648762659120613699564231280198245071702659762029226040861193247500851829913065466032999024233424093184.0 +75153362648762671636162738163313794231575381289879183529447851544705571409298750746384171778939747024217571328.0 +150306725297525318241227399128462560396490143405319524058452081722386495001703659826130932065998048466848186368.0 +150306725297525343272325476326627588463150762579758367058895703089411142818597501492768343557879494048435142656.0 +300613450595050636482454798256925120792980286810639048116904163444772990003407319652261864131996096933696372736.0 +300613450595050686544650952653255176926301525159516734117791406178822285637195002985536687115758988096870285312.0 +601226901190101272964909596513850241585960573621278096233808326889545980006814639304523728263992193867392745472.0 +601226901190101373089301905306510353852603050319033468235582812357644571274390005971073374231517976193740570624.0 +1202453802380202545929819193027700483171921147242556192467616653779091960013629278609047456527984387734785490944.0 +1202453802380202746178603810613020707705206100638066936471165624715289142548780011942146748463035952387481141248.0 +2404907604760405091859638386055400966343842294485112384935233307558183920027258557218094913055968775469570981888.0 +2404907604760405492357207621226041415410412201276133872942331249430578285097560023884293496926071904774962282496.0 +4809815209520810183719276772110801932687684588970224769870466615116367840054517114436189826111937550939141963776.0 +4809815209520810984714415242452082830820824402552267745884662498861156570195120047768586993852143809549924564992.0 +9619630419041620367438553544221603865375369177940449539740933230232735680109034228872379652223875101878283927552.0 +9619630419041621969428830484904165661641648805104535491769324997722313140390240095537173987704287619099849129984.0 +19239260838083240734877107088443207730750738355880899079481866460465471360218068457744759304447750203756567855104.0 +19239260838083243938857660969808331323283297610209070983538649995444626280780480191074347975408575238199698259968.0 +38478521676166481469754214176886415461501476711761798158963732920930942720436136915489518608895500407513135710208.0 +38478521676166487877715321939616662646566595220418141967077299990889252561560960382148695950817150476399396519936.0 +76957043352332962939508428353772830923002953423523596317927465841861885440872273830979037217791000815026271420416.0 +76957043352332975755430643879233325293133190440836283934154599981778505123121920764297391901634300952798793039872.0 +153914086704665925879016856707545661846005906847047192635854931683723770881744547661958074435582001630052542840832.0 +153914086704665951510861287758466650586266380881672567868309199963557010246243841528594783803268601905597586079744.0 +307828173409331851758033713415091323692011813694094385271709863367447541763489095323916148871164003260105085681664.0 +307828173409331903021722575516933301172532761763345135736618399927114020492487683057189567606537203811195172159488.0 +615656346818663703516067426830182647384023627388188770543419726734895083526978190647832297742328006520210171363328.0 +615656346818663806043445151033866602345065523526690271473236799854228040984975366114379135213074407622390344318976.0 +1231312693637327407032134853660365294768047254776377541086839453469790167053956381295664595484656013040420342726656.0 +1231312693637327612086890302067733204690131047053380542946473599708456081969950732228758270426148815244780688637952.0 +2462625387274654814064269707320730589536094509552755082173678906939580334107912762591329190969312026080840685453312.0 +2462625387274655224173780604135466409380262094106761085892947199416912163939901464457516540852297630489561377275904.0 +4925250774549309628128539414641461179072189019105510164347357813879160668215825525182658381938624052161681370906624.0 +4925250774549310448347561208270932818760524188213522171785894398833824327879802928915033081704595260979122754551808.0 +9850501549098619256257078829282922358144378038211020328694715627758321336431651050365316763877248104323362741813248.0 +9850501549098620896695122416541865637521048376427044343571788797667648655759605857830066163409190521958245509103616.0 +19701003098197238512514157658565844716288756076422040657389431255516642672863302100730633527754496208646725483626496.0 +19701003098197241793390244833083731275042096752854088687143577595335297311519211715660132326818381043916491018207232.0 +39402006196394477025028315317131689432577512152844081314778862511033285345726604201461267055508992417293450967252992.0 +39402006196394483586780489666167462550084193505708177374287155190670594623038423431320264653636762087832982036414464.0 +78804012392788954050056630634263378865155024305688162629557725022066570691453208402922534111017984834586901934505984.0 +78804012392788967173560979332334925100168387011416354748574310381341189246076846862640529307273524175665964072828928.0 +157608024785577908100113261268526757730310048611376325259115450044133141382906416805845068222035969669173803869011968.0 +157608024785577934347121958664669850200336774022832709497148620762682378492153693725281058614547048351331928145657856.0 +315216049571155816200226522537053515460620097222752650518230900088266282765812833611690136444071939338347607738023936.0 +315216049571155868694243917329339700400673548045665418994297241525364756984307387450562117229094096702663856291315712.0 +630432099142311632400453045074107030921240194445505301036461800176532565531625667223380272888143878676695215476047872.0 +630432099142311737388487834658679400801347096091330837988594483050729513968614774901124234458188193405327712582631424.0 +1260864198284623264800906090148214061842480388891010602072923600353065131063251334446760545776287757353390430952095744.0 +1260864198284623474776975669317358801602694192182661675977188966101459027937229549802248468916376386810655425165262848.0 +2521728396569246529601812180296428123684960777782021204145847200706130262126502668893521091552575514706780861904191488.0 +2521728396569246949553951338634717603205388384365323351954377932202918055874459099604496937832752773621310850330525696.0 +5043456793138493059203624360592856247369921555564042408291694401412260524253005337787042183105151029413561723808382976.0 +5043456793138493899107902677269435206410776768730646703908755864405836111748918199208993875665505547242621700661051392.0 +10086913586276986118407248721185712494739843111128084816583388802824521048506010675574084366210302058827123447616765952.0 +10086913586276987798215805354538870412821553537461293407817511728811672223497836398417987751331011094485243401322102784.0 +20173827172553972236814497442371424989479686222256169633166777605649042097012021351148168732420604117654246895233531904.0 +20173827172553975596431610709077740825643107074922586815635023457623344446995672796835975502662022188970486802644205568.0 +40347654345107944473628994884742849978959372444512339266333555211298084194024042702296337464841208235308493790467063808.0 +40347654345107951192863221418155481651286214149845173631270046915246688893991345593671951005324044377940973605288411136.0 +80695308690215888947257989769485699957918744889024678532667110422596168388048085404592674929682416470616987580934127616.0 +80695308690215902385726442836310963302572428299690347262540093830493377787982691187343902010648088755881947210576822272.0 +161390617380431777894515979538971399915837489778049357065334220845192336776096170809185349859364832941233975161868255232.0 +161390617380431804771452885672621926605144856599380694525080187660986755575965382374687804021296177511763894421153644544.0 +322781234760863555789031959077942799831674979556098714130668441690384673552192341618370699718729665882467950323736510464.0 +322781234760863609542905771345243853210289713198761389050160375321973511151930764749375608042592355023527788842307289088.0 +645562469521727111578063918155885599663349959112197428261336883380769347104384683236741399437459331764935900647473020928.0 +645562469521727219085811542690487706420579426397522778100320750643947022303861529498751216085184710047055577684614578176.0 +1291124939043454223156127836311771199326699918224394856522673766761538694208769366473482798874918663529871801294946041856.0 +1291124939043454438171623085380975412841158852795045556200641501287894044607723058997502432170369420094111155369229156352.0 +2582249878086908446312255672623542398653399836448789713045347533523077388417538732946965597749837327059743602589892083712.0 +2582249878086908876343246170761950825682317705590091112401283002575788089215446117995004864340738840188222310738458312704.0 +5164499756173816892624511345247084797306799672897579426090695067046154776835077465893931195499674654119487205179784167424.0 +5164499756173817752686492341523901651364635411180182224802566005151576178430892235990009728681477680376444621476916625408.0 +10328999512347633785249022690494169594613599345795158852181390134092309553670154931787862390999349308238974410359568334848.0 +10328999512347635505372984683047803302729270822360364449605132010303152356861784471980019457362955360752889242953833250816.0 +20657999024695267570498045380988339189227198691590317704362780268184619107340309863575724781998698616477948820719136669696.0 +20657999024695271010745969366095606605458541644720728899210264020606304713723568943960038914725910721505778485907666501632.0 +41315998049390535140996090761976678378454397383180635408725560536369238214680619727151449563997397232955897641438273339392.0 +41315998049390542021491938732191213210917083289441457798420528041212609427447137887920077829451821443011556971815333003264.0 +82631996098781070281992181523953356756908794766361270817451121072738476429361239454302899127994794465911795282876546678784.0 +82631996098781084042983877464382426421834166578882915596841056082425218854894275775840155658903642886023113943630666006528.0 +165263992197562140563984363047906713513817589532722541634902242145476952858722478908605798255989588931823590565753093357568.0 +165263992197562168085967754928764852843668333157765831193682112164850437709788551551680311317807285772046227887261332013056.0 +330527984395124281127968726095813427027635179065445083269804484290953905717444957817211596511979177863647181131506186715136.0 +330527984395124336171935509857529705687336666315531662387364224329700875419577103103360622635614571544092455774522664026112.0 +661055968790248562255937452191626854055270358130890166539608968581907811434889915634423193023958355727294362263012373430272.0 +661055968790248672343871019715059411374673332631063324774728448659401750839154206206721245271229143088184911549045328052224.0 +1322111937580497124511874904383253708110540716261780333079217937163815622869779831268846386047916711454588724526024746860544.0 +1322111937580497344687742039430118822749346665262126649549456897318803501678308412413442490542458286176369823098090656104448.0 +2644223875160994249023749808766507416221081432523560666158435874327631245739559662537692772095833422909177449052049493721088.0 +2644223875160994689375484078860237645498693330524253299098913794637607003356616824826884981084916572352739646196181312208896.0 +5288447750321988498047499617533014832442162865047121332316871748655262491479119325075385544191666845818354898104098987442176.0 +5288447750321989378750968157720475290997386661048506598197827589275214006713233649653769962169833144705479292392362624417792.0 +10576895500643976996094999235066029664884325730094242664633743497310524982958238650150771088383333691636709796208197974884352.0 +10576895500643978757501936315440950581994773322097013196395655178550428013426467299307539924339666289410958584784725248835584.0 +21153791001287953992189998470132059329768651460188485329267486994621049965916477300301542176766667383273419592416395949768704.0 +21153791001287957515003872630881901163989546644194026392791310357100856026852934598615079848679332578821917169569450497671168.0 +42307582002575907984379996940264118659537302920376970658534973989242099931832954600603084353533334766546839184832791899537408.0 +42307582002575915030007745261763802327979093288388052785582620714201712053705869197230159697358665157643834339138900995342336.0 +84615164005151815968759993880528237319074605840753941317069947978484199863665909201206168707066669533093678369665583799074816.0 +84615164005151830060015490523527604655958186576776105571165241428403424107411738394460319394717330315287668678277801990684672.0 +169230328010303631937519987761056474638149211681507882634139895956968399727331818402412337414133339066187356739331167598149632.0 +169230328010303660120030981047055209311916373153552211142330482856806848214823476788920638789434660630575337356555603981369344.0 +338460656020607263875039975522112949276298423363015765268279791913936799454663636804824674828266678132374713478662335196299264.0 +338460656020607320240061962094110418623832746307104422284660965713613696429646953577841277578869321261150674713111207962738688.0 +676921312041214527750079951044225898552596846726031530536559583827873598909327273609649349656533356264749426957324670392598528.0 +676921312041214640480123924188220837247665492614208844569321931427227392859293907155682555157738642522301349426222415925477376.0 +1353842624082429055500159902088451797105193693452063061073119167655747197818654547219298699313066712529498853914649340785197056.0 +1353842624082429280960247848376441674495330985228417689138643862854454785718587814311365110315477285044602698852444831850954752.0 +2707685248164858111000319804176903594210387386904126122146238335311494395637309094438597398626133425058997707829298681570394112.0 +2707685248164858561920495696752883348990661970456835378277287725708909571437175628622730220630954570089205397704889663701909504.0 +5415370496329716222000639608353807188420774773808252244292476670622988791274618188877194797252266850117995415658597363140788224.0 +5415370496329717123840991393505766697981323940913670756554575451417819142874351257245460441261909140178410795409779327403819008.0 +10830740992659432444001279216707614376841549547616504488584953341245977582549236377754389594504533700235990831317194726281576448.0 +10830740992659434247681982787011533395962647881827341513109150902835638285748702514490920882523818280356821590819558654807638016.0 +21661481985318864888002558433415228753683099095233008977169906682491955165098472755508779189009067400471981662634389452563152896.0 +21661481985318868495363965574023066791925295763654683026218301805671276571497405028981841765047636560713643181639117309615276032.0 +43322963970637729776005116866830457507366198190466017954339813364983910330196945511017558378018134800943963325268778905126305792.0 +43322963970637736990727931148046133583850591527309366052436603611342553142994810057963683530095273121427286363278234619230552064.0 +86645927941275459552010233733660915014732396380932035908679626729967820660393891022035116756036269601887926650537557810252611584.0 +86645927941275473981455862296092267167701183054618732104873207222685106285989620115927367060190546242854572726556469238461104128.0 +173291855882550919104020467467321830029464792761864071817359253459935641320787782044070233512072539203775853301075115620505223168.0 +173291855882550947962911724592184534335402366109237464209746414445370212571979240231854734120381092485709145453112938476922208256.0 +346583711765101838208040934934643660058929585523728143634718506919871282641575564088140467024145078407551706602150231241010446336.0 +346583711765101895925823449184369068670804732218474928419492828890740425143958480463709468240762184971418290906225876953844416512.0 +693167423530203676416081869869287320117859171047456287269437013839742565283151128176280934048290156815103413204300462482020892672.0 +693167423530203791851646898368738137341609464436949856838985657781480850287916960927418936481524369942836581812451753907688833024.0 +1386334847060407352832163739738574640235718342094912574538874027679485130566302256352561868096580313630206826408600924964041785344.0 +1386334847060407583703293796737476274683218928873899713677971315562961700575833921854837872963048739885673163624903507815377666048.0 +2772669694120814705664327479477149280471436684189825149077748055358970261132604512705123736193160627260413652817201849928083570688.0 +2772669694120815167406587593474952549366437857747799427355942631125923401151667843709675745926097479771346327249807015630755332096.0 +5545339388241629411328654958954298560942873368379650298155496110717940522265209025410247472386321254520827305634403699856167141376.0 +5545339388241630334813175186949905098732875715495598854711885262251846802303335687419351491852194959542692654499614031261510664192.0 +11090678776483258822657309917908597121885746736759300596310992221435881044530418050820494944772642509041654611268807399712334282752.0 +11090678776483260669626350373899810197465751430991197709423770524503693604606671374838702983704389919085385308999228062523021328384.0 +22181357552966517645314619835817194243771493473518601192621984442871762089060836101640989889545285018083309222537614799424668565504.0 +22181357552966521339252700747799620394931502861982395418847541049007387209213342749677405967408779838170770617998456125046042656768.0 +44362715105933035290629239671634388487542986947037202385243968885743524178121672203281979779090570036166618445075229598849337131008.0 +44362715105933042678505401495599240789863005723964790837695082098014774418426685499354811934817559676341541235996912250092085313536.0 +88725430211866070581258479343268776975085973894074404770487937771487048356243344406563959558181140072333236890150459197698674262016.0 +88725430211866085357010802991198481579726011447929581675390164196029548836853370998709623869635119352683082471993824500184170627072.0 +177450860423732141162516958686537553950171947788148809540975875542974096712486688813127919116362280144666473780300918395397348524032.0 +177450860423732170714021605982396963159452022895859163350780328392059097673706741997419247739270238705366164943987649000368341254144.0 +354901720847464282325033917373075107900343895576297619081951751085948193424973377626255838232724560289332947560601836790794697048064.0 +354901720847464341428043211964793926318904045791718326701560656784118195347413483994838495478540477410732329887975298000736682508288.0 +709803441694928564650067834746150215800687791152595238163903502171896386849946755252511676465449120578665895121203673581589394096128.0 +709803441694928682856086423929587852637808091583436653403121313568236390694826967989676990957080954821464659775950596001473365016576.0 +1419606883389857129300135669492300431601375582305190476327807004343792773699893510505023352930898241157331790242407347163178788192256.0 +1419606883389857365712172847859175705275616183166873306806242627136472781389653935979353981914161909642929319551901192002946730033152.0 +2839213766779714258600271338984600863202751164610380952655614008687585547399787021010046705861796482314663580484814694326357576384512.0 +2839213766779714731424345695718351410551232366333746613612485254272945562779307871958707963828323819285858639103802384005893460066304.0 +5678427533559428517200542677969201726405502329220761905311228017375171094799574042020093411723592964629327160969629388652715152769024.0 +5678427533559429462848691391436702821102464732667493227224970508545891125558615743917415927656647638571717278207604768011786920132608.0 +11356855067118857034401085355938403452811004658441523810622456034750342189599148084040186823447185929258654321939258777305430305538048.0 +11356855067118858925697382782873405642204929465334986454449941017091782251117231487834831855313295277143434556415209536023573840265216.0 +22713710134237714068802170711876806905622009316883047621244912069500684379198296168080373646894371858517308643878517554610860611076096.0 +22713710134237717851394765565746811284409858930669972908899882034183564502234462975669663710626590554286869112830419072047147680530432.0 +45427420268475428137604341423753613811244018633766095242489824139001368758396592336160747293788743717034617287757035109221721222152192.0 +45427420268475435702789531131493622568819717861339945817799764068367129004468925951339327421253181108573738225660838144094295361060864.0 +90854840536950856275208682847507227622488037267532190484979648278002737516793184672321494587577487434069234575514070218443442444304384.0 +90854840536950871405579062262987245137639435722679891635599528136734258008937851902678654842506362217147476451321676288188590722121728.0 +181709681073901712550417365695014455244976074535064380969959296556005475033586369344642989175154974868138469151028140436886884888608768.0 +181709681073901742811158124525974490275278871445359783271199056273468516017875703805357309685012724434294952902643352576377181444243456.0 +363419362147803425100834731390028910489952149070128761939918593112010950067172738689285978350309949736276938302056280873773769777217536.0 +363419362147803485622316249051948980550557742890719566542398112546937032035751407610714619370025448868589905805286705152754362888486912.0 +726838724295606850201669462780057820979904298140257523879837186224021900134345477378571956700619899472553876604112561747547539554435072.0 +726838724295606971244632498103897961101115485781439133084796225093874064071502815221429238740050897737179811610573410305508725776973824.0 +1453677448591213700403338925560115641959808596280515047759674372448043800268690954757143913401239798945107753208225123495095079108870144.0 +1453677448591213942489264996207795922202230971562878266169592450187748128143005630442858477480101795474359623221146820611017451553947648.0 +2907354897182427400806677851120231283919617192561030095519348744896087600537381909514287826802479597890215506416450246990190158217740288.0 +2907354897182427884978529992415591844404461943125756532339184900375496256286011260885716954960203590948719246442293641222034903107895296.0 +5814709794364854801613355702240462567839234385122060191038697489792175201074763819028575653604959195780431012832900493980380316435480576.0 +5814709794364855769957059984831183688808923886251513064678369800750992512572022521771433909920407181897438492884587282444069806215790592.0 +11629419588729709603226711404480925135678468770244120382077394979584350402149527638057151307209918391560862025665800987960760632870961152.0 +11629419588729711539914119969662367377617847772503026129356739601501985025144045043542867819840814363794876985769174564888139612431581184.0 +23258839177459419206453422808961850271356937540488240764154789959168700804299055276114302614419836783121724051331601975921521265741922304.0 +23258839177459423079828239939324734755235695545006052258713479203003970050288090087085735639681628727589753971538349129776279224863162368.0 +46517678354918838412906845617923700542713875080976481528309579918337401608598110552228605228839673566243448102663203951843042531483844608.0 +46517678354918846159656479878649469510471391090012104517426958406007940100576180174171471279363257455179507943076698259552558449726324736.0 +93035356709837676825813691235847401085427750161952963056619159836674803217196221104457210457679347132486896205326407903686085062967689216.0 +93035356709837692319312959757298939020942782180024209034853916812015880201152360348342942558726514910359015886153396519105116899452649472.0 +186070713419675353651627382471694802170855500323905926113238319673349606434392442208914420915358694264973792410652815807372170125935378432.0 +186070713419675384638625919514597878041885564360048418069707833624031760402304720696685885117453029820718031772306793038210233798905298944.0 +372141426839350707303254764943389604341711000647811852226476639346699212868784884417828841830717388529947584821305631614744340251870756864.0 +372141426839350769277251839029195756083771128720096836139415667248063520804609441393371770234906059641436063544613586076420467597810597888.0 +744282853678701414606509529886779208683422001295623704452953278693398425737569768835657683661434777059895169642611263229488680503741513728.0 +744282853678701538554503678058391512167542257440193672278831334496127041609218882786743540469812119282872127089227172152840935195621195776.0 +1488565707357402829213019059773558417366844002591247408905906557386796851475139537671315367322869554119790339285222526458977361007483027456.0 +1488565707357403077109007356116783024335084514880387344557662668992254083218437765573487080939624238565744254178454344305681870391242391552.0 +2977131414714805658426038119547116834733688005182494817811813114773593702950279075342630734645739108239580678570445052917954722014966054912.0 +2977131414714806154218014712233566048670169029760774689115325337984508166436875531146974161879248477131488508356908688611363740782484783104.0 +5954262829429611316852076239094233669467376010364989635623626229547187405900558150685261469291478216479161357140890105835909444029932109824.0 +5954262829429612308436029424467132097340338059521549378230650675969016332873751062293948323758496954262977016713817377222727481564969566208.0 +11908525658859222633704152478188467338934752020729979271247252459094374811801116301370522938582956432958322714281780211671818888059864219648.0 +11908525658859224616872058848934264194680676119043098756461301351938032665747502124587896647516993908525954033427634754445454963129939132416.0 +23817051317718445267408304956376934677869504041459958542494504918188749623602232602741045877165912865916645428563560423343637776119728439296.0 +23817051317718449233744117697868528389361352238086197512922602703876065331495004249175793295033987817051908066855269508890909926259878264832.0 +47634102635436890534816609912753869355739008082919917084989009836377499247204465205482091754331825731833290857127120846687275552239456878592.0 +47634102635436898467488235395737056778722704476172395025845205407752130662990008498351586590067975634103816133710539017781819852519756529664.0 +95268205270873781069633219825507738711478016165839834169978019672754998494408930410964183508663651463666581714254241693374551104478913757184.0 +95268205270873796934976470791474113557445408952344790051690410815504261325980016996703173180135951268207632267421078035563639705039513059328.0 +190536410541747562139266439651015477422956032331679668339956039345509996988817860821928367017327302927333163428508483386749102208957827514368.0 +190536410541747593869952941582948227114890817904689580103380821631008522651960033993406346360271902536415264534842156071127279410079026118656.0 +381072821083495124278532879302030954845912064663359336679912078691019993977635721643856734034654605854666326857016966773498204417915655028736.0 +381072821083495187739905883165896454229781635809379160206761643262017045303920067986812692720543805072830529069684312142254558820158052237312.0 +762145642166990248557065758604061909691824129326718673359824157382039987955271443287713468069309211709332653714033933546996408835831310057472.0 +762145642166990375479811766331792908459563271618758320413523286524034090607840135973625385441087610145661058139368624284509117640316104474624.0 +1524291284333980497114131517208123819383648258653437346719648314764079975910542886575426936138618423418665307428067867093992817671662620114944.0 +1524291284333980750959623532663585816919126543237516640827046573048068181215680271947250770882175220291322116278737248569018235280632208949248.0 +3048582568667960994228263034416247638767296517306874693439296629528159951821085773150853872277236846837330614856135734187985635343325240229888.0 +3048582568667961501919247065327171633838253086475033281654093146096136362431360543894501541764350440582644232557474497138036470561264417898496.0 +6097165137335921988456526068832495277534593034613749386878593259056319903642171546301707744554473693674661229712271468375971270686650480459776.0 +6097165137335923003838494130654343267676506172950066563308186292192272724862721087789003083528700881165288465114948994276072941122528835796992.0 +12194330274671843976913052137664990555069186069227498773757186518112639807284343092603415489108947387349322459424542936751942541373300960919552.0 +12194330274671846007676988261308686535353012345900133126616372584384545449725442175578006167057401762330576930229897988552145882245057671593984.0 +24388660549343687953826104275329981110138372138454997547514373036225279614568686185206830978217894774698644918849085873503885082746601921839104.0 +24388660549343692015353976522617373070706024691800266253232745168769090899450884351156012334114803524661153860459795977104291764490115343187968.0 +48777321098687375907652208550659962220276744276909995095028746072450559229137372370413661956435789549397289837698171747007770165493203843678208.0 +48777321098687384030707953045234746141412049383600532506465490337538181798901768702312024668229607049322307720919591954208583528980230686375936.0 +97554642197374751815304417101319924440553488553819990190057492144901118458274744740827323912871579098794579675396343494015540330986407687356416.0 +97554642197374768061415906090469492282824098767201065012930980675076363597803537404624049336459214098644615441839183908417167057960461372751872.0 +195109284394749503630608834202639848881106977107639980380114984289802236916549489481654647825743158197589159350792686988031080661972815374712832.0 +195109284394749536122831812180938984565648197534402130025861961350152727195607074809248098672918428197289230883678367816834334115920922745503744.0 +390218568789499007261217668405279697762213954215279960760229968579604473833098978963309295651486316395178318701585373976062161323945630749425664.0 +390218568789499072245663624361877969131296395068804260051723922700305454391214149618496197345836856394578461767356735633668668231841845491007488.0 +780437137578998014522435336810559395524427908430559921520459937159208947666197957926618591302972632790356637403170747952124322647891261498851328.0 +780437137578998144491327248723755938262592790137608520103447845400610908782428299236992394691673712789156923534713471267337336463683690982014976.0 +1560874275157996029044870673621118791048855816861119843040919874318417895332395915853237182605945265580713274806341495904248645295782522997702656.0 +1560874275157996288982654497447511876525185580275217040206895690801221817564856598473984789383347425578313847069426942534674672927367381964029952.0 +3121748550315992058089741347242237582097711633722239686081839748636835790664791831706474365211890531161426549612682991808497290591565045995405312.0 +3121748550315992577965308994895023753050371160550434080413791381602443635129713196947969578766694851156627694138853885069349345854734763928059904.0 +6243497100631984116179482694484475164195423267444479372163679497273671581329583663412948730423781062322853099225365983616994581183130091990810624.0 +6243497100631985155930617989790047506100742321100868160827582763204887270259426393895939157533389702313255388277707770138698691709469527856119808.0 +12486994201263968232358965388968950328390846534888958744327358994547343162659167326825897460847562124645706198450731967233989162366260183981621248.0 +12486994201263970311861235979580095012201484642201736321655165526409774540518852787791878315066779404626510776555415540277397383418939055712239616.0 +24973988402527936464717930777937900656781693069777917488654717989094686325318334653651794921695124249291412396901463934467978324732520367963242496.0 +24973988402527940623722471959160190024402969284403472643310331052819549081037705575583756630133558809253021553110831080554794766837878111424479232.0 +49947976805055872929435861555875801313563386139555834977309435978189372650636669307303589843390248498582824793802927868935956649465040735926484992.0 +49947976805055881247444943918320380048805938568806945286620662105639098162075411151167513260267117618506043106221662161109589533675756222848958464.0 +99895953610111745858871723111751602627126772279111669954618871956378745301273338614607179686780496997165649587605855737871913298930081471852969984.0 +99895953610111762494889887836640760097611877137613890573241324211278196324150822302335026520534235237012086212443324322219179067351512445697916928.0 +199791907220223491717743446223503205254253544558223339909237743912757490602546677229214359373560993994331299175211711475743826597860162943705939968.0 +199791907220223524989779775673281520195223754275227781146482648422556392648301644604670053041068470474024172424886648644438358134703024891395833856.0 +399583814440446983435486892447006410508507089116446679818475487825514981205093354458428718747121987988662598350423422951487653195720325887411879936.0 +399583814440447049979559551346563040390447508550455562292965296845112785296603289209340106082136940948048344849773297288876716269406049782791667712.0 +799167628880893966870973784894012821017014178232893359636950975651029962410186708916857437494243975977325196700846845902975306391440651774823759872.0 +799167628880894099959119102693126080780895017100911124585930593690225570593206578418680212164273881896096689699546594577753432538812099565583335424.0 +1598335257761787933741947569788025642034028356465786719273901951302059924820373417833714874988487951954650393401693691805950612782881303549647519744.0 +1598335257761788199918238205386252161561790034201822249171861187380451141186413156837360424328547763792193379399093189155506865077624199131166670848.0 +3196670515523575867483895139576051284068056712931573438547803902604119849640746835667429749976975903909300786803387383611901225565762607099295039488.0 +3196670515523576399836476410772504323123580068403644498343722374760902282372826313674720848657095527584386758798186378311013730155248398262333341696.0 +6393341031047151734967790279152102568136113425863146877095607805208239699281493671334859499953951807818601573606774767223802451131525214198590078976.0 +6393341031047152799672952821545008646247160136807288996687444749521804564745652627349441697314191055168773517596372756622027460310496796524666683392.0 +12786682062094303469935580558304205136272226851726293754191215610416479398562987342669718999907903615637203147213549534447604902263050428397180157952.0 +12786682062094305599345905643090017292494320273614577993374889499043609129491305254698883394628382110337547035192745513244054920620993593049333366784.0 +25573364124188606939871161116608410272544453703452587508382431220832958797125974685339437999815807231274406294427099068895209804526100856794360315904.0 +25573364124188611198691811286180034584988640547229155986749778998087218258982610509397766789256764220675094070385491026488109841241987186098666733568.0 +51146728248377213879742322233216820545088907406905175016764862441665917594251949370678875999631614462548812588854198137790419609052201713588720631808.0 +51146728248377222397383622572360069169977281094458311973499557996174436517965221018795533578513528441350188140770982052976219682483974372197333467136.0 +102293456496754427759484644466433641090177814813810350033529724883331835188503898741357751999263228925097625177708396275580839218104403427177441263616.0 +102293456496754444794767245144720138339954562188916623946999115992348873035930442037591067157027056882700376281541964105952439364967948744394666934272.0 +204586912993508855518969288932867282180355629627620700067059449766663670377007797482715503998526457850195250355416792551161678436208806854354882527232.0 +204586912993508889589534490289440276679909124377833247893998231984697746071860884075182134314054113765400752563083928211904878729935897488789333868544.0 +409173825987017711037938577865734564360711259255241400134118899533327340754015594965431007997052915700390500710833585102323356872417613708709765054464.0 +409173825987017779179068980578880553359818248755666495787996463969395492143721768150364268628108227530801505126167856423809757459871794977578667737088.0 +818347651974035422075877155731469128721422518510482800268237799066654681508031189930862015994105831400781001421667170204646713744835227417419530108928.0 +818347651974035558358137961157761106719636497511332991575992927938790984287443536300728537256216455061603010252335712847619514919743589955157335474176.0 +1636695303948070844151754311462938257442845037020965600536475598133309363016062379861724031988211662801562002843334340409293427489670454834839060217856.0 +1636695303948071116716275922315522213439272995022665983151985855877581968574887072601457074512432910123206020504671425695239029839487179910314670948352.0 +3273390607896141688303508622925876514885690074041931201072951196266618726032124759723448063976423325603124005686668680818586854979340909669678120435712.0 +3273390607896142233432551844631044426878545990045331966303971711755163937149774145202914149024865820246412041009342851390478059678974359820629341896704.0 +6546781215792283376607017245851753029771380148083862402145902392533237452064249519446896127952846651206248011373337361637173709958681819339356240871424.0 +6546781215792284466865103689262088853757091980090663932607943423510327874299548290405828298049731640492824082018685702780956119357948719641258683793408.0 +13093562431584566753214034491703506059542760296167724804291804785066474904128499038893792255905693302412496022746674723274347419917363638678712481742848.0 +13093562431584568933730207378524177707514183960181327865215886847020655748599096580811656596099463280985648164037371405561912238715897439282517367586816.0 +26187124863169133506428068983407012119085520592335449608583609570132949808256998077787584511811386604824992045493349446548694839834727277357424963485696.0 +26187124863169137867460414757048355415028367920362655730431773694041311497198193161623313192198926561971296328074742811123824477431794878565034735173632.0 +52374249726338267012856137966814024238171041184670899217167219140265899616513996155575169023622773209649984090986698893097389679669454554714849926971392.0 +52374249726338275734920829514096710830056735840725311460863547388082622994396386323246626384397853123942592656149485622247648954863589757130069470347264.0 +104748499452676534025712275933628048476342082369341798434334438280531799233027992311150338047245546419299968181973397786194779359338909109429699853942784.0 +104748499452676551469841659028193421660113471681450622921727094776165245988792772646493252768795706247885185312298971244495297909727179514260138940694528.0 +209496998905353068051424551867256096952684164738683596868668876561063598466055984622300676094491092838599936363946795572389558718677818218859399707885568.0 +209496998905353102939683318056386843320226943362901245843454189552330491977585545292986505537591412495770370624597942488990595819454359028520277881389056.0 +418993997810706136102849103734512193905368329477367193737337753122127196932111969244601352188982185677199872727893591144779117437355636437718799415771136.0 +418993997810706205879366636112773686640453886725802491686908379104660983955171090585973011075182824991540741249195884977981191638908718057040555762778112.0 +837987995621412272205698207469024387810736658954734387474675506244254393864223938489202704377964371354399745455787182289558234874711272875437598831542272.0 +837987995621412411758733272225547373280907773451604983373816758209321967910342181171946022150365649983081482498391769955962383277817436114081111525556224.0 +1675975991242824544411396414938048775621473317909468774949351012488508787728447876978405408755928742708799490911574364579116469749422545750875197663084544.0 +1675975991242824823517466544451094746561815546903209966747633516418643935820684362343892044300731299966162964996783539911924766555634872228162223051112448.0 +3351951982485649088822792829876097551242946635818937549898702024977017575456895753956810817511857485417598981823148729158232939498845091501750395326169088.0 +3351951982485649647034933088902189493123631093806419933495267032837287871641368724687784088601462599932325929993567079823849533111269744456324446102224896.0 +6703903964971298177645585659752195102485893271637875099797404049954035150913791507913621635023714970835197963646297458316465878997690183003500790652338176.0 +6703903964971299294069866177804378986247262187612839866990534065674575743282737449375568177202925199864651859987134159647699066222539488912648892204449792.0 +13407807929942596355291171319504390204971786543275750199594808099908070301827583015827243270047429941670395927292594916632931757995380366007001581304676352.0 +13407807929942598588139732355608757972494524375225679733981068131349151486565474898751136354405850399729303719974268319295398132445078977825297784408899584.0 +26815615859885192710582342639008780409943573086551500399189616199816140603655166031654486540094859883340791854585189833265863515990760732014003162609352704.0 +26815615859885197176279464711217515944989048750451359467962136262698302973130949797502272708811700799458607439948536638590796264890157955650595568817799168.0 +53631231719770385421164685278017560819887146173103000798379232399632281207310332063308973080189719766681583709170379666531727031981521464028006325218705408.0 +53631231719770394352558929422435031889978097500902718935924272525396605946261899595004545417623401598917214879897073277181592529780315911301191137635598336.0 +107262463439540770842329370556035121639774292346206001596758464799264562414620664126617946160379439533363167418340759333063454063963042928056012650437410816.0 +107262463439540788705117858844870063779956195001805437871848545050793211892523799190009090835246803197834429759794146554363185059560631822602382275271196672.0 +214524926879081541684658741112070243279548584692412003193516929598529124829241328253235892320758879066726334836681518666126908127926085856112025300874821632.0 +214524926879081577410235717689740127559912390003610875743697090101586423785047598380018181670493606395668859519588293108726370119121263645204764550542393344.0 +429049853758163083369317482224140486559097169384824006387033859197058249658482656506471784641517758133452669673363037332253816255852171712224050601749643264.0 +429049853758163154820471435379480255119824780007221751487394180203172847570095196760036363340987212791337719039176586217452740238242527290409529101084786688.0 +858099707516326166738634964448280973118194338769648012774067718394116499316965313012943569283035516266905339346726074664507632511704343424448101203499286528.0 +858099707516326309640942870758960510239649560014443502974788360406345695140190393520072726681974425582675438078353172434905480476485054580819058202169573376.0 +1716199415032652333477269928896561946236388677539296025548135436788232998633930626025887138566071032533810678693452149329015265023408686848896202406998573056.0 +1716199415032652619281885741517921020479299120028887005949576720812691390280380787040145453363948851165350876156706344869810960952970109161638116404339146752.0 +3432398830065304666954539857793123892472777355078592051096270873576465997267861252051774277132142065067621357386904298658030530046817373697792404813997146112.0 +3432398830065305238563771483035842040958598240057774011899153441625382780560761574080290906727897702330701752313412689739621921905940218323276232808678293504.0 +6864797660130609333909079715586247784945554710157184102192541747152931994535722504103548554264284130135242714773808597316061060093634747395584809627994292224.0 +6864797660130610477127542966071684081917196480115548023798306883250765561121523148160581813455795404661403504626825379479243843811880436646552465617356587008.0 +13729595320261218667818159431172495569891109420314368204385083494305863989071445008207097108528568260270485429547617194632122120187269494791169619255988584448.0 +13729595320261220954255085932143368163834392960231096047596613766501531122243046296321163626911590809322807009253650758958487687623760873293104931234713174016.0 +27459190640522437335636318862344991139782218840628736408770166988611727978142890016414194217057136520540970859095234389264244240374538989582339238511977168896.0 +27459190640522441908510171864286736327668785920462192095193227533003062244486092592642327253823181618645614018507301517916975375247521746586209862469426348032.0 +54918381281044874671272637724689982279564437681257472817540333977223455956285780032828388434114273041081941718190468778528488480749077979164678477023954337792.0 +54918381281044883817020343728573472655337571840924384190386455066006124488972185185284654507646363237291228037014603035833950750495043493172419724938852696064.0 +109836762562089749342545275449379964559128875362514945635080667954446911912571560065656776868228546082163883436380937557056976961498155958329356954047908675584.0 +109836762562089767634040687457146945310675143681848768380772910132012248977944370370569309015292726474582456074029206071667901500990086986344839449877705392128.0 +219673525124179498685090550898759929118257750725029891270161335908893823825143120131313553736457092164327766872761875114113953922996311916658713908095817351168.0 +219673525124179535268081374914293890621350287363697536761545820264024497955888740741138618030585452949164912148058412143335803001980173972689678899755410784256.0 +439347050248358997370181101797519858236515501450059782540322671817787647650286240262627107472914184328655533745523750228227907845992623833317427816191634702336.0 +439347050248359070536162749828587781242700574727395073523091640528048995911777481482277236061170905898329824296116824286671606003960347945379357799510821568512.0 +878694100496717994740362203595039716473031002900119565080645343635575295300572480525254214945828368657311067491047500456455815691985247666634855632383269404672.0 +878694100496718141072325499657175562485401149454790147046183281056097991823554962964554472122341811796659648592233648573343212007920695890758715599021643137024.0 +1757388200993435989480724407190079432946062005800239130161290687271150590601144961050508429891656737314622134982095000912911631383970495333269711264766538809344.0 +1757388200993436282144650999314351124970802298909580294092366562112195983647109925929108944244683623593319297184467297146686424015841391781517431198043286274048.0 +3514776401986871978961448814380158865892124011600478260322581374542301181202289922101016859783313474629244269964190001825823262767940990666539422529533077618688.0 +3514776401986872564289301998628702249941604597819160588184733124224391967294219851858217888489367247186638594368934594293372848031682783563034862396086572548096.0 +7029552803973743957922897628760317731784248023200956520645162749084602362404579844202033719566626949258488539928380003651646525535881981333078845059066155237376.0 +7029552803973745128578603997257404499883209195638321176369466248448783934588439703716435776978734494373277188737869188586745696063365567126069724792173145096192.0 +14059105607947487915845795257520635463568496046401913041290325498169204724809159688404067439133253898516977079856760007303293051071763962666157690118132310474752.0 +14059105607947490257157207994514808999766418391276642352738932496897567869176879407432871553957468988746554377475738377173491392126731134252139449584346290192384.0 +28118211215894975831691590515041270927136992092803826082580650996338409449618319376808134878266507797033954159713520014606586102143527925332315380236264620949504.0 +28118211215894980514314415989029617999532836782553284705477864993795135738353758814865743107914937977493108754951476754346982784253462268504278899168692580384768.0 +56236422431789951663383181030082541854273984185607652165161301992676818899236638753616269756533015594067908319427040029213172204287055850664630760472529241899008.0 +56236422431789961028628831978059235999065673565106569410955729987590271476707517629731486215829875954986217509902953508693965568506924537008557798337385160769536.0 +112472844863579903326766362060165083708547968371215304330322603985353637798473277507232539513066031188135816638854080058426344408574111701329261520945058483798016.0 +112472844863579922057257663956118471998131347130213138821911459975180542953415035259462972431659751909972435019805907017387931137013849074017115596674770321539072.0 +224945689727159806653532724120330167417095936742430608660645207970707275596946555014465079026132062376271633277708160116852688817148223402658523041890116967596032.0 +224945689727159844114515327912236943996262694260426277643822919950361085906830070518925944863319503819944870039611814034775862274027698148034231193349540643078144.0 +449891379454319613307065448240660334834191873484861217321290415941414551193893110028930158052264124752543266555416320233705377634296446805317046083780233935192064.0 +449891379454319688229030655824473887992525388520852555287645839900722171813660141037851889726639007639889740079223628069551724548055396296068462386699081286156288.0 +899782758908639226614130896481320669668383746969722434642580831882829102387786220057860316104528249505086533110832640467410755268592893610634092167560467870384128.0 +899782758908639376458061311648947775985050777041705110575291679801444343627320282075703779453278015279779480158447256139103449096110792592136924773398162572312576.0 +1799565517817278453228261792962641339336767493939444869285161663765658204775572440115720632209056499010173066221665280934821510537185787221268184335120935740768256.0 +1799565517817278752916122623297895551970101554083410221150583359602888687254640564151407558906556030559558960316894512278206898192221585184273849546796325144625152.0 +3599131035634556906456523585925282678673534987878889738570323327531316409551144880231441264418112998020346132443330561869643021074371574442536368670241871481536512.0 +3599131035634557505832245246595791103940203108166820442301166719205777374509281128302815117813112061119117920633789024556413796384443170368547699093592650289250304.0 +7198262071269113812913047171850565357347069975757779477140646655062632819102289760462882528836225996040692264886661123739286042148743148885072737340483742963073024.0 +7198262071269115011664490493191582207880406216333640884602333438411554749018562256605630235626224122238235841267578049112827592768886340737095398187185300578500608.0 +14396524142538227625826094343701130714694139951515558954281293310125265638204579520925765057672451992081384529773322247478572084297486297770145474680967485926146048.0 +14396524142538230023328980986383164415760812432667281769204666876823109498037124513211260471252448244476471682535156098225655185537772681474190796374370601157001216.0 +28793048285076455251652188687402261429388279903031117908562586620250531276409159041851530115344903984162769059546644494957144168594972595540290949361934971852292096.0 +28793048285076460046657961972766328831521624865334563538409333753646218996074249026422520942504896488952943365070312196451310371075545362948381592748741202314002432.0 +57586096570152910503304377374804522858776559806062235817125173240501062552818318083703060230689807968325538119093288989914288337189945191080581898723869943704584192.0 +57586096570152920093315923945532657663043249730669127076818667507292437992148498052845041885009792977905886730140624392902620742151090725896763185497482404628004864.0 +115172193140305821006608754749609045717553119612124471634250346481002125105636636167406120461379615936651076238186577979828576674379890382161163797447739887409168384.0 +115172193140305840186631847891065315326086499461338254153637335014584875984296996105690083770019585955811773460281248785805241484302181451793526370994964809256009728.0 +230344386280611642013217509499218091435106239224248943268500692962004250211273272334812240922759231873302152476373155959657153348759780764322327594895479774818336768.0 +230344386280611680373263695782130630652172998922676508307274670029169751968593992211380167540039171911623546920562497571610482968604362903587052741989929618512019456.0 +460688772561223284026435018998436182870212478448497886537001385924008500422546544669624481845518463746604304952746311919314306697519561528644655189790959549636673536.0 +460688772561223360746527391564261261304345997845353016614549340058339503937187984422760335080078343823247093841124995143220965937208725807174105483979859237024038912.0 +921377545122446568052870037996872365740424956896995773074002771848017000845093089339248963691036927493208609905492623838628613395039123057289310379581919099273347072.0 +921377545122446721493054783128522522608691995690706033229098680116679007874375968845520670160156687646494187682249990286441931874417451614348210967959718474048077824.0 +1842755090244893136105740075993744731480849913793991546148005543696034001690186178678497927382073854986417219810985247677257226790078246114578620759163838198546694144.0 +1842755090244893442986109566257045045217383991381412066458197360233358015748751937691041340320313375292988375364499980572883863748834903228696421935919436948096155648.0 +3685510180489786272211480151987489462961699827587983092296011087392068003380372357356995854764147709972834439621970495354514453580156492229157241518327676397093388288.0 +3685510180489786885972219132514090090434767982762824132916394720466716031497503875382082680640626750585976750728999961145767727497669806457392843871838873896192311296.0 +7371020360979572544422960303974978925923399655175966184592022174784136006760744714713991709528295419945668879243940990709028907160312984458314483036655352794186776576.0 +7371020360979573771944438265028180180869535965525648265832789440933432062995007750764165361281253501171953501457999922291535454995339612914785687743677747792384622592.0 +14742040721959145088845920607949957851846799310351932369184044349568272013521489429427983419056590839891337758487881981418057814320625968916628966073310705588373553152.0 +14742040721959147543888876530056360361739071931051296531665578881866864125990015501528330722562507002343907002915999844583070909990679225829571375487355495584769245184.0 +29484081443918290177691841215899915703693598620703864738368088699136544027042978858855966838113181679782675516975763962836115628641251937833257932146621411176747106304.0 +29484081443918295087777753060112720723478143862102593063331157763733728251980031003056661445125014004687814005831999689166141819981358451659142750974710991169538490368.0 +58968162887836580355383682431799831407387197241407729476736177398273088054085957717711933676226363359565351033951527925672231257282503875666515864293242822353494212608.0 +58968162887836590175555506120225441446956287724205186126662315527467456503960062006113322890250028009375628011663999378332283639962716903318285501949421982339076980736.0 +117936325775673160710767364863599662814774394482815458953472354796546176108171915435423867352452726719130702067903055851344462514565007751333031728586485644706988425216.0 +117936325775673180351111012240450882893912575448410372253324631054934913007920124012226645780500056018751256023327998756664567279925433806636571003898843964678153961472.0 +235872651551346321421534729727199325629548788965630917906944709593092352216343830870847734704905453438261404135806111702688925029130015502666063457172971289413976850432.0 +235872651551346360702222024480901765787825150896820744506649262109869826015840248024453291561000112037502512046655997513329134559850867613273142007797687929356307922944.0 +471745303102692642843069459454398651259097577931261835813889419186184704432687661741695469409810906876522808271612223405377850058260031005332126914345942578827953700864.0 +471745303102692721404444048961803531575650301793641489013298524219739652031680496048906583122000224075005024093311995026658269119701735226546284015595375858712615845888.0 +943490606205385285686138918908797302518195155862523671627778838372369408865375323483390938819621813753045616543224446810755700116520062010664253828691885157655907401728.0 +943490606205385442808888097923607063151300603587282978026597048439479304063360992097813166244000448150010048186623990053316538239403470453092568031190751717425231691776.0 +1886981212410770571372277837817594605036390311725047343255557676744738817730750646966781877639243627506091233086448893621511400233040124021328507657383770315311814803456.0 +1886981212410770885617776195847214126302601207174565956053194096878958608126721984195626332488000896300020096373247980106633076478806940906185136062381503434850463383552.0 +3773962424821541142744555675635189210072780623450094686511115353489477635461501293933563755278487255012182466172897787243022800466080248042657015314767540630623629606912.0 +3773962424821541771235552391694428252605202414349131912106388193757917216253443968391252664976001792600040192746495960213266152957613881812370272124763006869700926767104.0 +7547924849643082285489111351270378420145561246900189373022230706978955270923002587867127510556974510024364932345795574486045600932160496085314030629535081261247259213824.0 +7547924849643083542471104783388856505210404828698263824212776387515834432506887936782505329952003585200080385492991920426532305915227763624740544249526013739401853534208.0 +15095849699286164570978222702540756840291122493800378746044461413957910541846005175734255021113949020048729864691591148972091201864320992170628061259070162522494518427648.0 +15095849699286167084942209566777713010420809657396527648425552775031668865013775873565010659904007170400160770985983840853064611830455527249481088499052027478803707068416.0 +30191699398572329141956445405081513680582244987600757492088922827915821083692010351468510042227898040097459729383182297944182403728641984341256122518140325044989036855296.0 +30191699398572334169884419133555426020841619314793055296851105550063337730027551747130021319808014340800321541971967681706129223660911054498962176998104054957607414136832.0 +60383398797144658283912890810163027361164489975201514984177845655831642167384020702937020084455796080194919458766364595888364807457283968682512245036280650089978073710592.0 +60383398797144668339768838267110852041683238629586110593702211100126675460055103494260042639616028681600643083943935363412258447321822108997924353996208109915214828273664.0 +120766797594289316567825781620326054722328979950403029968355691311663284334768041405874040168911592160389838917532729191776729614914567937365024490072561300179956147421184.0 +120766797594289336679537676534221704083366477259172221187404422200253350920110206988520085279232057363201286167887870726824516894643644217995848707992416219830429656547328.0 +241533595188578633135651563240652109444657959900806059936711382623326568669536082811748080337823184320779677835065458383553459229829135874730048980145122600359912294842368.0 +241533595188578673359075353068443408166732954518344442374808844400506701840220413977040170558464114726402572335775741453649033789287288435991697415984832439660859313094656.0 +483067190377157266271303126481304218889315919801612119873422765246653137339072165623496160675646368641559355670130916767106918459658271749460097960290245200719824589684736.0 +483067190377157346718150706136886816333465909036688884749617688801013403680440827954080341116928229452805144671551482907298067578574576871983394831969664879321718626189312.0 +966134380754314532542606252962608437778631839603224239746845530493306274678144331246992321351292737283118711340261833534213836919316543498920195920580490401439649179369472.0 +966134380754314693436301412273773632666931818073377769499235377602026807360881655908160682233856458905610289343102965814596135157149153743966789663939329758643437252378624.0 +1932268761508629065085212505925216875557263679206448479493691060986612549356288662493984642702585474566237422680523667068427673838633086997840391841160980802879298358738944.0 +1932268761508629386872602824547547265333863636146755538998470755204053614721763311816321364467712917811220578686205931629192270314298307487933579327878659517286874504757248.0 +3864537523017258130170425011850433751114527358412896958987382121973225098712577324987969285405170949132474845361047334136855347677266173995680783682321961605758596717477888.0 +3864537523017258773745205649095094530667727272293511077996941510408107229443526623632642728935425835622441157372411863258384540628596614975867158655757319034573749009514496.0 +7729075046034516260340850023700867502229054716825793917974764243946450197425154649975938570810341898264949690722094668273710695354532347991361567364643923211517193434955776.0 +7729075046034517547490411298190189061335454544587022155993883020816214458887053247265285457870851671244882314744823726516769081257193229951734317311514638069147498019028992.0 +15458150092069032520681700047401735004458109433651587835949528487892900394850309299951877141620683796529899381444189336547421390709064695982723134729287846423034386869911552.0 +15458150092069035094980822596380378122670909089174044311987766041632428917774106494530570915741703342489764629489647453033538162514386459903468634623029276138294996038057984.0 +30916300184138065041363400094803470008916218867303175671899056975785800789700618599903754283241367593059798762888378673094842781418129391965446269458575692846068773739823104.0 +30916300184138070189961645192760756245341818178348088623975532083264857835548212989061141831483406684979529258979294906067076325028772919806937269246058552276589992076115968.0 +61832600368276130082726800189606940017832437734606351343798113951571601579401237199807508566482735186119597525776757346189685562836258783930892538917151385692137547479646208.0 +61832600368276140379923290385521512490683636356696177247951064166529715671096425978122283662966813369959058517958589812134152650057545839613874538492117104553179984152231936.0 +123665200736552260165453600379213880035664875469212702687596227903143203158802474399615017132965470372239195051553514692379371125672517567861785077834302771384275094959292416.0 +123665200736552280759846580771043024981367272713392354495902128333059431342192851956244567325933626739918117035917179624268305300115091679227749076984234209106359968304463872.0 +247330401473104520330907200758427760071329750938425405375192455806286406317604948799230034265930940744478390103107029384758742251345035135723570155668605542768550189918584832.0 +247330401473104561519693161542086049962734545426784708991804256666118862684385703912489134651867253479836234071834359248536610600230183358455498153968468418212719936608927744.0 +494660802946209040661814401516855520142659501876850810750384911612572812635209897598460068531861881488956780206214058769517484502690070271447140311337211085537100379837169664.0 +494660802946209123039386323084172099925469090853569417983608513332237725368771407824978269303734506959672468143668718497073221200460366716910996307936936836425439873217855488.0 +989321605892418081323628803033711040285319003753701621500769823225145625270419795196920137063723762977913560412428117539034969005380140542894280622674422171074200759674339328.0 +989321605892418246078772646168344199850938181707138835967217026664475450737542815649956538607469013919344936287337436994146442400920733433821992615873873672850879746435710976.0 +1978643211784836162647257606067422080570638007507403243001539646450291250540839590393840274127447525955827120824856235078069938010760281085788561245348844342148401519348678656.0 +1978643211784836492157545292336688399701876363414277671934434053328950901475085631299913077214938027838689872574674873988292884801841466867643985231747747345701759492871421952.0 +3957286423569672325294515212134844161141276015014806486003079292900582501081679180787680548254895051911654241649712470156139876021520562171577122490697688684296803038697357312.0 +3957286423569672984315090584673376799403752726828555343868868106657901802950171262599826154429876055677379745149349747976585769603682933735287970463495494691403518985742843904.0 +7914572847139344650589030424269688322282552030029612972006158585801165002163358361575361096509790103823308483299424940312279752043041124343154244981395377368593606077394714624.0 +7914572847139345968630181169346753598807505453657110687737736213315803605900342525199652308859752111354759490298699495953171539207365867470575940926990989382807037971485687808.0 +15829145694278689301178060848539376644565104060059225944012317171602330004326716723150722193019580207646616966598849880624559504086082248686308489962790754737187212154789429248.0 +15829145694278691937260362338693507197615010907314221375475472426631607211800685050399304617719504222709518980597398991906343078414731734941151881853981978765614075942971375616.0 +31658291388557378602356121697078753289130208120118451888024634343204660008653433446301444386039160415293233933197699761249119008172164497372616979925581509474374424309578858496.0 +31658291388557383874520724677387014395230021814628442750950944853263214423601370100798609235439008445419037961194797983812686156829463469882303763707963957531228151885942751232.0 +63316582777114757204712243394157506578260416240236903776049268686409320017306866892602888772078320830586467866395399522498238016344328994745233959851163018948748848619157716992.0 +63316582777114767749041449354774028790460043629256885501901889706526428847202740201597218470878016890838075922389595967625372313658926939764607527415927915062456303771885502464.0 +126633165554229514409424486788315013156520832480473807552098537372818640034613733785205777544156641661172935732790799044996476032688657989490467919702326037897497697238315433984.0 +126633165554229535498082898709548057580920087258513771003803779413052857694405480403194436941756033781676151844779191935250744627317853879529215054831855830124912607543771004928.0 +253266331108459028818848973576630026313041664960947615104197074745637280069227467570411555088313283322345871465581598089992952065377315978980935839404652075794995394476630867968.0 +253266331108459070996165797419096115161840174517027542007607558826105715388810960806388873883512067563352303689558383870501489254635707759058430109663711660249825215087542009856.0 +506532662216918057637697947153260052626083329921895230208394149491274560138454935140823110176626566644691742931163196179985904130754631957961871678809304151589990788953261735936.0 +506532662216918141992331594838192230323680349034055084015215117652211430777621921612777747767024135126704607379116767741002978509271415518116860219327423320499650430175084019712.0 +1013065324433836115275395894306520105252166659843790460416788298982549120276909870281646220353253133289383485862326392359971808261509263915923743357618608303179981577906523471872.0 +1013065324433836283984663189676384460647360698068110168030430235304422861555243843225555495534048270253409214758233535482005957018542831036233720438654846640999300860350168039424.0 +2026130648867672230550791788613040210504333319687580920833576597965098240553819740563292440706506266578766971724652784719943616523018527831847486715237216606359963155813046943744.0 +2026130648867672567969326379352768921294721396136220336060860470608845723110487686451110991068096540506818429516467070964011914037085662072467440877309693281998601720700336078848.0 +4052261297735344461101583577226080421008666639375161841667153195930196481107639481126584881413012533157533943449305569439887233046037055663694973430474433212719926311626093887488.0 +4052261297735345135938652758705537842589442792272440672121720941217691446220975372902221982136193081013636859032934141928023828074171324144934881754619386563997203441400672157696.0 +8104522595470688922203167154452160842017333278750323683334306391860392962215278962253169762826025066315067886898611138879774466092074111327389946860948866425439852623252187774976.0 +8104522595470690271877305517411075685178885584544881344243441882435382892441950745804443964272386162027273718065868283856047656148342648289869763509238773127994406882801344315392.0 +16209045190941377844406334308904321684034666557500647366668612783720785924430557924506339525652050132630135773797222277759548932184148222654779893721897732850879705246504375549952.0 +16209045190941380543754611034822151370357771169089762688486883764870765784883901491608887928544772324054547436131736567712095312296685296579739527018477546255988813765602688630784.0 +32418090381882755688812668617808643368069333115001294733337225567441571848861115849012679051304100265260271547594444555519097864368296445309559787443795465701759410493008751099904.0 +32418090381882761087509222069644302740715542338179525376973767529741531569767802983217775857089544648109094872263473135424190624593370593159479054036955092511977627531205377261568.0 +64836180763765511377625337235617286736138666230002589466674451134883143697722231698025358102608200530520543095188889111038195728736592890619119574887590931403518820986017502199808.0 +64836180763765522175018444139288605481431084676359050753947535059483063139535605966435551714179089296218189744526946270848381249186741186318958108073910185023955255062410754523136.0 +129672361527531022755250674471234573472277332460005178933348902269766287395444463396050716205216401061041086190377778222076391457473185781238239149775181862807037641972035004399616.0 +129672361527531044350036888278577210962862169352718101507895070118966126279071211932871103428358178592436379489053892541696762498373482372637916216147820370047910510124821509046272.0 +259344723055062045510501348942469146944554664920010357866697804539532574790888926792101432410432802122082172380755556444152782914946371562476478299550363725614075283944070008799232.0 +259344723055062088700073776557154421925724338705436203015790140237932252558142423865742206856716357184872758978107785083393524996746964745275832432295640740095821020249643018092544.0 +518689446110124091021002697884938293889109329840020715733395609079065149581777853584202864820865604244164344761511112888305565829892743124952956599100727451228150567888140017598464.0 +518689446110124177400147553114308843851448677410872406031580280475864505116284847731484413713432714369745517956215570166787049993493929490551664864591281480191642040499286036185088.0 +1037378892220248182042005395769876587778218659680041431466791218158130299163555707168405729641731208488328689523022225776611131659785486249905913198201454902456301135776280035196928.0 +1037378892220248354800295106228617687702897354821744812063160560951729010232569695462968827426865428739491035912431140333574099986987858981103329729182562960383284080998572072370176.0 +2074757784440496364084010791539753175556437319360082862933582436316260598327111414336811459283462416976657379046044451553222263319570972499811826396402909804912602271552560070393856.0 +2074757784440496709600590212457235375405794709643489624126321121903458020465139390925937654853730857478982071824862280667148199973975717962206659458365125920766568161997144144740352.0 +4149515568880992728168021583079506351112874638720165725867164872632521196654222828673622918566924833953314758092088903106444526639141944999623652792805819609825204543105120140787712.0 +4149515568880993419201180424914470750811589419286979248252642243806916040930278781851875309707461714957964143649724561334296399947951435924413318916730251841533136323994288289480704.0 +8299031137761985456336043166159012702225749277440331451734329745265042393308445657347245837133849667906629516184177806212889053278283889999247305585611639219650409086210240281575424.0 +8299031137761986838402360849828941501623178838573958496505284487613832081860557563703750619414923429915928287299449122668592799895902871848826637833460503683066272647988576578961408.0 +16598062275523970912672086332318025404451498554880662903468659490530084786616891314694491674267699335813259032368355612425778106556567779998494611171223278439300818172420480563150848.0 +16598062275523973676804721699657883003246357677147916993010568975227664163721115127407501238829846859831856574598898245337185599791805743697653275666921007366132545295977153157922816.0 +33196124551047941825344172664636050808902997109761325806937318981060169573233782629388983348535398671626518064736711224851556213113135559996989222342446556878601636344840961126301696.0 +33196124551047947353609443399315766006492715354295833986021137950455328327442230254815002477659693719663713149197796490674371199583611487395306551333842014732265090591954306315845632.0 +66392249102095883650688345329272101617805994219522651613874637962120339146467565258777966697070797343253036129473422449703112426226271119993978444684893113757203272689681922252603392.0 +66392249102095894707218886798631532012985430708591667972042275900910656654884460509630004955319387439327426298395592981348742399167222974790613102667684029464530181183908612631691264.0 +132784498204191767301376690658544203235611988439045303227749275924240678292935130517555933394141594686506072258946844899406224852452542239987956889369786227514406545379363844505206784.0 +132784498204191789414437773597263064025970861417183335944084551801821313309768921019260009910638774878654852596791185962697484798334445949581226205335368058929060362367817225263382528.0 +265568996408383534602753381317088406471223976878090606455498551848481356585870261035111866788283189373012144517893689798812449704905084479975913778739572455028813090758727689010413568.0 +265568996408383578828875547194526128051941722834366671888169103603642626619537842038520019821277549757309705193582371925394969596668891899162452410670736117858120724735634450526765056.0 +531137992816767069205506762634176812942447953756181212910997103696962713171740522070223733576566378746024289035787379597624899409810168959951827557479144910057626181517455378020827136.0 +531137992816767157657751094389052256103883445668733343776338207207285253239075684077040039642555099514619410387164743850789939193337783798324904821341472235716241449471268901053530112.0 +1062275985633534138411013525268353625884895907512362425821994207393925426343481044140447467153132757492048578071574759195249798819620337919903655114958289820115252363034910756041654272.0 +1062275985633534315315502188778104512207766891337466687552676414414570506478151368154080079285110199029238820774329487701579878386675567596649809642682944471432482898942537802107060224.0 +2124551971267068276822027050536707251769791815024724851643988414787850852686962088280894934306265514984097156143149518390499597639240675839807310229916579640230504726069821512083308544.0 +2124551971267068630631004377556209024415533782674933375105352828829141012956302736308160158570220398058477641548658975403159756773351135193299619285365888942864965797885075604214120448.0 +4249103942534136553644054101073414503539583630049449703287976829575701705373924176561789868612531029968194312286299036780999195278481351679614620459833159280461009452139643024166617088.0 +4249103942534137261262008755112418048831067565349866750210705657658282025912605472616320317140440796116955283097317950806319513546702270386599238570731777885729931595770151208428240896.0 +8498207885068273107288108202146829007079167260098899406575953659151403410747848353123579737225062059936388624572598073561998390556962703359229240919666318560922018904279286048333234176.0 +8498207885068274522524017510224836097662135130699733500421411315316564051825210945232640634280881592233910566194635901612639027093404540773198477141463555771459863191540302416856481792.0 +16996415770136546214576216404293658014158334520197798813151907318302806821495696706247159474450124119872777249145196147123996781113925406718458481839332637121844037808558572096666468352.0 +16996415770136549045048035020449672195324270261399467000842822630633128103650421890465281268561763184467821132389271803225278054186809081546396954282927111542919726383080604833712963584.0 +33992831540273092429152432808587316028316669040395597626303814636605613642991393412494318948900248239745554498290392294247993562227850813436916963678665274243688075617117144193332936704.0 +33992831540273098090096070040899344390648540522798934001685645261266256207300843780930562537123526368935642264778543606450556108373618163092793908565854223085839452766161209667425927168.0 +67985663080546184858304865617174632056633338080791195252607629273211227285982786824988637897800496479491108996580784588495987124455701626873833927357330548487376151234234288386665873408.0 +67985663080546196180192140081798688781297081045597868003371290522532512414601687561861125074247052737871284529557087212901112216747236326185587817131708446171678905532322419334851854336.0 +135971326161092369716609731234349264113266676161582390505215258546422454571965573649977275795600992958982217993161569176991974248911403253747667854714661096974752302468468576773331746816.0 +135971326161092392360384280163597377562594162091195736006742581045065024829203375123722250148494105475742569059114174425802224433494472652371175634263416892343357811064644838669703708672.0 +271942652322184739433219462468698528226533352323164781010430517092844909143931147299954551591201985917964435986323138353983948497822806507495335709429322193949504604936937153546663493632.0 +271942652322184784720768560327194755125188324182391472013485162090130049658406750247444500296988210951485138118228348851604448866988945304742351268526833784686715622129289677339407417344.0 +543885304644369478866438924937397056453066704646329562020861034185689818287862294599909103182403971835928871972646276707967896995645613014990671418858644387899009209873874307093326987264.0 +543885304644369569441537120654389510250376648364782944026970324180260099316813500494889000593976421902970276236456697703208897733977890609484702537053667569373431244258579354678814834688.0 +1087770609288738957732877849874794112906133409292659124041722068371379636575724589199818206364807943671857743945292553415935793991291226029981342837717288775798018419747748614186653974528.0 +1087770609288739138883074241308779020500753296729565888053940648360520198633627000989778001187952843805940552472913395406417795467955781218969405074107335138746862488517158709357629669376.0 +2175541218577477915465755699749588225812266818585318248083444136742759273151449178399636412729615887343715487890585106831871587982582452059962685675434577551596036839495497228373307949056.0 +2175541218577478277766148482617558041001506593459131776107881296721040397267254001979556002375905687611881104945826790812835590935911562437938810148214670277493724977034317418715259338752.0 +4351082437154955830931511399499176451624533637170636496166888273485518546302898356799272825459231774687430975781170213663743175965164904119925371350869155103192073678990994456746615898112.0 +4351082437154956555532296965235116082003013186918263552215762593442080794534508003959112004751811375223762209891653581625671181871823124875877620296429340554987449954068634837430518677504.0 +8702164874309911661863022798998352903249067274341272992333776546971037092605796713598545650918463549374861951562340427327486351930329808239850742701738310206384147357981988913493231796224.0 +8702164874309913111064593930470232164006026373836527104431525186884161589069016007918224009503622750447524419783307163251342363743646249751755240592858681109974899908137269674861037355008.0 +17404329748619823323726045597996705806498134548682545984667553093942074185211593427197091301836927098749723903124680854654972703860659616479701485403476620412768294715963977826986463592448.0 +17404329748619826222129187860940464328012052747673054208863050373768323178138032015836448019007245500895048839566614326502684727487292499503510481185717362219949799816274539349722074710016.0 +34808659497239646647452091195993411612996269097365091969335106187884148370423186854394182603673854197499447806249361709309945407721319232959402970806953240825536589431927955653972927184896.0 +34808659497239652444258375721880928656024105495346108417726100747536646356276064031672896038014491001790097679133228653005369454974584999007020962371434724439899599632549078699444149420032.0 +69617318994479293294904182391986823225992538194730183938670212375768296740846373708788365207347708394998895612498723418619890815442638465918805941613906481651073178863855911307945854369792.0 +69617318994479304888516751443761857312048210990692216835452201495073292712552128063345792076028982003580195358266457306010738909949169998014041924742869448879799199265098157398888298840064.0 +139234637988958586589808364783973646451985076389460367877340424751536593481692747417576730414695416789997791224997446837239781630885276931837611883227812963302146357727711822615891708739584.0 +139234637988958609777033502887523714624096421981384433670904402990146585425104256126691584152057964007160390716532914612021477819898339996028083849485738897759598398530196314797776597680128.0 +278469275977917173179616729567947292903970152778920735754680849503073186963385494835153460829390833579995582449994893674479563261770553863675223766455625926604292715455423645231783417479168.0 +278469275977917219554067005775047429248192843962768867341808805980293170850208512253383168304115928014320781433065829224042955639796679992056167698971477795519196797060392629595553195360256.0 +556938551955834346359233459135894585807940305557841471509361699006146373926770989670306921658781667159991164899989787348959126523541107727350447532911251853208585430910847290463566834958336.0 +556938551955834439108134011550094858496385687925537734683617611960586341700417024506766336608231856028641562866131658448085911279593359984112335397942955591038393594120785259191106390720512.0 +1113877103911668692718466918271789171615880611115682943018723398012292747853541979340613843317563334319982329799979574697918253047082215454700895065822503706417170861821694580927133669916672.0 +1113877103911668878216268023100189716992771375851075469367235223921172683400834049013532673216463712057283125732263316896171822559186719968224670795885911182076787188241570518382212781441024.0 +2227754207823337385436933836543578343231761222231365886037446796024585495707083958681227686635126668639964659599959149395836506094164430909401790131645007412834341723643389161854267339833344.0 +2227754207823337756432536046200379433985542751702150938734470447842345366801668098027065346432927424114566251464526633792343645118373439936449341591771822364153574376483141036764425562882048.0 +4455508415646674770873867673087156686463522444462731772074893592049170991414167917362455373270253337279929319199918298791673012188328861818803580263290014825668683447286778323708534679666688.0 +4455508415646675512865072092400758867971085503404301877468940895684690733603336196054130692865854848229132502929053267584687290236746879872898683183543644728307148752966282073528851125764096.0 +8911016831293349541747735346174313372927044888925463544149787184098341982828335834724910746540506674559858638399836597583346024376657723637607160526580029651337366894573556647417069359333376.0 +8911016831293351025730144184801517735942171006808603754937881791369381467206672392108261385731709696458265005858106535169374580473493759745797366367087289456614297505932564147057702251528192.0 +17822033662586699083495470692348626745854089777850927088299574368196683965656671669449821493081013349119717276799673195166692048753315447275214321053160059302674733789147113294834138718666752.0 +17822033662586702051460288369603035471884342013617207509875763582738762934413344784216522771463419392916530011716213070338749160946987519491594732734174578913228595011865128294115404503056384.0 +35644067325173398166990941384697253491708179555701854176599148736393367931313343338899642986162026698239434553599346390333384097506630894550428642106320118605349467578294226589668277437333504.0 +35644067325173404102920576739206070943768684027234415019751527165477525868826689568433045542926838785833060023432426140677498321893975038983189465468349157826457190023730256588230809006112768.0 +71288134650346796333981882769394506983416359111403708353198297472786735862626686677799285972324053396478869107198692780666768195013261789100857284212640237210698935156588453179336554874667008.0 +71288134650346808205841153478412141887537368054468830039503054330955051737653379136866091085853677571666120046864852281354996643787950077966378930936698315652914380047460513176461618012225536.0 +142576269300693592667963765538789013966832718222807416706396594945573471725253373355598571944648106792957738214397385561333536390026523578201714568425280474421397870313176906358673109749334016.0 +142576269300693616411682306956824283775074736108937660079006108661910103475306758273732182171707355143332240093729704562709993287575900155932757861873396631305828760094921026352923236024451072.0 +285152538601387185335927531077578027933665436445614833412793189891146943450506746711197143889296213585915476428794771122667072780053047156403429136850560948842795740626353812717346219498668032.0 +285152538601387232823364613913648567550149472217875320158012217323820206950613516547464364343414710286664480187459409125419986575151800311865515723746793262611657520189842052705846472048902144.0 +570305077202774370671855062155156055867330872891229666825586379782293886901013493422394287778592427171830952857589542245334145560106094312806858273701121897685591481252707625434692438997336064.0 +570305077202774465646729227827297135100298944435750640316024434647640413901227033094928728686829420573328960374918818250839973150303600623731031447493586525223315040379684105411692944097804288.0 +1140610154405548741343710124310312111734661745782459333651172759564587773802026986844788575557184854343661905715179084490668291120212188625613716547402243795371182962505415250869384877994672128.0 +1140610154405548931293458455654594270200597888871501280632048869295280827802454066189857457373658841146657920749837636501679946300607201247462062894987173050446630080759368210823385888195608576.0 +2281220308811097482687420248620624223469323491564918667302345519129175547604053973689577151114369708687323811430358168981336582240424377251227433094804487590742365925010830501738769755989344256.0 +2281220308811097862586916911309188540401195777743002561264097738590561655604908132379714914747317682293315841499675273003359892601214402494924125789974346100893260161518736421646771776391217152.0 +4562440617622194965374840497241248446938646983129837334604691038258351095208107947379154302228739417374647622860716337962673164480848754502454866189608975181484731850021661003477539511978688512.0 +4562440617622195725173833822618377080802391555486005122528195477181123311209816264759429829494635364586631682999350546006719785202428804989848251579948692201786520323037472843293543552782434304.0 +9124881235244389930749680994482496893877293966259674669209382076516702190416215894758308604457478834749295245721432675925346328961697509004909732379217950362969463700043322006955079023957377024.0 +9124881235244391450347667645236754161604783110972010245056390954362246622419632529518859658989270729173263365998701092013439570404857609979696503159897384403573040646074945686587087105564868608.0 +18249762470488779861499361988964993787754587932519349338418764153033404380832431789516617208914957669498590491442865351850692657923395018009819464758435900725938927400086644013910158047914754048.0 +18249762470488782900695335290473508323209566221944020490112781908724493244839265059037719317978541458346526731997402184026879140809715219959393006319794768807146081292149891373174174211129737216.0 +36499524940977559722998723977929987575509175865038698676837528306066808761664863579033234417829915338997180982885730703701385315846790036019638929516871801451877854800173288027820316095829508096.0 +36499524940977565801390670580947016646419132443888040980225563817448986489678530118075438635957082916693053463994804368053758281619430439918786012639589537614292162584299782746348348422259474432.0 +72999049881955119445997447955859975151018351730077397353675056612133617523329727158066468835659830677994361965771461407402770631693580072039277859033743602903755709600346576055640632191659016192.0 +72999049881955131602781341161894033292838264887776081960451127634897972979357060236150877271914165833386106927989608736107516563238860879837572025279179075228584325168599565492696696844518948864.0 +145998099763910238891994895911719950302036703460154794707350113224267235046659454316132937671319661355988723931542922814805541263387160144078555718067487205807511419200693152111281264383318032384.0 +145998099763910263205562682323788066585676529775552163920902255269795945958714120472301754543828331666772213855979217472215033126477721759675144050558358150457168650337199130985393393689037897728.0 +291996199527820477783989791823439900604073406920309589414700226448534470093318908632265875342639322711977447863085845629611082526774320288157111436134974411615022838401386304222562528766636064768.0 +291996199527820526411125364647576133171353059551104327841804510539591891917428240944603509087656663333544427711958434944430066252955443519350288101116716300914337300674398261970786787378075795456.0 +583992399055640955567979583646879801208146813840619178829400452897068940186637817264531750685278645423954895726171691259222165053548640576314222872269948823230045676802772608445125057533272129536.0 +583992399055641052822250729295152266342706119102208655683609021079183783834856481889207018175313326667088855423916869888860132505910887038700576202233432601828674601348796523941573574756151590912.0 +1167984798111281911135959167293759602416293627681238357658800905794137880373275634529063501370557290847909791452343382518444330107097281152628445744539897646460091353605545216890250115066544259072.0 +1167984798111282105644501458590304532685412238204417311367218042158367567669712963778414036350626653334177710847833739777720265011821774077401152404466865203657349202697593047883147149512303181824.0 +2335969596222563822271918334587519204832587255362476715317601811588275760746551269058127002741114581695819582904686765036888660214194562305256891489079795292920182707211090433780500230133088518144.0 +2335969596222564211289002917180609065370824476408834622734436084316735135339425927556828072701253306668355421695667479555440530023643548154802304808933730407314698405395186095766294299024606363648.0 +4671939192445127644543836669175038409665174510724953430635203623176551521493102538116254005482229163391639165809373530073777320428389124610513782978159590585840365414422180867561000460266177036288.0 +4671939192445128422578005834361218130741648952817669245468872168633470270678851855113656145402506613336710843391334959110881060047287096309604609617867460814629396810790372191532588598049212727296.0 +9343878384890255289087673338350076819330349021449906861270407246353103042986205076232508010964458326783278331618747060147554640856778249221027565956319181171680730828844361735122000920532354072576.0 +9343878384890256845156011668722436261483297905635338490937744337266940541357703710227312290805013226673421686782669918221762120094574192619209219235734921629258793621580744383065177196098425454592.0 +18687756769780510578175346676700153638660698042899813722540814492706206085972410152465016021928916653566556663237494120295109281713556498442055131912638362343361461657688723470244001841064708145152.0 +18687756769780513690312023337444872522966595811270676981875488674533881082715407420454624581610026453346843373565339836443524240189148385238418438471469843258517587243161488766130354392196850909184.0 +37375513539561021156350693353400307277321396085799627445081628985412412171944820304930032043857833307133113326474988240590218563427112996884110263825276724686722923315377446940488003682129416290304.0 +37375513539561027380624046674889745045933191622541353963750977349067762165430814840909249163220052906693686747130679672887048480378296770476836876942939686517035174486322977532260708784393701818368.0 +74751027079122042312701386706800614554642792171599254890163257970824824343889640609860064087715666614266226652949976481180437126854225993768220527650553449373445846630754893880976007364258832580608.0 +74751027079122054761248093349779490091866383245082707927501954698135524330861629681818498326440105813387373494261359345774096960756593540953673753885879373034070348972645955064521417568787403636736.0 +149502054158244084625402773413601229109285584343198509780326515941649648687779281219720128175431333228532453305899952962360874253708451987536441055301106898746891693261509787761952014728517665161216.0 +149502054158244109522496186699558980183732766490165415855003909396271048661723259363636996652880211626774746988522718691548193921513187081907347507771758746068140697945291910129042835137574807273472.0 +299004108316488169250805546827202458218571168686397019560653031883299297375558562439440256350862666457064906611799905924721748507416903975072882110602213797493783386523019575523904029457035330322432.0 +299004108316488219044992373399117960367465532980330831710007818792542097323446518727273993305760423253549493977045437383096387843026374163814695015543517492136281395890583820258085670275149614546944.0 +598008216632976338501611093654404916437142337372794039121306063766598594751117124878880512701725332914129813223599811849443497014833807950145764221204427594987566773046039151047808058914070660644864.0 +598008216632976438089984746798235920734931065960661663420015637585084194646893037454547986611520846507098987954090874766192775686052748327629390031087034984272562791781167640516171340550299229093888.0 +1196016433265952677003222187308809832874284674745588078242612127533197189502234249757761025403450665828259626447199623698886994029667615900291528442408855189975133546092078302095616117828141321289728.0 +1196016433265952876179969493596471841469862131921323326840031275170168389293786074909095973223041693014197975908181749532385551372105496655258780062174069968545125583562335281032342681100598458187776.0 +2392032866531905354006444374617619665748569349491176156485224255066394379004468499515522050806901331656519252894399247397773988059335231800583056884817710379950267092184156604191232235656282642579456.0 +2392032866531905752359938987192943682939724263842646653680062550340336778587572149818191946446083386028395951816363499064771102744210993310517560124348139937090251167124670562064685362201196916375552.0 +4784065733063810708012888749235239331497138698982352312970448510132788758008936999031044101613802663313038505788798494795547976118670463601166113769635420759900534184368313208382464471312565285158912.0 +4784065733063811504719877974385887365879448527685293307360125100680673557175144299636383892892166772056791903632726998129542205488421986621035120248696279874180502334249341124129370724402393832751104.0 +9568131466127621416025777498470478662994277397964704625940897020265577516017873998062088203227605326626077011577596989591095952237340927202332227539270841519801068368736626416764928942625130570317824.0 +9568131466127623009439755948771774731758897055370586614720250201361347114350288599272767785784333544113583807265453996259084410976843973242070240497392559748361004668498682248258741448804787665502208.0 +19136262932255242832051554996940957325988554795929409251881794040531155032035747996124176406455210653252154023155193979182191904474681854404664455078541683039602136737473252833529857885250261140635648.0 +19136262932255246018879511897543549463517794110741173229440500402722694228700577198545535571568667088227167614530907992518168821953687946484140480994785119496722009336997364496517482897609575331004416.0 +38272525864510485664103109993881914651977109591858818503763588081062310064071495992248352812910421306504308046310387958364383808949363708809328910157083366079204273474946505667059715770500522281271296.0 +38272525864510492037759023795087098927035588221482346458881000805445388457401154397091071143137334176454335229061815985036337643907375892968280961989570238993444018673994728993034965795219150662008832.0 +76545051729020971328206219987763829303954219183717637007527176162124620128142991984496705625820842613008616092620775916728767617898727417618657820314166732158408546949893011334119431541001044562542592.0 +76545051729020984075518047590174197854071176442964692917762001610890776914802308794182142286274668352908670458123631970072675287814751785936561923979140477986888037347989457986069931590438301324017664.0 +153090103458041942656412439975527658607908438367435274015054352324249240256285983968993411251641685226017232185241551833457535235797454835237315640628333464316817093899786022668238863082002089125085184.0 +153090103458041968151036095180348395708142352885929385835524003221781553829604617588364284572549336705817340916247263940145350575629503571873123847958280955973776074695978915972139863180876602648035328.0 +306180206916083885312824879951055317215816876734870548030108704648498480512571967937986822503283370452034464370483103666915070471594909670474631281256666928633634187799572045336477726164004178250170368.0 +306180206916083936302072190360696791416284705771858771671048006443563107659209235176728569145098673411634681832494527880290701151259007143746247695916561911947552149391957831944279726361753205296070656.0 +612360413832167770625649759902110634431633753469741096060217409296996961025143935875973645006566740904068928740966207333830140943189819340949262562513333857267268375599144090672955452328008356500340736.0 +612360413832167872604144380721393582832569411543717543342096012887126215318418470353457138290197346823269363664989055760581402302518014287492495391833123823895104298783915663888559452723506410592141312.0 +1224720827664335541251299519804221268863267506939482192120434818593993922050287871751947290013133481808137857481932414667660281886379638681898525125026667714534536751198288181345910904656016713000681472.0 +1224720827664335745208288761442787165665138823087435086684192025774252430636836940706914276580394693646538727329978111521162804605036028574984990783666247647790208597567831327777118905447012821184282624.0 +2449441655328671082502599039608442537726535013878964384240869637187987844100575743503894580026266963616275714963864829335320563772759277363797050250053335429069073502396576362691821809312033426001362944.0 +2449441655328671490416577522885574331330277646174870173368384051548504861273673881413828553160789387293077454659956223042325609210072057149969981567332495295580417195135662655554237810894025642368565248.0 +4898883310657342165005198079216885075453070027757928768481739274375975688201151487007789160052533927232551429927729658670641127545518554727594100500106670858138147004793152725383643618624066852002725888.0 +4898883310657342980833155045771148662660555292349740346736768103097009722547347762827657106321578774586154909319912446084651218420144114299939963134664990591160834390271325311108475621788051284737130496.0 +9797766621314684330010396158433770150906140055515857536963478548751951376402302974015578320105067854465102859855459317341282255091037109455188201000213341716276294009586305450767287237248133704005451776.0 +9797766621314685961666310091542297325321110584699480693473536206194019445094695525655314212643157549172309818639824892169302436840288228599879926269329981182321668780542650622216951243576102569474260992.0 +19595533242629368660020792316867540301812280111031715073926957097503902752804605948031156640210135708930205719710918634682564510182074218910376402000426683432552588019172610901534574474496267408010903552.0 +19595533242629371923332620183084594650642221169398961386947072412388038890189391051310628425286315098344619637279649784338604873680576457199759852538659962364643337561085301244433902487152205138948521984.0 +39191066485258737320041584633735080603624560222063430147853914195007805505609211896062313280420271417860411439421837269365129020364148437820752804000853366865105176038345221803069148948992534816021807104.0 +39191066485258743846665240366169189301284442338797922773894144824776077780378782102621256850572630196689239274559299568677209747361152914399519705077319924729286675122170602488867804974304410277897043968.0 +78382132970517474640083169267470161207249120444126860295707828390015611011218423792124626560840542835720822878843674538730258040728296875641505608001706733730210352076690443606138297897985069632043614208.0 +78382132970517487693330480732338378602568884677595845547788289649552155560757564205242513701145260393378478549118599137354419494722305828799039410154639849458573350244341204977735609948608820555794087936.0 +156764265941034949280166338534940322414498240888253720591415656780031222022436847584249253121681085671441645757687349077460516081456593751283011216003413467460420704153380887212276595795970139264087228416.0 +156764265941034975386660961464676757205137769355191691095576579299104311121515128410485027402290520786756957098237198274708838989444611657598078820309279698917146700488682409955471219897217641111588175872.0 +313528531882069898560332677069880644828996481776507441182831313560062444044873695168498506243362171342883291515374698154921032162913187502566022432006826934920841408306761774424553191591940278528174456832.0 +313528531882069950773321922929353514410275538710383382191153158598208622243030256820970054804581041573513914196474396549417677978889223315196157640618559397834293400977364819910942439794435282223176351744.0 +627057063764139797120665354139761289657992963553014882365662627120124888089747390336997012486724342685766583030749396309842064325826375005132044864013653869841682816613523548849106383183880557056348913664.0 +627057063764139901546643845858707028820551077420766764382306317196417244486060513641940109609162083147027828392948793098835355957778446630392315281237118795668586801954729639821884879588870564446352703488.0 +1254114127528279594241330708279522579315985927106029764731325254240249776179494780673994024973448685371533166061498792619684128651652750010264089728027307739683365633227047097698212766367761114112697827328.0 +1254114127528279803093287691717414057641102154841533528764612634392834488972121027283880219218324166294055656785897586197670711915556893260784630562474237591337173603909459279643769759177741128892705406976.0 +2508228255056559188482661416559045158631971854212059529462650508480499552358989561347988049946897370743066332122997585239368257303305500020528179456054615479366731266454094195396425532735522228225395654656.0 +2508228255056559606186575383434828115282204309683067057529225268785668977944242054567760438436648332588111313571795172395341423831113786521569261124948475182674347207818918559287539518355482257785410813952.0 +5016456510113118376965322833118090317263943708424119058925301016960999104717979122695976099893794741486132664245995170478736514606611000041056358912109230958733462532908188390792851065471044456450791309312.0 +5016456510113119212373150766869656230564408619366134115058450537571337955888484109135520876873296665176222627143590344790682847662227573043138522249896950365348694415637837118575079036710964515570821627904.0 +10032913020226236753930645666236180634527887416848238117850602033921998209435958245391952199787589482972265328491990340957473029213222000082112717824218461917466925065816376781585702130942088912901582618624.0 +10032913020226238424746301533739312461128817238732268230116901075142675911776968218271041753746593330352445254287180689581365695324455146086277044499793900730697388831275674237150158073421929031141643255808.0 +20065826040452473507861291332472361269055774833696476235701204067843996418871916490783904399575178965944530656983980681914946058426444000164225435648436923834933850131632753563171404261884177825803165237248.0 +20065826040452476849492603067478624922257634477464536460233802150285351823553936436542083507493186660704890508574361379162731390648910292172554088999587801461394777662551348474300316146843858062283286511616.0 +40131652080904947015722582664944722538111549667392952471402408135687992837743832981567808799150357931889061313967961363829892116852888000328450871296873847669867700263265507126342808523768355651606330474496.0 +40131652080904953698985206134957249844515268954929072920467604300570703647107872873084167014986373321409781017148722758325462781297820584345108177999175602922789555325102696948600632293687716124566573023232.0 +80263304161809894031445165329889445076223099334785904942804816271375985675487665963135617598300715863778122627935922727659784233705776000656901742593747695339735400526531014252685617047536711303212660948992.0 +80263304161809907397970412269914499689030537909858145840935208601141407294215745746168334029972746642819562034297445516650925562595641168690216355998351205845579110650205393897201264587375432249133146046464.0 +160526608323619788062890330659778890152446198669571809885609632542751971350975331926271235196601431727556245255871845455319568467411552001313803485187495390679470801053062028505371234095073422606425321897984.0 +160526608323619814795940824539828999378061075819716291681870417202282814588431491492336668059945493285639124068594891033301851125191282337380432711996702411691158221300410787794402529174750864498266292092928.0 +321053216647239576125780661319557780304892397339143619771219265085503942701950663852542470393202863455112490511743690910639136934823104002627606970374990781358941602106124057010742468190146845212850643795968.0 +321053216647239629591881649079657998756122151639432583363740834404565629176862982984673336119890986571278248137189782066603702250382564674760865423993404823382316442600821575588805058349501728996532584185856.0 +642106433294479152251561322639115560609784794678287239542438530171007885403901327705084940786405726910224981023487381821278273869646208005255213940749981562717883204212248114021484936380293690425701287591936.0 +642106433294479259183763298159315997512244303278865166727481668809131258353725965969346672239781973142556496274379564133207404500765129349521730847986809646764632885201643151177610116699003457993065168371712.0 +1284212866588958304503122645278231121219569589356574479084877060342015770807802655410169881572811453820449962046974763642556547739292416010510427881499963125435766408424496228042969872760587380851402575183872.0 +1284212866588958518367526596318631995024488606557730333454963337618262516707451931938693344479563946285112992548759128266414809001530258699043461695973619293529265770403286302355220233398006915986130336743424.0 +2568425733177916609006245290556462242439139178713148958169754120684031541615605310820339763145622907640899924093949527285113095478584832021020855762999926250871532816848992456085939745521174761702805150367744.0 +2568425733177917036735053192637263990048977213115460666909926675236525033414903863877386688959127892570225985097518256532829618003060517398086923391947238587058531540806572604710440466796013831972260673486848.0 +5136851466355833218012490581112924484878278357426297916339508241368063083231210621640679526291245815281799848187899054570226190957169664042041711525999852501743065633697984912171879491042349523405610300735488.0 +5136851466355834073470106385274527980097954426230921333819853350473050066829807727754773377918255785140451970195036513065659236006121034796173846783894477174117063081613145209420880933592027663944521346973696.0 +10273702932711666436024981162225848969756556714852595832679016482736126166462421243281359052582491630563599696375798109140452381914339328084083423051999705003486131267395969824343758982084699046811220601470976.0 +10273702932711668146940212770549055960195908852461842667639706700946100133659615455509546755836511570280903940390073026131318472012242069592347693567788954348234126163226290418841761867184055327889042693947392.0 +20547405865423332872049962324451697939513113429705191665358032965472252332924842486562718105164983261127199392751596218280904763828678656168166846103999410006972262534791939648687517964169398093622441202941952.0 +20547405865423336293880425541098111920391817704923685335279413401892200267319230911019093511673023140561807880780146052262636944024484139184695387135577908696468252326452580837683523734368110655778085387894784.0 +41094811730846665744099924648903395879026226859410383330716065930944504665849684973125436210329966522254398785503192436561809527657357312336333692207998820013944525069583879297375035928338796187244882405883904.0 +41094811730846672587760851082196223840783635409847370670558826803784400534638461822038187023346046281123615761560292104525273888048968278369390774271155817392936504652905161675367047468736221311556170775789568.0 +82189623461693331488199849297806791758052453718820766661432131861889009331699369946250872420659933044508797571006384873123619055314714624672667384415997640027889050139167758594750071856677592374489764811767808.0 +82189623461693345175521702164392447681567270819694741341117653607568801069276923644076374046692092562247231523120584209050547776097936556738781548542311634785873009305810323350734094937472442623112341551579136.0 +164379246923386662976399698595613583516104907437641533322864263723778018663398739892501744841319866089017595142012769746247238110629429249345334768831995280055778100278335517189500143713355184748979529623535616.0 +164379246923386690351043404328784895363134541639389482682235307215137602138553847288152748093384185124494463046241168418101095552195873113477563097084623269571746018611620646701468189874944885246224683103158272.0 +328758493846773325952799397191227167032209814875283066645728527447556037326797479785003489682639732178035190284025539492494476221258858498690669537663990560111556200556671034379000287426710369497959059247071232.0 +328758493846773380702086808657569790726269083278778965364470614430275204277107694576305496186768370248988926092482336836202191104391746226955126194169246539143492037223241293402936379749889770492449366206316544.0 +657516987693546651905598794382454334064419629750566133291457054895112074653594959570006979365279464356070380568051078984988952442517716997381339075327981120223112401113342068758000574853420738995918118494142464.0 +657516987693546761404173617315139581452538166557557930728941228860550408554215389152610992373536740497977852184964673672404382208783492453910252388338493078286984074446482586805872759499779540984898732412633088.0 +1315033975387093303811197588764908668128839259501132266582914109790224149307189919140013958730558928712140761136102157969977904885035433994762678150655962240446224802226684137516001149706841477991836236988284928.0 +1315033975387093522808347234630279162905076333115115861457882457721100817108430778305221984747073480995955704369929347344808764417566984907820504776676986156573968148892965173611745518999559081969797464825266176.0 +2630067950774186607622395177529817336257678519002264533165828219580448298614379838280027917461117857424281522272204315939955809770070867989525356301311924480892449604453368275032002299413682955983672473976569856.0 +2630067950774187045616694469260558325810152666230231722915764915442201634216861556610443969494146961991911408739858694689617528835133969815641009553353972313147936297785930347223491037999118163939594929650532352.0 +5260135901548373215244790355059634672515357038004529066331656439160896597228759676560055834922235714848563044544408631879911619540141735979050712602623848961784899208906736550064004598827365911967344947953139712.0 +5260135901548374091233388938521116651620305332460463445831529830884403268433723113220887938988293923983822817479717389379235057670267939631282019106707944626295872595571860694446982075998236327879189859301064704.0 +10520271803096746430489580710119269345030714076009058132663312878321793194457519353120111669844471429697126089088817263759823239080283471958101425205247697923569798417813473100128009197654731823934689895906279424.0 +10520271803096748182466777877042233303240610664920926891663059661768806536867446226441775877976587847967645634959434778758470115340535879262564038213415889252591745191143721388893964151996472655758379718602129408.0 +21040543606193492860979161420238538690061428152018116265326625756643586388915038706240223339688942859394252178177634527519646478160566943916202850410495395847139596835626946200256018395309463647869379791812558848.0 +21040543606193496364933555754084466606481221329841853783326119323537613073734892452883551755953175695935291269918869557516940230681071758525128076426831778505183490382287442777787928303992945311516759437204258816.0 +42081087212386985721958322840477077380122856304036232530653251513287172777830077412480446679377885718788504356355269055039292956321133887832405700820990791694279193671253892400512036790618927295738759583625117696.0 +42081087212386992729867111508168933212962442659683707566652238647075226147469784905767103511906351391870582539837739115033880461362143517050256152853663557010366980764574885555575856607985890623033518874408517632.0 +84162174424773971443916645680954154760245712608072465061306503026574345555660154824960893358755771437577008712710538110078585912642267775664811401641981583388558387342507784801024073581237854591477519167250235392.0 +84162174424773985459734223016337866425924885319367415133304477294150452294939569811534207023812702783741165079675478230067760922724287034100512305707327114020733961529149771111151713215971781246067037748817035264.0 +168324348849547942887833291361908309520491425216144930122613006053148691111320309649921786717511542875154017425421076220157171825284535551329622803283963166777116774685015569602048147162475709182955038334500470784.0 +168324348849547970919468446032675732851849770638734830266608954588300904589879139623068414047625405567482330159350956460135521845448574068201024611414654228041467923058299542222303426431943562492134075497634070528.0 +336648697699095885775666582723816619040982850432289860245226012106297382222640619299843573435023085750308034850842152440314343650569071102659245606567926333554233549370031139204096294324951418365910076669000941568.0 +336648697699095941838936892065351465703699541277469660533217909176601809179758279246136828095250811134964660318701912920271043690897148136402049222829308456082935846116599084444606852863887124984268150995268141056.0 +673297395398191771551333165447633238081965700864579720490452024212594764445281238599687146870046171500616069701684304880628687301138142205318491213135852667108467098740062278408192588649902836731820153338001883136.0 +673297395398191883677873784130702931407399082554939321066435818353203618359516558492273656190501622269929320637403825840542087381794296272804098445658616912165871692233198168889213705727774249968536301990536282112.0 +1346594790796383543102666330895266476163931401729159440980904048425189528890562477199374293740092343001232139403368609761257374602276284410636982426271705334216934197480124556816385177299805673463640306676003766272.0 +1346594790796383767355747568261405862814798165109878642132871636706407236719033116984547312381003244539858641274807651681084174763588592545608196891317233824331743384466396337778427411455548499937072603981072564224.0 +2693189581592767086205332661790532952327862803458318881961808096850379057781124954398748587480184686002464278806737219522514749204552568821273964852543410668433868394960249113632770354599611346927280613352007532544.0 +2693189581592767534711495136522811725629596330219757284265743273412814473438066233969094624762006489079717282549615303362168349527177185091216393782634467648663486768932792675556854822911096999874145207962145128448.0 +5386379163185534172410665323581065904655725606916637763923616193700758115562249908797497174960369372004928557613474439045029498409105137642547929705086821336867736789920498227265540709199222693854561226704015065088.0 +5386379163185535069422990273045623451259192660439514568531486546825628946876132467938189249524012978159434565099230606724336699054354370182432787565268935297326973537865585351113709645822193999748290415924290256896.0 +10772758326371068344821330647162131809311451213833275527847232387401516231124499817594994349920738744009857115226948878090058996818210275285095859410173642673735473579840996454531081418398445387709122453408030130176.0 +10772758326371070138845980546091246902518385320879029137062973093651257893752264935876378499048025956318869130198461213448673398108708740364865575130537870594653947075731170702227419291644387999496580831848580513792.0 +21545516652742136689642661294324263618622902427666551055694464774803032462248999635189988699841477488019714230453897756180117993636420550570191718820347285347470947159681992909062162836796890775418244906816060260352.0 +21545516652742140277691961092182493805036770641758058274125946187302515787504529871752756998096051912637738260396922426897346796217417480729731150261075741189307894151462341404454838583288775998993161663697161027584.0 +43091033305484273379285322588648527237245804855333102111388929549606064924497999270379977399682954976039428460907795512360235987272841101140383437640694570694941894319363985818124325673593781550836489813632120520704.0 +43091033305484280555383922184364987610073541283516116548251892374605031575009059743505513996192103825275476520793844853794693592434834961459462300522151482378615788302924682808909677166577551997986323327394322055168.0 +86182066610968546758570645177297054474491609710666204222777859099212129848995998540759954799365909952078856921815591024720471974545682202280766875281389141389883788638727971636248651347187563101672979627264241041408.0 +86182066610968561110767844368729975220147082567032233096503784749210063150018119487011027992384207650550953041587689707589387184869669922918924601044302964757231576605849365617819354333155103995972646654788644110336.0 +172364133221937093517141290354594108948983219421332408445555718198424259697991997081519909598731819904157713843631182049440943949091364404561533750562778282779767577277455943272497302694375126203345959254528482082816.0 +172364133221937122221535688737459950440294165134064466193007569498420126300036238974022055984768415301101906083175379415178774369739339845837849202088605929514463153211698731235638708666310207991945293309577288220672.0 +344728266443874187034282580709188217897966438842664816891111436396848519395983994163039819197463639808315427687262364098881887898182728809123067501125556565559535154554911886544994605388750252406691918509056964165632.0 +344728266443874244443071377474919900880588330268128932386015138996840252600072477948044111969536830602203812166350758830357548739478679691675698404177211859028926306423397462471277417332620415983890586619154576441344.0 +689456532887748374068565161418376435795932877685329633782222872793697038791967988326079638394927279616630855374524728197763775796365457618246135002251113131119070309109823773089989210777500504813383837018113928331264.0 +689456532887748488886142754949839801761176660536257864772030277993680505200144955896088223939073661204407624332701517660715097478957359383351396808354423718057852612846794924942554834665240831967781173238309152882688.0 +1378913065775496748137130322836752871591865755370659267564445745587394077583935976652159276789854559233261710749049456395527551592730915236492270004502226262238140618219647546179978421555001009626767674036227856662528.0 +1378913065775496977772285509899679603522353321072515729544060555987361010400289911792176447878147322408815248665403035321430194957914718766702793616708847436115705225693589849885109669330481663935562346476618305765376.0 +2757826131550993496274260645673505743183731510741318535128891491174788155167871953304318553579709118466523421498098912791055103185461830472984540009004452524476281236439295092359956843110002019253535348072455713325056.0 +2757826131550993955544571019799359207044706642145031459088121111974722020800579823584352895756294644817630497330806070642860389915829437533405587233417694872231410451387179699770219338660963327871124692953236611530752.0 +5515652263101986992548521291347011486367463021482637070257782982349576310335743906608637107159418236933046842996197825582110206370923660945969080018008905048952562472878590184719913686220004038507070696144911426650112.0 +5515652263101987911089142039598718414089413284290062918176242223949444041601159647168705791512589289635260994661612141285720779831658875066811174466835389744462820902774359399540438677321926655742249385906473223061504.0 +11031304526203973985097042582694022972734926042965274140515565964699152620671487813217274214318836473866093685992395651164220412741847321891938160036017810097905124945757180369439827372440008077014141392289822853300224.0 +11031304526203975822178284079197436828178826568580125836352484447898888083202319294337411583025178579270521989323224282571441559663317750133622348933670779488925641805548718799080877354643853311484498771812946446123008.0 +22062609052407947970194085165388045945469852085930548281031131929398305241342975626434548428637672947732187371984791302328440825483694643783876320072035620195810249891514360738879654744880016154028282784579645706600448.0 +22062609052407951644356568158394873656357653137160251672704968895797776166404638588674823166050357158541043978646448565142883119326635500267244697867341558977851283611097437598161754709287706622968997543625892892246016.0 +44125218104815895940388170330776091890939704171861096562062263858796610482685951252869096857275345895464374743969582604656881650967389287567752640144071240391620499783028721477759309489760032308056565569159291413200896.0 +44125218104815903288713136316789747312715306274320503345409937791595552332809277177349646332100714317082087957292897130285766238653271000534489395734683117955702567222194875196323509418575413245937995087251785784492032.0 +88250436209631791880776340661552183781879408343722193124124527717593220965371902505738193714550691790928749487939165209313763301934778575135505280288142480783240999566057442955518618979520064616113131138318582826401792.0 +88250436209631806577426272633579494625430612548641006690819875583191104665618554354699292664201428634164175914585794260571532477306542001068978791469366235911405134444389750392647018837150826491875990174503571568984064.0 +176500872419263583761552681323104367563758816687444386248249055435186441930743805011476387429101383581857498975878330418627526603869557150271010560576284961566481999132114885911037237959040129232226262276637165652803584.0 +176500872419263613154852545267158989250861225097282013381639751166382209331237108709398585328402857268328351829171588521143064954613084002137957582938732471822810268888779500785294037674301652983751980349007143137968128.0 +353001744838527167523105362646208735127517633374888772496498110870372883861487610022952774858202767163714997951756660837255053207739114300542021121152569923132963998264229771822074475918080258464452524553274331305607168.0 +353001744838527226309705090534317978501722450194564026763279502332764418662474217418797170656805714536656703658343177042286129909226168004275915165877464943645620537777559001570588075348603305967503960698014286275936256.0 +706003489677054335046210725292417470255035266749777544992996221740745767722975220045905549716405534327429995903513321674510106415478228601084042242305139846265927996528459543644148951836160516928905049106548662611214336.0 +706003489677054452619410181068635957003444900389128053526559004665528837324948434837594341313611429073313407316686354084572259818452336008551830331754929887291241075555118003141176150697206611935007921396028572551872512.0 +1412006979354108670092421450584834940510070533499555089985992443481491535445950440091811099432811068654859991807026643349020212830956457202168084484610279692531855993056919087288297903672321033857810098213097325222428672.0 +1412006979354108905238820362137271914006889800778256107053118009331057674649896869675188682627222858146626814633372708169144519636904672017103660663509859774582482151110236006282352301394413223870015842792057145103745024.0 +2824013958708217340184842901169669881020141066999110179971984886962983070891900880183622198865622137309719983614053286698040425661912914404336168969220559385063711986113838174576595807344642067715620196426194650444857344.0 +2824013958708217810477640724274543828013779601556512214106236018662115349299793739350377365254445716293253629266745416338289039273809344034207321327019719549164964302220472012564704602788826447740031685584114290207490048.0 +5648027917416434680369685802339339762040282133998220359943969773925966141783801760367244397731244274619439967228106573396080851323825828808672337938441118770127423972227676349153191614689284135431240392852389300889714688.0 +5648027917416435620955281448549087656027559203113024428212472037324230698599587478700754730508891432586507258533490832676578078547618688068414642654039439098329928604440944025129409205577652895480063371168228580414980096.0 +11296055834832869360739371604678679524080564267996440719887939547851932283567603520734488795462488549238879934456213146792161702647651657617344675876882237540254847944455352698306383229378568270862480785704778601779429376.0 +11296055834832871241910562897098175312055118406226048856424944074648461397199174957401509461017782865173014517066981665353156157095237376136829285308078878196659857208881888050258818411155305790960126742336457160829960192.0 +22592111669665738721478743209357359048161128535992881439775879095703864567135207041468977590924977098477759868912426293584323405295303315234689351753764475080509695888910705396612766458757136541724961571409557203558858752.0 +22592111669665742483821125794196350624110236812452097712849888149296922794398349914803018922035565730346029034133963330706312314190474752273658570616157756393319714417763776100517636822310611581920253484672914321659920384.0 +45184223339331477442957486418714718096322257071985762879551758191407729134270414082937955181849954196955519737824852587168646810590606630469378703507528950161019391777821410793225532917514273083449923142819114407117717504.0 +45184223339331484967642251588392701248220473624904195425699776298593845588796699829606037844071131460692058068267926661412624628380949504547317141232315512786639428835527552201035273644621223163840506969345828643319840768.0 +90368446678662954885914972837429436192644514143971525759103516382815458268540828165875910363699908393911039475649705174337293621181213260938757407015057900322038783555642821586451065835028546166899846285638228814235435008.0 +90368446678662969935284503176785402496440947249808390851399552597187691177593399659212075688142262921384116136535853322825249256761899009094634282464631025573278857671055104402070547289242446327681013938691657286639681536.0 +180736893357325909771829945674858872385289028287943051518207032765630916537081656331751820727399816787822078951299410348674587242362426521877514814030115800644077567111285643172902131670057092333799692571276457628470870016.0 +180736893357325939870569006353570804992881894499616781702799105194375382355186799318424151376284525842768232273071706645650498513523798018189268564929262051146557715342110208804141094578484892655362027877383314573279363072.0 +361473786714651819543659891349717744770578056575886103036414065531261833074163312663503641454799633575644157902598820697349174484724853043755029628060231601288155134222571286345804263340114184667599385142552915256941740032.0 +361473786714651879741138012707141609985763788999233563405598210388750764710373598636848302752569051685536464546143413291300997027047596036378537129858524102293115430684220417608282189156969785310724055754766629146558726144.0 +722947573429303639087319782699435489541156113151772206072828131062523666148326625327007282909599267151288315805197641394698348969449706087510059256120463202576310268445142572691608526680228369335198770285105830513883480064.0 +722947573429303759482276025414283219971527577998467126811196420777501529420747197273696605505138103371072929092286826582601994054095192072757074259717048204586230861368440835216564378313939570621448111509533258293117452288.0 +1445895146858607278174639565398870979082312226303544412145656262125047332296653250654014565819198534302576631610395282789396697938899412175020118512240926405152620536890285145383217053360456738670397540570211661027766960128.0 +1445895146858607518964552050828566439943055155996934253622392841555003058841494394547393211010276206742145858184573653165203988108190384145514148519434096409172461722736881670433128756627879141242896223019066516586234904576.0 +2891790293717214556349279130797741958164624452607088824291312524250094664593306501308029131638397068605153263220790565578793395877798824350040237024481852810305241073780570290766434106720913477340795081140423322055533920256.0 +2891790293717215037929104101657132879886110311993868507244785683110006117682988789094786422020552413484291716369147306330407976216380768291028297038868192818344923445473763340866257513255758282485792446038133033172469809152.0 +5783580587434429112698558261595483916329248905214177648582625048500189329186613002616058263276794137210306526441581131157586791755597648700080474048963705620610482147561140581532868213441826954681590162280846644111067840512.0 +5783580587434430075858208203314265759772220623987737014489571366220012235365977578189572844041104826968583432738294612660815952432761536582056594077736385636689846890947526681732515026511516564971584892076266066344939618304.0 +11567161174868858225397116523190967832658497810428355297165250097000378658373226005232116526553588274420613052883162262315173583511195297400160948097927411241220964295122281163065736426883653909363180324561693288222135681024.0 +11567161174868860151716416406628531519544441247975474028979142732440024470731955156379145688082209653937166865476589225321631904865523073164113188155472771273379693781895053363465030053023033129943169784152532132689879236608.0 +23134322349737716450794233046381935665316995620856710594330500194000757316746452010464233053107176548841226105766324524630347167022390594800321896195854822482441928590244562326131472853767307818726360649123386576444271362048.0 +23134322349737720303432832813257063039088882495950948057958285464880048941463910312758291376164419307874333730953178450643263809731046146328226376310945542546759387563790106726930060106046066259886339568305064265379758473216.0 +46268644699475432901588466092763871330633991241713421188661000388001514633492904020928466106214353097682452211532649049260694334044781189600643792391709644964883857180489124652262945707534615637452721298246773152888542724096.0 +46268644699475440606865665626514126078177764991901896115916570929760097882927820625516582752328838615748667461906356901286527619462092292656452752621891085093518775127580213453860120212092132519772679136610128530759516946432.0 +92537289398950865803176932185527742661267982483426842377322000776003029266985808041856932212428706195364904423065298098521388668089562379201287584783419289929767714360978249304525891415069231274905442596493546305777085448192.0 +92537289398950881213731331253028252156355529983803792231833141859520195765855641251033165504657677231497334923812713802573055238924184585312905505243782170187037550255160426907720240424184265039545358273220257061519033892864.0 +185074578797901731606353864371055485322535964966853684754644001552006058533971616083713864424857412390729808846130596197042777336179124758402575169566838579859535428721956498609051782830138462549810885192987092611554170896384.0 +185074578797901762427462662506056504312711059967607584463666283719040391531711282502066331009315354462994669847625427605146110477848369170625811010487564340374075100510320853815440480848368530079090716546440514123038067785728.0 +370149157595803463212707728742110970645071929933707369509288003104012117067943232167427728849714824781459617692261192394085554672358249516805150339133677159719070857443912997218103565660276925099621770385974185223108341792768.0 +370149157595803524854925325012113008625422119935215168927332567438080783063422565004132662018630708925989339695250855210292220955696738341251622020975128680748150201020641707630880961696737060158181433092881028246076135571456.0 +740298315191606926425415457484221941290143859867414739018576006208024234135886464334855457699429649562919235384522384788171109344716499033610300678267354319438141714887825994436207131320553850199243540771948370446216683585536.0 +740298315191607049709850650024226017250844239870430337854665134876161566126845130008265324037261417851978679390501710420584441911393476682503244041950257361496300402041283415261761923393474120316362866185762056492152271142912.0 +1480596630383213852850830914968443882580287719734829478037152012416048468271772928669710915398859299125838470769044769576342218689432998067220601356534708638876283429775651988872414262641107700398487081543896740892433367171072.0 +1480596630383214099419701300048452034501688479740860675709330269752323132253690260016530648074522835703957358781003420841168883822786953365006488083900514722992600804082566830523523846786948240632725732371524112984304542285824.0 +2961193260766427705701661829936887765160575439469658956074304024832096936543545857339421830797718598251676941538089539152684437378865996134441202713069417277752566859551303977744828525282215400796974163087793481784866734342144.0 +2961193260766428198839402600096904069003376959481721351418660539504646264507380520033061296149045671407914717562006841682337767645573906730012976167801029445985201608165133661047047693573896481265451464743048225968609084571648.0 +5922386521532855411403323659873775530321150878939317912148608049664193873087091714678843661595437196503353883076179078305368874757731992268882405426138834555505133719102607955489657050564430801593948326175586963569733468684288.0 +5922386521532856397678805200193808138006753918963442702837321079009292529014761040066122592298091342815829435124013683364675535291147813460025952335602058891970403216330267322094095387147792962530902929486096451937218169143296.0 +11844773043065710822806647319747551060642301757878635824297216099328387746174183429357687323190874393006707766152358156610737749515463984537764810852277669111010267438205215910979314101128861603187896652351173927139466937368576.0 +11844773043065712795357610400387616276013507837926885405674642158018585058029522080132245184596182685631658870248027366729351070582295626920051904671204117783940806432660534644188190774295585925061805858972192903874436338286592.0 +23689546086131421645613294639495102121284603515757271648594432198656775492348366858715374646381748786013415532304716313221475499030927969075529621704555338222020534876410431821958628202257723206375793304702347854278933874737152.0 +23689546086131425590715220800775232552027015675853770811349284316037170116059044160264490369192365371263317740496054733458702141164591253840103809342408235567881612865321069288376381548591171850123611717944385807748872676573184.0 +47379092172262843291226589278990204242569207031514543297188864397313550984696733717430749292763497572026831064609432626442950998061855938151059243409110676444041069752820863643917256404515446412751586609404695708557867749474304.0 +47379092172262851181430441601550465104054031351707541622698568632074340232118088320528980738384730742526635480992109466917404282329182507680207618684816471135763225730642138576752763097182343700247223435888771615497745353146368.0 +94758184344525686582453178557980408485138414063029086594377728794627101969393467434861498585526995144053662129218865252885901996123711876302118486818221352888082139505641727287834512809030892825503173218809391417115735498948608.0 +94758184344525702362860883203100930208108062703415083245397137264148680464236176641057961476769461485053270961984218933834808564658365015360415237369632942271526451461284277153505526194364687400494446871777543230995490706292736.0 +189516368689051373164906357115960816970276828126058173188755457589254203938786934869722997171053990288107324258437730505771803992247423752604236973636442705776164279011283454575669025618061785651006346437618782834231470997897216.0 +189516368689051404725721766406201860416216125406830166490794274528297360928472353282115922953538922970106541923968437867669617129316730030720830474739265884543052902922568554307011052388729374800988893743555086461990981412585472.0 +379032737378102746329812714231921633940553656252116346377510915178508407877573869739445994342107980576214648516875461011543607984494847505208473947272885411552328558022566909151338051236123571302012692875237565668462941995794432.0 +379032737378102809451443532812403720832432250813660332981588549056594721856944706564231845907077845940213083847936875735339234258633460061441660949478531769086105805845137108614022104777458749601977787487110172923981962825170944.0 +758065474756205492659625428463843267881107312504232692755021830357016815755147739478891988684215961152429297033750922023087215968989695010416947894545770823104657116045133818302676102472247142604025385750475131336925883991588864.0 +758065474756205618902887065624807441664864501627320665963177098113189443713889413128463691814155691880426167695873751470678468517266920122883321898957063538172211611690274217228044209554917499203955574974220345847963925650341888.0 +1516130949512410985319250856927686535762214625008465385510043660714033631510295478957783977368431922304858594067501844046174431937979390020833895789091541646209314232090267636605352204944494285208050771500950262673851767983177728.0 +1516130949512411237805774131249614883329729003254641331926354196226378887427778826256927383628311383760852335391747502941356937034533840245766643797914127076344423223380548434456088419109834998407911149948440691695927851300683776.0 +3032261899024821970638501713855373071524429250016930771020087321428067263020590957915567954736863844609717188135003688092348863875958780041667791578183083292418628464180535273210704409888988570416101543001900525347703535966355456.0 +3032261899024822475611548262499229766659458006509282663852708392452757774855557652513854767256622767521704670783495005882713874069067680491533287595828254152688846446761096868912176838219669996815822299896881383391855702601367552.0 +6064523798049643941277003427710746143048858500033861542040174642856134526041181915831135909473727689219434376270007376184697727751917560083335583156366166584837256928361070546421408819777977140832203086003801050695407071932710912.0 +6064523798049644951223096524998459533318916013018565327705416784905515549711115305027709534513245535043409341566990011765427748138135360983066575191656508305377692893522193737824353676439339993631644599793762766783711405202735104.0 +12129047596099287882554006855421492286097717000067723084080349285712269052082363831662271818947455378438868752540014752369395455503835120166671166312732333169674513856722141092842817639555954281664406172007602101390814143865421824.0 +12129047596099289902446193049996919066637832026037130655410833569811031099422230610055419069026491070086818683133980023530855496276270721966133150383313016610755385787044387475648707352878679987263289199587525533567422810405470208.0 +24258095192198575765108013710842984572195434000135446168160698571424538104164727663324543637894910756877737505080029504738790911007670240333342332625464666339349027713444282185685635279111908563328812344015204202781628287730843648.0 +24258095192198579804892386099993838133275664052074261310821667139622062198844461220110838138052982140173637366267960047061710992552541443932266300766626033221510771574088774951297414705757359974526578399175051067134845620810940416.0 +48516190384397151530216027421685969144390868000270892336321397142849076208329455326649087275789821513755475010160059009477581822015340480666684665250929332678698055426888564371371270558223817126657624688030408405563256575461687296.0 +48516190384397159609784772199987676266551328104148522621643334279244124397688922440221676276105964280347274732535920094123421985105082887864532601533252066443021543148177549902594829411514719949053156798350102134269691241621880832.0 +97032380768794303060432054843371938288781736000541784672642794285698152416658910653298174551579643027510950020320118018955163644030680961333369330501858665357396110853777128742742541116447634253315249376060816811126513150923374592.0 +97032380768794319219569544399975352533102656208297045243286668558488248795377844880443352552211928560694549465071840188246843970210165775729065203066504132886043086296355099805189658823029439898106313596700204268539382483243761664.0 +194064761537588606120864109686743876577563472001083569345285588571396304833317821306596349103159286055021900040640236037910327288061361922666738661003717330714792221707554257485485082232895268506630498752121633622253026301846749184.0 +194064761537588638439139088799950705066205312416594090486573337116976497590755689760886705104423857121389098930143680376493687940420331551458130406133008265772086172592710199610379317646058879796212627193400408537078764966487523328.0 +388129523075177212241728219373487753155126944002167138690571177142792609666635642613192698206318572110043800081280472075820654576122723845333477322007434661429584443415108514970970164465790537013260997504243267244506052603693498368.0 +388129523075177276878278177599901410132410624833188180973146674233952995181511379521773410208847714242778197860287360752987375880840663102916260812266016531544172345185420399220758635292117759592425254386800817074157529932975046656.0 +776259046150354424483456438746975506310253888004334277381142354285585219333271285226385396412637144220087600162560944151641309152245447690666954644014869322859168886830217029941940328931581074026521995008486534489012105207386996736.0 +776259046150354553756556355199802820264821249666376361946293348467905990363022759043546820417695428485556395720574721505974751761681326205832521624532033063088344690370840798441517270584235519184850508773601634148315059865950093312.0 +1552518092300708848966912877493951012620507776008668554762284708571170438666542570452770792825274288440175200325121888303282618304490895381333909288029738645718337773660434059883880657863162148053043990016973068978024210414773993472.0 +1552518092300709107513112710399605640529642499332752723892586696935811980726045518087093640835390856971112791441149443011949503523362652411665043249064066126176689380741681596883034541168471038369701017547203268296630119731900186624.0 +3105036184601417697933825754987902025241015552017337109524569417142340877333085140905541585650548576880350400650243776606565236608981790762667818576059477291436675547320868119767761315726324296106087980033946137956048420829547986944.0 +3105036184601418215026225420799211281059284998665505447785173393871623961452091036174187281670781713942225582882298886023899007046725304823330086498128132252353378761483363193766069082336942076739402035094406536593260239463800373248.0 +6210072369202835395867651509975804050482031104034674219049138834284681754666170281811083171301097153760700801300487553213130473217963581525335637152118954582873351094641736239535522631452648592212175960067892275912096841659095973888.0 +6210072369202836430052450841598422562118569997331010895570346787743247922904182072348374563341563427884451165764597772047798014093450609646660172996256264504706757522966726387532138164673884153478804070188813073186520478927600746496.0 +12420144738405670791735303019951608100964062208069348438098277668569363509332340563622166342602194307521401602600975106426260946435927163050671274304237909165746702189283472479071045262905297184424351920135784551824193683318191947776.0 +12420144738405672860104901683196845124237139994662021791140693575486495845808364144696749126683126855768902331529195544095596028186901219293320345992512529009413515045933452775064276329347768306957608140377626146373040957855201492992.0 +24840289476811341583470606039903216201928124416138696876196555337138727018664681127244332685204388615042803205201950212852521892871854326101342548608475818331493404378566944958142090525810594368848703840271569103648387366636383895552.0 +24840289476811345720209803366393690248474279989324043582281387150972991691616728289393498253366253711537804663058391088191192056373802438586640691985025058018827030091866905550128552658695536613915216280755252292746081915710402985984.0 +49680578953622683166941212079806432403856248832277393752393110674277454037329362254488665370408777230085606410403900425705043785743708652202685097216951636662986808757133889916284181051621188737697407680543138207296774733272767791104.0 +49680578953622691440419606732787380496948559978648087164562774301945983383233456578786996506732507423075609326116782176382384112747604877173281383970050116037654060183733811100257105317391073227830432561510504585492163831420805971968.0 +99361157907245366333882424159612864807712497664554787504786221348554908074658724508977330740817554460171212820807800851410087571487417304405370194433903273325973617514267779832568362103242377475394815361086276414593549466545535582208.0 +99361157907245382880839213465574760993897119957296174329125548603891966766466913157573993013465014846151218652233564352764768225495209754346562767940100232075308120367467622200514210634782146455660865123021009170984327662841611943936.0 +198722315814490732667764848319225729615424995329109575009572442697109816149317449017954661481635108920342425641615601702820175142974834608810740388867806546651947235028535559665136724206484754950789630722172552829187098933091071164416.0 +198722315814490765761678426931149521987794239914592348658251097207783933532933826315147986026930029692302437304467128705529536450990419508693125535880200464150616240734935244401028421269564292911321730246042018341968655325683223887872.0 +397444631628981465335529696638451459230849990658219150019144885394219632298634898035909322963270217840684851283231203405640350285949669217621480777735613093303894470057071119330273448412969509901579261444345105658374197866182142328832.0 +397444631628981531523356853862299043975588479829184697316502194415567867065867652630295972053860059384604874608934257411059072901980839017386251071760400928301232481469870488802056842539128585822643460492084036683937310651366447775744.0 +794889263257962930671059393276902918461699981316438300038289770788439264597269796071818645926540435681369702566462406811280700571899338435242961555471226186607788940114142238660546896825939019803158522888690211316748395732364284657664.0 +794889263257963063046713707724598087951176959658369394633004388831135734131735305260591944107720118769209749217868514822118145803961678034772502143520801856602464962939740977604113685078257171645286920984168073367874621302732895551488.0 +1589778526515925861342118786553805836923399962632876600076579541576878529194539592143637291853080871362739405132924813622561401143798676870485923110942452373215577880228284477321093793651878039606317045777380422633496791464728569315328.0 +1589778526515926126093427415449196175902353919316738789266008777662271468263470610521183888215440237538419498435737029644236291607923356069545004287041603713204929925879481955208227370156514343290573841968336146735749242605465791102976.0 +3179557053031851722684237573107611673846799925265753200153159083153757058389079184287274583706161742725478810265849627245122802287597353740971846221884904746431155760456568954642187587303756079212634091554760845266993582929457138630656.0 +3179557053031852252186854830898392351804707838633477578532017555324542936526941221042367776430880475076838996871474059288472583215846712139090008574083207426409859851758963910416454740313028686581147683936672293471498485210931582205952.0 +6359114106063703445368475146215223347693599850531506400306318166307514116778158368574549167412323485450957620531699254490245604575194707481943692443769809492862311520913137909284375174607512158425268183109521690533987165858914277261312.0 +6359114106063704504373709661796784703609415677266955157064035110649085873053882442084735552861760950153677993742948118576945166431693424278180017148166414852819719703517927820832909480626057373162295367873344586942996970421863164411904.0 +12718228212127406890736950292430446695387199701063012800612636332615028233556316737149098334824646970901915241063398508980491209150389414963887384887539618985724623041826275818568750349215024316850536366219043381067974331717828554522624.0 +12718228212127409008747419323593569407218831354533910314128070221298171746107764884169471105723521900307355987485896237153890332863386848556360034296332829705639439407035855641665818961252114746324590735746689173885993940843726328823808.0 +25436456424254813781473900584860893390774399402126025601225272665230056467112633474298196669649293941803830482126797017960982418300778829927774769775079237971449246083652551637137500698430048633701072732438086762135948663435657109045248.0 +25436456424254818017494838647187138814437662709067820628256140442596343492215529768338942211447043800614711974971792474307780665726773697112720068592665659411278878814071711283331637922504229492649181471493378347771987881687452657647616.0 +50872912848509627562947801169721786781548798804252051202450545330460112934225266948596393339298587883607660964253594035921964836601557659855549539550158475942898492167305103274275001396860097267402145464876173524271897326871314218090496.0 +50872912848509636034989677294374277628875325418135641256512280885192686984431059536677884422894087601229423949943584948615561331453547394225440137185331318822557757628143422566663275845008458985298362942986756695543975763374905315295232.0 +101745825697019255125895602339443573563097597608504102404901090660920225868450533897192786678597175767215321928507188071843929673203115319711099079100316951885796984334610206548550002793720194534804290929752347048543794653742628436180992.0 +101745825697019272069979354588748555257750650836271282513024561770385373968862119073355768845788175202458847899887169897231122662907094788450880274370662637645115515256286845133326551690016917970596725885973513391087951526749810630590464.0 +203491651394038510251791204678887147126195195217008204809802181321840451736901067794385573357194351534430643857014376143687859346406230639422198158200633903771593968669220413097100005587440389069608581859504694097087589307485256872361984.0 +203491651394038544139958709177497110515501301672542565026049123540770747937724238146711537691576350404917695799774339794462245325814189576901760548741325275290231030512573690266653103380033835941193451771947026782175903053499621261180928.0 +406983302788077020503582409357774294252390390434016409619604362643680903473802135588771146714388703068861287714028752287375718692812461278844396316401267807543187937338440826194200011174880778139217163719009388194175178614970513744723968.0 +406983302788077088279917418354994221031002603345085130052098247081541495875448476293423075383152700809835391599548679588924490651628379153803521097482650550580462061025147380533306206760067671882386903543894053564351806106999242522361856.0 +813966605576154041007164818715548588504780780868032819239208725287361806947604271177542293428777406137722575428057504574751437385624922557688792632802535615086375874676881652388400022349761556278434327438018776388350357229941027489447936.0 +813966605576154176559834836709988442062005206690170260104196494163082991750896952586846150766305401619670783199097359177848981303256758307607042194965301101160924122050294761066612413520135343764773807087788107128703612213998485044723712.0 +1627933211152308082014329637431097177009561561736065638478417450574723613895208542355084586857554812275445150856115009149502874771249845115377585265605071230172751749353763304776800044699523112556868654876037552776700714459882054978895872.0 +1627933211152308353119669673419976884124010413380340520208392988326165983501793905173692301532610803239341566398194718355697962606513516615214084389930602202321848244100589522133224827040270687529547614175576214257407224427996970089447424.0 +3255866422304616164028659274862194354019123123472131276956834901149447227790417084710169173715109624550890301712230018299005749542499690230755170531210142460345503498707526609553600089399046225113737309752075105553401428919764109957791744.0 +3255866422304616706239339346839953768248020826760681040416785976652331967003587810347384603065221606478683132796389436711395925213027033230428168779861204404643696488201179044266449654080541375059095228351152428514814448855993940178894848.0 +6511732844609232328057318549724388708038246246944262553913669802298894455580834169420338347430219249101780603424460036598011499084999380461510341062420284920691006997415053219107200178798092450227474619504150211106802857839528219915583488.0 +6511732844609233412478678693679907536496041653521362080833571953304663934007175620694769206130443212957366265592778873422791850426054066460856337559722408809287392976402358088532899308161082750118190456702304857029628897711987880357789696.0 +13023465689218464656114637099448777416076492493888525107827339604597788911161668338840676694860438498203561206848920073196022998169998760923020682124840569841382013994830106438214400357596184900454949239008300422213605715679056439831166976.0 +13023465689218466824957357387359815072992083307042724161667143906609327868014351241389538412260886425914732531185557746845583700852108132921712675119444817618574785952804716177065798616322165500236380913404609714059257795423975760715579392.0 +26046931378436929312229274198897554832152984987777050215654679209195577822323336677681353389720876996407122413697840146392045996339997521846041364249681139682764027989660212876428800715192369800909898478016600844427211431358112879662333952.0 +26046931378436933649914714774719630145984166614085448323334287813218655736028702482779076824521772851829465062371115493691167401704216265843425350238889635237149571905609432354131597232644331000472761826809219428118515590847951521431158784.0 +52093862756873858624458548397795109664305969975554100431309358418391155644646673355362706779441753992814244827395680292784091992679995043692082728499362279365528055979320425752857601430384739601819796956033201688854422862716225759324667904.0 +52093862756873867299829429549439260291968333228170896646668575626437311472057404965558153649043545703658930124742230987382334803408432531686850700477779270474299143811218864708263194465288662000945523653618438856237031181695903042862317568.0 +104187725513747717248917096795590219328611939951108200862618716836782311289293346710725413558883507985628489654791360585568183985359990087384165456998724558731056111958640851505715202860769479203639593912066403377708845725432451518649335808.0 +104187725513747734599658859098878520583936666456341793293337151252874622944114809931116307298087091407317860249484461974764669606816865063373701400955558540948598287622437729416526388930577324001891047307236877712474062363391806085724635136.0 +208375451027495434497834193591180438657223879902216401725237433673564622578586693421450827117767015971256979309582721171136367970719980174768330913997449117462112223917281703011430405721538958407279187824132806755417691450864903037298671616.0 +208375451027495469199317718197757041167873332912683586586674302505749245888229619862232614596174182814635720498968923949529339213633730126747402801911117081897196575244875458833052777861154648003782094614473755424948124726783612171449270272.0 +416750902054990868995668387182360877314447759804432803450474867347129245157173386842901654235534031942513958619165442342272735941439960349536661827994898234924224447834563406022860811443077916814558375648265613510835382901729806074597343232.0 +416750902054990938398635436395514082335746665825367173173348605011498491776459239724465229192348365629271440997937847899058678427267460253494805603822234163794393150489750917666105555722309296007564189228947510849896249453567224342898540544.0 +833501804109981737991336774364721754628895519608865606900949734694258490314346773685803308471068063885027917238330884684545471882879920699073323655989796469848448895669126812045721622886155833629116751296531227021670765803459612149194686464.0 +833501804109981876797270872791028164671493331650734346346697210022996983552918479448930458384696731258542881995875695798117356854534920506989611207644468327588786300979501835332211111444618592015128378457895021699792498907134448685797081088.0 +1667003608219963475982673548729443509257791039217731213801899469388516980628693547371606616942136127770055834476661769369090943765759841398146647311979592939696897791338253624091443245772311667258233502593062454043341531606919224298389372928.0 +1667003608219963753594541745582056329342986663301468692693394420045993967105836958897860916769393462517085763991751391596234713709069841013979222415288936655177572601959003670664422222889237184030256756915790043399584997814268897371594162176.0 +3334007216439926951965347097458887018515582078435462427603798938777033961257387094743213233884272255540111668953323538738181887531519682796293294623959185879393795582676507248182886491544623334516467005186124908086683063213838448596778745856.0 +3334007216439927507189083491164112658685973326602937385386788840091987934211673917795721833538786925034171527983502783192469427418139682027958444830577873310355145203918007341328844445778474368060513513831580086799169995628537794743188324352.0 +6668014432879853903930694194917774037031164156870924855207597877554067922514774189486426467768544511080223337906647077476363775063039365592586589247918371758787591165353014496365772983089246669032934010372249816173366126427676897193557491712.0 +6668014432879855014378166982328225317371946653205874770773577680183975868423347835591443667077573850068343055967005566384938854836279364055916889661155746620710290407836014682657688891556948736121027027663160173598339991257075589486376648704.0 +13336028865759707807861388389835548074062328313741849710415195755108135845029548378972852935537089022160446675813294154952727550126078731185173178495836743517575182330706028992731545966178493338065868020744499632346732252855353794387114983424.0 +13336028865759710028756333964656450634743893306411749541547155360367951736846695671182887334155147700136686111934011132769877709672558728111833779322311493241420580815672029365315377783113897472242054055326320347196679982514151178972753297408.0 +26672057731519415615722776779671096148124656627483699420830391510216271690059096757945705871074178044320893351626588309905455100252157462370346356991673487035150364661412057985463091932356986676131736041488999264693464505710707588774229966848.0 +26672057731519420057512667929312901269487786612823499083094310720735903473693391342365774668310295400273372223868022265539755419345117456223667558644622986482841161631344058730630755566227794944484108110652640694393359965028302357945506594816.0 +53344115463038831231445553559342192296249313254967398841660783020432543380118193515891411742148356088641786703253176619810910200504314924740692713983346974070300729322824115970926183864713973352263472082977998529386929011421415177548459933696.0 +53344115463038840115025335858625802538975573225646998166188621441471806947386782684731549336620590800546744447736044531079510838690234912447335117289245972965682323262688117461261511132455589888968216221305281388786719930056604715891013189632.0 +106688230926077662462891107118684384592498626509934797683321566040865086760236387031782823484296712177283573406506353239621820401008629849481385427966693948140601458645648231941852367729427946704526944165955997058773858022842830355096919867392.0 +106688230926077680230050671717251605077951146451293996332377242882943613894773565369463098673241181601093488895472089062159021677380469824894670234578491945931364646525376234922523022264911179777936432442610562777573439860113209431782026379264.0 +213376461852155324925782214237368769184997253019869595366643132081730173520472774063565646968593424354567146813012706479243640802017259698962770855933387896281202917291296463883704735458855893409053888331911994117547716045685660710193839734784.0 +213376461852155360460101343434503210155902292902587992664754485765887227789547130738926197346482363202186977790944178124318043354760939649789340469156983891862729293050752469845046044529822359555872864885221125555146879720226418863564052758528.0 +426752923704310649851564428474737538369994506039739190733286264163460347040945548127131293937186848709134293626025412958487281604034519397925541711866775792562405834582592927767409470917711786818107776663823988235095432091371321420387679469568.0 +426752923704310720920202686869006420311804585805175985329508971531774455579094261477852394692964726404373955581888356248636086709521879299578680938313967783725458586101504939690092089059644719111745729770442251110293759440452837727128105517056.0 +853505847408621299703128856949475076739989012079478381466572528326920694081891096254262587874373697418268587252050825916974563208069038795851083423733551585124811669165185855534818941835423573636215553327647976470190864182742642840775358939136.0 +853505847408621441840405373738012840623609171610351970659017943063548911158188522955704789385929452808747911163776712497272173419043758599157361876627935567450917172203009879380184178119289438223491459540884502220587518880905675454256211034112.0 +1707011694817242599406257713898950153479978024158956762933145056653841388163782192508525175748747394836537174504101651833949126416138077591702166847467103170249623338330371711069637883670847147272431106655295952940381728365485285681550717878272.0 +1707011694817242883680810747476025681247218343220703941318035886127097822316377045911409578771858905617495822327553424994544346838087517198314723753255871134901834344406019758760368356238578876446982919081769004441175037761811350908512422068224.0 +3414023389634485198812515427797900306959956048317913525866290113307682776327564385017050351497494789673074349008203303667898252832276155183404333694934206340499246676660743422139275767341694294544862213310591905880763456730970571363101435756544.0 +3414023389634485767361621494952051362494436686441407882636071772254195644632754091822819157543717811234991644655106849989088693676175034396629447506511742269803668688812039517520736712477157752893965838163538008882350075523622701817024844136448.0 +6828046779268970397625030855595800613919912096635827051732580226615365552655128770034100702994989579346148698016406607335796505664552310366808667389868412680998493353321486844278551534683388589089724426621183811761526913461941142726202871513088.0 +6828046779268971534723242989904102724988873372882815765272143544508391289265508183645638315087435622469983289310213699978177387352350068793258895013023484539607337377624079035041473424954315505787931676327076017764700151047245403634049688272896.0 +13656093558537940795250061711191601227839824193271654103465160453230731105310257540068201405989979158692297396032813214671593011329104620733617334779736825361996986706642973688557103069366777178179448853242367623523053826923882285452405743026176.0 +13656093558537943069446485979808205449977746745765631530544287089016782578531016367291276630174871244939966578620427399956354774704700137586517790026046969079214674755248158070082946849908631011575863352654152035529400302094490807268099376545792.0 +27312187117075881590500123422383202455679648386543308206930320906461462210620515080136402811979958317384594792065626429343186022658209241467234669559473650723993973413285947377114206138733554356358897706484735247046107653847764570904811486052352.0 +27312187117075886138892971959616410899955493491531263061088574178033565157062032734582553260349742489879933157240854799912709549409400275173035580052093938158429349510496316140165893699817262023151726705308304071058800604188981614536198753091584.0 +54624374234151763181000246844766404911359296773086616413860641812922924421241030160272805623959916634769189584131252858686372045316418482934469339118947301447987946826571894754228412277467108712717795412969470494092215307695529141809622972104704.0 +54624374234151772277785943919232821799910986983062526122177148356067130314124065469165106520699484979759866314481709599825419098818800550346071160104187876316858699020992632280331787399634524046303453410616608142117601208377963229072397506183168.0 +109248748468303526362000493689532809822718593546173232827721283625845848842482060320545611247919833269538379168262505717372744090632836965868938678237894602895975893653143789508456824554934217425435590825938940988184430615391058283619245944209408.0 +109248748468303544555571887838465643599821973966125052244354296712134260628248130938330213041398969959519732628963419199650838197637601100692142320208375752633717398041985264560663574799269048092606906821233216284235202416755926458144795012366336.0 +218497496936607052724000987379065619645437187092346465655442567251691697684964120641091222495839666539076758336525011434745488181265673931737877356475789205791951787306287579016913649109868434850871181651877881976368861230782116567238491888418816.0 +218497496936607089111143775676931287199643947932250104488708593424268521256496261876660426082797939919039465257926838399301676395275202201384284640416751505267434796083970529121327149598538096185213813642466432568470404833511852916289590024732672.0 +436994993873214105448001974758131239290874374184692931310885134503383395369928241282182444991679333078153516673050022869490976362531347863475754712951578411583903574612575158033827298219736869701742363303755763952737722461564233134476983776837632.0 +436994993873214178222287551353862574399287895864500208977417186848537042512992523753320852165595879838078930515853676798603352790550404402768569280833503010534869592167941058242654299197076192370427627284932865136940809667023705832579180049465344.0 +873989987746428210896003949516262478581748748369385862621770269006766790739856482564364889983358666156307033346100045738981952725062695726951509425903156823167807149225150316067654596439473739403484726607511527905475444923128466268953967553675264.0 +873989987746428356444575102707725148798575791729000417954834373697074085025985047506641704331191759676157861031707353597206705581100808805537138561667006021069739184335882116485308598394152384740855254569865730273881619334047411665158360098930688.0 +1747979975492856421792007899032524957163497496738771725243540538013533581479712965128729779966717332312614066692200091477963905450125391453903018851806313646335614298450300632135309192878947478806969453215023055810950889846256932537907935107350528.0 +1747979975492856712889150205415450297597151583458000835909668747394148170051970095013283408662383519352315722063414707194413411162201617611074277123334012042139478368671764232970617196788304769481710509139731460547763238668094823330316720197861376.0 +3495959950985712843584015798065049914326994993477543450487081076027067162959425930257459559933434664625228133384400182955927810900250782907806037703612627292671228596900601264270618385757894957613938906430046111621901779692513865075815870214701056.0 +3495959950985713425778300410830900595194303166916001671819337494788296340103940190026566817324767038704631444126829414388826822324403235222148554246668024084278956737343528465941234393576609538963421018279462921095526477336189646660633440395722752.0 +6991919901971425687168031596130099828653989986955086900974162152054134325918851860514919119866869329250456266768800365911855621800501565815612075407225254585342457193801202528541236771515789915227877812860092223243803559385027730151631740429402112.0 +6991919901971426851556600821661801190388606333832003343638674989576592680207880380053133634649534077409262888253658828777653644648806470444297108493336048168557913474687056931882468787153219077926842036558925842191052954672379293321266880791445504.0 +13983839803942851374336063192260199657307979973910173801948324304108268651837703721029838239733738658500912533537600731823711243601003131631224150814450509170684914387602405057082473543031579830455755625720184446487607118770055460303263480858804224.0 +13983839803942853703113201643323602380777212667664006687277349979153185360415760760106267269299068154818525776507317657555307289297612940888594216986672096337115826949374113863764937574306438155853684073117851684382105909344758586642533761582891008.0 +27967679607885702748672126384520399314615959947820347603896648608216537303675407442059676479467477317001825067075201463647422487202006263262448301628901018341369828775204810114164947086063159660911511251440368892975214237540110920606526961717608448.0 +27967679607885707406226403286647204761554425335328013374554699958306370720831521520212534538598136309637051553014635315110614578595225881777188433973344192674231653898748227727529875148612876311707368146235703368764211818689517173285067523165782016.0 +55935359215771405497344252769040798629231919895640695207793297216433074607350814884119352958934954634003650134150402927294844974404012526524896603257802036682739657550409620228329894172126319321823022502880737785950428475080221841213053923435216896.0 +55935359215771414812452806573294409523108850670656026749109399916612741441663043040425069077196272619274103106029270630221229157190451763554376867946688385348463307797496455455059750297225752623414736292471406737528423637379034346570135046331564032.0 +111870718431542810994688505538081597258463839791281390415586594432866149214701629768238705917869909268007300268300805854589689948808025053049793206515604073365479315100819240456659788344252638643646045005761475571900856950160443682426107846870433792.0 +111870718431542829624905613146588819046217701341312053498218799833225482883326086080850138154392545238548206212058541260442458314380903527108753735893376770696926615594992910910119500594451505246829472584942813475056847274758068693140270092663128064.0 +223741436863085621989377011076163194516927679582562780831173188865732298429403259536477411835739818536014600536601611709179379897616050106099586413031208146730958630201638480913319576688505277287292090011522951143801713900320887364852215693740867584.0 +223741436863085659249811226293177638092435402682624106996437599666450965766652172161700276308785090477096412424117082520884916628761807054217507471786753541393853231189985821820239001188903010493658945169885626950113694549516137386280540185326256128.0 +447482873726171243978754022152326389033855359165125561662346377731464596858806519072954823671479637072029201073203223418358759795232100212199172826062416293461917260403276961826639153377010554574584180023045902287603427800641774729704431387481735168.0 +447482873726171318499622452586355276184870805365248213992875199332901931533304344323400552617570180954192824848234165041769833257523614108435014943573507082787706462379971643640478002377806020987317890339771253900227389099032274772561080370652512256.0 +894965747452342487957508044304652778067710718330251123324692755462929193717613038145909647342959274144058402146406446836717519590464200424398345652124832586923834520806553923653278306754021109149168360046091804575206855601283549459408862774963470336.0 +894965747452342636999244905172710552369741610730496427985750398665803863066608688646801105235140361908385649696468330083539666515047228216870029887147014165575412924759943287280956004755612041974635780679542507800454778198064549545122160741305024512.0 +1789931494904684975915016088609305556135421436660502246649385510925858387435226076291819294685918548288116804292812893673435039180928400848796691304249665173847669041613107847306556613508042218298336720092183609150413711202567098918817725549926940672.0 +1789931494904685273998489810345421104739483221460992855971500797331607726133217377293602210470280723816771299392936660167079333030094456433740059774294028331150825849519886574561912009511224083949271561359085015600909556396129099090244321482610049024.0 +3579862989809369951830032177218611112270842873321004493298771021851716774870452152583638589371837096576233608585625787346870078361856801697593382608499330347695338083226215694613113227016084436596673440184367218300827422405134197837635451099853881344.0 +3579862989809370547996979620690842209478966442921985711943001594663215452266434754587204420940561447633542598785873320334158666060188912867480119548588056662301651699039773149123824019022448167898543122718170031201819112792258198180488642965220098048.0 +7159725979618739903660064354437222224541685746642008986597542043703433549740904305167277178743674193152467217171251574693740156723713603395186765216998660695390676166452431389226226454032168873193346880368734436601654844810268395675270902199707762688.0 +7159725979618741095993959241381684418957932885843971423886003189326430904532869509174408841881122895267085197571746640668317332120377825734960239097176113324603303398079546298247648038044896335797086245436340062403638225584516396360977285930440196096.0 +14319451959237479807320128708874444449083371493284017973195084087406867099481808610334554357487348386304934434342503149387480313447427206790373530433997321390781352332904862778452452908064337746386693760737468873203309689620536791350541804399415525376.0 +14319451959237482191987918482763368837915865771687942847772006378652861809065739018348817683762245790534170395143493281336634664240755651469920478194352226649206606796159092596495296076089792671594172490872680124807276451169032792721954571860880392192.0 +28638903918474959614640257417748888898166742986568035946390168174813734198963617220669108714974696772609868868685006298774960626894854413580747060867994642781562704665809725556904905816128675492773387521474937746406619379241073582701083608798831050752.0 +28638903918474964383975836965526737675831731543375885695544012757305723618131478036697635367524491581068340790286986562673269328481511302939840956388704453298413213592318185192990592152179585343188344981745360249614552902338065585443909143721760784384.0 +57277807836949919229280514835497777796333485973136071892780336349627468397927234441338217429949393545219737737370012597549921253789708827161494121735989285563125409331619451113809811632257350985546775042949875492813238758482147165402167217597662101504.0 +57277807836949928767951673931053475351663463086751771391088025514611447236262956073395270735048983162136681580573973125346538656963022605879681912777408906596826427184636370385981184304359170686376689963490720499229105804676131170887818287443521568768.0 +114555615673899838458561029670995555592666971946272143785560672699254936795854468882676434859898787090439475474740025195099842507579417654322988243471978571126250818663238902227619623264514701971093550085899750985626477516964294330804334435195324203008.0 +114555615673899857535903347862106950703326926173503542782176051029222894472525912146790541470097966324273363161147946250693077313926045211759363825554817813193652854369272740771962368608718341372753379926981440998458211609352262341775636574887043137536.0 +229111231347799676917122059341991111185333943892544287571121345398509873591708937765352869719797574180878950949480050390199685015158835308645976486943957142252501637326477804455239246529029403942187100171799501971252955033928588661608668870390648406016.0 +229111231347799715071806695724213901406653852347007085564352102058445788945051824293581082940195932648546726322295892501386154627852090423518727651109635626387305708738545481543924737217436682745506759853962881996916423218704524683551273149774086275072.0 +458222462695599353834244118683982222370667887785088575142242690797019747183417875530705739439595148361757901898960100780399370030317670617291952973887914284505003274652955608910478493058058807884374200343599003942505910067857177323217337740781296812032.0 +458222462695599430143613391448427802813307704694014171128704204116891577890103648587162165880391865297093452644591785002772309255704180847037455302219271252774611417477090963087849474434873365491013519707925763993832846437409049367102546299548172550144.0 +916444925391198707668488237367964444741335775570177150284485381594039494366835751061411478879190296723515803797920201560798740060635341234583905947775828569010006549305911217820956986116117615768748400687198007885011820135714354646434675481562593624064.0 +916444925391198860287226782896855605626615409388028342257408408233783155780207297174324331760783730594186905289183570005544618511408361694074910604438542505549222834954181926175698948869746730982027039415851527987665692874818098734205092599096345100288.0 +1832889850782397415336976474735928889482671551140354300568970763188078988733671502122822957758380593447031607595840403121597480121270682469167811895551657138020013098611822435641913972232235231537496801374396015770023640271428709292869350963125187248128.0 +1832889850782397720574453565793711211253230818776056684514816816467566311560414594348648663521567461188373810578367140011089237022816723388149821208877085011098445669908363852351397897739493461964054078831703055975331385749636197468410185198192690200576.0 +3665779701564794830673952949471857778965343102280708601137941526376157977467343004245645915516761186894063215191680806243194960242541364938335623791103314276040026197223644871283827944464470463074993602748792031540047280542857418585738701926250374496256.0 +3665779701564795441148907131587422422506461637552113369029633632935132623120829188697297327043134922376747621156734280022178474045633446776299642417754170022196891339816727704702795795478986923928108157663406111950662771499272394936820370396385380401152.0 +7331559403129589661347905898943715557930686204561417202275883052752315954934686008491291831033522373788126430383361612486389920485082729876671247582206628552080052394447289742567655888928940926149987205497584063080094561085714837171477403852500748992512.0 +7331559403129590882297814263174844845012923275104226738059267265870265246241658377394594654086269844753495242313468560044356948091266893552599284835508340044393782679633455409405591590957973847856216315326812223901325542998544789873640740792770760802304.0 +14663118806259179322695811797887431115861372409122834404551766105504631909869372016982583662067044747576252860766723224972779840970165459753342495164413257104160104788894579485135311777857881852299974410995168126160189122171429674342954807705001497985024.0 +14663118806259181764595628526349689690025846550208453476118534531740530492483316754789189308172539689506990484626937120088713896182533787105198569671016680088787565359266910818811183181915947695712432630653624447802651085997089579747281481585541521604608.0 +29326237612518358645391623595774862231722744818245668809103532211009263819738744033965167324134089495152505721533446449945559681940330919506684990328826514208320209577789158970270623555715763704599948821990336252320378244342859348685909615410002995970048.0 +29326237612518363529191257052699379380051693100416906952237069063481060984966633509578378616345079379013980969253874240177427792365067574210397139342033360177575130718533821637622366363831895391424865261307248895605302171994179159494562963171083043209216.0 +58652475225036717290783247191549724463445489636491337618207064422018527639477488067930334648268178990305011443066892899891119363880661839013369980657653028416640419155578317940541247111431527409199897643980672504640756488685718697371819230820005991940096.0 +58652475225036727058382514105398758760103386200833813904474138126962121969933267019156757232690158758027961938507748480354855584730135148420794278684066720355150261437067643275244732727663790782849730522614497791210604343988358318989125926342166086418432.0 +117304950450073434581566494383099448926890979272982675236414128844037055278954976135860669296536357980610022886133785799782238727761323678026739961315306056833280838311156635881082494222863054818399795287961345009281512977371437394743638461640011983880192.0 +117304950450073454116765028210797517520206772401667627808948276253924243939866534038313514465380317516055923877015496960709711169460270296841588557368133440710300522874135286550489465455327581565699461045228995582421208687976716637978251852684332172836864.0 +234609900900146869163132988766198897853781958545965350472828257688074110557909952271721338593072715961220045772267571599564477455522647356053479922630612113666561676622313271762164988445726109636799590575922690018563025954742874789487276923280023967760384.0 +234609900900146908233530056421595035040413544803335255617896552507848487879733068076627028930760635032111847754030993921419422338920540593683177114736266881420601045748270573100978930910655163131398922090457991164842417375953433275956503705368664345673728.0 +469219801800293738326265977532397795707563917091930700945656515376148221115819904543442677186145431922440091544535143199128954911045294712106959845261224227333123353244626543524329976891452219273599181151845380037126051909485749578974553846560047935520768.0 +469219801800293816467060112843190070080827089606670511235793105015696975759466136153254057861521270064223695508061987842838844677841081187366354229472533762841202091496541146201957861821310326262797844180915982329684834751906866551913007410737328691347456.0 +938439603600587476652531955064795591415127834183861401891313030752296442231639809086885354372290863844880183089070286398257909822090589424213919690522448454666246706489253087048659953782904438547198362303690760074252103818971499157949107693120095871041536.0 +938439603600587632934120225686380140161654179213341022471586210031393951518932272306508115723042540128447391016123975685677689355682162374732708458945067525682404182993082292403915723642620652525595688361831964659369669503813733103826014821474657382694912.0 +1876879207201174953305063910129591182830255668367722803782626061504592884463279618173770708744581727689760366178140572796515819644181178848427839381044896909332493412978506174097319907565808877094396724607381520148504207637942998315898215386240191742083072.0 +1876879207201175265868240451372760280323308358426682044943172420062787903037864544613016231446085080256894782032247951371355378711364324749465416917890135051364808365986164584807831447285241305051191376723663929318739339007627466207652029642949314765389824.0 +3753758414402349906610127820259182365660511336735445607565252123009185768926559236347541417489163455379520732356281145593031639288362357696855678762089793818664986825957012348194639815131617754188793449214763040297008415275885996631796430772480383484166144.0 +3753758414402350531736480902745520560646616716853364089886344840125575806075729089226032462892170160513789564064495902742710757422728649498930833835780270102729616731972329169615662894570482610102382753447327858637478678015254932415304059285898629530779648.0 +7507516828804699813220255640518364731321022673470891215130504246018371537853118472695082834978326910759041464712562291186063278576724715393711357524179587637329973651914024696389279630263235508377586898429526080594016830551771993263592861544960766968332288.0 +7507516828804701063472961805491041121293233433706728179772689680251151612151458178452064925784340321027579128128991805485421514845457298997861667671560540205459233463944658339231325789140965220204765506894655717274957356030509864830608118571797259061559296.0 +15015033657609399626440511281036729462642045346941782430261008492036743075706236945390165669956653821518082929425124582372126557153449430787422715048359175274659947303828049392778559260526471016755173796859052161188033661103543986527185723089921533936664576.0 +15015033657609402126945923610982082242586466867413456359545379360502303224302916356904129851568680642055158256257983610970843029690914597995723335343121080410918466927889316678462651578281930440409531013789311434549914712061019729661216237143594518123118592.0 +30030067315218799252881022562073458925284090693883564860522016984073486151412473890780331339913307643036165858850249164744253114306898861574845430096718350549319894607656098785557118521052942033510347593718104322376067322207087973054371446179843067873329152.0 +30030067315218804253891847221964164485172933734826912719090758721004606448605832713808259703137361284110316512515967221941686059381829195991446670686242160821836933855778633356925303156563860880819062027578622869099829424122039459322432474287189036246237184.0 +60060134630437598505762045124146917850568181387767129721044033968146972302824947781560662679826615286072331717700498329488506228613797723149690860193436701098639789215312197571114237042105884067020695187436208644752134644414175946108742892359686135746658304.0 +60060134630437608507783694443928328970345867469653825438181517442009212897211665427616519406274722568220633025031934443883372118763658391982893341372484321643673867711557266713850606313127721761638124055157245738199658848244078918644864948574378072492474368.0 +120120269260875197011524090248293835701136362775534259442088067936293944605649895563121325359653230572144663435400996658977012457227595446299381720386873402197279578430624395142228474084211768134041390374872417289504269288828351892217485784719372271493316608.0 +120120269260875217015567388887856657940691734939307650876363034884018425794423330855233038812549445136441266050063868887766744237527316783965786682744968643287347735423114533427701212626255443523276248110314491476399317696488157837289729897148756144984948736.0 +240240538521750394023048180496587671402272725551068518884176135872587889211299791126242650719306461144289326870801993317954024914455190892598763440773746804394559156861248790284456948168423536268082780749744834579008538577656703784434971569438744542986633216.0 +240240538521750434031134777775713315881383469878615301752726069768036851588846661710466077625098890272882532100127737775533488475054633567931573365489937286574695470846229066855402425252510887046552496220628982952798635392976315674579459794297512289969897472.0 +480481077043500788046096360993175342804545451102137037768352271745175778422599582252485301438612922288578653741603986635908049828910381785197526881547493608789118313722497580568913896336847072536165561499489669158017077155313407568869943138877489085973266432.0 +480481077043500868062269555551426631762766939757230603505452139536073703177693323420932155250197780545765064200255475551066976950109267135863146730979874573149390941692458133710804850505021774093104992441257965905597270785952631349158919588595024579939794944.0 +960962154087001576092192721986350685609090902204274075536704543490351556845199164504970602877225844577157307483207973271816099657820763570395053763094987217578236627444995161137827792673694145072331122998979338316034154310626815137739886277754978171946532864.0 +960962154087001736124539111102853263525533879514461207010904279072147406355386646841864310500395561091530128400510951102133953900218534271726293461959749146298781883384916267421609701010043548186209984882515931811194541571905262698317839177190049159879589888.0 +1921924308174003152184385443972701371218181804408548151073409086980703113690398329009941205754451689154314614966415946543632199315641527140790107526189974435156473254889990322275655585347388290144662245997958676632068308621253630275479772555509956343893065728.0 +1921924308174003472249078222205706527051067759028922414021808558144294812710773293683728621000791122183060256801021902204267907800437068543452586923919498292597563766769832534843219402020087096372419969765031863622389083143810525396635678354380098319759179776.0 +3843848616348006304368770887945402742436363608817096302146818173961406227380796658019882411508903378308629229932831893087264398631283054281580215052379948870312946509779980644551311170694776580289324491995917353264136617242507260550959545111019912687786131456.0 +3843848616348006944498156444411413054102135518057844828043617116288589625421546587367457242001582244366120513602043804408535815600874137086905173847838996585195127533539665069686438804040174192744839939530063727244778166287621050793271356708760196639518359552.0 +7687697232696012608737541775890805484872727217634192604293636347922812454761593316039764823017806756617258459865663786174528797262566108563160430104759897740625893019559961289102622341389553160578648983991834706528273234485014521101919090222039825375572262912.0 +7687697232696013888996312888822826108204271036115689656087234232577179250843093174734914484003164488732241027204087608817071631201748274173810347695677993170390255067079330139372877608080348385489679879060127454489556332575242101586542713417520393279036719104.0 +15375394465392025217475083551781610969745454435268385208587272695845624909523186632079529646035613513234516919731327572349057594525132217126320860209519795481251786039119922578205244682779106321157297967983669413056546468970029042203838180444079650751144525824.0 +15375394465392027777992625777645652216408542072231379312174468465154358501686186349469828968006328977464482054408175217634143262403496548347620695391355986340780510134158660278745755216160696770979359758120254908979112665150484203173085426835040786558073438208.0 +30750788930784050434950167103563221939490908870536770417174545391691249819046373264159059292071227026469033839462655144698115189050264434252641720419039590962503572078239845156410489365558212642314595935967338826113092937940058084407676360888159301502289051648.0 +30750788930784055555985251555291304432817084144462758624348936930308717003372372698939657936012657954928964108816350435268286524806993096695241390782711972681561020268317320557491510432321393541958719516240509817958225330300968406346170853670081573116146876416.0 +61501577861568100869900334207126443878981817741073540834349090783382499638092746528318118584142454052938067678925310289396230378100528868505283440838079181925007144156479690312820978731116425284629191871934677652226185875880116168815352721776318603004578103296.0 +61501577861568111111970503110582608865634168288925517248697873860617434006744745397879315872025315909857928217632700870536573049613986193390482781565423945363122040536634641114983020864642787083917439032481019635916450660601936812692341707340163146232293752832.0 +123003155723136201739800668414252887757963635482147081668698181566764999276185493056636237168284908105876135357850620578792460756201057737010566881676158363850014288312959380625641957462232850569258383743869355304452371751760232337630705443552637206009156206592.0 +123003155723136222223941006221165217731268336577851034497395747721234868013489490795758631744050631819715856435265401741073146099227972386780965563130847890726244081073269282229966041729285574167834878064962039271832901321203873625384683414680326292464587505664.0 +246006311446272403479601336828505775515927270964294163337396363133529998552370986113272474336569816211752270715701241157584921512402115474021133763352316727700028576625918761251283914924465701138516767487738710608904743503520464675261410887105274412018312413184.0 +246006311446272444447882012442330435462536673155702068994791495442469736026978981591517263488101263639431712870530803482146292198455944773561931126261695781452488162146538564459932083458571148335669756129924078543665802642407747250769366829360652584929175011328.0 +492012622892544806959202673657011551031854541928588326674792726267059997104741972226544948673139632423504541431402482315169843024804230948042267526704633455400057153251837522502567829848931402277033534975477421217809487007040929350522821774210548824036624826368.0 +492012622892544888895764024884660870925073346311404137989582990884939472053957963183034526976202527278863425741061606964292584396911889547123862252523391562904976324293077128919864166917142296671339512259848157087331605284815494501538733658721305169858350022656.0 +984025245785089613918405347314023102063709083857176653349585452534119994209483944453089897346279264847009082862804964630339686049608461896084535053409266910800114306503675045005135659697862804554067069950954842435618974014081858701045643548421097648073249652736.0 +984025245785089777791528049769321741850146692622808275979165981769878944107915926366069053952405054557726851482123213928585168793823779094247724505046783125809952648586154257839728333834284593342679024519696314174663210569630989003077467317442610339716700045312.0 +1968050491570179227836810694628046204127418167714353306699170905068239988418967888906179794692558529694018165725609929260679372099216923792169070106818533821600228613007350090010271319395725609108134139901909684871237948028163717402091287096842195296146499305472.0 +1968050491570179555583056099538643483700293385245616551958331963539757888215831852732138107904810109115453702964246427857170337587647558188495449010093566251619905297172308515679456667668569186685358049039392628349326421139261978006154934634885220679433400090624.0 +3936100983140358455673621389256092408254836335428706613398341810136479976837935777812359589385117059388036331451219858521358744198433847584338140213637067643200457226014700180020542638791451218216268279803819369742475896056327434804182574193684390592292998610944.0 +3936100983140359111166112199077286967400586770491233103916663927079515776431663705464276215809620218230907405928492855714340675175295116376990898020187132503239810594344617031358913335337138373370716098078785256698652842278523956012309869269770441358866800181248.0 +7872201966280716911347242778512184816509672670857413226796683620272959953675871555624719178770234118776072662902439717042717488396867695168676280427274135286400914452029400360041085277582902436432536559607638739484951792112654869608365148387368781184585997221888.0 +7872201966280718222332224398154573934801173540982466207833327854159031552863327410928552431619240436461814811856985711428681350350590232753981796040374265006479621188689234062717826670674276746741432196157570513397305684557047912024619738539540882717733600362496.0 +15744403932561433822694485557024369633019345341714826453593367240545919907351743111249438357540468237552145325804879434085434976793735390337352560854548270572801828904058800720082170555165804872865073119215277478969903584225309739216730296774737562369171994443776.0 +15744403932561436444664448796309147869602347081964932415666655708318063105726654821857104863238480872923629623713971422857362700701180465507963592080748530012959242377378468125435653341348553493482864392315141026794611369114095824049239477079081765435467200724992.0 +31488807865122867645388971114048739266038690683429652907186734481091839814703486222498876715080936475104290651609758868170869953587470780674705121709096541145603657808117601440164341110331609745730146238430554957939807168450619478433460593549475124738343988887552.0 +31488807865122872889328897592618295739204694163929864831333311416636126211453309643714209726476961745847259247427942845714725401402360931015927184161497060025918484754756936250871306682697106986965728784630282053589222738228191648098478954158163530870934401449984.0 +62977615730245735290777942228097478532077381366859305814373468962183679629406972444997753430161872950208581303219517736341739907174941561349410243418193082291207315616235202880328682220663219491460292476861109915879614336901238956866921187098950249476687977775104.0 +62977615730245745778657795185236591478409388327859729662666622833272252422906619287428419452953923491694518494855885691429450802804721862031854368322994120051836969509513872501742613365394213973931457569260564107178445476456383296196957908316327061741868802899968.0 +125955231460491470581555884456194957064154762733718611628746937924367359258813944889995506860323745900417162606439035472683479814349883122698820486836386164582414631232470405760657364441326438982920584953722219831759228673802477913733842374197900498953375955550208.0 +125955231460491491557315590370473182956818776655719459325333245666544504845813238574856838905907846983389036989711771382858901605609443724063708736645988240103673939019027745003485226730788427947862915138521128214356890952912766592393915816632654123483737605799936.0 +251910462920982941163111768912389914128309525467437223257493875848734718517627889779991013720647491800834325212878070945366959628699766245397640973672772329164829262464940811521314728882652877965841169907444439663518457347604955827467684748395800997906751911100416.0 +251910462920982983114631180740946365913637553311438918650666491333089009691626477149713677811815693966778073979423542765717803211218887448127417473291976480207347878038055490006970453461576855895725830277042256428713781905825533184787831633265308246967475211599872.0 +503820925841965882326223537824779828256619050934874446514987751697469437035255779559982027441294983601668650425756141890733919257399532490795281947345544658329658524929881623042629457765305755931682339814888879327036914695209911654935369496791601995813503822200832.0 +503820925841965966229262361481892731827275106622877837301332982666178019383252954299427355623631387933556147958847085531435606422437774896254834946583952960414695756076110980013940906923153711791451660554084512857427563811651066369575663266530616493934950423199744.0 +1007641851683931764652447075649559656513238101869748893029975503394938874070511559119964054882589967203337300851512283781467838514799064981590563894691089316659317049859763246085258915530611511863364679629777758654073829390419823309870738993583203991627007644401664.0 +1007641851683931932458524722963785463654550213245755674602665965332356038766505908598854711247262775867112295917694171062871212844875549792509669893167905920829391512152221960027881813846307423582903321108169025714855127623302132739151326533061232987869900846399488.0 +2015283703367863529304894151299119313026476203739497786059951006789877748141023118239928109765179934406674601703024567562935677029598129963181127789382178633318634099719526492170517831061223023726729359259555517308147658780839646619741477987166407983254015288803328.0 +2015283703367863864917049445927570927309100426491511349205331930664712077533011817197709422494525551734224591835388342125742425689751099585019339786335811841658783024304443920055763627692614847165806642216338051429710255246604265478302653066122465975739801692798976.0 +4030567406735727058609788302598238626052952407478995572119902013579755496282046236479856219530359868813349203406049135125871354059196259926362255578764357266637268199439052984341035662122446047453458718519111034616295317561679293239482955974332815966508030577606656.0 +4030567406735727729834098891855141854618200852983022698410663861329424155066023634395418844989051103468449183670776684251484851379502199170038679572671623683317566048608887840111527255385229694331613284432676102859420510493208530956605306132244931951479603385597952.0 +8061134813471454117219576605196477252105904814957991144239804027159510992564092472959712439060719737626698406812098270251742708118392519852724511157528714533274536398878105968682071324244892094906917437038222069232590635123358586478965911948665631933016061155213312.0 +8061134813471455459668197783710283709236401705966045396821327722658848310132047268790837689978102206936898367341553368502969702759004398340077359145343247366635132097217775680223054510770459388663226568865352205718841020986417061913210612264489863902959206771195904.0 +16122269626942908234439153210392954504211809629915982288479608054319021985128184945919424878121439475253396813624196540503485416236785039705449022315057429066549072797756211937364142648489784189813834874076444138465181270246717172957931823897331263866032122310426624.0 +16122269626942910919336395567420567418472803411932090793642655445317696620264094537581675379956204413873796734683106737005939405518008796680154718290686494733270264194435551360446109021540918777326453137730704411437682041972834123826421224528979727805918413542391808.0 +32244539253885816468878306420785909008423619259831964576959216108638043970256369891838849756242878950506793627248393081006970832473570079410898044630114858133098145595512423874728285296979568379627669748152888276930362540493434345915863647794662527732064244620853248.0 +32244539253885821838672791134841134836945606823864181587285310890635393240528189075163350759912408827747593469366213474011878811036017593360309436581372989466540528388871102720892218043081837554652906275461408822875364083945668247652842449057959455611836827084783616.0 +64489078507771632937756612841571818016847238519663929153918432217276087940512739783677699512485757901013587254496786162013941664947140158821796089260229716266196291191024847749456570593959136759255339496305776553860725080986868691831727295589325055464128489241706496.0 +64489078507771643677345582269682269673891213647728363174570621781270786481056378150326701519824817655495186938732426948023757622072035186720618873162745978933081056777742205441784436086163675109305812550922817645750728167891336495305684898115918911223673654169567232.0 +128978157015543265875513225683143636033694477039327858307836864434552175881025479567355399024971515802027174508993572324027883329894280317643592178520459432532392582382049695498913141187918273518510678992611553107721450161973737383663454591178650110928256978483412992.0 +128978157015543287354691164539364539347782427295456726349141243562541572962112756300653403039649635310990373877464853896047515244144070373441237746325491957866162113555484410883568872172327350218611625101845635291501456335782672990611369796231837822447347308339134464.0 +257956314031086531751026451366287272067388954078655716615673728869104351762050959134710798049943031604054349017987144648055766659788560635287184357040918865064785164764099390997826282375836547037021357985223106215442900323947474767326909182357300221856513956966825984.0 +257956314031086574709382329078729078695564854590913452698282487125083145924225512601306806079299270621980747754929707792095030488288140746882475492650983915732324227110968821767137744344654700437223250203691270583002912671565345981222739592463675644894694616678268928.0 +515912628062173063502052902732574544134777908157311433231347457738208703524101918269421596099886063208108698035974289296111533319577121270574368714081837730129570329528198781995652564751673094074042715970446212430885800647894949534653818364714600443713027913933651968.0 +515912628062173149418764658157458157391129709181826905396564974250166291848451025202613612158598541243961495509859415584190060976576281493764950985301967831464648454221937643534275488689309400874446500407382541166005825343130691962445479184927351289789389233356537856.0 +1031825256124346127004105805465149088269555816314622866462694915476417407048203836538843192199772126416217396071948578592223066639154242541148737428163675460259140659056397563991305129503346188148085431940892424861771601295789899069307636729429200887426055827867303936.0 +1031825256124346298837529316314916314782259418363653810793129948500332583696902050405227224317197082487922991019718831168380121953152562987529901970603935662929296908443875287068550977378618801748893000814765082332011650686261383924890958369854702579578778466713075712.0 +2063650512248692254008211610930298176539111632629245732925389830952834814096407673077686384399544252832434792143897157184446133278308485082297474856327350920518281318112795127982610259006692376296170863881784849723543202591579798138615273458858401774852111655734607872.0 +2063650512248692597675058632629832629564518836727307621586259897000665167393804100810454448634394164975845982039437662336760243906305125975059803941207871325858593816887750574137101954757237603497786001629530164664023301372522767849781916739709405159157556933426151424.0 +4127301024497384508016423221860596353078223265258491465850779661905669628192815346155372768799088505664869584287794314368892266556616970164594949712654701841036562636225590255965220518013384752592341727763569699447086405183159596277230546917716803549704223311469215744.0 +4127301024497385195350117265259665259129037673454615243172519794001330334787608201620908897268788329951691964078875324673520487812610251950119607882415742651717187633775501148274203909514475206995572003259060329328046602745045535699563833479418810318315113866852302848.0 +8254602048994769016032846443721192706156446530516982931701559323811339256385630692310745537598177011329739168575588628737784533113233940329189899425309403682073125272451180511930441036026769505184683455527139398894172810366319192554461093835433607099408446622938431488.0 +8254602048994770390700234530519330518258075346909230486345039588002660669575216403241817794537576659903383928157750649347040975625220503900239215764831485303434375267551002296548407819028950413991144006518120658656093205490091071399127666958837620636630227733704605696.0 +16509204097989538032065692887442385412312893061033965863403118647622678512771261384621491075196354022659478337151177257475569066226467880658379798850618807364146250544902361023860882072053539010369366911054278797788345620732638385108922187670867214198816893245876862976.0 +16509204097989540781400469061038661036516150693818460972690079176005321339150432806483635589075153319806767856315501298694081951250441007800478431529662970606868750535102004593096815638057900827982288013036241317312186410980182142798255333917675241273260455467409211392.0 +33018408195979076064131385774884770824625786122067931726806237295245357025542522769242982150392708045318956674302354514951138132452935761316759597701237614728292501089804722047721764144107078020738733822108557595576691241465276770217844375341734428397633786491753725952.0 +33018408195979081562800938122077322073032301387636921945380158352010642678300865612967271178150306639613535712631002597388163902500882015600956863059325941213737501070204009186193631276115801655964576026072482634624372821960364285596510667835350482546520910934818422784.0 +66036816391958152128262771549769541649251572244135863453612474590490714051085045538485964300785416090637913348604709029902276264905871522633519195402475229456585002179609444095443528288214156041477467644217115191153382482930553540435688750683468856795267572983507451904.0 +66036816391958163125601876244154644146064602775273843890760316704021285356601731225934542356300613279227071425262005194776327805001764031201913726118651882427475002140408018372387262552231603311929152052144965269248745643920728571193021335670700965093041821869636845568.0 +132073632783916304256525543099539083298503144488271726907224949180981428102170091076971928601570832181275826697209418059804552529811743045267038390804950458913170004359218888190887056576428312082954935288434230382306764965861107080871377501366937713590535145967014903808.0 +132073632783916326251203752488309288292129205550547687781520633408042570713203462451869084712601226558454142850524010389552655610003528062403827452237303764854950004280816036744774525104463206623858304104289930538497491287841457142386042671341401930186083643739273691136.0 +264147265567832608513051086199078166597006288976543453814449898361962856204340182153943857203141664362551653394418836119609105059623486090534076781609900917826340008718437776381774113152856624165909870576868460764613529931722214161742755002733875427181070291934029807616.0 +264147265567832652502407504976618576584258411101095375563041266816085141426406924903738169425202453116908285701048020779105311220007056124807654904474607529709900008561632073489549050208926413247716608208579861076994982575682914284772085342682803860372167287478547382272.0 +528294531135665217026102172398156333194012577953086907628899796723925712408680364307887714406283328725103306788837672239218210119246972181068153563219801835652680017436875552763548226305713248331819741153736921529227059863444428323485510005467750854362140583868059615232.0 +528294531135665305004815009953237153168516822202190751126082533632170282852813849807476338850404906233816571402096041558210622440014112249615309808949215059419800017123264146979098100417852826495433216417159722153989965151365828569544170685365607720744334574957094764544.0 +1056589062271330434052204344796312666388025155906173815257799593447851424817360728615775428812566657450206613577675344478436420238493944362136307126439603671305360034873751105527096452611426496663639482307473843058454119726888856646971020010935501708724281167736119230464.0 +1056589062271330610009630019906474306337033644404381502252165067264340565705627699614952677700809812467633142804192083116421244880028224499230619617898430118839600034246528293958196200835705652990866432834319444307979930302731657139088341370731215441488669149914189529088.0 +2113178124542660868104408689592625332776050311812347630515599186895702849634721457231550857625133314900413227155350688956872840476987888724272614252879207342610720069747502211054192905222852993327278964614947686116908239453777713293942040021871003417448562335472238460928.0 +2113178124542661220019260039812948612674067288808763004504330134528681131411255399229905355401619624935266285608384166232842489760056448998461239235796860237679200068493056587916392401671411305981732865668638888615959860605463314278176682741462430882977338299828379058176.0 +4226356249085321736208817379185250665552100623624695261031198373791405699269442914463101715250266629800826454310701377913745680953975777448545228505758414685221440139495004422108385810445705986654557929229895372233816478907555426587884080043742006834897124670944476921856.0 +4226356249085322440038520079625897225348134577617526009008660269057362262822510798459810710803239249870532571216768332465684979520112897996922478471593720475358400136986113175832784803342822611963465731337277777231919721210926628556353365482924861765954676599656758116352.0 +8452712498170643472417634758370501331104201247249390522062396747582811398538885828926203430500533259601652908621402755827491361907951554897090457011516829370442880278990008844216771620891411973309115858459790744467632957815110853175768160087484013669794249341888953843712.0 +8452712498170644880077040159251794450696269155235052018017320538114724525645021596919621421606478499741065142433536664931369959040225795993844956943187440950716800273972226351665569606685645223926931462674555554463839442421853257112706730965849723531909353199313516232704.0 +16905424996341286944835269516741002662208402494498781044124793495165622797077771657852406861001066519203305817242805511654982723815903109794180914023033658740885760557980017688433543241782823946618231716919581488935265915630221706351536320174968027339588498683777907687424.0 +16905424996341289760154080318503588901392538310470104036034641076229449051290043193839242843212956999482130284867073329862739918080451591987689913886374881901433600547944452703331139213371290447853862925349111108927678884843706514225413461931699447063818706398627032465408.0 +33810849992682573889670539033482005324416804988997562088249586990331245594155543315704813722002133038406611634485611023309965447631806219588361828046067317481771521115960035376867086483565647893236463433839162977870531831260443412703072640349936054679176997367555815374848.0 +33810849992682579520308160637007177802785076620940208072069282152458898102580086387678485686425913998964260569734146659725479836160903183975379827772749763802867201095888905406662278426742580895707725850698222217855357769687413028450826923863398894127637412797254064930816.0 +67621699985365147779341078066964010648833609977995124176499173980662491188311086631409627444004266076813223268971222046619930895263612439176723656092134634963543042231920070753734172967131295786472926867678325955741063662520886825406145280699872109358353994735111630749696.0 +67621699985365159040616321274014355605570153241880416144138564304917796205160172775356971372851827997928521139468293319450959672321806367950759655545499527605734402191777810813324556853485161791415451701396444435710715539374826056901653847726797788255274825594508129861632.0 +135243399970730295558682156133928021297667219955990248352998347961324982376622173262819254888008532153626446537942444093239861790527224878353447312184269269927086084463840141507468345934262591572945853735356651911482127325041773650812290561399744218716707989470223261499392.0 +135243399970730318081232642548028711211140306483760832288277128609835592410320345550713942745703655995857042278936586638901919344643612735901519311090999055211468804383555621626649113706970323582830903402792888871421431078749652113803307695453595576510549651189016259723264.0 +270486799941460591117364312267856042595334439911980496705996695922649964753244346525638509776017064307252893075884888186479723581054449756706894624368538539854172168927680283014936691868525183145891707470713303822964254650083547301624581122799488437433415978940446522998784.0 +270486799941460636162465285096057422422280612967521664576554257219671184820640691101427885491407311991714084557873173277803838689287225471803038622181998110422937608767111243253298227413940647165661806805585777742842862157499304227606615390907191153021099302378032519446528.0 +540973599882921182234728624535712085190668879823960993411993391845299929506488693051277019552034128614505786151769776372959447162108899513413789248737077079708344337855360566029873383737050366291783414941426607645928509300167094603249162245598976874866831957880893045997568.0 +540973599882921272324930570192114844844561225935043329153108514439342369641281382202855770982814623983428169115746346555607677378574450943606077244363996220845875217534222486506596454827881294331323613611171555485685724314998608455213230781814382306042198604756065038893056.0 +1081947199765842364469457249071424170381337759647921986823986783690599859012977386102554039104068257229011572303539552745918894324217799026827578497474154159416688675710721132059746767474100732583566829882853215291857018600334189206498324491197953749733663915761786091995136.0 +1081947199765842544649861140384229689689122451870086658306217028878684739282562764405711541965629247966856338231492693111215354757148901887212154488727992441691750435068444973013192909655762588662647227222343110971371448629997216910426461563628764612084397209512130077786112.0 +2163894399531684728938914498142848340762675519295843973647973567381199718025954772205108078208136514458023144607079105491837788648435598053655156994948308318833377351421442264119493534948201465167133659765706430583714037200668378412996648982395907499467327831523572183990272.0 +2163894399531685089299722280768459379378244903740173316612434057757369478565125528811423083931258495933712676462985386222430709514297803774424308977455984883383500870136889946026385819311525177325294454444686221942742897259994433820852923127257529224168794419024260155572224.0 +4327788799063369457877828996285696681525351038591687947295947134762399436051909544410216156416273028916046289214158210983675577296871196107310313989896616637666754702842884528238987069896402930334267319531412861167428074401336756825993297964791814998934655663047144367980544.0 +4327788799063370178599444561536918758756489807480346633224868115514738957130251057622846167862516991867425352925970772444861419028595607548848617954911969766767001740273779892052771638623050354650588908889372443885485794519988867641705846254515058448337588838048520311144448.0 +8655577598126738915755657992571393363050702077183375894591894269524798872103819088820432312832546057832092578428316421967351154593742392214620627979793233275333509405685769056477974139792805860668534639062825722334856148802673513651986595929583629997869311326094288735961088.0 +8655577598126740357198889123073837517512979614960693266449736231029477914260502115245692335725033983734850705851941544889722838057191215097697235909823939533534003480547559784105543277246100709301177817778744887770971589039977735283411692509030116896675177676097040622288896.0 +17311155196253477831511315985142786726101404154366751789183788539049597744207638177640864625665092115664185156856632843934702309187484784429241255959586466550667018811371538112955948279585611721337069278125651444669712297605347027303973191859167259995738622652188577471922176.0 +17311155196253480714397778246147675035025959229921386532899472462058955828521004230491384671450067967469701411703883089779445676114382430195394471819647879067068006961095119568211086554492201418602355635557489775541943178079955470566823385018060233793350355352194081244577792.0 +34622310392506955663022631970285573452202808308733503578367577078099195488415276355281729251330184231328370313713265687869404618374969568858482511919172933101334037622743076225911896559171223442674138556251302889339424595210694054607946383718334519991477245304377154943844352.0 +34622310392506961428795556492295350070051918459842773065798944924117911657042008460982769342900135934939402823407766179558891352228764860390788943639295758134136013922190239136422173108984402837204711271114979551083886356159910941133646770036120467586700710704388162489155584.0 +69244620785013911326045263940571146904405616617467007156735154156198390976830552710563458502660368462656740627426531375738809236749939137716965023838345866202668075245486152451823793118342446885348277112502605778678849190421388109215892767436669039982954490608754309887688704.0 +69244620785013922857591112984590700140103836919685546131597889848235823314084016921965538685800271869878805646815532359117782704457529720781577887278591516268272027844380478272844346217968805674409422542229959102167772712319821882267293540072240935173401421408776324978311168.0 +138489241570027822652090527881142293808811233234934014313470308312396781953661105421126917005320736925313481254853062751477618473499878275433930047676691732405336150490972304903647586236684893770696554225005211557357698380842776218431785534873338079965908981217508619775377408.0 +138489241570027845715182225969181400280207673839371092263195779696471646628168033843931077371600543739757611293631064718235565408915059441563155774557183032536544055688760956545688692435937611348818845084459918204335545424639643764534587080144481870346802842817552649956622336.0 +276978483140055645304181055762284587617622466469868028626940616624793563907322210842253834010641473850626962509706125502955236946999756550867860095353383464810672300981944609807295172473369787541393108450010423114715396761685552436863571069746676159931817962435017239550754816.0 +276978483140055691430364451938362800560415347678742184526391559392943293256336067687862154743201087479515222587262129436471130817830118883126311549114366065073088111377521913091377384871875222697637690168919836408671090849279287529069174160288963740693605685635105299913244672.0 +553956966280111290608362111524569175235244932939736057253881233249587127814644421684507668021282947701253925019412251005910473893999513101735720190706766929621344601963889219614590344946739575082786216900020846229430793523371104873727142139493352319863635924870034479101509632.0 +553956966280111382860728903876725601120830695357484369052783118785886586512672135375724309486402174959030445174524258872942261635660237766252623098228732130146176222755043826182754769743750445395275380337839672817342181698558575058138348320577927481387211371270210599826489344.0 +1107913932560222581216724223049138350470489865879472114507762466499174255629288843369015336042565895402507850038824502011820947787999026203471440381413533859242689203927778439229180689893479150165572433800041692458861587046742209747454284278986704639727271849740068958203019264.0 +1107913932560222765721457807753451202241661390714968738105566237571773173025344270751448618972804349918060890349048517745884523271320475532505246196457464260292352445510087652365509539487500890790550760675679345634684363397117150116276696641155854962774422742540421199652978688.0 +2215827865120445162433448446098276700940979731758944229015524932998348511258577686738030672085131790805015700077649004023641895575998052406942880762827067718485378407855556878458361379786958300331144867600083384917723174093484419494908568557973409279454543699480137916406038528.0 +2215827865120445531442915615506902404483322781429937476211132475143546346050688541502897237945608699836121780698097035491769046542640951065010492392914928520584704891020175304731019078975001781581101521351358691269368726794234300232553393282311709925548845485080842399305957376.0 +4431655730240890324866896892196553401881959463517888458031049865996697022517155373476061344170263581610031400155298008047283791151996104813885761525654135436970756815711113756916722759573916600662289735200166769835446348186968838989817137115946818558909087398960275832812077056.0 +4431655730240891062885831231013804808966645562859874952422264950287092692101377083005794475891217399672243561396194070983538093085281902130020984785829857041169409782040350609462038157950003563162203042702717382538737453588468600465106786564623419851097690970161684798611914752.0 +8863311460481780649733793784393106803763918927035776916062099731993394045034310746952122688340527163220062800310596016094567582303992209627771523051308270873941513631422227513833445519147833201324579470400333539670892696373937677979634274231893637117818174797920551665624154112.0 +8863311460481782125771662462027609617933291125719749904844529900574185384202754166011588951782434799344487122792388141967076186170563804260041969571659714082338819564080701218924076315900007126324406085405434765077474907176937200930213573129246839702195381940323369597223829504.0 +17726622920963561299467587568786213607527837854071553832124199463986788090068621493904245376681054326440125600621192032189135164607984419255543046102616541747883027262844455027666891038295666402649158940800667079341785392747875355959268548463787274235636349595841103331248308224.0 +17726622920963564251543324924055219235866582251439499809689059801148370768405508332023177903564869598688974245584776283934152372341127608520083939143319428164677639128161402437848152631800014252648812170810869530154949814353874401860427146258493679404390763880646739194447659008.0 +35453245841927122598935175137572427215055675708143107664248398927973576180137242987808490753362108652880251201242384064378270329215968838511086092205233083495766054525688910055333782076591332805298317881601334158683570785495750711918537096927574548471272699191682206662496616448.0 +35453245841927128503086649848110438471733164502878999619378119602296741536811016664046355807129739197377948491169552567868304744682255217040167878286638856329355278256322804875696305263600028505297624341621739060309899628707748803720854292516987358808781527761293478388895318016.0 +70906491683854245197870350275144854430111351416286215328496797855947152360274485975616981506724217305760502402484768128756540658431937677022172184410466166991532109051377820110667564153182665610596635763202668317367141570991501423837074193855149096942545398383364413324993232896.0 +70906491683854257006173299696220876943466329005757999238756239204593483073622033328092711614259478394755896982339105135736609489364510434080335756573277712658710556512645609751392610527200057010595248683243478120619799257415497607441708585033974717617563055522586956777790636032.0 +141812983367708490395740700550289708860222702832572430656993595711894304720548971951233963013448434611521004804969536257513081316863875354044344368820932333983064218102755640221335128306365331221193271526405336634734283141983002847674148387710298193885090796766728826649986465792.0 +141812983367708514012346599392441753886932658011515998477512478409186966147244066656185423228518956789511793964678210271473218978729020868160671513146555425317421113025291219502785221054400114021190497366486956241239598514830995214883417170067949435235126111045173913555581272064.0 +283625966735416980791481401100579417720445405665144861313987191423788609441097943902467926026896869223042009609939072515026162633727750708088688737641864667966128436205511280442670256612730662442386543052810673269468566283966005695348296775420596387770181593533457653299972931584.0 +283625966735417028024693198784883507773865316023031996955024956818373932294488133312370846457037913579023587929356420542946437957458041736321343026293110850634842226050582439005570442108800228042380994732973912482479197029661990429766834340135898870470252222090347827111162544128.0 +567251933470833961582962802201158835440890811330289722627974382847577218882195887804935852053793738446084019219878145030052325267455501416177377475283729335932256872411022560885340513225461324884773086105621346538937132567932011390696593550841192775540363187066915306599945863168.0 +567251933470834056049386397569767015547730632046063993910049913636747864588976266624741692914075827158047175858712841085892875914916083472642686052586221701269684452101164878011140884217600456084761989465947824964958394059323980859533668680271797740940504444180695654222325088256.0 +1134503866941667923165925604402317670881781622660579445255948765695154437764391775609871704107587476892168038439756290060104650534911002832354754950567458671864513744822045121770681026450922649769546172211242693077874265135864022781393187101682385551080726374133830613199891726336.0 +1134503866941668112098772795139534031095461264092127987820099827273495729177952533249483385828151654316094351717425682171785751829832166945285372105172443402539368904202329756022281768435200912169523978931895649929916788118647961719067337360543595481881008888361391308444650176512.0 +2269007733883335846331851208804635341763563245321158890511897531390308875528783551219743408215174953784336076879512580120209301069822005664709509901134917343729027489644090243541362052901845299539092344422485386155748530271728045562786374203364771102161452748267661226399783452672.0 +2269007733883336224197545590279068062190922528184255975640199654546991458355905066498966771656303308632188703434851364343571503659664333890570744210344886805078737808404659512044563536870401824339047957863791299859833576237295923438134674721087190963762017776722782616889300353024.0 +4538015467766671692663702417609270683527126490642317781023795062780617751057567102439486816430349907568672153759025160240418602139644011329419019802269834687458054979288180487082724105803690599078184688844970772311497060543456091125572748406729542204322905496535322452799566905344.0 +4538015467766672448395091180558136124381845056368511951280399309093982916711810132997933543312606617264377406869702728687143007319328667781141488420689773610157475616809319024089127073740803648678095915727582599719667152474591846876269349442174381927524035553445565233778600706048.0 +9076030935533343385327404835218541367054252981284635562047590125561235502115134204878973632860699815137344307518050320480837204279288022658838039604539669374916109958576360974165448211607381198156369377689941544622994121086912182251145496813459084408645810993070644905599133810688.0 +9076030935533344896790182361116272248763690112737023902560798618187965833423620265995867086625213234528754813739405457374286014638657335562282976841379547220314951233618638048178254147481607297356191831455165199439334304949183693752538698884348763855048071106891130467557201412096.0 +18152061871066686770654809670437082734108505962569271124095180251122471004230268409757947265721399630274688615036100640961674408558576045317676079209079338749832219917152721948330896423214762396312738755379883089245988242173824364502290993626918168817291621986141289811198267621376.0 +18152061871066689793580364722232544497527380225474047805121597236375931666847240531991734173250426469057509627478810914748572029277314671124565953682759094440629902467237276096356508294963214594712383662910330398878668609898367387505077397768697527710096142213782260935114402824192.0 +36304123742133373541309619340874165468217011925138542248190360502244942008460536819515894531442799260549377230072201281923348817117152090635352158418158677499664439834305443896661792846429524792625477510759766178491976484347648729004581987253836337634583243972282579622396535242752.0 +36304123742133379587160729444465088995054760450948095610243194472751863333694481063983468346500852938115019254957621829497144058554629342249131907365518188881259804934474552192713016589926429189424767325820660797757337219796734775010154795537395055420192284427564521870228805648384.0 +72608247484266747082619238681748330936434023850277084496380721004489884016921073639031789062885598521098754460144402563846697634234304181270704316836317354999328879668610887793323585692859049585250955021519532356983952968695297458009163974507672675269166487944565159244793070485504.0 +72608247484266759174321458888930177990109520901896191220486388945503726667388962127966936693001705876230038509915243658994288117109258684498263814731036377762519609868949104385426033179852858378849534651641321595514674439593469550020309591074790110840384568855129043740457611296768.0 +145216494968533494165238477363496661872868047700554168992761442008979768033842147278063578125771197042197508920288805127693395268468608362541408633672634709998657759337221775586647171385718099170501910043039064713967905937390594916018327949015345350538332975889130318489586140971008.0 +145216494968533518348642917777860355980219041803792382440972777891007453334777924255933873386003411752460077019830487317988576234218517368996527629462072755525039219737898208770852066359705716757699069303282643191029348879186939100040619182149580221680769137710258087480915222593536.0 +290432989937066988330476954726993323745736095401108337985522884017959536067684294556127156251542394084395017840577610255386790536937216725082817267345269419997315518674443551173294342771436198341003820086078129427935811874781189832036655898030690701076665951778260636979172281942016.0 +290432989937067036697285835555720711960438083607584764881945555782014906669555848511867746772006823504920154039660974635977152468437034737993055258924145511050078439475796417541704132719411433515398138606565286382058697758373878200081238364299160443361538275420516174961830445187072.0 +580865979874133976660953909453986647491472190802216675971045768035919072135368589112254312503084788168790035681155220510773581073874433450165634534690538839994631037348887102346588685542872396682007640172156258855871623749562379664073311796061381402153331903556521273958344563884032.0 +580865979874134073394571671111441423920876167215169529763891111564029813339111697023735493544013647009840308079321949271954304936874069475986110517848291022100156878951592835083408265438822867030796277213130572764117395516747756400162476728598320886723076550841032349923660890374144.0 +1161731959748267953321907818907973294982944381604433351942091536071838144270737178224508625006169576337580071362310441021547162147748866900331269069381077679989262074697774204693177371085744793364015280344312517711743247499124759328146623592122762804306663807113042547916689127768064.0 +1161731959748268146789143342222882847841752334430339059527782223128059626678223394047470987088027294019680616158643898543908609873748138951972221035696582044200313757903185670166816530877645734061592554426261145528234791033495512800324953457196641773446153101682064699847321780748288.0 +2323463919496535906643815637815946589965888763208866703884183072143676288541474356449017250012339152675160142724620882043094324295497733800662538138762155359978524149395548409386354742171489586728030560688625035423486494998249518656293247184245525608613327614226085095833378255536128.0 +2323463919496536293578286684445765695683504668860678119055564446256119253356446788094941974176054588039361232317287797087817219747496277903944442071393164088400627515806371340333633061755291468123185108852522291056469582066991025600649906914393283546892306203364129399694643561496576.0 +4646927838993071813287631275631893179931777526417733407768366144287352577082948712898034500024678305350320285449241764086188648590995467601325076277524310719957048298791096818772709484342979173456061121377250070846972989996499037312586494368491051217226655228452170191666756511072256.0 +4646927838993072587156573368891531391367009337721356238111128892512238506712893576189883948352109176078722464634575594175634439494992555807888884142786328176801255031612742680667266123510582936246370217705044582112939164133982051201299813828786567093784612406728258799389287122993152.0 +9293855677986143626575262551263786359863555052835466815536732288574705154165897425796069000049356610700640570898483528172377297181990935202650152555048621439914096597582193637545418968685958346912122242754500141693945979992998074625172988736982102434453310456904340383333513022144512.0 +9293855677986145174313146737783062782734018675442712476222257785024477013425787152379767896704218352157444929269151188351268878989985111615777768285572656353602510063225485361334532247021165872492740435410089164225878328267964102402599627657573134187569224813456517598778574245986304.0 +18587711355972287253150525102527572719727110105670933631073464577149410308331794851592138000098713221401281141796967056344754594363981870405300305110097242879828193195164387275090837937371916693824244485509000283387891959985996149250345977473964204868906620913808680766667026044289024.0 +18587711355972290348626293475566125565468037350885424952444515570048954026851574304759535793408436704314889858538302376702537757979970223231555536571145312707205020126450970722669064494042331744985480870820178328451756656535928204805199255315146268375138449626913035197557148491972608.0 +37175422711944574506301050205055145439454220211341867262146929154298820616663589703184276000197426442802562283593934112689509188727963740810600610220194485759656386390328774550181675874743833387648488971018000566775783919971992298500691954947928409737813241827617361533334052088578048.0 +37175422711944580697252586951132251130936074701770849904889031140097908053703148609519071586816873408629779717076604753405075515959940446463111073142290625414410040252901941445338128988084663489970961741640356656903513313071856409610398510630292536750276899253826070395114296983945216.0 +74350845423889149012602100410110290878908440422683734524293858308597641233327179406368552000394852885605124567187868225379018377455927481621201220440388971519312772780657549100363351749487666775296977942036001133551567839943984597001383909895856819475626483655234723066668104177156096.0 +74350845423889161394505173902264502261872149403541699809778062280195816107406297219038143173633746817259559434153209506810151031919880892926222146284581250828820080505803882890676257976169326979941923483280713313807026626143712819220797021260585073500553798507652140790228593967890432.0 +148701690847778298025204200820220581757816880845367469048587716617195282466654358812737104000789705771210249134375736450758036754911854963242402440880777943038625545561315098200726703498975333550593955884072002267103135679887969194002767819791713638951252967310469446133336208354312192.0 +148701690847778322789010347804529004523744298807083399619556124560391632214812594438076286347267493634519118868306419013620302063839761785852444292569162501657640161011607765781352515952338653959883846966561426627614053252287425638441594042521170147001107597015304281580457187935780864.0 +297403381695556596050408401640441163515633761690734938097175433234390564933308717625474208001579411542420498268751472901516073509823709926484804881761555886077251091122630196401453406997950667101187911768144004534206271359775938388005535639583427277902505934620938892266672416708624384.0 +297403381695556645578020695609058009047488597614166799239112249120783264429625188876152572694534987269038237736612838027240604127679523571704888585138325003315280322023215531562705031904677307919767693933122853255228106504574851276883188085042340294002215194030608563160914375871561728.0 +594806763391113192100816803280882327031267523381469876194350866468781129866617435250948416003158823084840996537502945803032147019647419852969609763523111772154502182245260392802906813995901334202375823536288009068412542719551876776011071279166854555805011869241877784533344833417248768.0 +594806763391113291156041391218116018094977195228333598478224498241566528859250377752305145389069974538076475473225676054481208255359047143409777170276650006630560644046431063125410063809354615839535387866245706510456213009149702553766376170084680588004430388061217126321828751743123456.0 +1189613526782226384201633606561764654062535046762939752388701732937562259733234870501896832006317646169681993075005891606064294039294839705939219527046223544309004364490520785605813627991802668404751647072576018136825085439103753552022142558333709111610023738483755569066689666834497536.0 +1189613526782226582312082782436232036189954390456667196956448996483133057718500755504610290778139949076152950946451352108962416510718094286819554340553300013261121288092862126250820127618709231679070775732491413020912426018299405107532752340169361176008860776122434252643657503486246912.0 +2379227053564452768403267213123529308125070093525879504777403465875124519466469741003793664012635292339363986150011783212128588078589679411878439054092447088618008728981041571211627255983605336809503294145152036273650170878207507104044285116667418223220047476967511138133379333668995072.0 +2379227053564453164624165564872464072379908780913334393912897992966266115437001511009220581556279898152305901892902704217924833021436188573639108681106600026522242576185724252501640255237418463358141551464982826041824852036598810215065504680338722352017721552244868505287315006972493824.0 +4758454107128905536806534426247058616250140187051759009554806931750249038932939482007587328025270584678727972300023566424257176157179358823756878108184894177236017457962083142423254511967210673619006588290304072547300341756415014208088570233334836446440094953935022276266758667337990144.0 +4758454107128906329248331129744928144759817561826668787825795985932532230874003022018441163112559796304611803785805408435849666042872377147278217362213200053044485152371448505003280510474836926716283102929965652083649704073197620430131009360677444704035443104489737010574630013944987648.0 +9516908214257811073613068852494117232500280374103518019109613863500498077865878964015174656050541169357455944600047132848514352314358717647513756216369788354472034915924166284846509023934421347238013176580608145094600683512830028416177140466669672892880189907870044552533517334675980288.0 +9516908214257812658496662259489856289519635123653337575651591971865064461748006044036882326225119592609223607571610816871699332085744754294556434724426400106088970304742897010006561020949673853432566205859931304167299408146395240860262018721354889408070886208979474021149260027889975296.0 +19033816428515622147226137704988234465000560748207036038219227727000996155731757928030349312101082338714911889200094265697028704628717435295027512432739576708944069831848332569693018047868842694476026353161216290189201367025660056832354280933339345785760379815740089105067034669351960576.0 +19033816428515625316993324518979712579039270247306675151303183943730128923496012088073764652450239185218447215143221633743398664171489508589112869448852800212177940609485794020013122041899347706865132411719862608334598816292790481720524037442709778816141772417958948042298520055779950592.0 +38067632857031244294452275409976468930001121496414072076438455454001992311463515856060698624202164677429823778400188531394057409257434870590055024865479153417888139663696665139386036095737685388952052706322432580378402734051320113664708561866678691571520759631480178210134069338703921152.0 +38067632857031250633986649037959425158078540494613350302606367887460257846992024176147529304900478370436894430286443267486797328342979017178225738897705600424355881218971588040026244083798695413730264823439725216669197632585580963441048074885419557632283544835917896084597040111559901184.0 +76135265714062488588904550819952937860002242992828144152876910908003984622927031712121397248404329354859647556800377062788114818514869741180110049730958306835776279327393330278772072191475370777904105412644865160756805468102640227329417123733357383143041519262960356420268138677407842304.0 +76135265714062501267973298075918850316157080989226700605212735774920515693984048352295058609800956740873788860572886534973594656685958034356451477795411200848711762437943176080052488167597390827460529646879450433338395265171161926882096149770839115264567089671835792169194080223119802368.0 +152270531428124977177809101639905875720004485985656288305753821816007969245854063424242794496808658709719295113600754125576229637029739482360220099461916613671552558654786660557544144382950741555808210825289730321513610936205280454658834247466714766286083038525920712840536277354815684608.0 +152270531428125002535946596151837700632314161978453401210425471549841031387968096704590117219601913481747577721145773069947189313371916068712902955590822401697423524875886352160104976335194781654921059293758900866676790530342323853764192299541678230529134179343671584338388160446239604736.0 +304541062856249954355618203279811751440008971971312576611507643632015938491708126848485588993617317419438590227201508251152459274059478964720440198923833227343105117309573321115088288765901483111616421650579460643027221872410560909317668494933429532572166077051841425681072554709631369216.0 +304541062856250005071893192303675401264628323956906802420850943099682062775936193409180234439203826963495155442291546139894378626743832137425805911181644803394847049751772704320209952670389563309842118587517801733353581060684647707528384599083356461058268358687343168676776320892479209472.0 +609082125712499908711236406559623502880017943942625153223015287264031876983416253696971177987234634838877180454403016502304918548118957929440880397847666454686210234619146642230176577531802966223232843301158921286054443744821121818635336989866859065144332154103682851362145109419262738432.0 +609082125712500010143786384607350802529256647913813604841701886199364125551872386818360468878407653926990310884583092279788757253487664274851611822363289606789694099503545408640419905340779126619684237175035603466707162121369295415056769198166712922116536717374686337353552641784958418944.0 +1218164251424999817422472813119247005760035887885250306446030574528063753966832507393942355974469269677754360908806033004609837096237915858881760795695332909372420469238293284460353155063605932446465686602317842572108887489642243637270673979733718130288664308207365702724290218838525476864.0 +1218164251425000020287572769214701605058513295827627209683403772398728251103744773636720937756815307853980621769166184559577514506975328549703223644726579213579388199007090817280839810681558253239368474350071206933414324242738590830113538396333425844233073434749372674707105283569916837888.0 +2436328502849999634844945626238494011520071775770500612892061149056127507933665014787884711948938539355508721817612066009219674192475831717763521591390665818744840938476586568920706310127211864892931373204635685144217774979284487274541347959467436260577328616414731405448580437677050953728.0 +2436328502850000040575145538429403210117026591655254419366807544797456502207489547273441875513630615707961243538332369119155029013950657099406447289453158427158776398014181634561679621363116506478736948700142413866828648485477181660227076792666851688466146869498745349414210567139833675776.0 +4872657005699999269689891252476988023040143551541001225784122298112255015867330029575769423897877078711017443635224132018439348384951663435527043182781331637489681876953173137841412620254423729785862746409271370288435549958568974549082695918934872521154657232829462810897160875354101907456.0 +4872657005700000081150291076858806420234053183310508838733615089594913004414979094546883751027261231415922487076664738238310058027901314198812894578906316854317552796028363269123359242726233012957473897400284827733657296970954363320454153585333703376932293738997490698828421134279667351552.0 +9745314011399998539379782504953976046080287103082002451568244596224510031734660059151538847795754157422034887270448264036878696769903326871054086365562663274979363753906346275682825240508847459571725492818542740576871099917137949098165391837869745042309314465658925621794321750708203814912.0 +9745314011400000162300582153717612840468106366621017677467230179189826008829958189093767502054522462831844974153329476476620116055802628397625789157812633708635105592056726538246718485452466025914947794800569655467314593941908726640908307170667406753864587477994981397656842268559334703104.0 +19490628022799997078759565009907952092160574206164004903136489192449020063469320118303077695591508314844069774540896528073757393539806653742108172731125326549958727507812692551365650481017694919143450985637085481153742199834275898196330783675739490084618628931317851243588643501416407629824.0 +19490628022800000324601164307435225680936212733242035354934460358379652017659916378187535004109044925663689948306658952953240232111605256795251578315625267417270211184113453076493436970904932051829895589601139310934629187883817453281816614341334813507729174955989962795313684537118669406208.0 +38981256045599994157519130019815904184321148412328009806272978384898040126938640236606155391183016629688139549081793056147514787079613307484216345462250653099917455015625385102731300962035389838286901971274170962307484399668551796392661567351478980169237257862635702487177287002832815259648.0 +38981256045600000649202328614870451361872425466484070709868920716759304035319832756375070008218089851327379896613317905906480464223210513590503156631250534834540422368226906152986873941809864103659791179202278621869258375767634906563633228682669627015458349911979925590627369074237338812416.0 +77962512091199988315038260039631808368642296824656019612545956769796080253877280473212310782366033259376279098163586112295029574159226614968432690924501306199834910031250770205462601924070779676573803942548341924614968799337103592785323134702957960338474515725271404974354574005665630519296.0 +77962512091200001298404657229740902723744850932968141419737841433518608070639665512750140016436179702654759793226635811812960928446421027181006313262501069669080844736453812305973747883619728207319582358404557243738516751535269813127266457365339254030916699823959851181254738148474677624832.0 +155925024182399976630076520079263616737284593649312039225091913539592160507754560946424621564732066518752558196327172224590059148318453229936865381849002612399669820062501540410925203848141559353147607885096683849229937598674207185570646269405915920676949031450542809948709148011331261038592.0 +155925024182400002596809314459481805447489701865936282839475682867037216141279331025500280032872359405309519586453271623625921856892842054362012626525002139338161689472907624611947495767239456414639164716809114487477033503070539626254532914730678508061833399647919702362509476296949355249664.0 +311850048364799953260153040158527233474569187298624078450183827079184321015509121892849243129464133037505116392654344449180118296636906459873730763698005224799339640125003080821850407696283118706295215770193367698459875197348414371141292538811831841353898062901085619897418296022662522077184.0 +311850048364800005193618628918963610894979403731872565678951365734074432282558662051000560065744718810619039172906543247251843713785684108724025253050004278676323378945815249223894991534478912829278329433618228974954067006141079252509065829461357016123666799295839404725018952593898710499328.0 +623700096729599906520306080317054466949138374597248156900367654158368642031018243785698486258928266075010232785308688898360236593273812919747461527396010449598679280250006161643700815392566237412590431540386735396919750394696828742282585077623663682707796125802171239794836592045325044154368.0 +623700096729600010387237257837927221789958807463745131357902731468148864565117324102001120131489437621238078345813086494503687427571368217448050506100008557352646757891630498447789983068957825658556658867236457949908134012282158505018131658922714032247333598591678809450037905187797420998656.0 +1247400193459199813040612160634108933898276749194496313800735308316737284062036487571396972517856532150020465570617377796720473186547625839494923054792020899197358560500012323287401630785132474825180863080773470793839500789393657484565170155247327365415592251604342479589673184090650088308736.0 +1247400193459200020774474515675854443579917614927490262715805462936297729130234648204002240262978875242476156691626172989007374855142736434896101012200017114705293515783260996895579966137915651317113317734472915899816268024564317010036263317845428064494667197183357618900075810375594841997312.0 +2494800386918399626081224321268217867796553498388992627601470616633474568124072975142793945035713064300040931141234755593440946373095251678989846109584041798394717121000024646574803261570264949650361726161546941587679001578787314969130340310494654730831184503208684959179346368181300176617472.0 +2494800386918400041548949031351708887159835229854980525431610925872595458260469296408004480525957750484952313383252345978014749710285472869792202024400034229410587031566521993791159932275831302634226635468945831799632536049128634020072526635690856128989334394366715237800151620751189683994624.0 +4989600773836799252162448642536435735593106996777985255202941233266949136248145950285587890071426128600081862282469511186881892746190503357979692219168083596789434242000049293149606523140529899300723452323093883175358003157574629938260680620989309461662369006417369918358692736362600353234944.0 +4989600773836800083097898062703417774319670459709961050863221851745190916520938592816008961051915500969904626766504691956029499420570945739584404048800068458821174063133043987582319864551662605268453270937891663599265072098257268040145053271381712257978668788733430475600303241502379367989248.0 +9979201547673598504324897285072871471186213993555970510405882466533898272496291900571175780142852257200163724564939022373763785492381006715959384438336167193578868484000098586299213046281059798601446904646187766350716006315149259876521361241978618923324738012834739836717385472725200706469888.0 +9979201547673600166195796125406835548639340919419922101726443703490381833041877185632017922103831001939809253533009383912058998841141891479168808097600136917642348126266087975164639729103325210536906541875783327198530144196514536080290106542763424515957337577466860951200606483004758735978496.0 +19958403095347197008649794570145742942372427987111941020811764933067796544992583801142351560285704514400327449129878044747527570984762013431918768876672334387157736968000197172598426092562119597202893809292375532701432012630298519753042722483957237846649476025669479673434770945450401412939776.0 +19958403095347200332391592250813671097278681838839844203452887406980763666083754371264035844207662003879618507066018767824117997682283782958337616195200273835284696252532175950329279458206650421073813083751566654397060288393029072160580213085526849031914675154933721902401212966009517471956992.0 +39916806190694394017299589140291485884744855974223882041623529866135593089985167602284703120571409028800654898259756089495055141969524026863837537753344668774315473936000394345196852185124239194405787618584751065402864025260597039506085444967914475693298952051338959346869541890900802825879552.0 +39916806190694400664783184501627342194557363677679688406905774813961527332167508742528071688415324007759237014132037535648235995364567565916675232390400547670569392505064351900658558916413300842147626167503133308794120576786058144321160426171053698063829350309867443804802425932019034943913984.0 +79833612381388788034599178280582971769489711948447764083247059732271186179970335204569406241142818057601309796519512178990110283939048053727675075506689337548630947872000788690393704370248478388811575237169502130805728050521194079012170889935828951386597904102677918693739083781801605651759104.0 +79833612381388801329566369003254684389114727355359376813811549627923054664335017485056143376830648015518474028264075071296471990729135131833350464780801095341138785010128703801317117832826601684295252335006266617588241153572116288642320852342107396127658700619734887609604851864038069887827968.0 +159667224762777576069198356561165943538979423896895528166494119464542372359940670409138812482285636115202619593039024357980220567878096107455350151013378675097261895744001577380787408740496956777623150474339004261611456101042388158024341779871657902773195808205355837387478167563603211303518208.0 +159667224762777602659132738006509368778229454710718753627623099255846109328670034970112286753661296031036948056528150142592943981458270263666700929561602190682277570020257407602634235665653203368590504670012533235176482307144232577284641704684214792255317401239469775219209703728076139775655936.0 +319334449525555152138396713122331887077958847793791056332988238929084744719881340818277624964571272230405239186078048715960441135756192214910700302026757350194523791488003154761574817480993913555246300948678008523222912202084776316048683559743315805546391616410711674774956335127206422607036416.0 +319334449525555205318265476013018737556458909421437507255246198511692218657340069940224573507322592062073896113056300285185887962916540527333401859123204381364555140040514815205268471331306406737181009340025066470352964614288465154569283409368429584510634802478939550438419407456152279551311872.0 +638668899051110304276793426244663774155917695587582112665976477858169489439762681636555249929142544460810478372156097431920882271512384429821400604053514700389047582976006309523149634961987827110492601897356017046445824404169552632097367119486631611092783232821423349549912670254412845214072832.0 +638668899051110410636530952026037475112917818842875014510492397023384437314680139880449147014645184124147792226112600570371775925833081054666803718246408762729110280081029630410536942662612813474362018680050132940705929228576930309138566818736859169021269604957879100876838814912304559102623744.0 +1277337798102220608553586852489327548311835391175164225331952955716338978879525363273110499858285088921620956744312194863841764543024768859642801208107029400778095165952012619046299269923975654220985203794712034092891648808339105264194734238973263222185566465642846699099825340508825690428145664.0 +1277337798102220821273061904052074950225835637685750029020984794046768874629360279760898294029290368248295584452225201140743551851666162109333607436492817525458220560162059260821073885325225626948724037360100265881411858457153860618277133637473718338042539209915758201753677629824609118205247488.0 +2554675596204441217107173704978655096623670782350328450663905911432677957759050726546220999716570177843241913488624389727683529086049537719285602416214058801556190331904025238092598539847951308441970407589424068185783297616678210528389468477946526444371132931285693398199650681017651380856291328.0 +2554675596204441642546123808104149900451671275371500058041969588093537749258720559521796588058580736496591168904450402281487103703332324218667214872985635050916441120324118521642147770650451253897448074720200531762823716914307721236554267274947436676085078419831516403507355259649218236410494976.0 +5109351192408882434214347409957310193247341564700656901327811822865355915518101453092441999433140355686483826977248779455367058172099075438571204832428117603112380663808050476185197079695902616883940815178848136371566595233356421056778936955893052888742265862571386796399301362035302761712582656.0 +5109351192408883285092247616208299800903342550743000116083939176187075498517441119043593176117161472993182337808900804562974207406664648437334429745971270101832882240648237043284295541300902507794896149440401063525647433828615442473108534549894873352170156839663032807014710519298436472820989952.0 +10218702384817764868428694819914620386494683129401313802655623645730711831036202906184883998866280711372967653954497558910734116344198150877142409664856235206224761327616100952370394159391805233767881630357696272743133190466712842113557873911786105777484531725142773592798602724070605523425165312.0 +10218702384817766570184495232416599601806685101486000232167878352374150997034882238087186352234322945986364675617801609125948414813329296874668859491942540203665764481296474086568591082601805015589792298880802127051294867657230884946217069099789746704340313679326065614029421038596872945641979904.0 +20437404769635529736857389639829240772989366258802627605311247291461423662072405812369767997732561422745935307908995117821468232688396301754284819329712470412449522655232201904740788318783610467535763260715392545486266380933425684227115747823572211554969063450285547185597205448141211046850330624.0 +20437404769635533140368990464833199203613370202972000464335756704748301994069764476174372704468645891972729351235603218251896829626658593749337718983885080407331528962592948173137182165203610031179584597761604254102589735314461769892434138199579493408680627358652131228058842077193745891283959808.0 +40874809539271059473714779279658481545978732517605255210622494582922847324144811624739535995465122845491870615817990235642936465376792603508569638659424940824899045310464403809481576637567220935071526521430785090972532761866851368454231495647144423109938126900571094371194410896282422093700661248.0 +40874809539271066280737980929666398407226740405944000928671513409496603988139528952348745408937291783945458702471206436503793659253317187498675437967770160814663057925185896346274364330407220062359169195523208508205179470628923539784868276399158986817361254717304262456117684154387491782567919616.0 +81749619078542118947429558559316963091957465035210510421244989165845694648289623249479071990930245690983741231635980471285872930753585207017139277318849881649798090620928807618963153275134441870143053042861570181945065523733702736908462991294288846219876253801142188742388821792564844187401322496.0 +81749619078542132561475961859332796814453480811888001857343026818993207976279057904697490817874583567890917404942412873007587318506634374997350875935540321629326115850371792692548728660814440124718338391046417016410358941257847079569736552798317973634722509434608524912235368308774983565135839232.0 +163499238157084237894859117118633926183914930070421020842489978331691389296579246498958143981860491381967482463271960942571745861507170414034278554637699763299596181241857615237926306550268883740286106085723140363890131047467405473816925982588577692439752507602284377484777643585129688374802644992.0 +163499238157084265122951923718665593628906961623776003714686053637986415952558115809394981635749167135781834809884825746015174637013268749994701751871080643258652231700743585385097457321628880249436676782092834032820717882515694159139473105596635947269445018869217049824470736617549967130271678464.0 +326998476314168475789718234237267852367829860140842041684979956663382778593158492997916287963720982763934964926543921885143491723014340828068557109275399526599192362483715230475852613100537767480572212171446280727780262094934810947633851965177155384879505015204568754969555287170259376749605289984.0 +326998476314168530245903847437331187257813923247552007429372107275972831905116231618789963271498334271563669619769651492030349274026537499989403503742161286517304463401487170770194914643257760498873353564185668065641435765031388318278946211193271894538890037738434099648941473235099934260543356928.0 +653996952628336951579436468474535704735659720281684083369959913326765557186316985995832575927441965527869929853087843770286983446028681656137114218550799053198384724967430460951705226201075534961144424342892561455560524189869621895267703930354310769759010030409137509939110574340518753499210579968.0 +653996952628337060491807694874662374515627846495104014858744214551945663810232463237579926542996668543127339239539302984060698548053074999978807007484322573034608926802974341540389829286515520997746707128371336131282871530062776636557892422386543789077780075476868199297882946470199868521086713856.0 +1307993905256673903158872936949071409471319440563368166739919826653531114372633971991665151854883931055739859706175687540573966892057363312274228437101598106396769449934860921903410452402151069922288848685785122911121048379739243790535407860708621539518020060818275019878221148681037506998421159936.0 +1307993905256674120983615389749324749031255692990208029717488429103891327620464926475159853085993337086254678479078605968121397096106149999957614014968645146069217853605948683080779658573031041995493414256742672262565743060125553273115784844773087578155560150953736398595765892940399737042173427712.0 +2615987810513347806317745873898142818942638881126736333479839653307062228745267943983330303709767862111479719412351375081147933784114726624548456874203196212793538899869721843806820904804302139844577697371570245822242096759478487581070815721417243079036040121636550039756442297362075013996842319872.0 +2615987810513348241967230779498649498062511385980416059434976858207782655240929852950319706171986674172509356958157211936242794192212299999915228029937290292138435707211897366161559317146062083990986828513485344525131486120251106546231569689546175156311120301907472797191531785880799474084346855424.0 +5231975621026695612635491747796285637885277762253472666959679306614124457490535887966660607419535724222959438824702750162295867568229453249096913748406392425587077799739443687613641809608604279689155394743140491644484193518956975162141631442834486158072080243273100079512884594724150027993684639744.0 +5231975621026696483934461558997298996125022771960832118869953716415565310481859705900639412343973348345018713916314423872485588384424599999830456059874580584276871414423794732323118634292124167981973657026970689050262972240502213092463139379092350312622240603814945594383063571761598948168693710848.0 +10463951242053391225270983495592571275770555524506945333919358613228248914981071775933321214839071448445918877649405500324591735136458906498193827496812784851174155599478887375227283619217208559378310789486280983288968387037913950324283262885668972316144160486546200159025769189448300055987369279488.0 +10463951242053392967868923117994597992250045543921664237739907432831130620963719411801278824687946696690037427832628847744971176768849199999660912119749161168553742828847589464646237268584248335963947314053941378100525944481004426184926278758184700625244481207629891188766127143523197896337387421696.0 +20927902484106782450541966991185142551541111049013890667838717226456497829962143551866642429678142896891837755298811000649183470272917812996387654993625569702348311198957774750454567238434417118756621578972561966577936774075827900648566525771337944632288320973092400318051538378896600111974738558976.0 +20927902484106785935737846235989195984500091087843328475479814865662261241927438823602557649375893393380074855665257695489942353537698399999321824239498322337107485657695178929292474537168496671927894628107882756201051888962008852369852557516369401250488962415259782377532254287046395792674774843392.0 +41855804968213564901083933982370285103082222098027781335677434452912995659924287103733284859356285793783675510597622001298366940545835625992775309987251139404696622397915549500909134476868834237513243157945123933155873548151655801297133051542675889264576641946184800636103076757793200223949477117952.0 +41855804968213571871475692471978391969000182175686656950959629731324522483854877647205115298751786786760149711330515390979884707075396799998643648478996644674214971315390357858584949074336993343855789256215765512402103777924017704739705115032738802500977924830519564755064508574092791585349549686784.0 +83711609936427129802167867964740570206164444196055562671354868905825991319848574207466569718712571587567351021195244002596733881091671251985550619974502278809393244795831099001818268953737668475026486315890247866311747096303311602594266103085351778529153283892369601272206153515586400447898954235904.0 +83711609936427143742951384943956783938000364351373313901919259462649044967709755294410230597503573573520299422661030781959769414150793599997287296957993289348429942630780715717169898148673986687711578512431531024804207555848035409479410230065477605001955849661039129510129017148185583170699099373568.0 +167423219872854259604335735929481140412328888392111125342709737811651982639697148414933139437425143175134702042390488005193467762183342503971101239949004557618786489591662198003636537907475336950052972631780495732623494192606623205188532206170703557058306567784739202544412307031172800895797908471808.0 +167423219872854287485902769887913567876000728702746627803838518925298089935419510588820461195007147147040598845322061563919538828301587199994574593915986578696859885261561431434339796297347973375423157024863062049608415111696070818958820460130955210003911699322078259020258034296371166341398198747136.0 +334846439745708519208671471858962280824657776784222250685419475623303965279394296829866278874850286350269404084780976010386935524366685007942202479898009115237572979183324396007273075814950673900105945263560991465246988385213246410377064412341407114116613135569478405088824614062345601791595816943616.0 +334846439745708574971805539775827135752001457405493255607677037850596179870839021177640922390014294294081197690644123127839077656603174399989149187831973157393719770523122862868679592594695946750846314049726124099216830223392141637917640920261910420007823398644156518040516068592742332682796397494272.0 +669692879491417038417342943717924561649315553568444501370838951246607930558788593659732557749700572700538808169561952020773871048733370015884404959796018230475145958366648792014546151629901347800211890527121982930493976770426492820754128824682814228233226271138956810177649228124691203583191633887232.0 +669692879491417149943611079551654271504002914810986511215354075701192359741678042355281844780028588588162395381288246255678155313206348799978298375663946314787439541046245725737359185189391893501692628099452248198433660446784283275835281840523820840015646797288313036081032137185484665365592794988544.0 +1339385758982834076834685887435849123298631107136889002741677902493215861117577187319465115499401145401077616339123904041547742097466740031768809919592036460950291916733297584029092303259802695600423781054243965860987953540852985641508257649365628456466452542277913620355298456249382407166383267774464.0 +1339385758982834299887222159103308543008005829621973022430708151402384719483356084710563689560057177176324790762576492511356310626412697599956596751327892629574879082092491451474718370378783787003385256198904496396867320893568566551670563681047641680031293594576626072162064274370969330731185589977088.0 +2678771517965668153669371774871698246597262214273778005483355804986431722235154374638930230998802290802155232678247808083095484194933480063537619839184072921900583833466595168058184606519605391200847562108487931721975907081705971283016515298731256912932905084555827240710596912498764814332766535548928.0 +2678771517965668599774444318206617086016011659243946044861416302804769438966712169421127379120114354352649581525152985022712621252825395199913193502655785259149758164184982902949436740757567574006770512397808992793734641787137133103341127362095283360062587189153252144324128548741938661462371179954176.0 +5357543035931336307338743549743396493194524428547556010966711609972863444470308749277860461997604581604310465356495616166190968389866960127075239678368145843801167666933190336116369213039210782401695124216975863443951814163411942566033030597462513825865810169111654481421193824997529628665533071097856.0 +5357543035931337199548888636413234172032023318487892089722832605609538877933424338842254758240228708705299163050305970045425242505650790399826387005311570518299516328369965805898873481515135148013541024795617985587469283574274266206682254724190566720125174378306504288648257097483877322924742359908352.0 +10715086071862672614677487099486792986389048857095112021933423219945726888940617498555720923995209163208620930712991232332381936779733920254150479356736291687602335333866380672232738426078421564803390248433951726887903628326823885132066061194925027651731620338223308962842387649995059257331066142195712.0 +10715086071862674399097777272826468344064046636975784179445665211219077755866848677684509516480457417410598326100611940090850485011301580799652774010623141036599032656739931611797746963030270296027082049591235971174938567148548532413364509448381133440250348756613008577296514194967754645849484719816704.0 +21430172143725345229354974198973585972778097714190224043866846439891453777881234997111441847990418326417241861425982464664763873559467840508300958713472583375204670667732761344465476852156843129606780496867903453775807256653647770264132122389850055303463240676446617925684775299990118514662132284391424.0 +21430172143725348798195554545652936688128093273951568358891330422438155511733697355369019032960914834821196652201223880181700970022603161599305548021246282073198065313479863223595493926060540592054164099182471942349877134297097064826729018896762266880500697513226017154593028389935509291698969439633408.0 +42860344287450690458709948397947171945556195428380448087733692879782907555762469994222883695980836652834483722851964929329527747118935681016601917426945166750409341335465522688930953704313686259213560993735806907551614513307295540528264244779700110606926481352893235851369550599980237029324264568782848.0 +42860344287450697596391109091305873376256186547903136717782660844876311023467394710738038065921829669642393304402447760363401940045206323198611096042492564146396130626959726447190987852121081184108328198364943884699754268594194129653458037793524533761001395026452034309186056779871018583397938879266816.0 +85720688574901380917419896795894343891112390856760896175467385759565815111524939988445767391961673305668967445703929858659055494237871362033203834853890333500818682670931045377861907408627372518427121987471613815103229026614591081056528489559400221213852962705786471702739101199960474058648529137565696.0 +85720688574901395192782218182611746752512373095806273435565321689752622046934789421476076131843659339284786608804895520726803880090412646397222192084985128292792261253919452894381975704242162368216656396729887769399508537188388259306916075587049067522002790052904068618372113559742037166795877758533632.0 +171441377149802761834839793591788687782224781713521792350934771519131630223049879976891534783923346611337934891407859717318110988475742724066407669707780667001637365341862090755723814817254745036854243974943227630206458053229182162113056979118800442427705925411572943405478202399920948117297058275131392.0 +171441377149802790385564436365223493505024746191612546871130643379505244093869578842952152263687318678569573217609791041453607760180825292794444384169970256585584522507838905788763951408484324736433312793459775538799017074376776518613832151174098135044005580105808137236744227119484074333591755517067264.0 +342882754299605523669679587183577375564449563427043584701869543038263260446099759953783069567846693222675869782815719434636221976951485448132815339415561334003274730683724181511447629634509490073708487949886455260412916106458364324226113958237600884855411850823145886810956404799841896234594116550262784.0 +342882754299605580771128872730446987010049492383225093742261286759010488187739157685904304527374637357139146435219582082907215520361650585588888768339940513171169045015677811577527902816968649472866625586919551077598034148753553037227664302348196270088011160211616274473488454238968148667183511034134528.0 +685765508599211047339359174367154751128899126854087169403739086076526520892199519907566139135693386445351739565631438869272443953902970896265630678831122668006549461367448363022895259269018980147416975899772910520825832212916728648452227916475201769710823701646291773621912809599683792469188233100525568.0 +685765508599211161542257745460893974020098984766450187484522573518020976375478315371808609054749274714278292870439164165814431040723301171177777536679881026342338090031355623155055805633937298945733251173839102155196068297507106074455328604696392540176022320423232548946976908477936297334367022068269056.0 +1371531017198422094678718348734309502257798253708174338807478172153053041784399039815132278271386772890703479131262877738544887907805941792531261357662245336013098922734896726045790518538037960294833951799545821041651664425833457296904455832950403539421647403292583547243825619199367584938376466201051136.0 +1371531017198422323084515490921787948040197969532900374969045147036041952750956630743617218109498549428556585740878328331628862081446602342355555073359762052684676180062711246310111611267874597891466502347678204310392136595014212148910657209392785080352044640846465097893953816955872594668734044136538112.0 +2743062034396844189357436697468619004515596507416348677614956344306106083568798079630264556542773545781406958262525755477089775815611883585062522715324490672026197845469793452091581037076075920589667903599091642083303328851666914593808911665900807078843294806585167094487651238398735169876752932402102272.0 +2743062034396844646169030981843575896080395939065800749938090294072083905501913261487234436218997098857113171481756656663257724162893204684711110146719524105369352360125422492620223222535749195782933004695356408620784273190028424297821314418785570160704089281692930195787907633911745189337468088273076224.0 +5486124068793688378714873394937238009031193014832697355229912688612212167137596159260529113085547091562813916525051510954179551631223767170125045430648981344052395690939586904183162074152151841179335807198183284166606657703333829187617823331801614157686589613170334188975302476797470339753505864804204544.0 +5486124068793689292338061963687151792160791878131601499876180588144167811003826522974468872437994197714226342963513313326515448325786409369422220293439048210738704720250844985240446445071498391565866009390712817241568546380056848595642628837571140321408178563385860391575815267823490378674936176546152448.0 +10972248137587376757429746789874476018062386029665394710459825377224424334275192318521058226171094183125627833050103021908359103262447534340250090861297962688104791381879173808366324148304303682358671614396366568333213315406667658375235646663603228315373179226340668377950604953594940679507011729608409088.0 +10972248137587378584676123927374303584321583756263202999752361176288335622007653045948937744875988395428452685927026626653030896651572818738844440586878096421477409440501689970480892890142996783131732018781425634483137092760113697191285257675142280642816357126771720783151630535646980757349872353092304896.0 +21944496275174753514859493579748952036124772059330789420919650754448848668550384637042116452342188366251255666100206043816718206524895068680500181722595925376209582763758347616732648296608607364717343228792733136666426630813335316750471293327206456630746358452681336755901209907189881359014023459216818176.0 +21944496275174757169352247854748607168643167512526405999504722352576671244015306091897875489751976790856905371854053253306061793303145637477688881173756192842954818881003379940961785780285993566263464037562851268966274185520227394382570515350284561285632714253543441566303261071293961514699744706184609792.0 +43888992550349507029718987159497904072249544118661578841839301508897697337100769274084232904684376732502511332200412087633436413049790137361000363445191850752419165527516695233465296593217214729434686457585466273332853261626670633500942586654412913261492716905362673511802419814379762718028046918433636352.0 +43888992550349514338704495709497214337286335025052811999009444705153342488030612183795750979503953581713810743708106506612123586606291274955377762347512385685909637762006759881923571560571987132526928075125702537932548371040454788765141030700569122571265428507086883132606522142587923029399489412369219584.0 +87777985100699014059437974318995808144499088237323157683678603017795394674201538548168465809368753465005022664400824175266872826099580274722000726890383701504838331055033390466930593186434429458869372915170932546665706523253341267001885173308825826522985433810725347023604839628759525436056093836867272704.0 +87777985100699028677408991418994428674572670050105623998018889410306684976061224367591501959007907163427621487416213013224247173212582549910755524695024771371819275524013519763847143121143974265053856150251405075865096742080909577530282061401138245142530857014173766265213044285175846058798978824738439168.0 +175555970201398028118875948637991616288998176474646315367357206035590789348403077096336931618737506930010045328801648350533745652199160549444001453780767403009676662110066780933861186372868858917738745830341865093331413046506682534003770346617651653045970867621450694047209679257519050872112187673734545408.0 +175555970201398057354817982837988857349145340100211247996037778820613369952122448735183003918015814326855242974832426026448494346425165099821511049390049542743638551048027039527694286242287948530107712300502810151730193484161819155060564122802276490285061714028347532530426088570351692117597957649476878336.0 +351111940402796056237751897275983232577996352949292630734714412071181578696806154192673863237475013860020090657603296701067491304398321098888002907561534806019353324220133561867722372745737717835477491660683730186662826093013365068007540693235303306091941735242901388094419358515038101744224375347469090816.0 +351111940402796114709635965675977714698290680200422495992075557641226739904244897470366007836031628653710485949664852052896988692850330199643022098780099085487277102096054079055388572484575897060215424601005620303460386968323638310121128245604552980570123428056695065060852177140703384235195915298953756672.0 +702223880805592112475503794551966465155992705898585261469428824142363157393612308385347726474950027720040181315206593402134982608796642197776005815123069612038706648440267123735444745491475435670954983321367460373325652186026730136015081386470606612183883470485802776188838717030076203488448750694938181632.0 +702223880805592229419271931351955429396581360400844991984151115282453479808489794940732015672063257307420971899329704105793977385700660399286044197560198170974554204192108158110777144969151794120430849202011240606920773936647276620242256491209105961140246856113390130121704354281406768470391830597907513344.0 +1404447761611184224951007589103932930311985411797170522938857648284726314787224616770695452949900055440080362630413186804269965217593284395552011630246139224077413296880534247470889490982950871341909966642734920746651304372053460272030162772941213224367766940971605552377677434060152406976897501389876363264.0 +1404447761611184458838543862703910858793162720801689983968302230564906959616979589881464031344126514614841943798659408211587954771401320798572088395120396341949108408384216316221554289938303588240861698404022481213841547873294553240484512982418211922280493712226780260243408708562813536940783661195815026688.0 +2808895523222368449902015178207865860623970823594341045877715296569452629574449233541390905899800110880160725260826373608539930435186568791104023260492278448154826593761068494941778981965901742683819933285469841493302608744106920544060325545882426448735533881943211104755354868120304813953795002779752726528.0 +2808895523222368917677087725407821717586325441603379967936604461129813919233959179762928062688253029229683887597318816423175909542802641597144176790240792683898216816768432632443108579876607176481723396808044962427683095746589106480969025964836423844560987424453560520486817417125627073881567322391630053376.0 +5617791046444736899804030356415731721247941647188682091755430593138905259148898467082781811799600221760321450521652747217079860870373137582208046520984556896309653187522136989883557963931803485367639866570939682986605217488213841088120651091764852897471067763886422209510709736240609627907590005559505453056.0 +5617791046444737835354175450815643435172650883206759935873208922259627838467918359525856125376506058459367775194637632846351819085605283194288353580481585367796433633536865264886217159753214352963446793616089924855366191493178212961938051929672847689121974848907121040973634834251254147763134644783260106752.0 +11235582092889473799608060712831463442495883294377364183510861186277810518297796934165563623599200443520642901043305494434159721740746275164416093041969113792619306375044273979767115927863606970735279733141879365973210434976427682176241302183529705794942135527772844419021419472481219255815180011119010906112.0 +11235582092889475670708350901631286870345301766413519871746417844519255676935836719051712250753012116918735550389275265692703638171210566388576707160963170735592867267073730529772434319506428705926893587232179849710732382986356425923876103859345695378243949697814242081947269668502508295526269289566520213504.0 +22471164185778947599216121425662926884991766588754728367021722372555621036595593868331127247198400887041285802086610988868319443481492550328832186083938227585238612750088547959534231855727213941470559466283758731946420869952855364352482604367059411589884271055545688838042838944962438511630360022238021812224.0 +22471164185778951341416701803262573740690603532827039743492835689038511353871673438103424501506024233837471100778550531385407276342421132777153414321926341471185734534147461059544868639012857411853787174464359699421464765972712851847752207718691390756487899395628484163894539337005016591052538579133040427008.0 +44942328371557895198432242851325853769983533177509456734043444745111242073191187736662254494396801774082571604173221977736638886962985100657664372167876455170477225500177095919068463711454427882941118932567517463892841739905710728704965208734118823179768542111091377676085677889924877023260720044476043624448.0 +44942328371557902682833403606525147481381207065654079486985671378077022707743346876206849003012048467674942201557101062770814552684842265554306828643852682942371469068294922119089737278025714823707574348928719398842929531945425703695504415437382781512975798791256968327789078674010033182105077158266080854016.0 +89884656743115790396864485702651707539967066355018913468086889490222484146382375473324508988793603548165143208346443955473277773925970201315328744335752910340954451000354191838136927422908855765882237865135034927785683479811421457409930417468237646359537084222182755352171355779849754046521440088952087248896.0 +89884656743115805365666807213050294962762414131308158973971342756154045415486693752413698006024096935349884403114202125541629105369684531108613657287705365884742938136589844238179474556051429647415148697857438797685859063890851407391008830874765563025951597582513936655578157348020066364210154316532161708032.0 +179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792.0 + + +# ============================================================================== +# testStrictness +6.631236871469758276785396630275967243399099947355303144249971758736286630139265439618068200788048744105960420552601852889715006376325666595539603330361800519107591783233358492337208057849499360899425128640718856616503093444922854759159988160304439909868291973931426625698663157749836252274523485312442358651207051292453083278116143932569727918709786004497872322193856150225415211997283078496319412124640111777216148110752815101775295719811974338451936095907419622417538473679495148632480391435931767981122396703443803335529756003353209830071832230689201383015598792184172909927924176339315507402234836120730914783168400715462440053817592702766213559042115986763819482654128770595766806872783349146967171293949598850675682115696218943412532098591327667236328125E-316 diff --git a/lib/yyjson-0.12.0/test/data/num/real_4.txt b/lib/yyjson-0.12.0/test/data/num/real_4.txt new file mode 100644 index 00000000000..a0917c75f1b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/real_4.txt @@ -0,0 +1,166 @@ +# ============================================================================== +# From glibc/stdlib/tst-strtod.c + +-0.0 +-0.000000 +3752432815e-39 +1.000000000116415321826934814453125 +42.0000000000000000001 +42.00000000000000000001 +42.000000000000000000001 + +179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0 + + +# ============================================================================== +# From glibc/stdlib/tst-strtod-round-data + +3.518437208883201171875E+013 +1.00000005960464477550 +1.0000000596046447755 +1.000000059604644776 +1.000000059604644775 +1.00000005960464478 +1.0000000596046448 +1.000000059604645 +1.00000005960464 +1.0000000596046 +1.000000059605 +1.00000005960 +1.0000000596 +1.000000060 +1.00000006 +1.0000001 +1.000000 +1.00000000000000011113 +1.00000000000000011103 +1.00000000000000011102 +1.00000000000000011101 +1.0000000000000001111 +1.000000000000000111 +1.00000000000000011 +1.0000000000000001 + + +3929201589819414e-25 +0.000000000000000000000000000000000000000000002101947696487225606385594374934874196920392912814773657635602425834686624028790902229957282543182373046875 +1.00000005960464477539062499 +1.000000059604644775390625 +1.00000005960464477539062501 +1.00000011920928955078125 +1.00000017881393432617187499 +1.000000178813934326171875 +1.00000017881393432617187501 +1.0000002384185791015625 +1.08420217248550443400745280086994171142578125e-19 +1.0842022371089897897127399001987457793916291848290711641311645507812499e-19 +1.08420223710898978971273990019874577939162918482907116413116455078125e-19 +1.0842022371089897897127399001987457793916291848290711641311645507812501e-19 +1.0842023017324751454180269995275498473574771196581423282623291015625e-19 +1.0842023663559605011233140988563539153233250544872134923934936523437499e-19 +1.08420236635596050112331409885635391532332505448721349239349365234375e-19 +1.0842023663559605011233140988563539153233250544872134923934936523437501e-19 +1.084202430979445856828601198185157983289172989316284656524658203125e-19 +7.52316384526264005099991383822237233803945956334136013765601092018187046051025390625e-37 +7.5231642936781486349413765338158389908126215730251815381410578824437213052434003657253924757242202758789062499e-37 +7.52316429367814863494137653381583899081262157302518153814105788244372130524340036572539247572422027587890625e-37 +7.5231642936781486349413765338158389908126215730251815381410578824437213052434003657253924757242202758789062501e-37 +7.5231647420936572188828392294093056435857835827090029386261048447055721499765468252007849514484405517578125e-37 +7.5231651905091658028243019250027722963589455923928243391111518069674229947096932846761774271726608276367187499e-37 +7.52316519050916580282430192500277229635894559239282433911115180696742299470969328467617742717266082763671875e-37 +7.5231651905091658028243019250027722963589455923928243391111518069674229947096932846761774271726608276367187501e-37 +7.523165638924674386765764620596238949132107602076645739596198769229273839442839744151569902896881103515625e-37 +340282356779733661637539395458142568447.999 +340282356779733661637539395458142568448.0 +340282356779733661637539395458142568448.001 +-340282356779733661637539395458142568447.999 +-340282356779733661637539395458142568448.0 +-340282356779733661637539395458142568448.001 +179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497791.999 +179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792.0 +179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792.001 +-179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497791.999 +-179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792.0 +-179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792.001 +1189731495357231765053511589829488667966254004695567218956499277562499181851727204760449442904570461384330567646167443286662555267489487930236325136097654342377232417536489080362029584951246485605740928178136611230674219048500381811805207877203107268812398885808170517032687767579195512604426112969939697309064970421357373593737548189791064578075396520278041564919877710332117871859964923206311175434753221226253534337199304629504137668677812103359730222935610071343425325633562626092674600633358193879055413937592435479934747155496913520748914500847834599706604816899916747713074435514585511372746030946789075371775796999312354227866587803370992862072730331502951338476357350089453460696354521572546926077765383044577075982892200047380230605947983926605074559374288887635146614087580689065065271437207231562037396763728185780908406142166217047877746112568232134313256340568095056911759884246066540728231159508276273778086735741815471986687141421432344475502062691975457742639931301197788106590436213127071090684338861628772228444915189303418963135612389885203608036075349871783050435209372998381734440835020273404521625820382960095748088096587424348978607559613437524195438026532392163371033702927429354975024746264545597290170945602348672367013792302348098432637396409095613884932277251719835310031547998505803752546406866843706502753183166325399209709698038388729144247605351114448647488475730429635692916794001788966968620265007002798266353024717022066273037990476329714600171995445673732316103762568799871343179341500144434361457105461379244904895252415230182712399067436456639767780598951274425173976825259444309519076481099524794546856555816525710213317614010389620491220471110091857573837438278112540147709446027133781874510952001326117006323864207925852079541370644269957126564493435341201207708574988136737425864785839645124060309307041974867276363338370018636105162869283008917743830711050229193144085029688094638483773246680141155923835213247853616763725824680857167751837090780487900840228387283614547346509044804890143691849792564977383927445249156165014494875205013001248617782698812613355440377357151258089863597284198597765215866830359241005748505543689358738031324284465243629136488333487686637331181039189590604124992017972343852392605049057443576119873279945400832860199527936922650062116335246759763699388664096895732875994904427617012292176896143437273923395471742216159840248646356256801083915667206811346470984128630513747606135060039717590702096972930814428759032404269759101709671790756463178143949787623821836792662477247624052842849718333550449622140658955581054081751312471819712726722479962465958577056952080928160441258225609897705262614494607339126216928069521406520619119688243287473394538225119027875465220992256233111477265049726174251028452120761620567236506258269287781320020740354052506311094266116406810709272834304862320539294205143454357131313879679493260017348668942730474494178249137387898297328336833589009038180169681270850774180709517707029996636939683240047817287633101083794404428541740415811916696232677498555197744273877942786661835044988438574758774422356087368185157228627335879058660154558309535912070401295584736621504268847267595223765835863174255756697267818931047523414328918687705134068360361363742640382966108545994545911705825697417989043286767551310728319742954355856116731710961138337957358885918445698641669559694166808074917226884181158917536699176609687522288426691820400183361523559409155799556283862329497478912575261457830579497761228960488413082611130636745385531466634515743840239035698486403517044157039226831085528805370810274043977756176084122952933117637894899009906118591255725255303492783199432613047841255537488113392259699564654048366964907825009036946741350368993216860237824660346368178183476516236016631293185747612693520285606412666148401080833153012602745585750872969103848152851344605317151546396041150523486651715472516090757848631964035419441554251667764234034722117421393132102998968842527073068624998951156916755512381404671428195378673434142765187038589280087599553911407299582781759652177398265112189244631130776935980062283655148992367895151475032666162688096176262281649169171506024644941424855074678761732513983988468070793092275675388024763356241941156378024394000502219343689759498466840264622527907455975633934878799543518206521383037618795439338086429200645002065120039545639315698201147683480515936292743251499063438531296922453863968872815997353125881179686462705170051219974666064694475306164653842558263043808428507798331085671416437696164008096171739721381877119714312306163210350382599226246553966125970240408129674442076735944784179006667645805896851048093638137596670696937010699212957919299380937222250509562807981779341384684146547286314982564181910419531236194060603634063907761401557097370591258981203660079555061603095538604465962028762337280258716255780315038694244061790279947528902264433516193654532433289688740976918527.999 +1189731495357231765053511589829488667966254004695567218956499277562499181851727204760449442904570461384330567646167443286662555267489487930236325136097654342377232417536489080362029584951246485605740928178136611230674219048500381811805207877203107268812398885808170517032687767579195512604426112969939697309064970421357373593737548189791064578075396520278041564919877710332117871859964923206311175434753221226253534337199304629504137668677812103359730222935610071343425325633562626092674600633358193879055413937592435479934747155496913520748914500847834599706604816899916747713074435514585511372746030946789075371775796999312354227866587803370992862072730331502951338476357350089453460696354521572546926077765383044577075982892200047380230605947983926605074559374288887635146614087580689065065271437207231562037396763728185780908406142166217047877746112568232134313256340568095056911759884246066540728231159508276273778086735741815471986687141421432344475502062691975457742639931301197788106590436213127071090684338861628772228444915189303418963135612389885203608036075349871783050435209372998381734440835020273404521625820382960095748088096587424348978607559613437524195438026532392163371033702927429354975024746264545597290170945602348672367013792302348098432637396409095613884932277251719835310031547998505803752546406866843706502753183166325399209709698038388729144247605351114448647488475730429635692916794001788966968620265007002798266353024717022066273037990476329714600171995445673732316103762568799871343179341500144434361457105461379244904895252415230182712399067436456639767780598951274425173976825259444309519076481099524794546856555816525710213317614010389620491220471110091857573837438278112540147709446027133781874510952001326117006323864207925852079541370644269957126564493435341201207708574988136737425864785839645124060309307041974867276363338370018636105162869283008917743830711050229193144085029688094638483773246680141155923835213247853616763725824680857167751837090780487900840228387283614547346509044804890143691849792564977383927445249156165014494875205013001248617782698812613355440377357151258089863597284198597765215866830359241005748505543689358738031324284465243629136488333487686637331181039189590604124992017972343852392605049057443576119873279945400832860199527936922650062116335246759763699388664096895732875994904427617012292176896143437273923395471742216159840248646356256801083915667206811346470984128630513747606135060039717590702096972930814428759032404269759101709671790756463178143949787623821836792662477247624052842849718333550449622140658955581054081751312471819712726722479962465958577056952080928160441258225609897705262614494607339126216928069521406520619119688243287473394538225119027875465220992256233111477265049726174251028452120761620567236506258269287781320020740354052506311094266116406810709272834304862320539294205143454357131313879679493260017348668942730474494178249137387898297328336833589009038180169681270850774180709517707029996636939683240047817287633101083794404428541740415811916696232677498555197744273877942786661835044988438574758774422356087368185157228627335879058660154558309535912070401295584736621504268847267595223765835863174255756697267818931047523414328918687705134068360361363742640382966108545994545911705825697417989043286767551310728319742954355856116731710961138337957358885918445698641669559694166808074917226884181158917536699176609687522288426691820400183361523559409155799556283862329497478912575261457830579497761228960488413082611130636745385531466634515743840239035698486403517044157039226831085528805370810274043977756176084122952933117637894899009906118591255725255303492783199432613047841255537488113392259699564654048366964907825009036946741350368993216860237824660346368178183476516236016631293185747612693520285606412666148401080833153012602745585750872969103848152851344605317151546396041150523486651715472516090757848631964035419441554251667764234034722117421393132102998968842527073068624998951156916755512381404671428195378673434142765187038589280087599553911407299582781759652177398265112189244631130776935980062283655148992367895151475032666162688096176262281649169171506024644941424855074678761732513983988468070793092275675388024763356241941156378024394000502219343689759498466840264622527907455975633934878799543518206521383037618795439338086429200645002065120039545639315698201147683480515936292743251499063438531296922453863968872815997353125881179686462705170051219974666064694475306164653842558263043808428507798331085671416437696164008096171739721381877119714312306163210350382599226246553966125970240408129674442076735944784179006667645805896851048093638137596670696937010699212957919299380937222250509562807981779341384684146547286314982564181910419531236194060603634063907761401557097370591258981203660079555061603095538604465962028762337280258716255780315038694244061790279947528902264433516193654532433289688740976918528.0 +1189731495357231765053511589829488667966254004695567218956499277562499181851727204760449442904570461384330567646167443286662555267489487930236325136097654342377232417536489080362029584951246485605740928178136611230674219048500381811805207877203107268812398885808170517032687767579195512604426112969939697309064970421357373593737548189791064578075396520278041564919877710332117871859964923206311175434753221226253534337199304629504137668677812103359730222935610071343425325633562626092674600633358193879055413937592435479934747155496913520748914500847834599706604816899916747713074435514585511372746030946789075371775796999312354227866587803370992862072730331502951338476357350089453460696354521572546926077765383044577075982892200047380230605947983926605074559374288887635146614087580689065065271437207231562037396763728185780908406142166217047877746112568232134313256340568095056911759884246066540728231159508276273778086735741815471986687141421432344475502062691975457742639931301197788106590436213127071090684338861628772228444915189303418963135612389885203608036075349871783050435209372998381734440835020273404521625820382960095748088096587424348978607559613437524195438026532392163371033702927429354975024746264545597290170945602348672367013792302348098432637396409095613884932277251719835310031547998505803752546406866843706502753183166325399209709698038388729144247605351114448647488475730429635692916794001788966968620265007002798266353024717022066273037990476329714600171995445673732316103762568799871343179341500144434361457105461379244904895252415230182712399067436456639767780598951274425173976825259444309519076481099524794546856555816525710213317614010389620491220471110091857573837438278112540147709446027133781874510952001326117006323864207925852079541370644269957126564493435341201207708574988136737425864785839645124060309307041974867276363338370018636105162869283008917743830711050229193144085029688094638483773246680141155923835213247853616763725824680857167751837090780487900840228387283614547346509044804890143691849792564977383927445249156165014494875205013001248617782698812613355440377357151258089863597284198597765215866830359241005748505543689358738031324284465243629136488333487686637331181039189590604124992017972343852392605049057443576119873279945400832860199527936922650062116335246759763699388664096895732875994904427617012292176896143437273923395471742216159840248646356256801083915667206811346470984128630513747606135060039717590702096972930814428759032404269759101709671790756463178143949787623821836792662477247624052842849718333550449622140658955581054081751312471819712726722479962465958577056952080928160441258225609897705262614494607339126216928069521406520619119688243287473394538225119027875465220992256233111477265049726174251028452120761620567236506258269287781320020740354052506311094266116406810709272834304862320539294205143454357131313879679493260017348668942730474494178249137387898297328336833589009038180169681270850774180709517707029996636939683240047817287633101083794404428541740415811916696232677498555197744273877942786661835044988438574758774422356087368185157228627335879058660154558309535912070401295584736621504268847267595223765835863174255756697267818931047523414328918687705134068360361363742640382966108545994545911705825697417989043286767551310728319742954355856116731710961138337957358885918445698641669559694166808074917226884181158917536699176609687522288426691820400183361523559409155799556283862329497478912575261457830579497761228960488413082611130636745385531466634515743840239035698486403517044157039226831085528805370810274043977756176084122952933117637894899009906118591255725255303492783199432613047841255537488113392259699564654048366964907825009036946741350368993216860237824660346368178183476516236016631293185747612693520285606412666148401080833153012602745585750872969103848152851344605317151546396041150523486651715472516090757848631964035419441554251667764234034722117421393132102998968842527073068624998951156916755512381404671428195378673434142765187038589280087599553911407299582781759652177398265112189244631130776935980062283655148992367895151475032666162688096176262281649169171506024644941424855074678761732513983988468070793092275675388024763356241941156378024394000502219343689759498466840264622527907455975633934878799543518206521383037618795439338086429200645002065120039545639315698201147683480515936292743251499063438531296922453863968872815997353125881179686462705170051219974666064694475306164653842558263043808428507798331085671416437696164008096171739721381877119714312306163210350382599226246553966125970240408129674442076735944784179006667645805896851048093638137596670696937010699212957919299380937222250509562807981779341384684146547286314982564181910419531236194060603634063907761401557097370591258981203660079555061603095538604465962028762337280258716255780315038694244061790279947528902264433516193654532433289688740976918528.001 +-1189731495357231765053511589829488667966254004695567218956499277562499181851727204760449442904570461384330567646167443286662555267489487930236325136097654342377232417536489080362029584951246485605740928178136611230674219048500381811805207877203107268812398885808170517032687767579195512604426112969939697309064970421357373593737548189791064578075396520278041564919877710332117871859964923206311175434753221226253534337199304629504137668677812103359730222935610071343425325633562626092674600633358193879055413937592435479934747155496913520748914500847834599706604816899916747713074435514585511372746030946789075371775796999312354227866587803370992862072730331502951338476357350089453460696354521572546926077765383044577075982892200047380230605947983926605074559374288887635146614087580689065065271437207231562037396763728185780908406142166217047877746112568232134313256340568095056911759884246066540728231159508276273778086735741815471986687141421432344475502062691975457742639931301197788106590436213127071090684338861628772228444915189303418963135612389885203608036075349871783050435209372998381734440835020273404521625820382960095748088096587424348978607559613437524195438026532392163371033702927429354975024746264545597290170945602348672367013792302348098432637396409095613884932277251719835310031547998505803752546406866843706502753183166325399209709698038388729144247605351114448647488475730429635692916794001788966968620265007002798266353024717022066273037990476329714600171995445673732316103762568799871343179341500144434361457105461379244904895252415230182712399067436456639767780598951274425173976825259444309519076481099524794546856555816525710213317614010389620491220471110091857573837438278112540147709446027133781874510952001326117006323864207925852079541370644269957126564493435341201207708574988136737425864785839645124060309307041974867276363338370018636105162869283008917743830711050229193144085029688094638483773246680141155923835213247853616763725824680857167751837090780487900840228387283614547346509044804890143691849792564977383927445249156165014494875205013001248617782698812613355440377357151258089863597284198597765215866830359241005748505543689358738031324284465243629136488333487686637331181039189590604124992017972343852392605049057443576119873279945400832860199527936922650062116335246759763699388664096895732875994904427617012292176896143437273923395471742216159840248646356256801083915667206811346470984128630513747606135060039717590702096972930814428759032404269759101709671790756463178143949787623821836792662477247624052842849718333550449622140658955581054081751312471819712726722479962465958577056952080928160441258225609897705262614494607339126216928069521406520619119688243287473394538225119027875465220992256233111477265049726174251028452120761620567236506258269287781320020740354052506311094266116406810709272834304862320539294205143454357131313879679493260017348668942730474494178249137387898297328336833589009038180169681270850774180709517707029996636939683240047817287633101083794404428541740415811916696232677498555197744273877942786661835044988438574758774422356087368185157228627335879058660154558309535912070401295584736621504268847267595223765835863174255756697267818931047523414328918687705134068360361363742640382966108545994545911705825697417989043286767551310728319742954355856116731710961138337957358885918445698641669559694166808074917226884181158917536699176609687522288426691820400183361523559409155799556283862329497478912575261457830579497761228960488413082611130636745385531466634515743840239035698486403517044157039226831085528805370810274043977756176084122952933117637894899009906118591255725255303492783199432613047841255537488113392259699564654048366964907825009036946741350368993216860237824660346368178183476516236016631293185747612693520285606412666148401080833153012602745585750872969103848152851344605317151546396041150523486651715472516090757848631964035419441554251667764234034722117421393132102998968842527073068624998951156916755512381404671428195378673434142765187038589280087599553911407299582781759652177398265112189244631130776935980062283655148992367895151475032666162688096176262281649169171506024644941424855074678761732513983988468070793092275675388024763356241941156378024394000502219343689759498466840264622527907455975633934878799543518206521383037618795439338086429200645002065120039545639315698201147683480515936292743251499063438531296922453863968872815997353125881179686462705170051219974666064694475306164653842558263043808428507798331085671416437696164008096171739721381877119714312306163210350382599226246553966125970240408129674442076735944784179006667645805896851048093638137596670696937010699212957919299380937222250509562807981779341384684146547286314982564181910419531236194060603634063907761401557097370591258981203660079555061603095538604465962028762337280258716255780315038694244061790279947528902264433516193654532433289688740976918527.999 +-1189731495357231765053511589829488667966254004695567218956499277562499181851727204760449442904570461384330567646167443286662555267489487930236325136097654342377232417536489080362029584951246485605740928178136611230674219048500381811805207877203107268812398885808170517032687767579195512604426112969939697309064970421357373593737548189791064578075396520278041564919877710332117871859964923206311175434753221226253534337199304629504137668677812103359730222935610071343425325633562626092674600633358193879055413937592435479934747155496913520748914500847834599706604816899916747713074435514585511372746030946789075371775796999312354227866587803370992862072730331502951338476357350089453460696354521572546926077765383044577075982892200047380230605947983926605074559374288887635146614087580689065065271437207231562037396763728185780908406142166217047877746112568232134313256340568095056911759884246066540728231159508276273778086735741815471986687141421432344475502062691975457742639931301197788106590436213127071090684338861628772228444915189303418963135612389885203608036075349871783050435209372998381734440835020273404521625820382960095748088096587424348978607559613437524195438026532392163371033702927429354975024746264545597290170945602348672367013792302348098432637396409095613884932277251719835310031547998505803752546406866843706502753183166325399209709698038388729144247605351114448647488475730429635692916794001788966968620265007002798266353024717022066273037990476329714600171995445673732316103762568799871343179341500144434361457105461379244904895252415230182712399067436456639767780598951274425173976825259444309519076481099524794546856555816525710213317614010389620491220471110091857573837438278112540147709446027133781874510952001326117006323864207925852079541370644269957126564493435341201207708574988136737425864785839645124060309307041974867276363338370018636105162869283008917743830711050229193144085029688094638483773246680141155923835213247853616763725824680857167751837090780487900840228387283614547346509044804890143691849792564977383927445249156165014494875205013001248617782698812613355440377357151258089863597284198597765215866830359241005748505543689358738031324284465243629136488333487686637331181039189590604124992017972343852392605049057443576119873279945400832860199527936922650062116335246759763699388664096895732875994904427617012292176896143437273923395471742216159840248646356256801083915667206811346470984128630513747606135060039717590702096972930814428759032404269759101709671790756463178143949787623821836792662477247624052842849718333550449622140658955581054081751312471819712726722479962465958577056952080928160441258225609897705262614494607339126216928069521406520619119688243287473394538225119027875465220992256233111477265049726174251028452120761620567236506258269287781320020740354052506311094266116406810709272834304862320539294205143454357131313879679493260017348668942730474494178249137387898297328336833589009038180169681270850774180709517707029996636939683240047817287633101083794404428541740415811916696232677498555197744273877942786661835044988438574758774422356087368185157228627335879058660154558309535912070401295584736621504268847267595223765835863174255756697267818931047523414328918687705134068360361363742640382966108545994545911705825697417989043286767551310728319742954355856116731710961138337957358885918445698641669559694166808074917226884181158917536699176609687522288426691820400183361523559409155799556283862329497478912575261457830579497761228960488413082611130636745385531466634515743840239035698486403517044157039226831085528805370810274043977756176084122952933117637894899009906118591255725255303492783199432613047841255537488113392259699564654048366964907825009036946741350368993216860237824660346368178183476516236016631293185747612693520285606412666148401080833153012602745585750872969103848152851344605317151546396041150523486651715472516090757848631964035419441554251667764234034722117421393132102998968842527073068624998951156916755512381404671428195378673434142765187038589280087599553911407299582781759652177398265112189244631130776935980062283655148992367895151475032666162688096176262281649169171506024644941424855074678761732513983988468070793092275675388024763356241941156378024394000502219343689759498466840264622527907455975633934878799543518206521383037618795439338086429200645002065120039545639315698201147683480515936292743251499063438531296922453863968872815997353125881179686462705170051219974666064694475306164653842558263043808428507798331085671416437696164008096171739721381877119714312306163210350382599226246553966125970240408129674442076735944784179006667645805896851048093638137596670696937010699212957919299380937222250509562807981779341384684146547286314982564181910419531236194060603634063907761401557097370591258981203660079555061603095538604465962028762337280258716255780315038694244061790279947528902264433516193654532433289688740976918528.0 +-1189731495357231765053511589829488667966254004695567218956499277562499181851727204760449442904570461384330567646167443286662555267489487930236325136097654342377232417536489080362029584951246485605740928178136611230674219048500381811805207877203107268812398885808170517032687767579195512604426112969939697309064970421357373593737548189791064578075396520278041564919877710332117871859964923206311175434753221226253534337199304629504137668677812103359730222935610071343425325633562626092674600633358193879055413937592435479934747155496913520748914500847834599706604816899916747713074435514585511372746030946789075371775796999312354227866587803370992862072730331502951338476357350089453460696354521572546926077765383044577075982892200047380230605947983926605074559374288887635146614087580689065065271437207231562037396763728185780908406142166217047877746112568232134313256340568095056911759884246066540728231159508276273778086735741815471986687141421432344475502062691975457742639931301197788106590436213127071090684338861628772228444915189303418963135612389885203608036075349871783050435209372998381734440835020273404521625820382960095748088096587424348978607559613437524195438026532392163371033702927429354975024746264545597290170945602348672367013792302348098432637396409095613884932277251719835310031547998505803752546406866843706502753183166325399209709698038388729144247605351114448647488475730429635692916794001788966968620265007002798266353024717022066273037990476329714600171995445673732316103762568799871343179341500144434361457105461379244904895252415230182712399067436456639767780598951274425173976825259444309519076481099524794546856555816525710213317614010389620491220471110091857573837438278112540147709446027133781874510952001326117006323864207925852079541370644269957126564493435341201207708574988136737425864785839645124060309307041974867276363338370018636105162869283008917743830711050229193144085029688094638483773246680141155923835213247853616763725824680857167751837090780487900840228387283614547346509044804890143691849792564977383927445249156165014494875205013001248617782698812613355440377357151258089863597284198597765215866830359241005748505543689358738031324284465243629136488333487686637331181039189590604124992017972343852392605049057443576119873279945400832860199527936922650062116335246759763699388664096895732875994904427617012292176896143437273923395471742216159840248646356256801083915667206811346470984128630513747606135060039717590702096972930814428759032404269759101709671790756463178143949787623821836792662477247624052842849718333550449622140658955581054081751312471819712726722479962465958577056952080928160441258225609897705262614494607339126216928069521406520619119688243287473394538225119027875465220992256233111477265049726174251028452120761620567236506258269287781320020740354052506311094266116406810709272834304862320539294205143454357131313879679493260017348668942730474494178249137387898297328336833589009038180169681270850774180709517707029996636939683240047817287633101083794404428541740415811916696232677498555197744273877942786661835044988438574758774422356087368185157228627335879058660154558309535912070401295584736621504268847267595223765835863174255756697267818931047523414328918687705134068360361363742640382966108545994545911705825697417989043286767551310728319742954355856116731710961138337957358885918445698641669559694166808074917226884181158917536699176609687522288426691820400183361523559409155799556283862329497478912575261457830579497761228960488413082611130636745385531466634515743840239035698486403517044157039226831085528805370810274043977756176084122952933117637894899009906118591255725255303492783199432613047841255537488113392259699564654048366964907825009036946741350368993216860237824660346368178183476516236016631293185747612693520285606412666148401080833153012602745585750872969103848152851344605317151546396041150523486651715472516090757848631964035419441554251667764234034722117421393132102998968842527073068624998951156916755512381404671428195378673434142765187038589280087599553911407299582781759652177398265112189244631130776935980062283655148992367895151475032666162688096176262281649169171506024644941424855074678761732513983988468070793092275675388024763356241941156378024394000502219343689759498466840264622527907455975633934878799543518206521383037618795439338086429200645002065120039545639315698201147683480515936292743251499063438531296922453863968872815997353125881179686462705170051219974666064694475306164653842558263043808428507798331085671416437696164008096171739721381877119714312306163210350382599226246553966125970240408129674442076735944784179006667645805896851048093638137596670696937010699212957919299380937222250509562807981779341384684146547286314982564181910419531236194060603634063907761401557097370591258981203660079555061603095538604465962028762337280258716255780315038694244061790279947528902264433516193654532433289688740976918528.001 +1189731495357231765085759326628007073479956869869102141501186852722712468967898039614731304160537056720508735524794218059326466407441245944473611725143413248467166796545513080184004525512467970210316955903084154210995219628561620502745688412979158287475743437748747529021767100495257876251386789060100486382120270573746835428422826338960972409135720437886908785614210084478384078153933033666173528598766851519250363351426064628258395419088471393111667700918729834985086320676654241316634560118019882210119337445330955835919527132875094715720056355846555701747536986251959671182002652387533752686564043006387189322467736998297209841197138514624008092952665297074506030396759964773170346856327642777902149445005909504598179054586496247232351389508014081573398665168934777318775791837135956795815584276253258339396528978452820191499230693717636210145879266988271829694083738038077122921912824291024453524934340394022902439339419069066610906029009607658742583030029946393156561520787087964747197937630779342237465827257153805466210260228188924675519409775662832664987585685048138307557155853256492278248578919164433813909200793462409840728598763947896501274688614908225267667177701366807438669326623433058218213443062408099675370787076912329373870411405571681619566725953239506667420107865842757661716617919733022513948046643510651078865572997073260056512303946747105979292110003450407489924836142530065624248678935670746065899317880622000638073367400369402302158314033221251653687424468051520786824115060818437539740055831113916055471483034808874617739843143938172333284262271469979254217432808855959164876994617775909494325360213896498452140653220161981435472501438614603134083005358006470142761755484855437912983836446436796696188799077203473615780300012474195744483595979884254878292198513051622049258764225807542304782444925923341494613428285320468971377328625604051015673705708956626631746891317417396029708456942140863834024650370695696409569123851257481398138888752582030034869787470552028103940729085803240085987569938856671422005581372166650497556769407574429118602955596567887598719046627586511067969787887833869882951233268645804198215954308918671793783729688211286988794688142675294614947234254538088223560934361145676358046211831627683890340178210365154617001635372653348370422726598857026002477929177288289123739070353691365311645518715750245510770260801141976525982246774038853785442558514521428892111522375063439093517487315386834431958429128019507409290585031131279294212910898440219254009319059392162713475019891930586543895163777707714398600339409818266699397506309660607491889862314049922386749339985169589508248405389966372279472368480994566101598780613797426213113809272341186010030687520020604372850246235750477820866306072249009107891882044221153421572454947459745218327822086016027106392614825047067937041894741980478402880643992102437022027245971074555342753214011193822631471157489050501952568860820401920833804902096485703539056563038766617104309221550246208420803236102663918198532911605896456149452566847699113209434574026975730941194301255893892984954283771852399164279918441721650800291777296251806440774844416950920058440264116651186795378697819243783770608877693892976259074109340205317427395771831523271197915676367134269045536541349377669517895718456625645303642348316558188118515730182101737730372539888936801532474040601312554322979825347707786172180885839980406705981955978435796108903153166067253815216088254644383863063765964591075911345075411534030241991912223282597135304726831878735179556423807036390298160370960490420948364372810759652439684318393869597369898890279242300069046830503059657125858043553373113729594871087942860315948055593344147677932119321424028600190292509664619336217631490498027916950777163752425164438252351468600785554531423979834791445600150108890772427261831495874930509509679414887523661977405914784645916502014777727175798319834059621717421648892845862179131151362279648610789587662840109016397812560123410281881558369684764808427158589621053418154441646967665840185085136102607775409115734963155803833286789583501481573372226195484679719674349562964338708154613401347218002057551149833995233231065737207320566592164688912051242035274499618147339269167576074688060033124924140616954310412384530235227956908301847998406574780144353357884105883387959218296741020722854954100887277304947480547152700263711114665576920925961724019512061174430771918685854961160518537953685957360038825116204970615989239857746870933341859397441672382036764530524729808239765622931171203720639459438906663253650619610229282159290703571350858167568164860431176138378765549296218562697437528856056494473388171789278961444737763604387979003662127798027475934505640301147524790717395857232708656327584954348395562117135230986025734451614751913114005140624270977801178582308406486958461409022442175446835595658183592121309722334474915831657286355138025915434411459395393534709704525536550715391.999 +1189731495357231765085759326628007073479956869869102141501186852722712468967898039614731304160537056720508735524794218059326466407441245944473611725143413248467166796545513080184004525512467970210316955903084154210995219628561620502745688412979158287475743437748747529021767100495257876251386789060100486382120270573746835428422826338960972409135720437886908785614210084478384078153933033666173528598766851519250363351426064628258395419088471393111667700918729834985086320676654241316634560118019882210119337445330955835919527132875094715720056355846555701747536986251959671182002652387533752686564043006387189322467736998297209841197138514624008092952665297074506030396759964773170346856327642777902149445005909504598179054586496247232351389508014081573398665168934777318775791837135956795815584276253258339396528978452820191499230693717636210145879266988271829694083738038077122921912824291024453524934340394022902439339419069066610906029009607658742583030029946393156561520787087964747197937630779342237465827257153805466210260228188924675519409775662832664987585685048138307557155853256492278248578919164433813909200793462409840728598763947896501274688614908225267667177701366807438669326623433058218213443062408099675370787076912329373870411405571681619566725953239506667420107865842757661716617919733022513948046643510651078865572997073260056512303946747105979292110003450407489924836142530065624248678935670746065899317880622000638073367400369402302158314033221251653687424468051520786824115060818437539740055831113916055471483034808874617739843143938172333284262271469979254217432808855959164876994617775909494325360213896498452140653220161981435472501438614603134083005358006470142761755484855437912983836446436796696188799077203473615780300012474195744483595979884254878292198513051622049258764225807542304782444925923341494613428285320468971377328625604051015673705708956626631746891317417396029708456942140863834024650370695696409569123851257481398138888752582030034869787470552028103940729085803240085987569938856671422005581372166650497556769407574429118602955596567887598719046627586511067969787887833869882951233268645804198215954308918671793783729688211286988794688142675294614947234254538088223560934361145676358046211831627683890340178210365154617001635372653348370422726598857026002477929177288289123739070353691365311645518715750245510770260801141976525982246774038853785442558514521428892111522375063439093517487315386834431958429128019507409290585031131279294212910898440219254009319059392162713475019891930586543895163777707714398600339409818266699397506309660607491889862314049922386749339985169589508248405389966372279472368480994566101598780613797426213113809272341186010030687520020604372850246235750477820866306072249009107891882044221153421572454947459745218327822086016027106392614825047067937041894741980478402880643992102437022027245971074555342753214011193822631471157489050501952568860820401920833804902096485703539056563038766617104309221550246208420803236102663918198532911605896456149452566847699113209434574026975730941194301255893892984954283771852399164279918441721650800291777296251806440774844416950920058440264116651186795378697819243783770608877693892976259074109340205317427395771831523271197915676367134269045536541349377669517895718456625645303642348316558188118515730182101737730372539888936801532474040601312554322979825347707786172180885839980406705981955978435796108903153166067253815216088254644383863063765964591075911345075411534030241991912223282597135304726831878735179556423807036390298160370960490420948364372810759652439684318393869597369898890279242300069046830503059657125858043553373113729594871087942860315948055593344147677932119321424028600190292509664619336217631490498027916950777163752425164438252351468600785554531423979834791445600150108890772427261831495874930509509679414887523661977405914784645916502014777727175798319834059621717421648892845862179131151362279648610789587662840109016397812560123410281881558369684764808427158589621053418154441646967665840185085136102607775409115734963155803833286789583501481573372226195484679719674349562964338708154613401347218002057551149833995233231065737207320566592164688912051242035274499618147339269167576074688060033124924140616954310412384530235227956908301847998406574780144353357884105883387959218296741020722854954100887277304947480547152700263711114665576920925961724019512061174430771918685854961160518537953685957360038825116204970615989239857746870933341859397441672382036764530524729808239765622931171203720639459438906663253650619610229282159290703571350858167568164860431176138378765549296218562697437528856056494473388171789278961444737763604387979003662127798027475934505640301147524790717395857232708656327584954348395562117135230986025734451614751913114005140624270977801178582308406486958461409022442175446835595658183592121309722334474915831657286355138025915434411459395393534709704525536550715392.0 +1189731495357231765085759326628007073479956869869102141501186852722712468967898039614731304160537056720508735524794218059326466407441245944473611725143413248467166796545513080184004525512467970210316955903084154210995219628561620502745688412979158287475743437748747529021767100495257876251386789060100486382120270573746835428422826338960972409135720437886908785614210084478384078153933033666173528598766851519250363351426064628258395419088471393111667700918729834985086320676654241316634560118019882210119337445330955835919527132875094715720056355846555701747536986251959671182002652387533752686564043006387189322467736998297209841197138514624008092952665297074506030396759964773170346856327642777902149445005909504598179054586496247232351389508014081573398665168934777318775791837135956795815584276253258339396528978452820191499230693717636210145879266988271829694083738038077122921912824291024453524934340394022902439339419069066610906029009607658742583030029946393156561520787087964747197937630779342237465827257153805466210260228188924675519409775662832664987585685048138307557155853256492278248578919164433813909200793462409840728598763947896501274688614908225267667177701366807438669326623433058218213443062408099675370787076912329373870411405571681619566725953239506667420107865842757661716617919733022513948046643510651078865572997073260056512303946747105979292110003450407489924836142530065624248678935670746065899317880622000638073367400369402302158314033221251653687424468051520786824115060818437539740055831113916055471483034808874617739843143938172333284262271469979254217432808855959164876994617775909494325360213896498452140653220161981435472501438614603134083005358006470142761755484855437912983836446436796696188799077203473615780300012474195744483595979884254878292198513051622049258764225807542304782444925923341494613428285320468971377328625604051015673705708956626631746891317417396029708456942140863834024650370695696409569123851257481398138888752582030034869787470552028103940729085803240085987569938856671422005581372166650497556769407574429118602955596567887598719046627586511067969787887833869882951233268645804198215954308918671793783729688211286988794688142675294614947234254538088223560934361145676358046211831627683890340178210365154617001635372653348370422726598857026002477929177288289123739070353691365311645518715750245510770260801141976525982246774038853785442558514521428892111522375063439093517487315386834431958429128019507409290585031131279294212910898440219254009319059392162713475019891930586543895163777707714398600339409818266699397506309660607491889862314049922386749339985169589508248405389966372279472368480994566101598780613797426213113809272341186010030687520020604372850246235750477820866306072249009107891882044221153421572454947459745218327822086016027106392614825047067937041894741980478402880643992102437022027245971074555342753214011193822631471157489050501952568860820401920833804902096485703539056563038766617104309221550246208420803236102663918198532911605896456149452566847699113209434574026975730941194301255893892984954283771852399164279918441721650800291777296251806440774844416950920058440264116651186795378697819243783770608877693892976259074109340205317427395771831523271197915676367134269045536541349377669517895718456625645303642348316558188118515730182101737730372539888936801532474040601312554322979825347707786172180885839980406705981955978435796108903153166067253815216088254644383863063765964591075911345075411534030241991912223282597135304726831878735179556423807036390298160370960490420948364372810759652439684318393869597369898890279242300069046830503059657125858043553373113729594871087942860315948055593344147677932119321424028600190292509664619336217631490498027916950777163752425164438252351468600785554531423979834791445600150108890772427261831495874930509509679414887523661977405914784645916502014777727175798319834059621717421648892845862179131151362279648610789587662840109016397812560123410281881558369684764808427158589621053418154441646967665840185085136102607775409115734963155803833286789583501481573372226195484679719674349562964338708154613401347218002057551149833995233231065737207320566592164688912051242035274499618147339269167576074688060033124924140616954310412384530235227956908301847998406574780144353357884105883387959218296741020722854954100887277304947480547152700263711114665576920925961724019512061174430771918685854961160518537953685957360038825116204970615989239857746870933341859397441672382036764530524729808239765622931171203720639459438906663253650619610229282159290703571350858167568164860431176138378765549296218562697437528856056494473388171789278961444737763604387979003662127798027475934505640301147524790717395857232708656327584954348395562117135230986025734451614751913114005140624270977801178582308406486958461409022442175446835595658183592121309722334474915831657286355138025915434411459395393534709704525536550715392.001 +-1189731495357231765085759326628007073479956869869102141501186852722712468967898039614731304160537056720508735524794218059326466407441245944473611725143413248467166796545513080184004525512467970210316955903084154210995219628561620502745688412979158287475743437748747529021767100495257876251386789060100486382120270573746835428422826338960972409135720437886908785614210084478384078153933033666173528598766851519250363351426064628258395419088471393111667700918729834985086320676654241316634560118019882210119337445330955835919527132875094715720056355846555701747536986251959671182002652387533752686564043006387189322467736998297209841197138514624008092952665297074506030396759964773170346856327642777902149445005909504598179054586496247232351389508014081573398665168934777318775791837135956795815584276253258339396528978452820191499230693717636210145879266988271829694083738038077122921912824291024453524934340394022902439339419069066610906029009607658742583030029946393156561520787087964747197937630779342237465827257153805466210260228188924675519409775662832664987585685048138307557155853256492278248578919164433813909200793462409840728598763947896501274688614908225267667177701366807438669326623433058218213443062408099675370787076912329373870411405571681619566725953239506667420107865842757661716617919733022513948046643510651078865572997073260056512303946747105979292110003450407489924836142530065624248678935670746065899317880622000638073367400369402302158314033221251653687424468051520786824115060818437539740055831113916055471483034808874617739843143938172333284262271469979254217432808855959164876994617775909494325360213896498452140653220161981435472501438614603134083005358006470142761755484855437912983836446436796696188799077203473615780300012474195744483595979884254878292198513051622049258764225807542304782444925923341494613428285320468971377328625604051015673705708956626631746891317417396029708456942140863834024650370695696409569123851257481398138888752582030034869787470552028103940729085803240085987569938856671422005581372166650497556769407574429118602955596567887598719046627586511067969787887833869882951233268645804198215954308918671793783729688211286988794688142675294614947234254538088223560934361145676358046211831627683890340178210365154617001635372653348370422726598857026002477929177288289123739070353691365311645518715750245510770260801141976525982246774038853785442558514521428892111522375063439093517487315386834431958429128019507409290585031131279294212910898440219254009319059392162713475019891930586543895163777707714398600339409818266699397506309660607491889862314049922386749339985169589508248405389966372279472368480994566101598780613797426213113809272341186010030687520020604372850246235750477820866306072249009107891882044221153421572454947459745218327822086016027106392614825047067937041894741980478402880643992102437022027245971074555342753214011193822631471157489050501952568860820401920833804902096485703539056563038766617104309221550246208420803236102663918198532911605896456149452566847699113209434574026975730941194301255893892984954283771852399164279918441721650800291777296251806440774844416950920058440264116651186795378697819243783770608877693892976259074109340205317427395771831523271197915676367134269045536541349377669517895718456625645303642348316558188118515730182101737730372539888936801532474040601312554322979825347707786172180885839980406705981955978435796108903153166067253815216088254644383863063765964591075911345075411534030241991912223282597135304726831878735179556423807036390298160370960490420948364372810759652439684318393869597369898890279242300069046830503059657125858043553373113729594871087942860315948055593344147677932119321424028600190292509664619336217631490498027916950777163752425164438252351468600785554531423979834791445600150108890772427261831495874930509509679414887523661977405914784645916502014777727175798319834059621717421648892845862179131151362279648610789587662840109016397812560123410281881558369684764808427158589621053418154441646967665840185085136102607775409115734963155803833286789583501481573372226195484679719674349562964338708154613401347218002057551149833995233231065737207320566592164688912051242035274499618147339269167576074688060033124924140616954310412384530235227956908301847998406574780144353357884105883387959218296741020722854954100887277304947480547152700263711114665576920925961724019512061174430771918685854961160518537953685957360038825116204970615989239857746870933341859397441672382036764530524729808239765622931171203720639459438906663253650619610229282159290703571350858167568164860431176138378765549296218562697437528856056494473388171789278961444737763604387979003662127798027475934505640301147524790717395857232708656327584954348395562117135230986025734451614751913114005140624270977801178582308406486958461409022442175446835595658183592121309722334474915831657286355138025915434411459395393534709704525536550715391.999 +-1189731495357231765085759326628007073479956869869102141501186852722712468967898039614731304160537056720508735524794218059326466407441245944473611725143413248467166796545513080184004525512467970210316955903084154210995219628561620502745688412979158287475743437748747529021767100495257876251386789060100486382120270573746835428422826338960972409135720437886908785614210084478384078153933033666173528598766851519250363351426064628258395419088471393111667700918729834985086320676654241316634560118019882210119337445330955835919527132875094715720056355846555701747536986251959671182002652387533752686564043006387189322467736998297209841197138514624008092952665297074506030396759964773170346856327642777902149445005909504598179054586496247232351389508014081573398665168934777318775791837135956795815584276253258339396528978452820191499230693717636210145879266988271829694083738038077122921912824291024453524934340394022902439339419069066610906029009607658742583030029946393156561520787087964747197937630779342237465827257153805466210260228188924675519409775662832664987585685048138307557155853256492278248578919164433813909200793462409840728598763947896501274688614908225267667177701366807438669326623433058218213443062408099675370787076912329373870411405571681619566725953239506667420107865842757661716617919733022513948046643510651078865572997073260056512303946747105979292110003450407489924836142530065624248678935670746065899317880622000638073367400369402302158314033221251653687424468051520786824115060818437539740055831113916055471483034808874617739843143938172333284262271469979254217432808855959164876994617775909494325360213896498452140653220161981435472501438614603134083005358006470142761755484855437912983836446436796696188799077203473615780300012474195744483595979884254878292198513051622049258764225807542304782444925923341494613428285320468971377328625604051015673705708956626631746891317417396029708456942140863834024650370695696409569123851257481398138888752582030034869787470552028103940729085803240085987569938856671422005581372166650497556769407574429118602955596567887598719046627586511067969787887833869882951233268645804198215954308918671793783729688211286988794688142675294614947234254538088223560934361145676358046211831627683890340178210365154617001635372653348370422726598857026002477929177288289123739070353691365311645518715750245510770260801141976525982246774038853785442558514521428892111522375063439093517487315386834431958429128019507409290585031131279294212910898440219254009319059392162713475019891930586543895163777707714398600339409818266699397506309660607491889862314049922386749339985169589508248405389966372279472368480994566101598780613797426213113809272341186010030687520020604372850246235750477820866306072249009107891882044221153421572454947459745218327822086016027106392614825047067937041894741980478402880643992102437022027245971074555342753214011193822631471157489050501952568860820401920833804902096485703539056563038766617104309221550246208420803236102663918198532911605896456149452566847699113209434574026975730941194301255893892984954283771852399164279918441721650800291777296251806440774844416950920058440264116651186795378697819243783770608877693892976259074109340205317427395771831523271197915676367134269045536541349377669517895718456625645303642348316558188118515730182101737730372539888936801532474040601312554322979825347707786172180885839980406705981955978435796108903153166067253815216088254644383863063765964591075911345075411534030241991912223282597135304726831878735179556423807036390298160370960490420948364372810759652439684318393869597369898890279242300069046830503059657125858043553373113729594871087942860315948055593344147677932119321424028600190292509664619336217631490498027916950777163752425164438252351468600785554531423979834791445600150108890772427261831495874930509509679414887523661977405914784645916502014777727175798319834059621717421648892845862179131151362279648610789587662840109016397812560123410281881558369684764808427158589621053418154441646967665840185085136102607775409115734963155803833286789583501481573372226195484679719674349562964338708154613401347218002057551149833995233231065737207320566592164688912051242035274499618147339269167576074688060033124924140616954310412384530235227956908301847998406574780144353357884105883387959218296741020722854954100887277304947480547152700263711114665576920925961724019512061174430771918685854961160518537953685957360038825116204970615989239857746870933341859397441672382036764530524729808239765622931171203720639459438906663253650619610229282159290703571350858167568164860431176138378765549296218562697437528856056494473388171789278961444737763604387979003662127798027475934505640301147524790717395857232708656327584954348395562117135230986025734451614751913114005140624270977801178582308406486958461409022442175446835595658183592121309722334474915831657286355138025915434411459395393534709704525536550715392.0 +-1189731495357231765085759326628007073479956869869102141501186852722712468967898039614731304160537056720508735524794218059326466407441245944473611725143413248467166796545513080184004525512467970210316955903084154210995219628561620502745688412979158287475743437748747529021767100495257876251386789060100486382120270573746835428422826338960972409135720437886908785614210084478384078153933033666173528598766851519250363351426064628258395419088471393111667700918729834985086320676654241316634560118019882210119337445330955835919527132875094715720056355846555701747536986251959671182002652387533752686564043006387189322467736998297209841197138514624008092952665297074506030396759964773170346856327642777902149445005909504598179054586496247232351389508014081573398665168934777318775791837135956795815584276253258339396528978452820191499230693717636210145879266988271829694083738038077122921912824291024453524934340394022902439339419069066610906029009607658742583030029946393156561520787087964747197937630779342237465827257153805466210260228188924675519409775662832664987585685048138307557155853256492278248578919164433813909200793462409840728598763947896501274688614908225267667177701366807438669326623433058218213443062408099675370787076912329373870411405571681619566725953239506667420107865842757661716617919733022513948046643510651078865572997073260056512303946747105979292110003450407489924836142530065624248678935670746065899317880622000638073367400369402302158314033221251653687424468051520786824115060818437539740055831113916055471483034808874617739843143938172333284262271469979254217432808855959164876994617775909494325360213896498452140653220161981435472501438614603134083005358006470142761755484855437912983836446436796696188799077203473615780300012474195744483595979884254878292198513051622049258764225807542304782444925923341494613428285320468971377328625604051015673705708956626631746891317417396029708456942140863834024650370695696409569123851257481398138888752582030034869787470552028103940729085803240085987569938856671422005581372166650497556769407574429118602955596567887598719046627586511067969787887833869882951233268645804198215954308918671793783729688211286988794688142675294614947234254538088223560934361145676358046211831627683890340178210365154617001635372653348370422726598857026002477929177288289123739070353691365311645518715750245510770260801141976525982246774038853785442558514521428892111522375063439093517487315386834431958429128019507409290585031131279294212910898440219254009319059392162713475019891930586543895163777707714398600339409818266699397506309660607491889862314049922386749339985169589508248405389966372279472368480994566101598780613797426213113809272341186010030687520020604372850246235750477820866306072249009107891882044221153421572454947459745218327822086016027106392614825047067937041894741980478402880643992102437022027245971074555342753214011193822631471157489050501952568860820401920833804902096485703539056563038766617104309221550246208420803236102663918198532911605896456149452566847699113209434574026975730941194301255893892984954283771852399164279918441721650800291777296251806440774844416950920058440264116651186795378697819243783770608877693892976259074109340205317427395771831523271197915676367134269045536541349377669517895718456625645303642348316558188118515730182101737730372539888936801532474040601312554322979825347707786172180885839980406705981955978435796108903153166067253815216088254644383863063765964591075911345075411534030241991912223282597135304726831878735179556423807036390298160370960490420948364372810759652439684318393869597369898890279242300069046830503059657125858043553373113729594871087942860315948055593344147677932119321424028600190292509664619336217631490498027916950777163752425164438252351468600785554531423979834791445600150108890772427261831495874930509509679414887523661977405914784645916502014777727175798319834059621717421648892845862179131151362279648610789587662840109016397812560123410281881558369684764808427158589621053418154441646967665840185085136102607775409115734963155803833286789583501481573372226195484679719674349562964338708154613401347218002057551149833995233231065737207320566592164688912051242035274499618147339269167576074688060033124924140616954310412384530235227956908301847998406574780144353357884105883387959218296741020722854954100887277304947480547152700263711114665576920925961724019512061174430771918685854961160518537953685957360038825116204970615989239857746870933341859397441672382036764530524729808239765622931171203720639459438906663253650619610229282159290703571350858167568164860431176138378765549296218562697437528856056494473388171789278961444737763604387979003662127798027475934505640301147524790717395857232708656327584954348395562117135230986025734451614751913114005140624270977801178582308406486958461409022442175446835595658183592121309722334474915831657286355138025915434411459395393534709704525536550715392.001 +2.10194769648722560638559437493487419692039291281477365763560242583468662402879090222995728254318237304687499e-45 +2.101947696487225606385594374934874196920392912814773657635602425834686624028790902229957282543182373046875e-45 +2.10194769648722560638559437493487419692039291281477365763560242583468662402879090222995728254318237304687501e-45 +-2.10194769648722560638559437493487419692039291281477365763560242583468662402879090222995728254318237304687499e-45 +-2.101947696487225606385594374934874196920392912814773657635602425834686624028790902229957282543182373046875e-45 +-2.10194769648722560638559437493487419692039291281477365763560242583468662402879090222995728254318237304687501e-45 +3.50324616081204267730932395822479032820065485469128942939267070972447770671465150371659547090530395507812499e-45 +3.503246160812042677309323958224790328200654854691289429392670709724477706714651503716595470905303955078125e-45 +3.50324616081204267730932395822479032820065485469128942939267070972447770671465150371659547090530395507812501e-45 +-3.50324616081204267730932395822479032820065485469128942939267070972447770671465150371659547090530395507812499e-45 +-3.503246160812042677309323958224790328200654854691289429392670709724477706714651503716595470905303955078125e-45 +-3.50324616081204267730932395822479032820065485469128942939267070972447770671465150371659547090530395507812501e-45 +7.410984687618698162648531893023320585475897039214871466383785237510132609053131277979497545424539885696948470431685765963899850655339096945981621940161728171894510697854671067917687257517734731555330779540854980960845750095811137303474765809687100959097544227100475730780971111893578483867565399878350301522805593404659373979179073872386829939581848166016912201945649993128979841136206248449867871357218035220901702390328579173252022052897402080290685402160661237554998340267130003581248647904138574340187552090159017259254714629617513415977493871857473787096164563890871811984127167305601704549300470526959016576377688490826798697257336652176556794107250876433756084600398490497214911746308553955635418864151316847843631308023759629577398300170898437499e-324 +7.4109846876186981626485318930233205854758970392148714663837852375101326090531312779794975454245398856969484704316857659638998506553390969459816219401617281718945106978546710679176872575177347315553307795408549809608457500958111373034747658096871009590975442271004757307809711118935784838675653998783503015228055934046593739791790738723868299395818481660169122019456499931289798411362062484498678713572180352209017023903285791732520220528974020802906854021606612375549983402671300035812486479041385743401875520901590172592547146296175134159774938718574737870961645638908718119841271673056017045493004705269590165763776884908267986972573366521765567941072508764337560846003984904972149117463085539556354188641513168478436313080237596295773983001708984375e-324 +7.410984687618698162648531893023320585475897039214871466383785237510132609053131277979497545424539885696948470431685765963899850655339096945981621940161728171894510697854671067917687257517734731555330779540854980960845750095811137303474765809687100959097544227100475730780971111893578483867565399878350301522805593404659373979179073872386829939581848166016912201945649993128979841136206248449867871357218035220901702390328579173252022052897402080290685402160661237554998340267130003581248647904138574340187552090159017259254714629617513415977493871857473787096164563890871811984127167305601704549300470526959016576377688490826798697257336652176556794107250876433756084600398490497214911746308553955635418864151316847843631308023759629577398300170898437501e-324 +-7.410984687618698162648531893023320585475897039214871466383785237510132609053131277979497545424539885696948470431685765963899850655339096945981621940161728171894510697854671067917687257517734731555330779540854980960845750095811137303474765809687100959097544227100475730780971111893578483867565399878350301522805593404659373979179073872386829939581848166016912201945649993128979841136206248449867871357218035220901702390328579173252022052897402080290685402160661237554998340267130003581248647904138574340187552090159017259254714629617513415977493871857473787096164563890871811984127167305601704549300470526959016576377688490826798697257336652176556794107250876433756084600398490497214911746308553955635418864151316847843631308023759629577398300170898437499e-324 +-7.4109846876186981626485318930233205854758970392148714663837852375101326090531312779794975454245398856969484704316857659638998506553390969459816219401617281718945106978546710679176872575177347315553307795408549809608457500958111373034747658096871009590975442271004757307809711118935784838675653998783503015228055934046593739791790738723868299395818481660169122019456499931289798411362062484498678713572180352209017023903285791732520220528974020802906854021606612375549983402671300035812486479041385743401875520901590172592547146296175134159774938718574737870961645638908718119841271673056017045493004705269590165763776884908267986972573366521765567941072508764337560846003984904972149117463085539556354188641513168478436313080237596295773983001708984375e-324 +-7.410984687618698162648531893023320585475897039214871466383785237510132609053131277979497545424539885696948470431685765963899850655339096945981621940161728171894510697854671067917687257517734731555330779540854980960845750095811137303474765809687100959097544227100475730780971111893578483867565399878350301522805593404659373979179073872386829939581848166016912201945649993128979841136206248449867871357218035220901702390328579173252022052897402080290685402160661237554998340267130003581248647904138574340187552090159017259254714629617513415977493871857473787096164563890871811984127167305601704549300470526959016576377688490826798697257336652176556794107250876433756084600398490497214911746308553955635418864151316847843631308023759629577398300170898437501e-324 +5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687499e-4951 +5.46779929782371190379260890042912972459857622354034501558147073054255753295009660521434106293874080779587102102080529665295047844893304825496026211338471350822573387176689751785383789570845033963493234384897511609341047969033029090288686119993125921652327780757456908215307313367394295878957740232139393310129853319126610211888963060953233950845785422003199631793594071800032514400843804841615045854626840829469327828294881838298175674523144370769439505327077912524046992686788101985028712502357968555779098305597496288175991948375220290368919956488030568463545206536359579198829053635210070171697414632960443922662694334080526864190176997186277619487638560405926908417212393004914459916660510317558023267203296664540665686303143487355117536394182579842533190638252470657276648523287454223056426260916178239688724389624700924406883725156778322327128669248001067971134780240835161999919912749368941130062333775184713893949842620045030584554856591000906652415254548036281829022414017017836373531792968500569736393059459388134289532878925936202911959860111289900618887987637185487890257175376747802810055833471650478460459250779148245153313351312860635744071818212363779076932092244234906632899168786207255077931639313903720118757997293301622787489850525574323330053349895193815663640653261384657614561732314168448072640907418419722475454249088439281362536533088134879943284462483896082614443915736191774429072907311631885819175882194201070472653674851414139198108859096891122440647971063242952915458929379913214790617434914900609409461282745336576821301251695869305718994035511225062977631807957323251343409893311558937242893589182127073929977680322999972072084511129714257799395078371652632557642689712118195363229932217741231347266655794602658713781865895628587618356133445842690980622757869697298305457864854014077743134149549581616770960047019414114115927554858644718705151733262444646312957015720874401831783399876629267632412206980788226617090546010735234775446535427950204682560784093064091008748868287818605298248793439879457512520813143459903135506837923488146278624413240301557305921665812510099227873245904315487345753286636286503807226030243834125646514462721175610422077384131141310997310167289350231522394313116195338483765836875091084530867301962551116953524641866782219275647577303198252230493416188536313334782412272272680845833966884362299362668540114271927670393635174916595231338524725341041244411123466156968910970701214636522586812703780765383816975942646584796378630871592938388807529281755454082628134037935686954169983885723045287488247562656656838905184226961694223388061375323047846826624482079286817404761883437391178335259163868151357930349068061174131050087191978828376147382620503202915394941049520564716066454820461766340754590215525559595903549562621278099530136795125074514242718392219467940568610559805583630337329057723569860511809664741164231921947415724386492152042297812796203704453738513487869185273997856308082426571227053818066616162711321820177977936612440784457475475356233845487698185296555392790365032340724558109915880751818176959751731101364826598545575062030580805510188732031382604511098551005267200735661262096661256044824137056119967967779273328271035688633522914992613122903551437420180422544707071078472935932052340497748391917547810304969780910060995596752409667301101676249036106564732671055561556337835940895462611076531105318082794457577243991861203875486751486321760491907016803052102243880722619748067919226364128975269527936779466226741495770848035680512429340764509429270927056845470429154903231124579718536587607255881903776664771069031066938472788476460322012930233295033487307239472187974104523339108479138928271958145518583355195189390314460933853291828207141736579466617460059018668855897329226526045739728421972311873652633819589252279700383580649872482332717064626876511433504720180433213145347598195242033084909143585968861500534066295124347881553551091005403198578135356959232734262569115529775393942099186306684666328819296619712127724446251513719534288754911396839196870087240104752172553479156988209602152172573903085602353234630969464420805480187541663697061615897052158736871663656287877965014700568701277294647143621722168024410452769115970094432811353897291302226031856656464346619476276280777232193768927273861205192875774054105101149361515027529971227502627819113726259972234152835169954792656314857994567825617347666484628496410640971818182042794985528278253841862020655169993625733881361630774771266021694104359050140770498084974090253693257957652720666502780042003578789909113749828579771084884825283544063138938642114971057650305046009822534888054745317987421433744650802400305823700866991679376510383079097061393271193254188545464782857356545416354777903469647826173542650507678783352302721948966801419867450746302258931065735595588435458411860251695316041515884813891649489148235939442871333362636803581913695403219306498244714254851377779848235254021151511710933136132513506853438248590522201268915519660183559208727757248071287690032431294868087337963504976682551164851571910118588306438983236282234720992802435831644343483470149103980044398219705082804408727593958279432709850087691435623519380914762150835481641373335418838088700191162340990134529298079501516522974364360061496849397757812346609541561544786426941760385242778104838331497986813457080891521791939794631694023406117934862723018080732675346126855938595967878668842110313414179033917498253204546635083703852518317784773110170897293611521619288153898185799835444909828917340811313123097443309606660312914517408855034585438849563676549437992646003145318154279326911078747823286547592935758034819293619617810739585020754384990706331937996993116942871832994234753398176556080587247232218670875630645576361123808295145013820732577370224728666082441643103852052135237029107871824725171250301064910318448715931417597297739077195100440493528574265929367637279694961039405916019750786028596604786141194054282128301344907317062205837882653447288187668851269775881511119842904443216489319071880803360647138732888340962292032766761198105218517261333777006163413042578229757889674721527422550419125841970454230312985062190118002401201824458385906966474162853345156310197990075156820042500608570209040122153751704798004826805544998060107661096550615074217477224611806173614025750822946789256052710835878978453907682264056485085181035257786386181957751285160739592729901482394153462634869665739345774507872436670632443783818831158272076058561748763500450868853206266693313118805937759162696436463954232205499407904769897092430274201583908061356909751493847146842199649381827199629139314649794586391855195314900094376198383063623654537548076548847041634904692964444271447785937256873584370873901519906946675162792020243324948282106576182619520385972302637994125842758516674039106573708797071810533658185026800374315600912099826417389956527932358515693723141301076471660852356156972570942691331009141357831788562803921393250013528417186104846166274481895569136218377916506998203230597087664208101335848418267186316816833817435119742641262509842148123971199782739179038898658917188367922633778880524581892387460749864560166810987228694195882740201814306527328178587284738493695393674639171713173248820998049990430544672477855920384647234422762398960664315801237564285400749454724277525689811714006217058533748758859430726006925769147904672059052723725947401879880819003174931850051429136071633807200697867867820953318408936940737783251194718335284929170810085473034145093815636178641952577515465395754614358036259938883256478835410391923683669874002630496812188314777763451185185037095888408590233797624565610306839281153499423939631856771230553247716937842149249317370437936795460514548456241502709554506083187473957557289508327546112770413596023012051385091755433135227727865041410075526919022495723751757317409236187691973046528983526943866654482600334585753232528142338680982794761667642582849114342880722431789416983473659854276969831295794960590320328412811499235180870848768851143690332277365212457405547117714234927198999823577119102255454804246883221953362404922531362818578378084917959937881991252055552221165810711344767874684305393079096174421066851595190710538449873436664524942803177201535670543641172447751413365584060985488039245094960522618251980431402726553036253156053265695302528858549918222892192012183135907454120104466422471117039019915913380626933201571806187365694399692832452794303126511926687883400336268251942602962629598842585977035848887708019612096528229823223761223035861698616851060438205104442934328562512103956932612648678239801726833527961417722103017259976523738041525250371628522914038044559973313673784636324377732429055180750654147242958574602882254000616086649616491964000793596226737706078983952690750565966271161482894910424917641709240148851061582354827747784181341232939744368770519956736186837511153538087714349842044477361747583160630962450473112798415799955781866094028642440427514431285362784534306334231186628526883742296008944189588248424594505408261764521458293892861035227741011955560296507532542444335659379385268289908931497662989977383599138871788886071907657098670524708807859379351100914247434499663534978656817538413802460756120940336174886746762968225700770270762668795579136738393410120995580438064423487980539512392749133346315224095644617704348757904022300228726475684361770186580686970717318793991803745609634927267145287292242089385899402725157478883791184616177022716940750874196341472980767647757457070269344429082366644005572655279514534821916845976742736919782536786909511787772395739254104386790993747006099739201282014223813291082365753694036759607652383337781270170965742961483210755669592850422218371597998001335632399639696386108726803932103001801520206130516134145471637137725126177572779559798958663675717764562685641910924770276501358322003764402397837265405526948517172695984892888515296609750277756395652297345967262058326684349793545419433450629778911871465610501181181082233237352108436811286154136010912220079123505369597771143065415145113323689360785609297881437988143912215075223706486467673642091321473124070149531135323798381957284911285369782859180669910409931530643561799038859520279527137496536045020535123554499166808872342387738555816361724795948668717650945139401032841679141101967202611108127167764242601545073950503805754528504207308184129947310793073435383768802801240193210401980387235587845444085843444660909828020673265290009315620489328754690798749565951805953953470932851402791654679655963183657497015358123843332409682836407213440034420026916137720567620990980257393327159139701862251764595634841341397466479401705379002753504804904688514393007719499151947030805766110225906703998449318676097774175289034547319222063789321414647554026294200742938163492700383513394191467684738513531716291539122387971419059201430360641317052304217623052328615038567995111559365651690059167118453891355809281625119124385312041561384477751207895486661436002934120657671671068885091725680035306685394605882483165133926525678562246026972962033289200733544259940449566248313469794588468375979500641518671645837492034339425921785288689813115753318489415974924704367823875026875326490930964983153474039774360013999821020308467636989947850546175232414631869808983945042114307636178253068950656615360454314979037591180079348391228818858630917694698835398768405435212957063159198557844932356038662689259817026902702028295957943508009182579139917444559226833433740466716699302196502685546875e-4951 +5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687501e-4951 +-5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687499e-4951 +-5.46779929782371190379260890042912972459857622354034501558147073054255753295009660521434106293874080779587102102080529665295047844893304825496026211338471350822573387176689751785383789570845033963493234384897511609341047969033029090288686119993125921652327780757456908215307313367394295878957740232139393310129853319126610211888963060953233950845785422003199631793594071800032514400843804841615045854626840829469327828294881838298175674523144370769439505327077912524046992686788101985028712502357968555779098305597496288175991948375220290368919956488030568463545206536359579198829053635210070171697414632960443922662694334080526864190176997186277619487638560405926908417212393004914459916660510317558023267203296664540665686303143487355117536394182579842533190638252470657276648523287454223056426260916178239688724389624700924406883725156778322327128669248001067971134780240835161999919912749368941130062333775184713893949842620045030584554856591000906652415254548036281829022414017017836373531792968500569736393059459388134289532878925936202911959860111289900618887987637185487890257175376747802810055833471650478460459250779148245153313351312860635744071818212363779076932092244234906632899168786207255077931639313903720118757997293301622787489850525574323330053349895193815663640653261384657614561732314168448072640907418419722475454249088439281362536533088134879943284462483896082614443915736191774429072907311631885819175882194201070472653674851414139198108859096891122440647971063242952915458929379913214790617434914900609409461282745336576821301251695869305718994035511225062977631807957323251343409893311558937242893589182127073929977680322999972072084511129714257799395078371652632557642689712118195363229932217741231347266655794602658713781865895628587618356133445842690980622757869697298305457864854014077743134149549581616770960047019414114115927554858644718705151733262444646312957015720874401831783399876629267632412206980788226617090546010735234775446535427950204682560784093064091008748868287818605298248793439879457512520813143459903135506837923488146278624413240301557305921665812510099227873245904315487345753286636286503807226030243834125646514462721175610422077384131141310997310167289350231522394313116195338483765836875091084530867301962551116953524641866782219275647577303198252230493416188536313334782412272272680845833966884362299362668540114271927670393635174916595231338524725341041244411123466156968910970701214636522586812703780765383816975942646584796378630871592938388807529281755454082628134037935686954169983885723045287488247562656656838905184226961694223388061375323047846826624482079286817404761883437391178335259163868151357930349068061174131050087191978828376147382620503202915394941049520564716066454820461766340754590215525559595903549562621278099530136795125074514242718392219467940568610559805583630337329057723569860511809664741164231921947415724386492152042297812796203704453738513487869185273997856308082426571227053818066616162711321820177977936612440784457475475356233845487698185296555392790365032340724558109915880751818176959751731101364826598545575062030580805510188732031382604511098551005267200735661262096661256044824137056119967967779273328271035688633522914992613122903551437420180422544707071078472935932052340497748391917547810304969780910060995596752409667301101676249036106564732671055561556337835940895462611076531105318082794457577243991861203875486751486321760491907016803052102243880722619748067919226364128975269527936779466226741495770848035680512429340764509429270927056845470429154903231124579718536587607255881903776664771069031066938472788476460322012930233295033487307239472187974104523339108479138928271958145518583355195189390314460933853291828207141736579466617460059018668855897329226526045739728421972311873652633819589252279700383580649872482332717064626876511433504720180433213145347598195242033084909143585968861500534066295124347881553551091005403198578135356959232734262569115529775393942099186306684666328819296619712127724446251513719534288754911396839196870087240104752172553479156988209602152172573903085602353234630969464420805480187541663697061615897052158736871663656287877965014700568701277294647143621722168024410452769115970094432811353897291302226031856656464346619476276280777232193768927273861205192875774054105101149361515027529971227502627819113726259972234152835169954792656314857994567825617347666484628496410640971818182042794985528278253841862020655169993625733881361630774771266021694104359050140770498084974090253693257957652720666502780042003578789909113749828579771084884825283544063138938642114971057650305046009822534888054745317987421433744650802400305823700866991679376510383079097061393271193254188545464782857356545416354777903469647826173542650507678783352302721948966801419867450746302258931065735595588435458411860251695316041515884813891649489148235939442871333362636803581913695403219306498244714254851377779848235254021151511710933136132513506853438248590522201268915519660183559208727757248071287690032431294868087337963504976682551164851571910118588306438983236282234720992802435831644343483470149103980044398219705082804408727593958279432709850087691435623519380914762150835481641373335418838088700191162340990134529298079501516522974364360061496849397757812346609541561544786426941760385242778104838331497986813457080891521791939794631694023406117934862723018080732675346126855938595967878668842110313414179033917498253204546635083703852518317784773110170897293611521619288153898185799835444909828917340811313123097443309606660312914517408855034585438849563676549437992646003145318154279326911078747823286547592935758034819293619617810739585020754384990706331937996993116942871832994234753398176556080587247232218670875630645576361123808295145013820732577370224728666082441643103852052135237029107871824725171250301064910318448715931417597297739077195100440493528574265929367637279694961039405916019750786028596604786141194054282128301344907317062205837882653447288187668851269775881511119842904443216489319071880803360647138732888340962292032766761198105218517261333777006163413042578229757889674721527422550419125841970454230312985062190118002401201824458385906966474162853345156310197990075156820042500608570209040122153751704798004826805544998060107661096550615074217477224611806173614025750822946789256052710835878978453907682264056485085181035257786386181957751285160739592729901482394153462634869665739345774507872436670632443783818831158272076058561748763500450868853206266693313118805937759162696436463954232205499407904769897092430274201583908061356909751493847146842199649381827199629139314649794586391855195314900094376198383063623654537548076548847041634904692964444271447785937256873584370873901519906946675162792020243324948282106576182619520385972302637994125842758516674039106573708797071810533658185026800374315600912099826417389956527932358515693723141301076471660852356156972570942691331009141357831788562803921393250013528417186104846166274481895569136218377916506998203230597087664208101335848418267186316816833817435119742641262509842148123971199782739179038898658917188367922633778880524581892387460749864560166810987228694195882740201814306527328178587284738493695393674639171713173248820998049990430544672477855920384647234422762398960664315801237564285400749454724277525689811714006217058533748758859430726006925769147904672059052723725947401879880819003174931850051429136071633807200697867867820953318408936940737783251194718335284929170810085473034145093815636178641952577515465395754614358036259938883256478835410391923683669874002630496812188314777763451185185037095888408590233797624565610306839281153499423939631856771230553247716937842149249317370437936795460514548456241502709554506083187473957557289508327546112770413596023012051385091755433135227727865041410075526919022495723751757317409236187691973046528983526943866654482600334585753232528142338680982794761667642582849114342880722431789416983473659854276969831295794960590320328412811499235180870848768851143690332277365212457405547117714234927198999823577119102255454804246883221953362404922531362818578378084917959937881991252055552221165810711344767874684305393079096174421066851595190710538449873436664524942803177201535670543641172447751413365584060985488039245094960522618251980431402726553036253156053265695302528858549918222892192012183135907454120104466422471117039019915913380626933201571806187365694399692832452794303126511926687883400336268251942602962629598842585977035848887708019612096528229823223761223035861698616851060438205104442934328562512103956932612648678239801726833527961417722103017259976523738041525250371628522914038044559973313673784636324377732429055180750654147242958574602882254000616086649616491964000793596226737706078983952690750565966271161482894910424917641709240148851061582354827747784181341232939744368770519956736186837511153538087714349842044477361747583160630962450473112798415799955781866094028642440427514431285362784534306334231186628526883742296008944189588248424594505408261764521458293892861035227741011955560296507532542444335659379385268289908931497662989977383599138871788886071907657098670524708807859379351100914247434499663534978656817538413802460756120940336174886746762968225700770270762668795579136738393410120995580438064423487980539512392749133346315224095644617704348757904022300228726475684361770186580686970717318793991803745609634927267145287292242089385899402725157478883791184616177022716940750874196341472980767647757457070269344429082366644005572655279514534821916845976742736919782536786909511787772395739254104386790993747006099739201282014223813291082365753694036759607652383337781270170965742961483210755669592850422218371597998001335632399639696386108726803932103001801520206130516134145471637137725126177572779559798958663675717764562685641910924770276501358322003764402397837265405526948517172695984892888515296609750277756395652297345967262058326684349793545419433450629778911871465610501181181082233237352108436811286154136010912220079123505369597771143065415145113323689360785609297881437988143912215075223706486467673642091321473124070149531135323798381957284911285369782859180669910409931530643561799038859520279527137496536045020535123554499166808872342387738555816361724795948668717650945139401032841679141101967202611108127167764242601545073950503805754528504207308184129947310793073435383768802801240193210401980387235587845444085843444660909828020673265290009315620489328754690798749565951805953953470932851402791654679655963183657497015358123843332409682836407213440034420026916137720567620990980257393327159139701862251764595634841341397466479401705379002753504804904688514393007719499151947030805766110225906703998449318676097774175289034547319222063789321414647554026294200742938163492700383513394191467684738513531716291539122387971419059201430360641317052304217623052328615038567995111559365651690059167118453891355809281625119124385312041561384477751207895486661436002934120657671671068885091725680035306685394605882483165133926525678562246026972962033289200733544259940449566248313469794588468375979500641518671645837492034339425921785288689813115753318489415974924704367823875026875326490930964983153474039774360013999821020308467636989947850546175232414631869808983945042114307636178253068950656615360454314979037591180079348391228818858630917694698835398768405435212957063159198557844932356038662689259817026902702028295957943508009182579139917444559226833433740466716699302196502685546875e-4951 +-5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687501e-4951 +5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687499e-4951 +5.46779929782371190379260890042912972459857622354034501558147073054255753295009660521434106293874080779587102102080529665295047844893304825496026211338471350822573387176689751785383789570845033963493234384897511609341047969033029090288686119993125921652327780757456908215307313367394295878957740232139393310129853319126610211888963060953233950845785422003199631793594071800032514400843804841615045854626840829469327828294881838298175674523144370769439505327077912524046992686788101985028712502357968555779098305597496288175991948375220290368919956488030568463545206536359579198829053635210070171697414632960443922662694334080526864190176997186277619487638560405926908417212393004914459916660510317558023267203296664540665686303143487355117536394182579842533190638252470657276648523287454223056426260916178239688724389624700924406883725156778322327128669248001067971134780240835161999919912749368941130062333775184713893949842620045030584554856591000906652415254548036281829022414017017836373531792968500569736393059459388134289532878925936202911959860111289900618887987637185487890257175376747802810055833471650478460459250779148245153313351312860635744071818212363779076932092244234906632899168786207255077931639313903720118757997293301622787489850525574323330053349895193815663640653261384657614561732314168448072640907418419722475454249088439281362536533088134879943284462483896082614443915736191774429072907311631885819175882194201070472653674851414139198108859096891122440647971063242952915458929379913214790617434914900609409461282745336576821301251695869305718994035511225062977631807957323251343409893311558937242893589182127073929977680322999972072084511129714257799395078371652632557642689712118195363229932217741231347266655794602658713781865895628587618356133445842690980622757869697298305457864854014077743134149549581616770960047019414114115927554858644718705151733262444646312957015720874401831783399876629267632412206980788226617090546010735234775446535427950204682560784093064091008748868287818605298248793439879457512520813143459903135506837923488146278624413240301557305921665812510099227873245904315487345753286636286503807226030243834125646514462721175610422077384131141310997310167289350231522394313116195338483765836875091084530867301962551116953524641866782219275647577303198252230493416188536313334782412272272680845833966884362299362668540114271927670393635174916595231338524725341041244411123466156968910970701214636522586812703780765383816975942646584796378630871592938388807529281755454082628134037935686954169983885723045287488247562656656838905184226961694223388061375323047846826624482079286817404761883437391178335259163868151357930349068061174131050087191978828376147382620503202915394941049520564716066454820461766340754590215525559595903549562621278099530136795125074514242718392219467940568610559805583630337329057723569860511809664741164231921947415724386492152042297812796203704453738513487869185273997856308082426571227053818066616162711321820177977936612440784457475475356233845487698185296555392790365032340724558109915880751818176959751731101364826598545575062030580805510188732031382604511098551005267200735661262096661256044824137056119967967779273328271035688633522914992613122903551437420180422544707071078472935932052340497748391917547810304969780910060995596752409667301101676249036106564732671055561556337835940895462611076531105318082794457577243991861203875486751486321760491907016803052102243880722619748067919226364128975269527936779466226741495770848035680512429340764509429270927056845470429154903231124579718536587607255881903776664771069031066938472788476460322012930233295033487307239472187974104523339108479138928271958145518583355195189390314460933853291828207141736579466617460059018668855897329226526045739728421972311873652633819589252279700383580649872482332717064626876511433504720180433213145347598195242033084909143585968861500534066295124347881553551091005403198578135356959232734262569115529775393942099186306684666328819296619712127724446251513719534288754911396839196870087240104752172553479156988209602152172573903085602353234630969464420805480187541663697061615897052158736871663656287877965014700568701277294647143621722168024410452769115970094432811353897291302226031856656464346619476276280777232193768927273861205192875774054105101149361515027529971227502627819113726259972234152835169954792656314857994567825617347666484628496410640971818182042794985528278253841862020655169993625733881361630774771266021694104359050140770498084974090253693257957652720666502780042003578789909113749828579771084884825283544063138938642114971057650305046009822534888054745317987421433744650802400305823700866991679376510383079097061393271193254188545464782857356545416354777903469647826173542650507678783352302721948966801419867450746302258931065735595588435458411860251695316041515884813891649489148235939442871333362636803581913695403219306498244714254851377779848235254021151511710933136132513506853438248590522201268915519660183559208727757248071287690032431294868087337963504976682551164851571910118588306438983236282234720992802435831644343483470149103980044398219705082804408727593958279432709850087691435623519380914762150835481641373335418838088700191162340990134529298079501516522974364360061496849397757812346609541561544786426941760385242778104838331497986813457080891521791939794631694023406117934862723018080732675346126855938595967878668842110313414179033917498253204546635083703852518317784773110170897293611521619288153898185799835444909828917340811313123097443309606660312914517408855034585438849563676549437992646003145318154279326911078747823286547592935758034819293619617810739585020754384990706331937996993116942871832994234753398176556080587247232218670875630645576361123808295145013820732577370224728666082441643103852052135237029107871824725171250301064910318448715931417597297739077195100440493528574265929367637279694961039405916019750786028596604786141194054282128301344907317062205837882653447288187668851269775881511119842904443216489319071880803360647138732888340962292032766761198105218517261333777006163413042578229757889674721527422550419125841970454230312985062190118002401201824458385906966474162853345156310197990075156820042500608570209040122153751704798004826805544998060107661096550615074217477224611806173614025750822946789256052710835878978453907682264056485085181035257786386181957751285160739592729901482394153462634869665739345774507872436670632443783818831158272076058561748763500450868853206266693313118805937759162696436463954232205499407904769897092430274201583908061356909751493847146842199649381827199629139314649794586391855195314900094376198383063623654537548076548847041634904692964444271447785937256873584370873901519906946675162792020243324948282106576182619520385972302637994125842758516674039106573708797071810533658185026800374315600912099826417389956527932358515693723141301076471660852356156972570942691331009141357831788562803921393250013528417186104846166274481895569136218377916506998203230597087664208101335848418267186316816833817435119742641262509842148123971199782739179038898658917188367922633778880524581892387460749864560166810987228694195882740201814306527328178587284738493695393674639171713173248820998049990430544672477855920384647234422762398960664315801237564285400749454724277525689811714006217058533748758859430726006925769147904672059052723725947401879880819003174931850051429136071633807200697867867820953318408936940737783251194718335284929170810085473034145093815636178641952577515465395754614358036259938883256478835410391923683669874002630496812188314777763451185185037095888408590233797624565610306839281153499423939631856771230553247716937842149249317370437936795460514548456241502709554506083187473957557289508327546112770413596023012051385091755433135227727865041410075526919022495723751757317409236187691973046528983526943866654482600334585753232528142338680982794761667642582849114342880722431789416983473659854276969831295794960590320328412811499235180870848768851143690332277365212457405547117714234927198999823577119102255454804246883221953362404922531362818578378084917959937881991252055552221165810711344767874684305393079096174421066851595190710538449873436664524942803177201535670543641172447751413365584060985488039245094960522618251980431402726553036253156053265695302528858549918222892192012183135907454120104466422471117039019915913380626933201571806187365694399692832452794303126511926687883400336268251942602962629598842585977035848887708019612096528229823223761223035861698616851060438205104442934328562512103956932612648678239801726833527961417722103017259976523738041525250371628522914038044559973313673784636324377732429055180750654147242958574602882254000616086649616491964000793596226737706078983952690750565966271161482894910424917641709240148851061582354827747784181341232939744368770519956736186837511153538087714349842044477361747583160630962450473112798415799955781866094028642440427514431285362784534306334231186628526883742296008944189588248424594505408261764521458293892861035227741011955560296507532542444335659379385268289908931497662989977383599138871788886071907657098670524708807859379351100914247434499663534978656817538413802460756120940336174886746762968225700770270762668795579136738393410120995580438064423487980539512392749133346315224095644617704348757904022300228726475684361770186580686970717318793991803745609634927267145287292242089385899402725157478883791184616177022716940750874196341472980767647757457070269344429082366644005572655279514534821916845976742736919782536786909511787772395739254104386790993747006099739201282014223813291082365753694036759607652383337781270170965742961483210755669592850422218371597998001335632399639696386108726803932103001801520206130516134145471637137725126177572779559798958663675717764562685641910924770276501358322003764402397837265405526948517172695984892888515296609750277756395652297345967262058326684349793545419433450629778911871465610501181181082233237352108436811286154136010912220079123505369597771143065415145113323689360785609297881437988143912215075223706486467673642091321473124070149531135323798381957284911285369782859180669910409931530643561799038859520279527137496536045020535123554499166808872342387738555816361724795948668717650945139401032841679141101967202611108127167764242601545073950503805754528504207308184129947310793073435383768802801240193210401980387235587845444085843444660909828020673265290009315620489328754690798749565951805953953470932851402791654679655963183657497015358123843332409682836407213440034420026916137720567620990980257393327159139701862251764595634841341397466479401705379002753504804904688514393007719499151947030805766110225906703998449318676097774175289034547319222063789321414647554026294200742938163492700383513394191467684738513531716291539122387971419059201430360641317052304217623052328615038567995111559365651690059167118453891355809281625119124385312041561384477751207895486661436002934120657671671068885091725680035306685394605882483165133926525678562246026972962033289200733544259940449566248313469794588468375979500641518671645837492034339425921785288689813115753318489415974924704367823875026875326490930964983153474039774360013999821020308467636989947850546175232414631869808983945042114307636178253068950656615360454314979037591180079348391228818858630917694698835398768405435212957063159198557844932356038662689259817026902702028295957943508009182579139917444559226833433740466716699302196502685546875e-4951 +5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687501e-4951 +-5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687499e-4951 +-5.46779929782371190379260890042912972459857622354034501558147073054255753295009660521434106293874080779587102102080529665295047844893304825496026211338471350822573387176689751785383789570845033963493234384897511609341047969033029090288686119993125921652327780757456908215307313367394295878957740232139393310129853319126610211888963060953233950845785422003199631793594071800032514400843804841615045854626840829469327828294881838298175674523144370769439505327077912524046992686788101985028712502357968555779098305597496288175991948375220290368919956488030568463545206536359579198829053635210070171697414632960443922662694334080526864190176997186277619487638560405926908417212393004914459916660510317558023267203296664540665686303143487355117536394182579842533190638252470657276648523287454223056426260916178239688724389624700924406883725156778322327128669248001067971134780240835161999919912749368941130062333775184713893949842620045030584554856591000906652415254548036281829022414017017836373531792968500569736393059459388134289532878925936202911959860111289900618887987637185487890257175376747802810055833471650478460459250779148245153313351312860635744071818212363779076932092244234906632899168786207255077931639313903720118757997293301622787489850525574323330053349895193815663640653261384657614561732314168448072640907418419722475454249088439281362536533088134879943284462483896082614443915736191774429072907311631885819175882194201070472653674851414139198108859096891122440647971063242952915458929379913214790617434914900609409461282745336576821301251695869305718994035511225062977631807957323251343409893311558937242893589182127073929977680322999972072084511129714257799395078371652632557642689712118195363229932217741231347266655794602658713781865895628587618356133445842690980622757869697298305457864854014077743134149549581616770960047019414114115927554858644718705151733262444646312957015720874401831783399876629267632412206980788226617090546010735234775446535427950204682560784093064091008748868287818605298248793439879457512520813143459903135506837923488146278624413240301557305921665812510099227873245904315487345753286636286503807226030243834125646514462721175610422077384131141310997310167289350231522394313116195338483765836875091084530867301962551116953524641866782219275647577303198252230493416188536313334782412272272680845833966884362299362668540114271927670393635174916595231338524725341041244411123466156968910970701214636522586812703780765383816975942646584796378630871592938388807529281755454082628134037935686954169983885723045287488247562656656838905184226961694223388061375323047846826624482079286817404761883437391178335259163868151357930349068061174131050087191978828376147382620503202915394941049520564716066454820461766340754590215525559595903549562621278099530136795125074514242718392219467940568610559805583630337329057723569860511809664741164231921947415724386492152042297812796203704453738513487869185273997856308082426571227053818066616162711321820177977936612440784457475475356233845487698185296555392790365032340724558109915880751818176959751731101364826598545575062030580805510188732031382604511098551005267200735661262096661256044824137056119967967779273328271035688633522914992613122903551437420180422544707071078472935932052340497748391917547810304969780910060995596752409667301101676249036106564732671055561556337835940895462611076531105318082794457577243991861203875486751486321760491907016803052102243880722619748067919226364128975269527936779466226741495770848035680512429340764509429270927056845470429154903231124579718536587607255881903776664771069031066938472788476460322012930233295033487307239472187974104523339108479138928271958145518583355195189390314460933853291828207141736579466617460059018668855897329226526045739728421972311873652633819589252279700383580649872482332717064626876511433504720180433213145347598195242033084909143585968861500534066295124347881553551091005403198578135356959232734262569115529775393942099186306684666328819296619712127724446251513719534288754911396839196870087240104752172553479156988209602152172573903085602353234630969464420805480187541663697061615897052158736871663656287877965014700568701277294647143621722168024410452769115970094432811353897291302226031856656464346619476276280777232193768927273861205192875774054105101149361515027529971227502627819113726259972234152835169954792656314857994567825617347666484628496410640971818182042794985528278253841862020655169993625733881361630774771266021694104359050140770498084974090253693257957652720666502780042003578789909113749828579771084884825283544063138938642114971057650305046009822534888054745317987421433744650802400305823700866991679376510383079097061393271193254188545464782857356545416354777903469647826173542650507678783352302721948966801419867450746302258931065735595588435458411860251695316041515884813891649489148235939442871333362636803581913695403219306498244714254851377779848235254021151511710933136132513506853438248590522201268915519660183559208727757248071287690032431294868087337963504976682551164851571910118588306438983236282234720992802435831644343483470149103980044398219705082804408727593958279432709850087691435623519380914762150835481641373335418838088700191162340990134529298079501516522974364360061496849397757812346609541561544786426941760385242778104838331497986813457080891521791939794631694023406117934862723018080732675346126855938595967878668842110313414179033917498253204546635083703852518317784773110170897293611521619288153898185799835444909828917340811313123097443309606660312914517408855034585438849563676549437992646003145318154279326911078747823286547592935758034819293619617810739585020754384990706331937996993116942871832994234753398176556080587247232218670875630645576361123808295145013820732577370224728666082441643103852052135237029107871824725171250301064910318448715931417597297739077195100440493528574265929367637279694961039405916019750786028596604786141194054282128301344907317062205837882653447288187668851269775881511119842904443216489319071880803360647138732888340962292032766761198105218517261333777006163413042578229757889674721527422550419125841970454230312985062190118002401201824458385906966474162853345156310197990075156820042500608570209040122153751704798004826805544998060107661096550615074217477224611806173614025750822946789256052710835878978453907682264056485085181035257786386181957751285160739592729901482394153462634869665739345774507872436670632443783818831158272076058561748763500450868853206266693313118805937759162696436463954232205499407904769897092430274201583908061356909751493847146842199649381827199629139314649794586391855195314900094376198383063623654537548076548847041634904692964444271447785937256873584370873901519906946675162792020243324948282106576182619520385972302637994125842758516674039106573708797071810533658185026800374315600912099826417389956527932358515693723141301076471660852356156972570942691331009141357831788562803921393250013528417186104846166274481895569136218377916506998203230597087664208101335848418267186316816833817435119742641262509842148123971199782739179038898658917188367922633778880524581892387460749864560166810987228694195882740201814306527328178587284738493695393674639171713173248820998049990430544672477855920384647234422762398960664315801237564285400749454724277525689811714006217058533748758859430726006925769147904672059052723725947401879880819003174931850051429136071633807200697867867820953318408936940737783251194718335284929170810085473034145093815636178641952577515465395754614358036259938883256478835410391923683669874002630496812188314777763451185185037095888408590233797624565610306839281153499423939631856771230553247716937842149249317370437936795460514548456241502709554506083187473957557289508327546112770413596023012051385091755433135227727865041410075526919022495723751757317409236187691973046528983526943866654482600334585753232528142338680982794761667642582849114342880722431789416983473659854276969831295794960590320328412811499235180870848768851143690332277365212457405547117714234927198999823577119102255454804246883221953362404922531362818578378084917959937881991252055552221165810711344767874684305393079096174421066851595190710538449873436664524942803177201535670543641172447751413365584060985488039245094960522618251980431402726553036253156053265695302528858549918222892192012183135907454120104466422471117039019915913380626933201571806187365694399692832452794303126511926687883400336268251942602962629598842585977035848887708019612096528229823223761223035861698616851060438205104442934328562512103956932612648678239801726833527961417722103017259976523738041525250371628522914038044559973313673784636324377732429055180750654147242958574602882254000616086649616491964000793596226737706078983952690750565966271161482894910424917641709240148851061582354827747784181341232939744368770519956736186837511153538087714349842044477361747583160630962450473112798415799955781866094028642440427514431285362784534306334231186628526883742296008944189588248424594505408261764521458293892861035227741011955560296507532542444335659379385268289908931497662989977383599138871788886071907657098670524708807859379351100914247434499663534978656817538413802460756120940336174886746762968225700770270762668795579136738393410120995580438064423487980539512392749133346315224095644617704348757904022300228726475684361770186580686970717318793991803745609634927267145287292242089385899402725157478883791184616177022716940750874196341472980767647757457070269344429082366644005572655279514534821916845976742736919782536786909511787772395739254104386790993747006099739201282014223813291082365753694036759607652383337781270170965742961483210755669592850422218371597998001335632399639696386108726803932103001801520206130516134145471637137725126177572779559798958663675717764562685641910924770276501358322003764402397837265405526948517172695984892888515296609750277756395652297345967262058326684349793545419433450629778911871465610501181181082233237352108436811286154136010912220079123505369597771143065415145113323689360785609297881437988143912215075223706486467673642091321473124070149531135323798381957284911285369782859180669910409931530643561799038859520279527137496536045020535123554499166808872342387738555816361724795948668717650945139401032841679141101967202611108127167764242601545073950503805754528504207308184129947310793073435383768802801240193210401980387235587845444085843444660909828020673265290009315620489328754690798749565951805953953470932851402791654679655963183657497015358123843332409682836407213440034420026916137720567620990980257393327159139701862251764595634841341397466479401705379002753504804904688514393007719499151947030805766110225906703998449318676097774175289034547319222063789321414647554026294200742938163492700383513394191467684738513531716291539122387971419059201430360641317052304217623052328615038567995111559365651690059167118453891355809281625119124385312041561384477751207895486661436002934120657671671068885091725680035306685394605882483165133926525678562246026972962033289200733544259940449566248313469794588468375979500641518671645837492034339425921785288689813115753318489415974924704367823875026875326490930964983153474039774360013999821020308467636989947850546175232414631869808983945042114307636178253068950656615360454314979037591180079348391228818858630917694698835398768405435212957063159198557844932356038662689259817026902702028295957943508009182579139917444559226833433740466716699302196502685546875e-4951 +-5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687501e-4951 + +0.70064923216240853546186479164495807e-45 +7.00649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015624e-46 +7.00649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015625e-46 +7.00649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015626e-46 +-7.00649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015624e-46 +-7.00649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015625e-46 +-7.00649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015626e-46 +2.4703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328124e-324 +2.4703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328125e-324 +2.4703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328126e-324 +-2.4703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328124e-324 +-2.4703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328125e-324 +-2.4703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328126e-324 +1.82259976594123730126420296680970990819952540784678167186049024351418584431669886840478035431291360259862367367360176555098349281631101608498675403779490450274191129058896583928461263190281677987831078128299170536447015989677676363429562039997708640550775926919152302738435771122464765292985913410713131103376617773042203403962987686984411316948595140667733210597864690600010838133614601613871681951542280276489775942764960612766058558174381456923146501775692637508015664228929367328342904167452656185259699435199165429391997316125073430122973318829343522821181735512119859732943017878403356723899138210986814640887564778026842288063392332395425873162546186801975636139070797668304819972220170105852674422401098888180221895434381162451705845464727526614177730212750823552425549507762484741018808753638726079896241463208233641468961241718926107442376223082667022657044926746945053999973304249789647043354111258394904631316614206681676861518285530333635550805084849345427276340804672339278791177264322833523245464353153129378096510959641978734303986620037096633539629329212395162630085725125582600936685277823883492820153083593049415051104450437620211914690606070787926358977364081411635544299722928735751692643879771301240039585999097767207595829950175191441110017783298397938554546884420461552538187244104722816024213635806139907491818083029479760454178844362711626647761487494632027538147971912063924809690969103877295273058627398067023490884558283804713066036286365630374146882657021080984305152976459971071596872478304966869803153760915112192273767083898623101906331345170408354325877269319107750447803297770519645747631196394042357976659226774333324024028170376571419266465026123884210852547563237372731787743310739247077115755551931534219571260621965209529206118711148614230326874252623232432768485954951338025914378049849860538923653349006471371371975851619548239568383911087481548770985671906958133943927799958876422544137402326929408872363515336911744925148845142650068227520261364354697002916289429272868432749597813293152504173604381153301045168945974496048759541471080100519101973888604170033075957748634771829115251095545428834602408676747944708548838154240391870140692461377047103665770055763116743840798104372065112827921945625030361510289100654183705651174880622260739758549192434399417410164472062845437778260804090757560281944655628120766454222846704757309223464545058305531743779508241780347081470374488718989636990233738212174195604234593588461272325314215528265459543623864312796269176427251818027542711345978562318056661295241015095829415854218885612968394742320564741129353791774349282275541494026428939134920627812463726111753054622717119310116356020391377016695730659609458715794206834400971798313683173521572022151606820588780251530071841853198634516520873759366510045598375024838080906130739822646856203519935194543445776352574523286837269888247054743973982471908128830717347432604265401234817912837829289728424665952102694142190409017939355538720903773940059325978870813594819158491785411281829232728432185130930121677446908186036638626917272725653250577033788275532848525020676860268503396244010460868170366183668422400245220420698887085348274712352039989322593091109423678562877840971664204374301183812473393474181569023692824311977350780165916130639182603434989926970020331865584136555767033892083012035521577557018520518779278646965154203692177035106027598152525747997287067958495583828773920163969005601017367414626907539916022639742121376325089842645593155408913831923616011893504143113588169809756975685615156809718301077041526572845529202418627301258888257023010355646157596158820107337643411098344495769079824062658034841113036159712976090652715172861118398396463438153644617763942735713912193155539153353006222951965776408842015246576140657437291217544606529750759900127860216624160777572354875625503811168240060144404381782532731747344361636381195322953833511355431708115960517850363668467732859378452319744244754189705176591797980699728768894888776273098873237375908148750504573178096251637132279732290029080034917390851159718996069867384057524634361867451078210323154806935160062513887899020538632350719578957221218762625988338233522900425764882381207240722674803484256371990031477603784632430434075343952218821448873158758760259077397922975757953735064291924684701700383120505009176657075834209273037908753324078050945056651597552104952664855941872449222161542832136880323939394014264995176092751280620673551723331208577960453876924923755340564701453016713590166028324696751231085985884240222167593347334526263303037916609526590361628275094514687712979547371657019216768348669940844962684915105995807144581550267466768607900288997226458836794359699020464423731084729515154927619118848472118259301156549275391180883502559594450767573982988933806622483582100752977021911865196145152803953417231772013838628271297216496382745313147623777787545601193971231801073102166081571418283792593282745084673717170570311045377504502284479416196840733756305173220061186402909252416023762563344143764956029112654501658894183721617190636706196102146327745427411573664267478610548114494490049701326681466073235027601469575864652759810903283362563811874506460304920716945160547124445139612696233397054113663378176432693167172174324788120020498949799252604115536513853848262142313920128414259368279443832662271152360297173930646598210564674468705978287574339360244225115375618646198655959556280703437804726344639166084401515545027901284172772594924370056965764537173873096051299395266611814969942972446937104374365814436535553437638172469618344861812949854558849812664215334381772718093108970359582607762182530978586011606431206539270246528340251461663568777312665664372314290610998078251132725518693529082410739556958543548525453707936098381671273577525790074909555360813881034617350711745676369290608241723750100354970106149571977139199099246359065033480164509524755309789212426564987013135305339916928676198868262047064684760709433781635772354068612627551149096062556283756591960503706614301481072163106357293601120215712910962780320764010922253732701739505753777925668721137680859409919296558240509140850139708613990151410104328354063372667467067274819461968988824720951115052103399330025052273347500202856736346707384583901599334942268514999353369220365516871691405825741537268724538008583607648929752017570278626326151302560754685495028393678419262128727319250428386913197576633827464717820878289888579781924835957478890210814594606277052757358686187249587833483622951068755564437706268645919720898812154651410735166469301589965697476758067194636020452303250497949048947399883127275733209713104883264862130618398438300031458732794354541218179182692182949013878301564321481423815928645752291194790291300506635648891720930673414441649427368858727539840128657434212664708614252838891346368857902932357270177886061675600124771866970699942139129985509310786171897907713767025490553617452052324190314230443669713785943929520934640464416671176139062034948722091493965189712072792638835666067743532362554736033778616139422395438938944605811706580880420836614049374657066594246393012966219639062789307544592960174860630795820249954853388936995742898065294246733938102175776059529094912831231797891546390571057749606999349996810181557492618640128215744807587466320221438600412521428466916484908092508563270571335405686177916252953143575335641923049301557353017574575315800626626939667724977283350476378690544602400232622622606984439469645646912594417064906111761643056936695157678048364605212059547317525838488465251538119345419979627752159611803463974561223291334210165604062771592587817061728345698629469530077932541521870102279760384499807979877285590410184415905645947383083105790145978931820171516152080500903184835361062491319185763169442515370923471198674337350461697251811045075909288347136691842306340831907917252439136412062563991015509661175647955551494200111528584410842714112893660931587222547527616371447626907477263138994491219951425656610431931653530106776137603833078393623616256283714563444092455070819135182372571411642399666607859039700751818268082294407317787468307510454272859459361639319979293997084018517407055270237114922624894768464359698724807022283865063570179483291145554841647601059067178556847880390815917137788528020328496013081698320174206083993477134242184345417718684421898434176286183306074297397337394378635818040034822140823705679673305304460208977733857268729121898133230944150931434375503975562627800112089417314200987543199614195325678616295902673204032176076607741253741011953899538950353479401701480978109520837367985644204216226079933908944509320472574034339086658841246013841750123876174304679348186657771224594878774792577476351726916884715747652858200960751333538695549872163988000264532075579235359661317563583521988757053827631636808305880569746716283687194118275915928060447077646581456256839985578728945837051179362571449947348159120582527720210320816824370932805266651927288698009547480142504810428454261511435444743728876175627914098669648063196082808198168469420588173819431297620345075913670651853432169177514148111886459795089429969643832554329992461199712957262962023969219032890174902935953126450366971415811499887844992885605846137934153585373646778724962248920989408566923423587556265193045579464470040331860146021474495993513170797583044448771741365214872568116252634674100076242158561453923395526895656905772931330601248536544975755715095764080696461966467575052492961263728205392340905646916958065447157660255882585819023423114809694122214668524218426504844940638948658914245639927512262303170595924131913084701462263664582335366579733760671407937763694121917898012253202550794445927090056988580987161070251889864283474072790532666000445210799879898795369575601310701000600506735376838711381823879045908375392524259853266319554558572588187561880636974923425500452774001254800799279088468508982839057565328297629505098869916759252131884099115322420686108894783264515139811150209926303957155203500393727027411079117369478937095384712003637406693041168456532590381021805048371107896453595203099293812662714637405025074568828822557880697107157708023383177045107932793985761637095123260953060223303469977176881187266346286506759842379165512015006845041184833055602957447462579518605453908265316222905883648379800344280559713700655734203702709055921414200515024650167935251509501402436061376649103597691145127922934267080064403467326795745195948481361947814886969942673557755096669771873496442918230266249855317268651317823644283800930551559885321061219165671786041281110803227612135737813344806675638712573522540330326752464442386379900620750588198544947113799155493133901793000917834934968229504797669239833050649010268588703408635567999483106225365924725096344849106407354596440471549184675431400247646054497566794504464730489228246171177238763846374129323806353067143453547105684101405874350776205012855998370519788550563353055706151297118603093875039708128437347187128159250402631828887145334311373552557223689628363908560011768895131535294161055044642175226187415342324320677763066911181419980149855416104489931529489458659833547172890548612497344779808640595096229937705251106163138658308234789274625008958442163643654994384491346591453337999940340102822545663315950182058410804877289936327981680704769212059417689650218871786818104993012530393359782797076272952876972564899611799589468478404319021053066185948310785346220896419939008967567342765319314502669727526379972481519742277811246822238899767398834228515624e-4951 +1.82259976594123730126420296680970990819952540784678167186049024351418584431669886840478035431291360259862367367360176555098349281631101608498675403779490450274191129058896583928461263190281677987831078128299170536447015989677676363429562039997708640550775926919152302738435771122464765292985913410713131103376617773042203403962987686984411316948595140667733210597864690600010838133614601613871681951542280276489775942764960612766058558174381456923146501775692637508015664228929367328342904167452656185259699435199165429391997316125073430122973318829343522821181735512119859732943017878403356723899138210986814640887564778026842288063392332395425873162546186801975636139070797668304819972220170105852674422401098888180221895434381162451705845464727526614177730212750823552425549507762484741018808753638726079896241463208233641468961241718926107442376223082667022657044926746945053999973304249789647043354111258394904631316614206681676861518285530333635550805084849345427276340804672339278791177264322833523245464353153129378096510959641978734303986620037096633539629329212395162630085725125582600936685277823883492820153083593049415051104450437620211914690606070787926358977364081411635544299722928735751692643879771301240039585999097767207595829950175191441110017783298397938554546884420461552538187244104722816024213635806139907491818083029479760454178844362711626647761487494632027538147971912063924809690969103877295273058627398067023490884558283804713066036286365630374146882657021080984305152976459971071596872478304966869803153760915112192273767083898623101906331345170408354325877269319107750447803297770519645747631196394042357976659226774333324024028170376571419266465026123884210852547563237372731787743310739247077115755551931534219571260621965209529206118711148614230326874252623232432768485954951338025914378049849860538923653349006471371371975851619548239568383911087481548770985671906958133943927799958876422544137402326929408872363515336911744925148845142650068227520261364354697002916289429272868432749597813293152504173604381153301045168945974496048759541471080100519101973888604170033075957748634771829115251095545428834602408676747944708548838154240391870140692461377047103665770055763116743840798104372065112827921945625030361510289100654183705651174880622260739758549192434399417410164472062845437778260804090757560281944655628120766454222846704757309223464545058305531743779508241780347081470374488718989636990233738212174195604234593588461272325314215528265459543623864312796269176427251818027542711345978562318056661295241015095829415854218885612968394742320564741129353791774349282275541494026428939134920627812463726111753054622717119310116356020391377016695730659609458715794206834400971798313683173521572022151606820588780251530071841853198634516520873759366510045598375024838080906130739822646856203519935194543445776352574523286837269888247054743973982471908128830717347432604265401234817912837829289728424665952102694142190409017939355538720903773940059325978870813594819158491785411281829232728432185130930121677446908186036638626917272725653250577033788275532848525020676860268503396244010460868170366183668422400245220420698887085348274712352039989322593091109423678562877840971664204374301183812473393474181569023692824311977350780165916130639182603434989926970020331865584136555767033892083012035521577557018520518779278646965154203692177035106027598152525747997287067958495583828773920163969005601017367414626907539916022639742121376325089842645593155408913831923616011893504143113588169809756975685615156809718301077041526572845529202418627301258888257023010355646157596158820107337643411098344495769079824062658034841113036159712976090652715172861118398396463438153644617763942735713912193155539153353006222951965776408842015246576140657437291217544606529750759900127860216624160777572354875625503811168240060144404381782532731747344361636381195322953833511355431708115960517850363668467732859378452319744244754189705176591797980699728768894888776273098873237375908148750504573178096251637132279732290029080034917390851159718996069867384057524634361867451078210323154806935160062513887899020538632350719578957221218762625988338233522900425764882381207240722674803484256371990031477603784632430434075343952218821448873158758760259077397922975757953735064291924684701700383120505009176657075834209273037908753324078050945056651597552104952664855941872449222161542832136880323939394014264995176092751280620673551723331208577960453876924923755340564701453016713590166028324696751231085985884240222167593347334526263303037916609526590361628275094514687712979547371657019216768348669940844962684915105995807144581550267466768607900288997226458836794359699020464423731084729515154927619118848472118259301156549275391180883502559594450767573982988933806622483582100752977021911865196145152803953417231772013838628271297216496382745313147623777787545601193971231801073102166081571418283792593282745084673717170570311045377504502284479416196840733756305173220061186402909252416023762563344143764956029112654501658894183721617190636706196102146327745427411573664267478610548114494490049701326681466073235027601469575864652759810903283362563811874506460304920716945160547124445139612696233397054113663378176432693167172174324788120020498949799252604115536513853848262142313920128414259368279443832662271152360297173930646598210564674468705978287574339360244225115375618646198655959556280703437804726344639166084401515545027901284172772594924370056965764537173873096051299395266611814969942972446937104374365814436535553437638172469618344861812949854558849812664215334381772718093108970359582607762182530978586011606431206539270246528340251461663568777312665664372314290610998078251132725518693529082410739556958543548525453707936098381671273577525790074909555360813881034617350711745676369290608241723750100354970106149571977139199099246359065033480164509524755309789212426564987013135305339916928676198868262047064684760709433781635772354068612627551149096062556283756591960503706614301481072163106357293601120215712910962780320764010922253732701739505753777925668721137680859409919296558240509140850139708613990151410104328354063372667467067274819461968988824720951115052103399330025052273347500202856736346707384583901599334942268514999353369220365516871691405825741537268724538008583607648929752017570278626326151302560754685495028393678419262128727319250428386913197576633827464717820878289888579781924835957478890210814594606277052757358686187249587833483622951068755564437706268645919720898812154651410735166469301589965697476758067194636020452303250497949048947399883127275733209713104883264862130618398438300031458732794354541218179182692182949013878301564321481423815928645752291194790291300506635648891720930673414441649427368858727539840128657434212664708614252838891346368857902932357270177886061675600124771866970699942139129985509310786171897907713767025490553617452052324190314230443669713785943929520934640464416671176139062034948722091493965189712072792638835666067743532362554736033778616139422395438938944605811706580880420836614049374657066594246393012966219639062789307544592960174860630795820249954853388936995742898065294246733938102175776059529094912831231797891546390571057749606999349996810181557492618640128215744807587466320221438600412521428466916484908092508563270571335405686177916252953143575335641923049301557353017574575315800626626939667724977283350476378690544602400232622622606984439469645646912594417064906111761643056936695157678048364605212059547317525838488465251538119345419979627752159611803463974561223291334210165604062771592587817061728345698629469530077932541521870102279760384499807979877285590410184415905645947383083105790145978931820171516152080500903184835361062491319185763169442515370923471198674337350461697251811045075909288347136691842306340831907917252439136412062563991015509661175647955551494200111528584410842714112893660931587222547527616371447626907477263138994491219951425656610431931653530106776137603833078393623616256283714563444092455070819135182372571411642399666607859039700751818268082294407317787468307510454272859459361639319979293997084018517407055270237114922624894768464359698724807022283865063570179483291145554841647601059067178556847880390815917137788528020328496013081698320174206083993477134242184345417718684421898434176286183306074297397337394378635818040034822140823705679673305304460208977733857268729121898133230944150931434375503975562627800112089417314200987543199614195325678616295902673204032176076607741253741011953899538950353479401701480978109520837367985644204216226079933908944509320472574034339086658841246013841750123876174304679348186657771224594878774792577476351726916884715747652858200960751333538695549872163988000264532075579235359661317563583521988757053827631636808305880569746716283687194118275915928060447077646581456256839985578728945837051179362571449947348159120582527720210320816824370932805266651927288698009547480142504810428454261511435444743728876175627914098669648063196082808198168469420588173819431297620345075913670651853432169177514148111886459795089429969643832554329992461199712957262962023969219032890174902935953126450366971415811499887844992885605846137934153585373646778724962248920989408566923423587556265193045579464470040331860146021474495993513170797583044448771741365214872568116252634674100076242158561453923395526895656905772931330601248536544975755715095764080696461966467575052492961263728205392340905646916958065447157660255882585819023423114809694122214668524218426504844940638948658914245639927512262303170595924131913084701462263664582335366579733760671407937763694121917898012253202550794445927090056988580987161070251889864283474072790532666000445210799879898795369575601310701000600506735376838711381823879045908375392524259853266319554558572588187561880636974923425500452774001254800799279088468508982839057565328297629505098869916759252131884099115322420686108894783264515139811150209926303957155203500393727027411079117369478937095384712003637406693041168456532590381021805048371107896453595203099293812662714637405025074568828822557880697107157708023383177045107932793985761637095123260953060223303469977176881187266346286506759842379165512015006845041184833055602957447462579518605453908265316222905883648379800344280559713700655734203702709055921414200515024650167935251509501402436061376649103597691145127922934267080064403467326795745195948481361947814886969942673557755096669771873496442918230266249855317268651317823644283800930551559885321061219165671786041281110803227612135737813344806675638712573522540330326752464442386379900620750588198544947113799155493133901793000917834934968229504797669239833050649010268588703408635567999483106225365924725096344849106407354596440471549184675431400247646054497566794504464730489228246171177238763846374129323806353067143453547105684101405874350776205012855998370519788550563353055706151297118603093875039708128437347187128159250402631828887145334311373552557223689628363908560011768895131535294161055044642175226187415342324320677763066911181419980149855416104489931529489458659833547172890548612497344779808640595096229937705251106163138658308234789274625008958442163643654994384491346591453337999940340102822545663315950182058410804877289936327981680704769212059417689650218871786818104993012530393359782797076272952876972564899611799589468478404319021053066185948310785346220896419939008967567342765319314502669727526379972481519742277811246822238899767398834228515625e-4951 +1.82259976594123730126420296680970990819952540784678167186049024351418584431669886840478035431291360259862367367360176555098349281631101608498675403779490450274191129058896583928461263190281677987831078128299170536447015989677676363429562039997708640550775926919152302738435771122464765292985913410713131103376617773042203403962987686984411316948595140667733210597864690600010838133614601613871681951542280276489775942764960612766058558174381456923146501775692637508015664228929367328342904167452656185259699435199165429391997316125073430122973318829343522821181735512119859732943017878403356723899138210986814640887564778026842288063392332395425873162546186801975636139070797668304819972220170105852674422401098888180221895434381162451705845464727526614177730212750823552425549507762484741018808753638726079896241463208233641468961241718926107442376223082667022657044926746945053999973304249789647043354111258394904631316614206681676861518285530333635550805084849345427276340804672339278791177264322833523245464353153129378096510959641978734303986620037096633539629329212395162630085725125582600936685277823883492820153083593049415051104450437620211914690606070787926358977364081411635544299722928735751692643879771301240039585999097767207595829950175191441110017783298397938554546884420461552538187244104722816024213635806139907491818083029479760454178844362711626647761487494632027538147971912063924809690969103877295273058627398067023490884558283804713066036286365630374146882657021080984305152976459971071596872478304966869803153760915112192273767083898623101906331345170408354325877269319107750447803297770519645747631196394042357976659226774333324024028170376571419266465026123884210852547563237372731787743310739247077115755551931534219571260621965209529206118711148614230326874252623232432768485954951338025914378049849860538923653349006471371371975851619548239568383911087481548770985671906958133943927799958876422544137402326929408872363515336911744925148845142650068227520261364354697002916289429272868432749597813293152504173604381153301045168945974496048759541471080100519101973888604170033075957748634771829115251095545428834602408676747944708548838154240391870140692461377047103665770055763116743840798104372065112827921945625030361510289100654183705651174880622260739758549192434399417410164472062845437778260804090757560281944655628120766454222846704757309223464545058305531743779508241780347081470374488718989636990233738212174195604234593588461272325314215528265459543623864312796269176427251818027542711345978562318056661295241015095829415854218885612968394742320564741129353791774349282275541494026428939134920627812463726111753054622717119310116356020391377016695730659609458715794206834400971798313683173521572022151606820588780251530071841853198634516520873759366510045598375024838080906130739822646856203519935194543445776352574523286837269888247054743973982471908128830717347432604265401234817912837829289728424665952102694142190409017939355538720903773940059325978870813594819158491785411281829232728432185130930121677446908186036638626917272725653250577033788275532848525020676860268503396244010460868170366183668422400245220420698887085348274712352039989322593091109423678562877840971664204374301183812473393474181569023692824311977350780165916130639182603434989926970020331865584136555767033892083012035521577557018520518779278646965154203692177035106027598152525747997287067958495583828773920163969005601017367414626907539916022639742121376325089842645593155408913831923616011893504143113588169809756975685615156809718301077041526572845529202418627301258888257023010355646157596158820107337643411098344495769079824062658034841113036159712976090652715172861118398396463438153644617763942735713912193155539153353006222951965776408842015246576140657437291217544606529750759900127860216624160777572354875625503811168240060144404381782532731747344361636381195322953833511355431708115960517850363668467732859378452319744244754189705176591797980699728768894888776273098873237375908148750504573178096251637132279732290029080034917390851159718996069867384057524634361867451078210323154806935160062513887899020538632350719578957221218762625988338233522900425764882381207240722674803484256371990031477603784632430434075343952218821448873158758760259077397922975757953735064291924684701700383120505009176657075834209273037908753324078050945056651597552104952664855941872449222161542832136880323939394014264995176092751280620673551723331208577960453876924923755340564701453016713590166028324696751231085985884240222167593347334526263303037916609526590361628275094514687712979547371657019216768348669940844962684915105995807144581550267466768607900288997226458836794359699020464423731084729515154927619118848472118259301156549275391180883502559594450767573982988933806622483582100752977021911865196145152803953417231772013838628271297216496382745313147623777787545601193971231801073102166081571418283792593282745084673717170570311045377504502284479416196840733756305173220061186402909252416023762563344143764956029112654501658894183721617190636706196102146327745427411573664267478610548114494490049701326681466073235027601469575864652759810903283362563811874506460304920716945160547124445139612696233397054113663378176432693167172174324788120020498949799252604115536513853848262142313920128414259368279443832662271152360297173930646598210564674468705978287574339360244225115375618646198655959556280703437804726344639166084401515545027901284172772594924370056965764537173873096051299395266611814969942972446937104374365814436535553437638172469618344861812949854558849812664215334381772718093108970359582607762182530978586011606431206539270246528340251461663568777312665664372314290610998078251132725518693529082410739556958543548525453707936098381671273577525790074909555360813881034617350711745676369290608241723750100354970106149571977139199099246359065033480164509524755309789212426564987013135305339916928676198868262047064684760709433781635772354068612627551149096062556283756591960503706614301481072163106357293601120215712910962780320764010922253732701739505753777925668721137680859409919296558240509140850139708613990151410104328354063372667467067274819461968988824720951115052103399330025052273347500202856736346707384583901599334942268514999353369220365516871691405825741537268724538008583607648929752017570278626326151302560754685495028393678419262128727319250428386913197576633827464717820878289888579781924835957478890210814594606277052757358686187249587833483622951068755564437706268645919720898812154651410735166469301589965697476758067194636020452303250497949048947399883127275733209713104883264862130618398438300031458732794354541218179182692182949013878301564321481423815928645752291194790291300506635648891720930673414441649427368858727539840128657434212664708614252838891346368857902932357270177886061675600124771866970699942139129985509310786171897907713767025490553617452052324190314230443669713785943929520934640464416671176139062034948722091493965189712072792638835666067743532362554736033778616139422395438938944605811706580880420836614049374657066594246393012966219639062789307544592960174860630795820249954853388936995742898065294246733938102175776059529094912831231797891546390571057749606999349996810181557492618640128215744807587466320221438600412521428466916484908092508563270571335405686177916252953143575335641923049301557353017574575315800626626939667724977283350476378690544602400232622622606984439469645646912594417064906111761643056936695157678048364605212059547317525838488465251538119345419979627752159611803463974561223291334210165604062771592587817061728345698629469530077932541521870102279760384499807979877285590410184415905645947383083105790145978931820171516152080500903184835361062491319185763169442515370923471198674337350461697251811045075909288347136691842306340831907917252439136412062563991015509661175647955551494200111528584410842714112893660931587222547527616371447626907477263138994491219951425656610431931653530106776137603833078393623616256283714563444092455070819135182372571411642399666607859039700751818268082294407317787468307510454272859459361639319979293997084018517407055270237114922624894768464359698724807022283865063570179483291145554841647601059067178556847880390815917137788528020328496013081698320174206083993477134242184345417718684421898434176286183306074297397337394378635818040034822140823705679673305304460208977733857268729121898133230944150931434375503975562627800112089417314200987543199614195325678616295902673204032176076607741253741011953899538950353479401701480978109520837367985644204216226079933908944509320472574034339086658841246013841750123876174304679348186657771224594878774792577476351726916884715747652858200960751333538695549872163988000264532075579235359661317563583521988757053827631636808305880569746716283687194118275915928060447077646581456256839985578728945837051179362571449947348159120582527720210320816824370932805266651927288698009547480142504810428454261511435444743728876175627914098669648063196082808198168469420588173819431297620345075913670651853432169177514148111886459795089429969643832554329992461199712957262962023969219032890174902935953126450366971415811499887844992885605846137934153585373646778724962248920989408566923423587556265193045579464470040331860146021474495993513170797583044448771741365214872568116252634674100076242158561453923395526895656905772931330601248536544975755715095764080696461966467575052492961263728205392340905646916958065447157660255882585819023423114809694122214668524218426504844940638948658914245639927512262303170595924131913084701462263664582335366579733760671407937763694121917898012253202550794445927090056988580987161070251889864283474072790532666000445210799879898795369575601310701000600506735376838711381823879045908375392524259853266319554558572588187561880636974923425500452774001254800799279088468508982839057565328297629505098869916759252131884099115322420686108894783264515139811150209926303957155203500393727027411079117369478937095384712003637406693041168456532590381021805048371107896453595203099293812662714637405025074568828822557880697107157708023383177045107932793985761637095123260953060223303469977176881187266346286506759842379165512015006845041184833055602957447462579518605453908265316222905883648379800344280559713700655734203702709055921414200515024650167935251509501402436061376649103597691145127922934267080064403467326795745195948481361947814886969942673557755096669771873496442918230266249855317268651317823644283800930551559885321061219165671786041281110803227612135737813344806675638712573522540330326752464442386379900620750588198544947113799155493133901793000917834934968229504797669239833050649010268588703408635567999483106225365924725096344849106407354596440471549184675431400247646054497566794504464730489228246171177238763846374129323806353067143453547105684101405874350776205012855998370519788550563353055706151297118603093875039708128437347187128159250402631828887145334311373552557223689628363908560011768895131535294161055044642175226187415342324320677763066911181419980149855416104489931529489458659833547172890548612497344779808640595096229937705251106163138658308234789274625008958442163643654994384491346591453337999940340102822545663315950182058410804877289936327981680704769212059417689650218871786818104993012530393359782797076272952876972564899611799589468478404319021053066185948310785346220896419939008967567342765319314502669727526379972481519742277811246822238899767398834228515626e-4951 +-1.82259976594123730126420296680970990819952540784678167186049024351418584431669886840478035431291360259862367367360176555098349281631101608498675403779490450274191129058896583928461263190281677987831078128299170536447015989677676363429562039997708640550775926919152302738435771122464765292985913410713131103376617773042203403962987686984411316948595140667733210597864690600010838133614601613871681951542280276489775942764960612766058558174381456923146501775692637508015664228929367328342904167452656185259699435199165429391997316125073430122973318829343522821181735512119859732943017878403356723899138210986814640887564778026842288063392332395425873162546186801975636139070797668304819972220170105852674422401098888180221895434381162451705845464727526614177730212750823552425549507762484741018808753638726079896241463208233641468961241718926107442376223082667022657044926746945053999973304249789647043354111258394904631316614206681676861518285530333635550805084849345427276340804672339278791177264322833523245464353153129378096510959641978734303986620037096633539629329212395162630085725125582600936685277823883492820153083593049415051104450437620211914690606070787926358977364081411635544299722928735751692643879771301240039585999097767207595829950175191441110017783298397938554546884420461552538187244104722816024213635806139907491818083029479760454178844362711626647761487494632027538147971912063924809690969103877295273058627398067023490884558283804713066036286365630374146882657021080984305152976459971071596872478304966869803153760915112192273767083898623101906331345170408354325877269319107750447803297770519645747631196394042357976659226774333324024028170376571419266465026123884210852547563237372731787743310739247077115755551931534219571260621965209529206118711148614230326874252623232432768485954951338025914378049849860538923653349006471371371975851619548239568383911087481548770985671906958133943927799958876422544137402326929408872363515336911744925148845142650068227520261364354697002916289429272868432749597813293152504173604381153301045168945974496048759541471080100519101973888604170033075957748634771829115251095545428834602408676747944708548838154240391870140692461377047103665770055763116743840798104372065112827921945625030361510289100654183705651174880622260739758549192434399417410164472062845437778260804090757560281944655628120766454222846704757309223464545058305531743779508241780347081470374488718989636990233738212174195604234593588461272325314215528265459543623864312796269176427251818027542711345978562318056661295241015095829415854218885612968394742320564741129353791774349282275541494026428939134920627812463726111753054622717119310116356020391377016695730659609458715794206834400971798313683173521572022151606820588780251530071841853198634516520873759366510045598375024838080906130739822646856203519935194543445776352574523286837269888247054743973982471908128830717347432604265401234817912837829289728424665952102694142190409017939355538720903773940059325978870813594819158491785411281829232728432185130930121677446908186036638626917272725653250577033788275532848525020676860268503396244010460868170366183668422400245220420698887085348274712352039989322593091109423678562877840971664204374301183812473393474181569023692824311977350780165916130639182603434989926970020331865584136555767033892083012035521577557018520518779278646965154203692177035106027598152525747997287067958495583828773920163969005601017367414626907539916022639742121376325089842645593155408913831923616011893504143113588169809756975685615156809718301077041526572845529202418627301258888257023010355646157596158820107337643411098344495769079824062658034841113036159712976090652715172861118398396463438153644617763942735713912193155539153353006222951965776408842015246576140657437291217544606529750759900127860216624160777572354875625503811168240060144404381782532731747344361636381195322953833511355431708115960517850363668467732859378452319744244754189705176591797980699728768894888776273098873237375908148750504573178096251637132279732290029080034917390851159718996069867384057524634361867451078210323154806935160062513887899020538632350719578957221218762625988338233522900425764882381207240722674803484256371990031477603784632430434075343952218821448873158758760259077397922975757953735064291924684701700383120505009176657075834209273037908753324078050945056651597552104952664855941872449222161542832136880323939394014264995176092751280620673551723331208577960453876924923755340564701453016713590166028324696751231085985884240222167593347334526263303037916609526590361628275094514687712979547371657019216768348669940844962684915105995807144581550267466768607900288997226458836794359699020464423731084729515154927619118848472118259301156549275391180883502559594450767573982988933806622483582100752977021911865196145152803953417231772013838628271297216496382745313147623777787545601193971231801073102166081571418283792593282745084673717170570311045377504502284479416196840733756305173220061186402909252416023762563344143764956029112654501658894183721617190636706196102146327745427411573664267478610548114494490049701326681466073235027601469575864652759810903283362563811874506460304920716945160547124445139612696233397054113663378176432693167172174324788120020498949799252604115536513853848262142313920128414259368279443832662271152360297173930646598210564674468705978287574339360244225115375618646198655959556280703437804726344639166084401515545027901284172772594924370056965764537173873096051299395266611814969942972446937104374365814436535553437638172469618344861812949854558849812664215334381772718093108970359582607762182530978586011606431206539270246528340251461663568777312665664372314290610998078251132725518693529082410739556958543548525453707936098381671273577525790074909555360813881034617350711745676369290608241723750100354970106149571977139199099246359065033480164509524755309789212426564987013135305339916928676198868262047064684760709433781635772354068612627551149096062556283756591960503706614301481072163106357293601120215712910962780320764010922253732701739505753777925668721137680859409919296558240509140850139708613990151410104328354063372667467067274819461968988824720951115052103399330025052273347500202856736346707384583901599334942268514999353369220365516871691405825741537268724538008583607648929752017570278626326151302560754685495028393678419262128727319250428386913197576633827464717820878289888579781924835957478890210814594606277052757358686187249587833483622951068755564437706268645919720898812154651410735166469301589965697476758067194636020452303250497949048947399883127275733209713104883264862130618398438300031458732794354541218179182692182949013878301564321481423815928645752291194790291300506635648891720930673414441649427368858727539840128657434212664708614252838891346368857902932357270177886061675600124771866970699942139129985509310786171897907713767025490553617452052324190314230443669713785943929520934640464416671176139062034948722091493965189712072792638835666067743532362554736033778616139422395438938944605811706580880420836614049374657066594246393012966219639062789307544592960174860630795820249954853388936995742898065294246733938102175776059529094912831231797891546390571057749606999349996810181557492618640128215744807587466320221438600412521428466916484908092508563270571335405686177916252953143575335641923049301557353017574575315800626626939667724977283350476378690544602400232622622606984439469645646912594417064906111761643056936695157678048364605212059547317525838488465251538119345419979627752159611803463974561223291334210165604062771592587817061728345698629469530077932541521870102279760384499807979877285590410184415905645947383083105790145978931820171516152080500903184835361062491319185763169442515370923471198674337350461697251811045075909288347136691842306340831907917252439136412062563991015509661175647955551494200111528584410842714112893660931587222547527616371447626907477263138994491219951425656610431931653530106776137603833078393623616256283714563444092455070819135182372571411642399666607859039700751818268082294407317787468307510454272859459361639319979293997084018517407055270237114922624894768464359698724807022283865063570179483291145554841647601059067178556847880390815917137788528020328496013081698320174206083993477134242184345417718684421898434176286183306074297397337394378635818040034822140823705679673305304460208977733857268729121898133230944150931434375503975562627800112089417314200987543199614195325678616295902673204032176076607741253741011953899538950353479401701480978109520837367985644204216226079933908944509320472574034339086658841246013841750123876174304679348186657771224594878774792577476351726916884715747652858200960751333538695549872163988000264532075579235359661317563583521988757053827631636808305880569746716283687194118275915928060447077646581456256839985578728945837051179362571449947348159120582527720210320816824370932805266651927288698009547480142504810428454261511435444743728876175627914098669648063196082808198168469420588173819431297620345075913670651853432169177514148111886459795089429969643832554329992461199712957262962023969219032890174902935953126450366971415811499887844992885605846137934153585373646778724962248920989408566923423587556265193045579464470040331860146021474495993513170797583044448771741365214872568116252634674100076242158561453923395526895656905772931330601248536544975755715095764080696461966467575052492961263728205392340905646916958065447157660255882585819023423114809694122214668524218426504844940638948658914245639927512262303170595924131913084701462263664582335366579733760671407937763694121917898012253202550794445927090056988580987161070251889864283474072790532666000445210799879898795369575601310701000600506735376838711381823879045908375392524259853266319554558572588187561880636974923425500452774001254800799279088468508982839057565328297629505098869916759252131884099115322420686108894783264515139811150209926303957155203500393727027411079117369478937095384712003637406693041168456532590381021805048371107896453595203099293812662714637405025074568828822557880697107157708023383177045107932793985761637095123260953060223303469977176881187266346286506759842379165512015006845041184833055602957447462579518605453908265316222905883648379800344280559713700655734203702709055921414200515024650167935251509501402436061376649103597691145127922934267080064403467326795745195948481361947814886969942673557755096669771873496442918230266249855317268651317823644283800930551559885321061219165671786041281110803227612135737813344806675638712573522540330326752464442386379900620750588198544947113799155493133901793000917834934968229504797669239833050649010268588703408635567999483106225365924725096344849106407354596440471549184675431400247646054497566794504464730489228246171177238763846374129323806353067143453547105684101405874350776205012855998370519788550563353055706151297118603093875039708128437347187128159250402631828887145334311373552557223689628363908560011768895131535294161055044642175226187415342324320677763066911181419980149855416104489931529489458659833547172890548612497344779808640595096229937705251106163138658308234789274625008958442163643654994384491346591453337999940340102822545663315950182058410804877289936327981680704769212059417689650218871786818104993012530393359782797076272952876972564899611799589468478404319021053066185948310785346220896419939008967567342765319314502669727526379972481519742277811246822238899767398834228515624e-4951 +-1.82259976594123730126420296680970990819952540784678167186049024351418584431669886840478035431291360259862367367360176555098349281631101608498675403779490450274191129058896583928461263190281677987831078128299170536447015989677676363429562039997708640550775926919152302738435771122464765292985913410713131103376617773042203403962987686984411316948595140667733210597864690600010838133614601613871681951542280276489775942764960612766058558174381456923146501775692637508015664228929367328342904167452656185259699435199165429391997316125073430122973318829343522821181735512119859732943017878403356723899138210986814640887564778026842288063392332395425873162546186801975636139070797668304819972220170105852674422401098888180221895434381162451705845464727526614177730212750823552425549507762484741018808753638726079896241463208233641468961241718926107442376223082667022657044926746945053999973304249789647043354111258394904631316614206681676861518285530333635550805084849345427276340804672339278791177264322833523245464353153129378096510959641978734303986620037096633539629329212395162630085725125582600936685277823883492820153083593049415051104450437620211914690606070787926358977364081411635544299722928735751692643879771301240039585999097767207595829950175191441110017783298397938554546884420461552538187244104722816024213635806139907491818083029479760454178844362711626647761487494632027538147971912063924809690969103877295273058627398067023490884558283804713066036286365630374146882657021080984305152976459971071596872478304966869803153760915112192273767083898623101906331345170408354325877269319107750447803297770519645747631196394042357976659226774333324024028170376571419266465026123884210852547563237372731787743310739247077115755551931534219571260621965209529206118711148614230326874252623232432768485954951338025914378049849860538923653349006471371371975851619548239568383911087481548770985671906958133943927799958876422544137402326929408872363515336911744925148845142650068227520261364354697002916289429272868432749597813293152504173604381153301045168945974496048759541471080100519101973888604170033075957748634771829115251095545428834602408676747944708548838154240391870140692461377047103665770055763116743840798104372065112827921945625030361510289100654183705651174880622260739758549192434399417410164472062845437778260804090757560281944655628120766454222846704757309223464545058305531743779508241780347081470374488718989636990233738212174195604234593588461272325314215528265459543623864312796269176427251818027542711345978562318056661295241015095829415854218885612968394742320564741129353791774349282275541494026428939134920627812463726111753054622717119310116356020391377016695730659609458715794206834400971798313683173521572022151606820588780251530071841853198634516520873759366510045598375024838080906130739822646856203519935194543445776352574523286837269888247054743973982471908128830717347432604265401234817912837829289728424665952102694142190409017939355538720903773940059325978870813594819158491785411281829232728432185130930121677446908186036638626917272725653250577033788275532848525020676860268503396244010460868170366183668422400245220420698887085348274712352039989322593091109423678562877840971664204374301183812473393474181569023692824311977350780165916130639182603434989926970020331865584136555767033892083012035521577557018520518779278646965154203692177035106027598152525747997287067958495583828773920163969005601017367414626907539916022639742121376325089842645593155408913831923616011893504143113588169809756975685615156809718301077041526572845529202418627301258888257023010355646157596158820107337643411098344495769079824062658034841113036159712976090652715172861118398396463438153644617763942735713912193155539153353006222951965776408842015246576140657437291217544606529750759900127860216624160777572354875625503811168240060144404381782532731747344361636381195322953833511355431708115960517850363668467732859378452319744244754189705176591797980699728768894888776273098873237375908148750504573178096251637132279732290029080034917390851159718996069867384057524634361867451078210323154806935160062513887899020538632350719578957221218762625988338233522900425764882381207240722674803484256371990031477603784632430434075343952218821448873158758760259077397922975757953735064291924684701700383120505009176657075834209273037908753324078050945056651597552104952664855941872449222161542832136880323939394014264995176092751280620673551723331208577960453876924923755340564701453016713590166028324696751231085985884240222167593347334526263303037916609526590361628275094514687712979547371657019216768348669940844962684915105995807144581550267466768607900288997226458836794359699020464423731084729515154927619118848472118259301156549275391180883502559594450767573982988933806622483582100752977021911865196145152803953417231772013838628271297216496382745313147623777787545601193971231801073102166081571418283792593282745084673717170570311045377504502284479416196840733756305173220061186402909252416023762563344143764956029112654501658894183721617190636706196102146327745427411573664267478610548114494490049701326681466073235027601469575864652759810903283362563811874506460304920716945160547124445139612696233397054113663378176432693167172174324788120020498949799252604115536513853848262142313920128414259368279443832662271152360297173930646598210564674468705978287574339360244225115375618646198655959556280703437804726344639166084401515545027901284172772594924370056965764537173873096051299395266611814969942972446937104374365814436535553437638172469618344861812949854558849812664215334381772718093108970359582607762182530978586011606431206539270246528340251461663568777312665664372314290610998078251132725518693529082410739556958543548525453707936098381671273577525790074909555360813881034617350711745676369290608241723750100354970106149571977139199099246359065033480164509524755309789212426564987013135305339916928676198868262047064684760709433781635772354068612627551149096062556283756591960503706614301481072163106357293601120215712910962780320764010922253732701739505753777925668721137680859409919296558240509140850139708613990151410104328354063372667467067274819461968988824720951115052103399330025052273347500202856736346707384583901599334942268514999353369220365516871691405825741537268724538008583607648929752017570278626326151302560754685495028393678419262128727319250428386913197576633827464717820878289888579781924835957478890210814594606277052757358686187249587833483622951068755564437706268645919720898812154651410735166469301589965697476758067194636020452303250497949048947399883127275733209713104883264862130618398438300031458732794354541218179182692182949013878301564321481423815928645752291194790291300506635648891720930673414441649427368858727539840128657434212664708614252838891346368857902932357270177886061675600124771866970699942139129985509310786171897907713767025490553617452052324190314230443669713785943929520934640464416671176139062034948722091493965189712072792638835666067743532362554736033778616139422395438938944605811706580880420836614049374657066594246393012966219639062789307544592960174860630795820249954853388936995742898065294246733938102175776059529094912831231797891546390571057749606999349996810181557492618640128215744807587466320221438600412521428466916484908092508563270571335405686177916252953143575335641923049301557353017574575315800626626939667724977283350476378690544602400232622622606984439469645646912594417064906111761643056936695157678048364605212059547317525838488465251538119345419979627752159611803463974561223291334210165604062771592587817061728345698629469530077932541521870102279760384499807979877285590410184415905645947383083105790145978931820171516152080500903184835361062491319185763169442515370923471198674337350461697251811045075909288347136691842306340831907917252439136412062563991015509661175647955551494200111528584410842714112893660931587222547527616371447626907477263138994491219951425656610431931653530106776137603833078393623616256283714563444092455070819135182372571411642399666607859039700751818268082294407317787468307510454272859459361639319979293997084018517407055270237114922624894768464359698724807022283865063570179483291145554841647601059067178556847880390815917137788528020328496013081698320174206083993477134242184345417718684421898434176286183306074297397337394378635818040034822140823705679673305304460208977733857268729121898133230944150931434375503975562627800112089417314200987543199614195325678616295902673204032176076607741253741011953899538950353479401701480978109520837367985644204216226079933908944509320472574034339086658841246013841750123876174304679348186657771224594878774792577476351726916884715747652858200960751333538695549872163988000264532075579235359661317563583521988757053827631636808305880569746716283687194118275915928060447077646581456256839985578728945837051179362571449947348159120582527720210320816824370932805266651927288698009547480142504810428454261511435444743728876175627914098669648063196082808198168469420588173819431297620345075913670651853432169177514148111886459795089429969643832554329992461199712957262962023969219032890174902935953126450366971415811499887844992885605846137934153585373646778724962248920989408566923423587556265193045579464470040331860146021474495993513170797583044448771741365214872568116252634674100076242158561453923395526895656905772931330601248536544975755715095764080696461966467575052492961263728205392340905646916958065447157660255882585819023423114809694122214668524218426504844940638948658914245639927512262303170595924131913084701462263664582335366579733760671407937763694121917898012253202550794445927090056988580987161070251889864283474072790532666000445210799879898795369575601310701000600506735376838711381823879045908375392524259853266319554558572588187561880636974923425500452774001254800799279088468508982839057565328297629505098869916759252131884099115322420686108894783264515139811150209926303957155203500393727027411079117369478937095384712003637406693041168456532590381021805048371107896453595203099293812662714637405025074568828822557880697107157708023383177045107932793985761637095123260953060223303469977176881187266346286506759842379165512015006845041184833055602957447462579518605453908265316222905883648379800344280559713700655734203702709055921414200515024650167935251509501402436061376649103597691145127922934267080064403467326795745195948481361947814886969942673557755096669771873496442918230266249855317268651317823644283800930551559885321061219165671786041281110803227612135737813344806675638712573522540330326752464442386379900620750588198544947113799155493133901793000917834934968229504797669239833050649010268588703408635567999483106225365924725096344849106407354596440471549184675431400247646054497566794504464730489228246171177238763846374129323806353067143453547105684101405874350776205012855998370519788550563353055706151297118603093875039708128437347187128159250402631828887145334311373552557223689628363908560011768895131535294161055044642175226187415342324320677763066911181419980149855416104489931529489458659833547172890548612497344779808640595096229937705251106163138658308234789274625008958442163643654994384491346591453337999940340102822545663315950182058410804877289936327981680704769212059417689650218871786818104993012530393359782797076272952876972564899611799589468478404319021053066185948310785346220896419939008967567342765319314502669727526379972481519742277811246822238899767398834228515625e-4951 +-1.82259976594123730126420296680970990819952540784678167186049024351418584431669886840478035431291360259862367367360176555098349281631101608498675403779490450274191129058896583928461263190281677987831078128299170536447015989677676363429562039997708640550775926919152302738435771122464765292985913410713131103376617773042203403962987686984411316948595140667733210597864690600010838133614601613871681951542280276489775942764960612766058558174381456923146501775692637508015664228929367328342904167452656185259699435199165429391997316125073430122973318829343522821181735512119859732943017878403356723899138210986814640887564778026842288063392332395425873162546186801975636139070797668304819972220170105852674422401098888180221895434381162451705845464727526614177730212750823552425549507762484741018808753638726079896241463208233641468961241718926107442376223082667022657044926746945053999973304249789647043354111258394904631316614206681676861518285530333635550805084849345427276340804672339278791177264322833523245464353153129378096510959641978734303986620037096633539629329212395162630085725125582600936685277823883492820153083593049415051104450437620211914690606070787926358977364081411635544299722928735751692643879771301240039585999097767207595829950175191441110017783298397938554546884420461552538187244104722816024213635806139907491818083029479760454178844362711626647761487494632027538147971912063924809690969103877295273058627398067023490884558283804713066036286365630374146882657021080984305152976459971071596872478304966869803153760915112192273767083898623101906331345170408354325877269319107750447803297770519645747631196394042357976659226774333324024028170376571419266465026123884210852547563237372731787743310739247077115755551931534219571260621965209529206118711148614230326874252623232432768485954951338025914378049849860538923653349006471371371975851619548239568383911087481548770985671906958133943927799958876422544137402326929408872363515336911744925148845142650068227520261364354697002916289429272868432749597813293152504173604381153301045168945974496048759541471080100519101973888604170033075957748634771829115251095545428834602408676747944708548838154240391870140692461377047103665770055763116743840798104372065112827921945625030361510289100654183705651174880622260739758549192434399417410164472062845437778260804090757560281944655628120766454222846704757309223464545058305531743779508241780347081470374488718989636990233738212174195604234593588461272325314215528265459543623864312796269176427251818027542711345978562318056661295241015095829415854218885612968394742320564741129353791774349282275541494026428939134920627812463726111753054622717119310116356020391377016695730659609458715794206834400971798313683173521572022151606820588780251530071841853198634516520873759366510045598375024838080906130739822646856203519935194543445776352574523286837269888247054743973982471908128830717347432604265401234817912837829289728424665952102694142190409017939355538720903773940059325978870813594819158491785411281829232728432185130930121677446908186036638626917272725653250577033788275532848525020676860268503396244010460868170366183668422400245220420698887085348274712352039989322593091109423678562877840971664204374301183812473393474181569023692824311977350780165916130639182603434989926970020331865584136555767033892083012035521577557018520518779278646965154203692177035106027598152525747997287067958495583828773920163969005601017367414626907539916022639742121376325089842645593155408913831923616011893504143113588169809756975685615156809718301077041526572845529202418627301258888257023010355646157596158820107337643411098344495769079824062658034841113036159712976090652715172861118398396463438153644617763942735713912193155539153353006222951965776408842015246576140657437291217544606529750759900127860216624160777572354875625503811168240060144404381782532731747344361636381195322953833511355431708115960517850363668467732859378452319744244754189705176591797980699728768894888776273098873237375908148750504573178096251637132279732290029080034917390851159718996069867384057524634361867451078210323154806935160062513887899020538632350719578957221218762625988338233522900425764882381207240722674803484256371990031477603784632430434075343952218821448873158758760259077397922975757953735064291924684701700383120505009176657075834209273037908753324078050945056651597552104952664855941872449222161542832136880323939394014264995176092751280620673551723331208577960453876924923755340564701453016713590166028324696751231085985884240222167593347334526263303037916609526590361628275094514687712979547371657019216768348669940844962684915105995807144581550267466768607900288997226458836794359699020464423731084729515154927619118848472118259301156549275391180883502559594450767573982988933806622483582100752977021911865196145152803953417231772013838628271297216496382745313147623777787545601193971231801073102166081571418283792593282745084673717170570311045377504502284479416196840733756305173220061186402909252416023762563344143764956029112654501658894183721617190636706196102146327745427411573664267478610548114494490049701326681466073235027601469575864652759810903283362563811874506460304920716945160547124445139612696233397054113663378176432693167172174324788120020498949799252604115536513853848262142313920128414259368279443832662271152360297173930646598210564674468705978287574339360244225115375618646198655959556280703437804726344639166084401515545027901284172772594924370056965764537173873096051299395266611814969942972446937104374365814436535553437638172469618344861812949854558849812664215334381772718093108970359582607762182530978586011606431206539270246528340251461663568777312665664372314290610998078251132725518693529082410739556958543548525453707936098381671273577525790074909555360813881034617350711745676369290608241723750100354970106149571977139199099246359065033480164509524755309789212426564987013135305339916928676198868262047064684760709433781635772354068612627551149096062556283756591960503706614301481072163106357293601120215712910962780320764010922253732701739505753777925668721137680859409919296558240509140850139708613990151410104328354063372667467067274819461968988824720951115052103399330025052273347500202856736346707384583901599334942268514999353369220365516871691405825741537268724538008583607648929752017570278626326151302560754685495028393678419262128727319250428386913197576633827464717820878289888579781924835957478890210814594606277052757358686187249587833483622951068755564437706268645919720898812154651410735166469301589965697476758067194636020452303250497949048947399883127275733209713104883264862130618398438300031458732794354541218179182692182949013878301564321481423815928645752291194790291300506635648891720930673414441649427368858727539840128657434212664708614252838891346368857902932357270177886061675600124771866970699942139129985509310786171897907713767025490553617452052324190314230443669713785943929520934640464416671176139062034948722091493965189712072792638835666067743532362554736033778616139422395438938944605811706580880420836614049374657066594246393012966219639062789307544592960174860630795820249954853388936995742898065294246733938102175776059529094912831231797891546390571057749606999349996810181557492618640128215744807587466320221438600412521428466916484908092508563270571335405686177916252953143575335641923049301557353017574575315800626626939667724977283350476378690544602400232622622606984439469645646912594417064906111761643056936695157678048364605212059547317525838488465251538119345419979627752159611803463974561223291334210165604062771592587817061728345698629469530077932541521870102279760384499807979877285590410184415905645947383083105790145978931820171516152080500903184835361062491319185763169442515370923471198674337350461697251811045075909288347136691842306340831907917252439136412062563991015509661175647955551494200111528584410842714112893660931587222547527616371447626907477263138994491219951425656610431931653530106776137603833078393623616256283714563444092455070819135182372571411642399666607859039700751818268082294407317787468307510454272859459361639319979293997084018517407055270237114922624894768464359698724807022283865063570179483291145554841647601059067178556847880390815917137788528020328496013081698320174206083993477134242184345417718684421898434176286183306074297397337394378635818040034822140823705679673305304460208977733857268729121898133230944150931434375503975562627800112089417314200987543199614195325678616295902673204032176076607741253741011953899538950353479401701480978109520837367985644204216226079933908944509320472574034339086658841246013841750123876174304679348186657771224594878774792577476351726916884715747652858200960751333538695549872163988000264532075579235359661317563583521988757053827631636808305880569746716283687194118275915928060447077646581456256839985578728945837051179362571449947348159120582527720210320816824370932805266651927288698009547480142504810428454261511435444743728876175627914098669648063196082808198168469420588173819431297620345075913670651853432169177514148111886459795089429969643832554329992461199712957262962023969219032890174902935953126450366971415811499887844992885605846137934153585373646778724962248920989408566923423587556265193045579464470040331860146021474495993513170797583044448771741365214872568116252634674100076242158561453923395526895656905772931330601248536544975755715095764080696461966467575052492961263728205392340905646916958065447157660255882585819023423114809694122214668524218426504844940638948658914245639927512262303170595924131913084701462263664582335366579733760671407937763694121917898012253202550794445927090056988580987161070251889864283474072790532666000445210799879898795369575601310701000600506735376838711381823879045908375392524259853266319554558572588187561880636974923425500452774001254800799279088468508982839057565328297629505098869916759252131884099115322420686108894783264515139811150209926303957155203500393727027411079117369478937095384712003637406693041168456532590381021805048371107896453595203099293812662714637405025074568828822557880697107157708023383177045107932793985761637095123260953060223303469977176881187266346286506759842379165512015006845041184833055602957447462579518605453908265316222905883648379800344280559713700655734203702709055921414200515024650167935251509501402436061376649103597691145127922934267080064403467326795745195948481361947814886969942673557755096669771873496442918230266249855317268651317823644283800930551559885321061219165671786041281110803227612135737813344806675638712573522540330326752464442386379900620750588198544947113799155493133901793000917834934968229504797669239833050649010268588703408635567999483106225365924725096344849106407354596440471549184675431400247646054497566794504464730489228246171177238763846374129323806353067143453547105684101405874350776205012855998370519788550563353055706151297118603093875039708128437347187128159250402631828887145334311373552557223689628363908560011768895131535294161055044642175226187415342324320677763066911181419980149855416104489931529489458659833547172890548612497344779808640595096229937705251106163138658308234789274625008958442163643654994384491346591453337999940340102822545663315950182058410804877289936327981680704769212059417689650218871786818104993012530393359782797076272952876972564899611799589468478404319021053066185948310785346220896419939008967567342765319314502669727526379972481519742277811246822238899767398834228515626e-4951 +9.11299882970618650632101483404854954099762703923390835930245121757092922158349434202390177156456801299311836836800882775491746408155508042493377018897452251370955645294482919642306315951408389939155390641495852682235079948388381817147810199988543202753879634595761513692178855612323826464929567053565655516883088865211017019814938434922056584742975703338666052989323453000054190668073008069358409757711401382448879713824803063830292790871907284615732508878463187540078321144646836641714520837263280926298497175995827146959986580625367150614866594146717614105908677560599298664715089392016783619495691054934073204437823890134211440316961661977129365812730934009878180695353988341524099861100850529263372112005494440901109477171905812258529227323637633070888651063754117762127747538812423705094043768193630399481207316041168207344806208594630537211881115413335113285224633734725269999866521248948235216770556291974523156583071033408384307591427651668177754025424246727136381704023361696393955886321614167616227321765765646890482554798209893671519933100185483167698146646061975813150428625627913004683426389119417464100765417965247075255522252188101059573453030353939631794886820407058177721498614643678758463219398856506200197929995488836037979149750875957205550088916491989692772734422102307762690936220523614080121068179030699537459090415147398802270894221813558133238807437473160137690739859560319624048454845519386476365293136990335117454422791419023565330181431828151870734413285105404921525764882299855357984362391524834349015768804575560961368835419493115509531656725852041771629386346595538752239016488852598228738155981970211789883296133871666620120140851882857096332325130619421054262737816186863658938716553696235385578777759657671097856303109826047646030593555743071151634371263116162163842429774756690129571890249249302694618266745032356856859879258097741197841919555437407743854928359534790669719638999794382112720687011634647044361817576684558724625744225713250341137601306821773485014581447146364342163747989066465762520868021905766505225844729872480243797707355400502595509869443020850165379788743173859145576255477727144173012043383739723542744190771201959350703462306885235518328850278815583719203990521860325564139609728125151807551445503270918528255874403111303698792745962171997087050822360314227188891304020453787801409723278140603832271114233523786546117322725291527658718897541208901735407351872443594948184951168691060870978021172967942306361626571077641327297718119321563981345882136259090137713556729892811590283306476205075479147079271094428064841973711602823705646768958871746411377707470132144695674603139062318630558765273113585596550581780101956885083478653298047293578971034172004858991568415867607860110758034102943901257650359209265993172582604368796832550227991875124190404530653699113234281017599675972717228881762872616434186349441235273719869912359540644153586737163021327006174089564189146448642123329760513470710952045089696777693604518869700296629894354067974095792458927056409146163642160925654650608387234540930183193134586363628266252885168941377664242625103384301342516981220052304340851830918342112001226102103494435426741373561760199946612965455547118392814389204858321021871505919062366967370907845118464121559886753900829580653195913017174949634850101659327920682778835169460415060177607887785092602593896393234825771018460885175530137990762628739986435339792477919143869600819845028005086837073134537699580113198710606881625449213227965777044569159618080059467520715567940849048784878428075784048591505385207632864227646012093136506294441285115051778230787980794100536688217055491722478845399120313290174205565180798564880453263575864305591991982317190768223088819713678569560965777695766765031114759828882044210076232880703287186456087723032648753799500639301083120803887861774378127519055841200300722021908912663658736721808181905976614769167556777158540579802589251818342338664296892261598721223770948525882958989903498643844474443881365494366186879540743752522865890481258185661398661450145400174586954255798594980349336920287623171809337255391051615774034675800312569439495102693161753597894786106093813129941691167614502128824411906036203613374017421281859950157388018923162152170376719761094107244365793793801295386989614878789768675321459623423508501915602525045883285379171046365189543766620390254725283257987760524763324279709362246110807714160684401619696970071324975880463756403103367758616656042889802269384624618776702823507265083567950830141623483756155429929421201110837966736672631316515189583047632951808141375472573438564897736858285096083841743349704224813424575529979035722907751337333843039501444986132294183971798495102322118655423647575774638095594242360591296505782746376955904417512797972253837869914944669033112417910503764885109559325980725764019767086158860069193141356486082481913726565738118888937728005969856159005365510830407857091418962966413725423368585852851555226887522511422397080984203668781525866100305932014546262080118812816720718824780145563272508294470918608085953183530980510731638727137057868321337393052740572472450248506633407330366175138007347879323263799054516416812819059372532301524603584725802735622225698063481166985270568316890882163465835860871623940600102494748996263020577682569269241310711569600642071296841397219163311355761801485869653232991052823372343529891437871696801221125576878093230993279797781403517189023631723195830422007577725139506420863862974621850284828822685869365480256496976333059074849714862234685521871829072182677767188190862348091724309064749272794249063321076671908863590465544851797913038810912654892930058032156032696351232641701257308317843886563328321861571453054990391255663627593467645412053697784792717742627268539680491908356367887628950374547776804069405173086753558728381846453041208618750501774850530747859885695995496231795325167400822547623776548946062132824935065676526699584643380994341310235323423803547168908178861770343063137755745480312781418782959802518533071507405360815531786468005601078564554813901603820054611268663508697528768889628343605688404297049596482791202545704250698543069950757050521641770316863337335336374097309844944123604755575260516996650125261366737501014283681733536922919507996674711342574996766846101827584358457029128707686343622690042918038244648760087851393131630756512803773427475141968392096310643636596252141934565987883169137323589104391449442898909624179787394451054072973031385263786793430936247939167418114755343777822188531343229598604494060773257053675832346507949828487383790335973180102261516252489745244736999415636378666048565524416324310653091992191500157293663971772706090895913460914745069391507821607407119079643228761455973951456502533178244458604653367072208247136844293637699200643287171063323543071264194456731844289514661786350889430308378000623859334853499710695649927546553930859489538568835127452768087260261620951571152218348568929719647604673202322083355880695310174743610457469825948560363963194178330338717661812773680168893080697111977194694723029058532904402104183070246873285332971231965064831098195313946537722964800874303153979101249774266944684978714490326471233669690510878880297645474564156158989457731952855288748034996749984050907787463093200641078724037937331601107193002062607142334582424540462542816352856677028430889581264765717876678209615246507786765087872876579003133134698338624886416752381893452723012001163113113034922197348228234562972085324530558808215284683475788390241823026060297736587629192442326257690596727099898138760798059017319872806116456671050828020313857962939085308641728493147347650389662707609350511398801922499039899386427952050922079528229736915415528950729894659100857580760402504515924176805312456595928815847212576854617355993371686752308486259055225379546441735683459211531704159539586262195682060312819955077548305878239777757471000557642922054213570564468304657936112737638081857238134537386315694972456099757128283052159658267650533880688019165391968118081281418572817220462275354095675911862857058211998333039295198503759091340411472036588937341537552271364297296808196599896469985420092587035276351185574613124473842321798493624035111419325317850897416455727774208238005295335892784239401954079585688942640101642480065408491600871030419967385671210921727088593422109492170881430916530371486986686971893179090200174110704118528398366526522301044888669286343645609490666154720754657171877519877813139000560447086571004937715998070976628393081479513366020160880383038706268705059769497694751767397008507404890547604186839928221021081130399669544722546602362870171695433294206230069208750619380871523396740933288856122974393873962887381758634584423578738264291004803756667693477749360819940001322660377896176798306587817917609943785269138158184041529402848733581418435970591379579640302235388232907281284199927893644729185255896812857249736740795602912638601051604084121854664026333259636443490047737400712524052142271307557177223718644380878139570493348240315980414040990842347102940869097156488101725379568353259267160845887570740559432298975447149848219162771649962305998564786314810119846095164450874514679765632251834857079057499439224964428029230689670767926868233893624811244604947042834617117937781325965227897322350201659300730107372479967565853987915222243858706826074362840581263173370500381210792807269616977634478284528864656653006242682724878778575478820403482309832337875262464806318641026961704528234584790327235788301279412929095117115574048470611073342621092132524224703194743294571228199637561311515852979620659565423507311318322911676832898668803357039688818470609589490061266012753972229635450284942904935805351259449321417370363952663330002226053999399493976847878006553505003002533676884193556909119395229541876962621299266331597772792862940937809403184874617127502263870006274003996395442342544914195287826641488147525494349583796260659420495576612103430544473916322575699055751049631519785776017501968635137055395586847394685476923560018187033465205842282662951905109025241855539482267976015496469063313573187025125372844144112789403485535788540116915885225539663969928808185475616304765301116517349885884405936331731432533799211895827560075034225205924165278014787237312897593027269541326581114529418241899001721402798568503278671018513545279607071002575123250839676257547507012180306883245517988455725639614671335400322017336633978725979742406809739074434849713367788775483348859367482214591151331249276586343256589118221419004652757799426605306095828358930206405554016138060678689066724033378193562867612701651633762322211931899503103752940992724735568995777465669508965004589174674841147523988346199165253245051342943517043177839997415531126829623625481724245532036772982202357745923377157001238230272487833972522323652446141230855886193819231870646619031765335717267735528420507029371753881025064279991852598942752816765278530756485593015469375198540642186735935640796252013159144435726671556867762786118448141819542800058844475657676470805275223210876130937076711621603388815334555907099900749277080522449657647447293299167735864452743062486723899043202975481149688526255530815693291541173946373125044792210818218274971922456732957266689999701700514112728316579750910292054024386449681639908403523846060297088448251094358934090524965062651966798913985381364764384862824498058997947342392021595105265330929741553926731104482099695044837836713826596572513348637631899862407598711389056234111194498836994171142578124e-4952 +9.11299882970618650632101483404854954099762703923390835930245121757092922158349434202390177156456801299311836836800882775491746408155508042493377018897452251370955645294482919642306315951408389939155390641495852682235079948388381817147810199988543202753879634595761513692178855612323826464929567053565655516883088865211017019814938434922056584742975703338666052989323453000054190668073008069358409757711401382448879713824803063830292790871907284615732508878463187540078321144646836641714520837263280926298497175995827146959986580625367150614866594146717614105908677560599298664715089392016783619495691054934073204437823890134211440316961661977129365812730934009878180695353988341524099861100850529263372112005494440901109477171905812258529227323637633070888651063754117762127747538812423705094043768193630399481207316041168207344806208594630537211881115413335113285224633734725269999866521248948235216770556291974523156583071033408384307591427651668177754025424246727136381704023361696393955886321614167616227321765765646890482554798209893671519933100185483167698146646061975813150428625627913004683426389119417464100765417965247075255522252188101059573453030353939631794886820407058177721498614643678758463219398856506200197929995488836037979149750875957205550088916491989692772734422102307762690936220523614080121068179030699537459090415147398802270894221813558133238807437473160137690739859560319624048454845519386476365293136990335117454422791419023565330181431828151870734413285105404921525764882299855357984362391524834349015768804575560961368835419493115509531656725852041771629386346595538752239016488852598228738155981970211789883296133871666620120140851882857096332325130619421054262737816186863658938716553696235385578777759657671097856303109826047646030593555743071151634371263116162163842429774756690129571890249249302694618266745032356856859879258097741197841919555437407743854928359534790669719638999794382112720687011634647044361817576684558724625744225713250341137601306821773485014581447146364342163747989066465762520868021905766505225844729872480243797707355400502595509869443020850165379788743173859145576255477727144173012043383739723542744190771201959350703462306885235518328850278815583719203990521860325564139609728125151807551445503270918528255874403111303698792745962171997087050822360314227188891304020453787801409723278140603832271114233523786546117322725291527658718897541208901735407351872443594948184951168691060870978021172967942306361626571077641327297718119321563981345882136259090137713556729892811590283306476205075479147079271094428064841973711602823705646768958871746411377707470132144695674603139062318630558765273113585596550581780101956885083478653298047293578971034172004858991568415867607860110758034102943901257650359209265993172582604368796832550227991875124190404530653699113234281017599675972717228881762872616434186349441235273719869912359540644153586737163021327006174089564189146448642123329760513470710952045089696777693604518869700296629894354067974095792458927056409146163642160925654650608387234540930183193134586363628266252885168941377664242625103384301342516981220052304340851830918342112001226102103494435426741373561760199946612965455547118392814389204858321021871505919062366967370907845118464121559886753900829580653195913017174949634850101659327920682778835169460415060177607887785092602593896393234825771018460885175530137990762628739986435339792477919143869600819845028005086837073134537699580113198710606881625449213227965777044569159618080059467520715567940849048784878428075784048591505385207632864227646012093136506294441285115051778230787980794100536688217055491722478845399120313290174205565180798564880453263575864305591991982317190768223088819713678569560965777695766765031114759828882044210076232880703287186456087723032648753799500639301083120803887861774378127519055841200300722021908912663658736721808181905976614769167556777158540579802589251818342338664296892261598721223770948525882958989903498643844474443881365494366186879540743752522865890481258185661398661450145400174586954255798594980349336920287623171809337255391051615774034675800312569439495102693161753597894786106093813129941691167614502128824411906036203613374017421281859950157388018923162152170376719761094107244365793793801295386989614878789768675321459623423508501915602525045883285379171046365189543766620390254725283257987760524763324279709362246110807714160684401619696970071324975880463756403103367758616656042889802269384624618776702823507265083567950830141623483756155429929421201110837966736672631316515189583047632951808141375472573438564897736858285096083841743349704224813424575529979035722907751337333843039501444986132294183971798495102322118655423647575774638095594242360591296505782746376955904417512797972253837869914944669033112417910503764885109559325980725764019767086158860069193141356486082481913726565738118888937728005969856159005365510830407857091418962966413725423368585852851555226887522511422397080984203668781525866100305932014546262080118812816720718824780145563272508294470918608085953183530980510731638727137057868321337393052740572472450248506633407330366175138007347879323263799054516416812819059372532301524603584725802735622225698063481166985270568316890882163465835860871623940600102494748996263020577682569269241310711569600642071296841397219163311355761801485869653232991052823372343529891437871696801221125576878093230993279797781403517189023631723195830422007577725139506420863862974621850284828822685869365480256496976333059074849714862234685521871829072182677767188190862348091724309064749272794249063321076671908863590465544851797913038810912654892930058032156032696351232641701257308317843886563328321861571453054990391255663627593467645412053697784792717742627268539680491908356367887628950374547776804069405173086753558728381846453041208618750501774850530747859885695995496231795325167400822547623776548946062132824935065676526699584643380994341310235323423803547168908178861770343063137755745480312781418782959802518533071507405360815531786468005601078564554813901603820054611268663508697528768889628343605688404297049596482791202545704250698543069950757050521641770316863337335336374097309844944123604755575260516996650125261366737501014283681733536922919507996674711342574996766846101827584358457029128707686343622690042918038244648760087851393131630756512803773427475141968392096310643636596252141934565987883169137323589104391449442898909624179787394451054072973031385263786793430936247939167418114755343777822188531343229598604494060773257053675832346507949828487383790335973180102261516252489745244736999415636378666048565524416324310653091992191500157293663971772706090895913460914745069391507821607407119079643228761455973951456502533178244458604653367072208247136844293637699200643287171063323543071264194456731844289514661786350889430308378000623859334853499710695649927546553930859489538568835127452768087260261620951571152218348568929719647604673202322083355880695310174743610457469825948560363963194178330338717661812773680168893080697111977194694723029058532904402104183070246873285332971231965064831098195313946537722964800874303153979101249774266944684978714490326471233669690510878880297645474564156158989457731952855288748034996749984050907787463093200641078724037937331601107193002062607142334582424540462542816352856677028430889581264765717876678209615246507786765087872876579003133134698338624886416752381893452723012001163113113034922197348228234562972085324530558808215284683475788390241823026060297736587629192442326257690596727099898138760798059017319872806116456671050828020313857962939085308641728493147347650389662707609350511398801922499039899386427952050922079528229736915415528950729894659100857580760402504515924176805312456595928815847212576854617355993371686752308486259055225379546441735683459211531704159539586262195682060312819955077548305878239777757471000557642922054213570564468304657936112737638081857238134537386315694972456099757128283052159658267650533880688019165391968118081281418572817220462275354095675911862857058211998333039295198503759091340411472036588937341537552271364297296808196599896469985420092587035276351185574613124473842321798493624035111419325317850897416455727774208238005295335892784239401954079585688942640101642480065408491600871030419967385671210921727088593422109492170881430916530371486986686971893179090200174110704118528398366526522301044888669286343645609490666154720754657171877519877813139000560447086571004937715998070976628393081479513366020160880383038706268705059769497694751767397008507404890547604186839928221021081130399669544722546602362870171695433294206230069208750619380871523396740933288856122974393873962887381758634584423578738264291004803756667693477749360819940001322660377896176798306587817917609943785269138158184041529402848733581418435970591379579640302235388232907281284199927893644729185255896812857249736740795602912638601051604084121854664026333259636443490047737400712524052142271307557177223718644380878139570493348240315980414040990842347102940869097156488101725379568353259267160845887570740559432298975447149848219162771649962305998564786314810119846095164450874514679765632251834857079057499439224964428029230689670767926868233893624811244604947042834617117937781325965227897322350201659300730107372479967565853987915222243858706826074362840581263173370500381210792807269616977634478284528864656653006242682724878778575478820403482309832337875262464806318641026961704528234584790327235788301279412929095117115574048470611073342621092132524224703194743294571228199637561311515852979620659565423507311318322911676832898668803357039688818470609589490061266012753972229635450284942904935805351259449321417370363952663330002226053999399493976847878006553505003002533676884193556909119395229541876962621299266331597772792862940937809403184874617127502263870006274003996395442342544914195287826641488147525494349583796260659420495576612103430544473916322575699055751049631519785776017501968635137055395586847394685476923560018187033465205842282662951905109025241855539482267976015496469063313573187025125372844144112789403485535788540116915885225539663969928808185475616304765301116517349885884405936331731432533799211895827560075034225205924165278014787237312897593027269541326581114529418241899001721402798568503278671018513545279607071002575123250839676257547507012180306883245517988455725639614671335400322017336633978725979742406809739074434849713367788775483348859367482214591151331249276586343256589118221419004652757799426605306095828358930206405554016138060678689066724033378193562867612701651633762322211931899503103752940992724735568995777465669508965004589174674841147523988346199165253245051342943517043177839997415531126829623625481724245532036772982202357745923377157001238230272487833972522323652446141230855886193819231870646619031765335717267735528420507029371753881025064279991852598942752816765278530756485593015469375198540642186735935640796252013159144435726671556867762786118448141819542800058844475657676470805275223210876130937076711621603388815334555907099900749277080522449657647447293299167735864452743062486723899043202975481149688526255530815693291541173946373125044792210818218274971922456732957266689999701700514112728316579750910292054024386449681639908403523846060297088448251094358934090524965062651966798913985381364764384862824498058997947342392021595105265330929741553926731104482099695044837836713826596572513348637631899862407598711389056234111194498836994171142578125e-4952 +9.11299882970618650632101483404854954099762703923390835930245121757092922158349434202390177156456801299311836836800882775491746408155508042493377018897452251370955645294482919642306315951408389939155390641495852682235079948388381817147810199988543202753879634595761513692178855612323826464929567053565655516883088865211017019814938434922056584742975703338666052989323453000054190668073008069358409757711401382448879713824803063830292790871907284615732508878463187540078321144646836641714520837263280926298497175995827146959986580625367150614866594146717614105908677560599298664715089392016783619495691054934073204437823890134211440316961661977129365812730934009878180695353988341524099861100850529263372112005494440901109477171905812258529227323637633070888651063754117762127747538812423705094043768193630399481207316041168207344806208594630537211881115413335113285224633734725269999866521248948235216770556291974523156583071033408384307591427651668177754025424246727136381704023361696393955886321614167616227321765765646890482554798209893671519933100185483167698146646061975813150428625627913004683426389119417464100765417965247075255522252188101059573453030353939631794886820407058177721498614643678758463219398856506200197929995488836037979149750875957205550088916491989692772734422102307762690936220523614080121068179030699537459090415147398802270894221813558133238807437473160137690739859560319624048454845519386476365293136990335117454422791419023565330181431828151870734413285105404921525764882299855357984362391524834349015768804575560961368835419493115509531656725852041771629386346595538752239016488852598228738155981970211789883296133871666620120140851882857096332325130619421054262737816186863658938716553696235385578777759657671097856303109826047646030593555743071151634371263116162163842429774756690129571890249249302694618266745032356856859879258097741197841919555437407743854928359534790669719638999794382112720687011634647044361817576684558724625744225713250341137601306821773485014581447146364342163747989066465762520868021905766505225844729872480243797707355400502595509869443020850165379788743173859145576255477727144173012043383739723542744190771201959350703462306885235518328850278815583719203990521860325564139609728125151807551445503270918528255874403111303698792745962171997087050822360314227188891304020453787801409723278140603832271114233523786546117322725291527658718897541208901735407351872443594948184951168691060870978021172967942306361626571077641327297718119321563981345882136259090137713556729892811590283306476205075479147079271094428064841973711602823705646768958871746411377707470132144695674603139062318630558765273113585596550581780101956885083478653298047293578971034172004858991568415867607860110758034102943901257650359209265993172582604368796832550227991875124190404530653699113234281017599675972717228881762872616434186349441235273719869912359540644153586737163021327006174089564189146448642123329760513470710952045089696777693604518869700296629894354067974095792458927056409146163642160925654650608387234540930183193134586363628266252885168941377664242625103384301342516981220052304340851830918342112001226102103494435426741373561760199946612965455547118392814389204858321021871505919062366967370907845118464121559886753900829580653195913017174949634850101659327920682778835169460415060177607887785092602593896393234825771018460885175530137990762628739986435339792477919143869600819845028005086837073134537699580113198710606881625449213227965777044569159618080059467520715567940849048784878428075784048591505385207632864227646012093136506294441285115051778230787980794100536688217055491722478845399120313290174205565180798564880453263575864305591991982317190768223088819713678569560965777695766765031114759828882044210076232880703287186456087723032648753799500639301083120803887861774378127519055841200300722021908912663658736721808181905976614769167556777158540579802589251818342338664296892261598721223770948525882958989903498643844474443881365494366186879540743752522865890481258185661398661450145400174586954255798594980349336920287623171809337255391051615774034675800312569439495102693161753597894786106093813129941691167614502128824411906036203613374017421281859950157388018923162152170376719761094107244365793793801295386989614878789768675321459623423508501915602525045883285379171046365189543766620390254725283257987760524763324279709362246110807714160684401619696970071324975880463756403103367758616656042889802269384624618776702823507265083567950830141623483756155429929421201110837966736672631316515189583047632951808141375472573438564897736858285096083841743349704224813424575529979035722907751337333843039501444986132294183971798495102322118655423647575774638095594242360591296505782746376955904417512797972253837869914944669033112417910503764885109559325980725764019767086158860069193141356486082481913726565738118888937728005969856159005365510830407857091418962966413725423368585852851555226887522511422397080984203668781525866100305932014546262080118812816720718824780145563272508294470918608085953183530980510731638727137057868321337393052740572472450248506633407330366175138007347879323263799054516416812819059372532301524603584725802735622225698063481166985270568316890882163465835860871623940600102494748996263020577682569269241310711569600642071296841397219163311355761801485869653232991052823372343529891437871696801221125576878093230993279797781403517189023631723195830422007577725139506420863862974621850284828822685869365480256496976333059074849714862234685521871829072182677767188190862348091724309064749272794249063321076671908863590465544851797913038810912654892930058032156032696351232641701257308317843886563328321861571453054990391255663627593467645412053697784792717742627268539680491908356367887628950374547776804069405173086753558728381846453041208618750501774850530747859885695995496231795325167400822547623776548946062132824935065676526699584643380994341310235323423803547168908178861770343063137755745480312781418782959802518533071507405360815531786468005601078564554813901603820054611268663508697528768889628343605688404297049596482791202545704250698543069950757050521641770316863337335336374097309844944123604755575260516996650125261366737501014283681733536922919507996674711342574996766846101827584358457029128707686343622690042918038244648760087851393131630756512803773427475141968392096310643636596252141934565987883169137323589104391449442898909624179787394451054072973031385263786793430936247939167418114755343777822188531343229598604494060773257053675832346507949828487383790335973180102261516252489745244736999415636378666048565524416324310653091992191500157293663971772706090895913460914745069391507821607407119079643228761455973951456502533178244458604653367072208247136844293637699200643287171063323543071264194456731844289514661786350889430308378000623859334853499710695649927546553930859489538568835127452768087260261620951571152218348568929719647604673202322083355880695310174743610457469825948560363963194178330338717661812773680168893080697111977194694723029058532904402104183070246873285332971231965064831098195313946537722964800874303153979101249774266944684978714490326471233669690510878880297645474564156158989457731952855288748034996749984050907787463093200641078724037937331601107193002062607142334582424540462542816352856677028430889581264765717876678209615246507786765087872876579003133134698338624886416752381893452723012001163113113034922197348228234562972085324530558808215284683475788390241823026060297736587629192442326257690596727099898138760798059017319872806116456671050828020313857962939085308641728493147347650389662707609350511398801922499039899386427952050922079528229736915415528950729894659100857580760402504515924176805312456595928815847212576854617355993371686752308486259055225379546441735683459211531704159539586262195682060312819955077548305878239777757471000557642922054213570564468304657936112737638081857238134537386315694972456099757128283052159658267650533880688019165391968118081281418572817220462275354095675911862857058211998333039295198503759091340411472036588937341537552271364297296808196599896469985420092587035276351185574613124473842321798493624035111419325317850897416455727774208238005295335892784239401954079585688942640101642480065408491600871030419967385671210921727088593422109492170881430916530371486986686971893179090200174110704118528398366526522301044888669286343645609490666154720754657171877519877813139000560447086571004937715998070976628393081479513366020160880383038706268705059769497694751767397008507404890547604186839928221021081130399669544722546602362870171695433294206230069208750619380871523396740933288856122974393873962887381758634584423578738264291004803756667693477749360819940001322660377896176798306587817917609943785269138158184041529402848733581418435970591379579640302235388232907281284199927893644729185255896812857249736740795602912638601051604084121854664026333259636443490047737400712524052142271307557177223718644380878139570493348240315980414040990842347102940869097156488101725379568353259267160845887570740559432298975447149848219162771649962305998564786314810119846095164450874514679765632251834857079057499439224964428029230689670767926868233893624811244604947042834617117937781325965227897322350201659300730107372479967565853987915222243858706826074362840581263173370500381210792807269616977634478284528864656653006242682724878778575478820403482309832337875262464806318641026961704528234584790327235788301279412929095117115574048470611073342621092132524224703194743294571228199637561311515852979620659565423507311318322911676832898668803357039688818470609589490061266012753972229635450284942904935805351259449321417370363952663330002226053999399493976847878006553505003002533676884193556909119395229541876962621299266331597772792862940937809403184874617127502263870006274003996395442342544914195287826641488147525494349583796260659420495576612103430544473916322575699055751049631519785776017501968635137055395586847394685476923560018187033465205842282662951905109025241855539482267976015496469063313573187025125372844144112789403485535788540116915885225539663969928808185475616304765301116517349885884405936331731432533799211895827560075034225205924165278014787237312897593027269541326581114529418241899001721402798568503278671018513545279607071002575123250839676257547507012180306883245517988455725639614671335400322017336633978725979742406809739074434849713367788775483348859367482214591151331249276586343256589118221419004652757799426605306095828358930206405554016138060678689066724033378193562867612701651633762322211931899503103752940992724735568995777465669508965004589174674841147523988346199165253245051342943517043177839997415531126829623625481724245532036772982202357745923377157001238230272487833972522323652446141230855886193819231870646619031765335717267735528420507029371753881025064279991852598942752816765278530756485593015469375198540642186735935640796252013159144435726671556867762786118448141819542800058844475657676470805275223210876130937076711621603388815334555907099900749277080522449657647447293299167735864452743062486723899043202975481149688526255530815693291541173946373125044792210818218274971922456732957266689999701700514112728316579750910292054024386449681639908403523846060297088448251094358934090524965062651966798913985381364764384862824498058997947342392021595105265330929741553926731104482099695044837836713826596572513348637631899862407598711389056234111194498836994171142578126e-4952 +-9.11299882970618650632101483404854954099762703923390835930245121757092922158349434202390177156456801299311836836800882775491746408155508042493377018897452251370955645294482919642306315951408389939155390641495852682235079948388381817147810199988543202753879634595761513692178855612323826464929567053565655516883088865211017019814938434922056584742975703338666052989323453000054190668073008069358409757711401382448879713824803063830292790871907284615732508878463187540078321144646836641714520837263280926298497175995827146959986580625367150614866594146717614105908677560599298664715089392016783619495691054934073204437823890134211440316961661977129365812730934009878180695353988341524099861100850529263372112005494440901109477171905812258529227323637633070888651063754117762127747538812423705094043768193630399481207316041168207344806208594630537211881115413335113285224633734725269999866521248948235216770556291974523156583071033408384307591427651668177754025424246727136381704023361696393955886321614167616227321765765646890482554798209893671519933100185483167698146646061975813150428625627913004683426389119417464100765417965247075255522252188101059573453030353939631794886820407058177721498614643678758463219398856506200197929995488836037979149750875957205550088916491989692772734422102307762690936220523614080121068179030699537459090415147398802270894221813558133238807437473160137690739859560319624048454845519386476365293136990335117454422791419023565330181431828151870734413285105404921525764882299855357984362391524834349015768804575560961368835419493115509531656725852041771629386346595538752239016488852598228738155981970211789883296133871666620120140851882857096332325130619421054262737816186863658938716553696235385578777759657671097856303109826047646030593555743071151634371263116162163842429774756690129571890249249302694618266745032356856859879258097741197841919555437407743854928359534790669719638999794382112720687011634647044361817576684558724625744225713250341137601306821773485014581447146364342163747989066465762520868021905766505225844729872480243797707355400502595509869443020850165379788743173859145576255477727144173012043383739723542744190771201959350703462306885235518328850278815583719203990521860325564139609728125151807551445503270918528255874403111303698792745962171997087050822360314227188891304020453787801409723278140603832271114233523786546117322725291527658718897541208901735407351872443594948184951168691060870978021172967942306361626571077641327297718119321563981345882136259090137713556729892811590283306476205075479147079271094428064841973711602823705646768958871746411377707470132144695674603139062318630558765273113585596550581780101956885083478653298047293578971034172004858991568415867607860110758034102943901257650359209265993172582604368796832550227991875124190404530653699113234281017599675972717228881762872616434186349441235273719869912359540644153586737163021327006174089564189146448642123329760513470710952045089696777693604518869700296629894354067974095792458927056409146163642160925654650608387234540930183193134586363628266252885168941377664242625103384301342516981220052304340851830918342112001226102103494435426741373561760199946612965455547118392814389204858321021871505919062366967370907845118464121559886753900829580653195913017174949634850101659327920682778835169460415060177607887785092602593896393234825771018460885175530137990762628739986435339792477919143869600819845028005086837073134537699580113198710606881625449213227965777044569159618080059467520715567940849048784878428075784048591505385207632864227646012093136506294441285115051778230787980794100536688217055491722478845399120313290174205565180798564880453263575864305591991982317190768223088819713678569560965777695766765031114759828882044210076232880703287186456087723032648753799500639301083120803887861774378127519055841200300722021908912663658736721808181905976614769167556777158540579802589251818342338664296892261598721223770948525882958989903498643844474443881365494366186879540743752522865890481258185661398661450145400174586954255798594980349336920287623171809337255391051615774034675800312569439495102693161753597894786106093813129941691167614502128824411906036203613374017421281859950157388018923162152170376719761094107244365793793801295386989614878789768675321459623423508501915602525045883285379171046365189543766620390254725283257987760524763324279709362246110807714160684401619696970071324975880463756403103367758616656042889802269384624618776702823507265083567950830141623483756155429929421201110837966736672631316515189583047632951808141375472573438564897736858285096083841743349704224813424575529979035722907751337333843039501444986132294183971798495102322118655423647575774638095594242360591296505782746376955904417512797972253837869914944669033112417910503764885109559325980725764019767086158860069193141356486082481913726565738118888937728005969856159005365510830407857091418962966413725423368585852851555226887522511422397080984203668781525866100305932014546262080118812816720718824780145563272508294470918608085953183530980510731638727137057868321337393052740572472450248506633407330366175138007347879323263799054516416812819059372532301524603584725802735622225698063481166985270568316890882163465835860871623940600102494748996263020577682569269241310711569600642071296841397219163311355761801485869653232991052823372343529891437871696801221125576878093230993279797781403517189023631723195830422007577725139506420863862974621850284828822685869365480256496976333059074849714862234685521871829072182677767188190862348091724309064749272794249063321076671908863590465544851797913038810912654892930058032156032696351232641701257308317843886563328321861571453054990391255663627593467645412053697784792717742627268539680491908356367887628950374547776804069405173086753558728381846453041208618750501774850530747859885695995496231795325167400822547623776548946062132824935065676526699584643380994341310235323423803547168908178861770343063137755745480312781418782959802518533071507405360815531786468005601078564554813901603820054611268663508697528768889628343605688404297049596482791202545704250698543069950757050521641770316863337335336374097309844944123604755575260516996650125261366737501014283681733536922919507996674711342574996766846101827584358457029128707686343622690042918038244648760087851393131630756512803773427475141968392096310643636596252141934565987883169137323589104391449442898909624179787394451054072973031385263786793430936247939167418114755343777822188531343229598604494060773257053675832346507949828487383790335973180102261516252489745244736999415636378666048565524416324310653091992191500157293663971772706090895913460914745069391507821607407119079643228761455973951456502533178244458604653367072208247136844293637699200643287171063323543071264194456731844289514661786350889430308378000623859334853499710695649927546553930859489538568835127452768087260261620951571152218348568929719647604673202322083355880695310174743610457469825948560363963194178330338717661812773680168893080697111977194694723029058532904402104183070246873285332971231965064831098195313946537722964800874303153979101249774266944684978714490326471233669690510878880297645474564156158989457731952855288748034996749984050907787463093200641078724037937331601107193002062607142334582424540462542816352856677028430889581264765717876678209615246507786765087872876579003133134698338624886416752381893452723012001163113113034922197348228234562972085324530558808215284683475788390241823026060297736587629192442326257690596727099898138760798059017319872806116456671050828020313857962939085308641728493147347650389662707609350511398801922499039899386427952050922079528229736915415528950729894659100857580760402504515924176805312456595928815847212576854617355993371686752308486259055225379546441735683459211531704159539586262195682060312819955077548305878239777757471000557642922054213570564468304657936112737638081857238134537386315694972456099757128283052159658267650533880688019165391968118081281418572817220462275354095675911862857058211998333039295198503759091340411472036588937341537552271364297296808196599896469985420092587035276351185574613124473842321798493624035111419325317850897416455727774208238005295335892784239401954079585688942640101642480065408491600871030419967385671210921727088593422109492170881430916530371486986686971893179090200174110704118528398366526522301044888669286343645609490666154720754657171877519877813139000560447086571004937715998070976628393081479513366020160880383038706268705059769497694751767397008507404890547604186839928221021081130399669544722546602362870171695433294206230069208750619380871523396740933288856122974393873962887381758634584423578738264291004803756667693477749360819940001322660377896176798306587817917609943785269138158184041529402848733581418435970591379579640302235388232907281284199927893644729185255896812857249736740795602912638601051604084121854664026333259636443490047737400712524052142271307557177223718644380878139570493348240315980414040990842347102940869097156488101725379568353259267160845887570740559432298975447149848219162771649962305998564786314810119846095164450874514679765632251834857079057499439224964428029230689670767926868233893624811244604947042834617117937781325965227897322350201659300730107372479967565853987915222243858706826074362840581263173370500381210792807269616977634478284528864656653006242682724878778575478820403482309832337875262464806318641026961704528234584790327235788301279412929095117115574048470611073342621092132524224703194743294571228199637561311515852979620659565423507311318322911676832898668803357039688818470609589490061266012753972229635450284942904935805351259449321417370363952663330002226053999399493976847878006553505003002533676884193556909119395229541876962621299266331597772792862940937809403184874617127502263870006274003996395442342544914195287826641488147525494349583796260659420495576612103430544473916322575699055751049631519785776017501968635137055395586847394685476923560018187033465205842282662951905109025241855539482267976015496469063313573187025125372844144112789403485535788540116915885225539663969928808185475616304765301116517349885884405936331731432533799211895827560075034225205924165278014787237312897593027269541326581114529418241899001721402798568503278671018513545279607071002575123250839676257547507012180306883245517988455725639614671335400322017336633978725979742406809739074434849713367788775483348859367482214591151331249276586343256589118221419004652757799426605306095828358930206405554016138060678689066724033378193562867612701651633762322211931899503103752940992724735568995777465669508965004589174674841147523988346199165253245051342943517043177839997415531126829623625481724245532036772982202357745923377157001238230272487833972522323652446141230855886193819231870646619031765335717267735528420507029371753881025064279991852598942752816765278530756485593015469375198540642186735935640796252013159144435726671556867762786118448141819542800058844475657676470805275223210876130937076711621603388815334555907099900749277080522449657647447293299167735864452743062486723899043202975481149688526255530815693291541173946373125044792210818218274971922456732957266689999701700514112728316579750910292054024386449681639908403523846060297088448251094358934090524965062651966798913985381364764384862824498058997947342392021595105265330929741553926731104482099695044837836713826596572513348637631899862407598711389056234111194498836994171142578124e-4952 +-9.11299882970618650632101483404854954099762703923390835930245121757092922158349434202390177156456801299311836836800882775491746408155508042493377018897452251370955645294482919642306315951408389939155390641495852682235079948388381817147810199988543202753879634595761513692178855612323826464929567053565655516883088865211017019814938434922056584742975703338666052989323453000054190668073008069358409757711401382448879713824803063830292790871907284615732508878463187540078321144646836641714520837263280926298497175995827146959986580625367150614866594146717614105908677560599298664715089392016783619495691054934073204437823890134211440316961661977129365812730934009878180695353988341524099861100850529263372112005494440901109477171905812258529227323637633070888651063754117762127747538812423705094043768193630399481207316041168207344806208594630537211881115413335113285224633734725269999866521248948235216770556291974523156583071033408384307591427651668177754025424246727136381704023361696393955886321614167616227321765765646890482554798209893671519933100185483167698146646061975813150428625627913004683426389119417464100765417965247075255522252188101059573453030353939631794886820407058177721498614643678758463219398856506200197929995488836037979149750875957205550088916491989692772734422102307762690936220523614080121068179030699537459090415147398802270894221813558133238807437473160137690739859560319624048454845519386476365293136990335117454422791419023565330181431828151870734413285105404921525764882299855357984362391524834349015768804575560961368835419493115509531656725852041771629386346595538752239016488852598228738155981970211789883296133871666620120140851882857096332325130619421054262737816186863658938716553696235385578777759657671097856303109826047646030593555743071151634371263116162163842429774756690129571890249249302694618266745032356856859879258097741197841919555437407743854928359534790669719638999794382112720687011634647044361817576684558724625744225713250341137601306821773485014581447146364342163747989066465762520868021905766505225844729872480243797707355400502595509869443020850165379788743173859145576255477727144173012043383739723542744190771201959350703462306885235518328850278815583719203990521860325564139609728125151807551445503270918528255874403111303698792745962171997087050822360314227188891304020453787801409723278140603832271114233523786546117322725291527658718897541208901735407351872443594948184951168691060870978021172967942306361626571077641327297718119321563981345882136259090137713556729892811590283306476205075479147079271094428064841973711602823705646768958871746411377707470132144695674603139062318630558765273113585596550581780101956885083478653298047293578971034172004858991568415867607860110758034102943901257650359209265993172582604368796832550227991875124190404530653699113234281017599675972717228881762872616434186349441235273719869912359540644153586737163021327006174089564189146448642123329760513470710952045089696777693604518869700296629894354067974095792458927056409146163642160925654650608387234540930183193134586363628266252885168941377664242625103384301342516981220052304340851830918342112001226102103494435426741373561760199946612965455547118392814389204858321021871505919062366967370907845118464121559886753900829580653195913017174949634850101659327920682778835169460415060177607887785092602593896393234825771018460885175530137990762628739986435339792477919143869600819845028005086837073134537699580113198710606881625449213227965777044569159618080059467520715567940849048784878428075784048591505385207632864227646012093136506294441285115051778230787980794100536688217055491722478845399120313290174205565180798564880453263575864305591991982317190768223088819713678569560965777695766765031114759828882044210076232880703287186456087723032648753799500639301083120803887861774378127519055841200300722021908912663658736721808181905976614769167556777158540579802589251818342338664296892261598721223770948525882958989903498643844474443881365494366186879540743752522865890481258185661398661450145400174586954255798594980349336920287623171809337255391051615774034675800312569439495102693161753597894786106093813129941691167614502128824411906036203613374017421281859950157388018923162152170376719761094107244365793793801295386989614878789768675321459623423508501915602525045883285379171046365189543766620390254725283257987760524763324279709362246110807714160684401619696970071324975880463756403103367758616656042889802269384624618776702823507265083567950830141623483756155429929421201110837966736672631316515189583047632951808141375472573438564897736858285096083841743349704224813424575529979035722907751337333843039501444986132294183971798495102322118655423647575774638095594242360591296505782746376955904417512797972253837869914944669033112417910503764885109559325980725764019767086158860069193141356486082481913726565738118888937728005969856159005365510830407857091418962966413725423368585852851555226887522511422397080984203668781525866100305932014546262080118812816720718824780145563272508294470918608085953183530980510731638727137057868321337393052740572472450248506633407330366175138007347879323263799054516416812819059372532301524603584725802735622225698063481166985270568316890882163465835860871623940600102494748996263020577682569269241310711569600642071296841397219163311355761801485869653232991052823372343529891437871696801221125576878093230993279797781403517189023631723195830422007577725139506420863862974621850284828822685869365480256496976333059074849714862234685521871829072182677767188190862348091724309064749272794249063321076671908863590465544851797913038810912654892930058032156032696351232641701257308317843886563328321861571453054990391255663627593467645412053697784792717742627268539680491908356367887628950374547776804069405173086753558728381846453041208618750501774850530747859885695995496231795325167400822547623776548946062132824935065676526699584643380994341310235323423803547168908178861770343063137755745480312781418782959802518533071507405360815531786468005601078564554813901603820054611268663508697528768889628343605688404297049596482791202545704250698543069950757050521641770316863337335336374097309844944123604755575260516996650125261366737501014283681733536922919507996674711342574996766846101827584358457029128707686343622690042918038244648760087851393131630756512803773427475141968392096310643636596252141934565987883169137323589104391449442898909624179787394451054072973031385263786793430936247939167418114755343777822188531343229598604494060773257053675832346507949828487383790335973180102261516252489745244736999415636378666048565524416324310653091992191500157293663971772706090895913460914745069391507821607407119079643228761455973951456502533178244458604653367072208247136844293637699200643287171063323543071264194456731844289514661786350889430308378000623859334853499710695649927546553930859489538568835127452768087260261620951571152218348568929719647604673202322083355880695310174743610457469825948560363963194178330338717661812773680168893080697111977194694723029058532904402104183070246873285332971231965064831098195313946537722964800874303153979101249774266944684978714490326471233669690510878880297645474564156158989457731952855288748034996749984050907787463093200641078724037937331601107193002062607142334582424540462542816352856677028430889581264765717876678209615246507786765087872876579003133134698338624886416752381893452723012001163113113034922197348228234562972085324530558808215284683475788390241823026060297736587629192442326257690596727099898138760798059017319872806116456671050828020313857962939085308641728493147347650389662707609350511398801922499039899386427952050922079528229736915415528950729894659100857580760402504515924176805312456595928815847212576854617355993371686752308486259055225379546441735683459211531704159539586262195682060312819955077548305878239777757471000557642922054213570564468304657936112737638081857238134537386315694972456099757128283052159658267650533880688019165391968118081281418572817220462275354095675911862857058211998333039295198503759091340411472036588937341537552271364297296808196599896469985420092587035276351185574613124473842321798493624035111419325317850897416455727774208238005295335892784239401954079585688942640101642480065408491600871030419967385671210921727088593422109492170881430916530371486986686971893179090200174110704118528398366526522301044888669286343645609490666154720754657171877519877813139000560447086571004937715998070976628393081479513366020160880383038706268705059769497694751767397008507404890547604186839928221021081130399669544722546602362870171695433294206230069208750619380871523396740933288856122974393873962887381758634584423578738264291004803756667693477749360819940001322660377896176798306587817917609943785269138158184041529402848733581418435970591379579640302235388232907281284199927893644729185255896812857249736740795602912638601051604084121854664026333259636443490047737400712524052142271307557177223718644380878139570493348240315980414040990842347102940869097156488101725379568353259267160845887570740559432298975447149848219162771649962305998564786314810119846095164450874514679765632251834857079057499439224964428029230689670767926868233893624811244604947042834617117937781325965227897322350201659300730107372479967565853987915222243858706826074362840581263173370500381210792807269616977634478284528864656653006242682724878778575478820403482309832337875262464806318641026961704528234584790327235788301279412929095117115574048470611073342621092132524224703194743294571228199637561311515852979620659565423507311318322911676832898668803357039688818470609589490061266012753972229635450284942904935805351259449321417370363952663330002226053999399493976847878006553505003002533676884193556909119395229541876962621299266331597772792862940937809403184874617127502263870006274003996395442342544914195287826641488147525494349583796260659420495576612103430544473916322575699055751049631519785776017501968635137055395586847394685476923560018187033465205842282662951905109025241855539482267976015496469063313573187025125372844144112789403485535788540116915885225539663969928808185475616304765301116517349885884405936331731432533799211895827560075034225205924165278014787237312897593027269541326581114529418241899001721402798568503278671018513545279607071002575123250839676257547507012180306883245517988455725639614671335400322017336633978725979742406809739074434849713367788775483348859367482214591151331249276586343256589118221419004652757799426605306095828358930206405554016138060678689066724033378193562867612701651633762322211931899503103752940992724735568995777465669508965004589174674841147523988346199165253245051342943517043177839997415531126829623625481724245532036772982202357745923377157001238230272487833972522323652446141230855886193819231870646619031765335717267735528420507029371753881025064279991852598942752816765278530756485593015469375198540642186735935640796252013159144435726671556867762786118448141819542800058844475657676470805275223210876130937076711621603388815334555907099900749277080522449657647447293299167735864452743062486723899043202975481149688526255530815693291541173946373125044792210818218274971922456732957266689999701700514112728316579750910292054024386449681639908403523846060297088448251094358934090524965062651966798913985381364764384862824498058997947342392021595105265330929741553926731104482099695044837836713826596572513348637631899862407598711389056234111194498836994171142578125e-4952 +-9.11299882970618650632101483404854954099762703923390835930245121757092922158349434202390177156456801299311836836800882775491746408155508042493377018897452251370955645294482919642306315951408389939155390641495852682235079948388381817147810199988543202753879634595761513692178855612323826464929567053565655516883088865211017019814938434922056584742975703338666052989323453000054190668073008069358409757711401382448879713824803063830292790871907284615732508878463187540078321144646836641714520837263280926298497175995827146959986580625367150614866594146717614105908677560599298664715089392016783619495691054934073204437823890134211440316961661977129365812730934009878180695353988341524099861100850529263372112005494440901109477171905812258529227323637633070888651063754117762127747538812423705094043768193630399481207316041168207344806208594630537211881115413335113285224633734725269999866521248948235216770556291974523156583071033408384307591427651668177754025424246727136381704023361696393955886321614167616227321765765646890482554798209893671519933100185483167698146646061975813150428625627913004683426389119417464100765417965247075255522252188101059573453030353939631794886820407058177721498614643678758463219398856506200197929995488836037979149750875957205550088916491989692772734422102307762690936220523614080121068179030699537459090415147398802270894221813558133238807437473160137690739859560319624048454845519386476365293136990335117454422791419023565330181431828151870734413285105404921525764882299855357984362391524834349015768804575560961368835419493115509531656725852041771629386346595538752239016488852598228738155981970211789883296133871666620120140851882857096332325130619421054262737816186863658938716553696235385578777759657671097856303109826047646030593555743071151634371263116162163842429774756690129571890249249302694618266745032356856859879258097741197841919555437407743854928359534790669719638999794382112720687011634647044361817576684558724625744225713250341137601306821773485014581447146364342163747989066465762520868021905766505225844729872480243797707355400502595509869443020850165379788743173859145576255477727144173012043383739723542744190771201959350703462306885235518328850278815583719203990521860325564139609728125151807551445503270918528255874403111303698792745962171997087050822360314227188891304020453787801409723278140603832271114233523786546117322725291527658718897541208901735407351872443594948184951168691060870978021172967942306361626571077641327297718119321563981345882136259090137713556729892811590283306476205075479147079271094428064841973711602823705646768958871746411377707470132144695674603139062318630558765273113585596550581780101956885083478653298047293578971034172004858991568415867607860110758034102943901257650359209265993172582604368796832550227991875124190404530653699113234281017599675972717228881762872616434186349441235273719869912359540644153586737163021327006174089564189146448642123329760513470710952045089696777693604518869700296629894354067974095792458927056409146163642160925654650608387234540930183193134586363628266252885168941377664242625103384301342516981220052304340851830918342112001226102103494435426741373561760199946612965455547118392814389204858321021871505919062366967370907845118464121559886753900829580653195913017174949634850101659327920682778835169460415060177607887785092602593896393234825771018460885175530137990762628739986435339792477919143869600819845028005086837073134537699580113198710606881625449213227965777044569159618080059467520715567940849048784878428075784048591505385207632864227646012093136506294441285115051778230787980794100536688217055491722478845399120313290174205565180798564880453263575864305591991982317190768223088819713678569560965777695766765031114759828882044210076232880703287186456087723032648753799500639301083120803887861774378127519055841200300722021908912663658736721808181905976614769167556777158540579802589251818342338664296892261598721223770948525882958989903498643844474443881365494366186879540743752522865890481258185661398661450145400174586954255798594980349336920287623171809337255391051615774034675800312569439495102693161753597894786106093813129941691167614502128824411906036203613374017421281859950157388018923162152170376719761094107244365793793801295386989614878789768675321459623423508501915602525045883285379171046365189543766620390254725283257987760524763324279709362246110807714160684401619696970071324975880463756403103367758616656042889802269384624618776702823507265083567950830141623483756155429929421201110837966736672631316515189583047632951808141375472573438564897736858285096083841743349704224813424575529979035722907751337333843039501444986132294183971798495102322118655423647575774638095594242360591296505782746376955904417512797972253837869914944669033112417910503764885109559325980725764019767086158860069193141356486082481913726565738118888937728005969856159005365510830407857091418962966413725423368585852851555226887522511422397080984203668781525866100305932014546262080118812816720718824780145563272508294470918608085953183530980510731638727137057868321337393052740572472450248506633407330366175138007347879323263799054516416812819059372532301524603584725802735622225698063481166985270568316890882163465835860871623940600102494748996263020577682569269241310711569600642071296841397219163311355761801485869653232991052823372343529891437871696801221125576878093230993279797781403517189023631723195830422007577725139506420863862974621850284828822685869365480256496976333059074849714862234685521871829072182677767188190862348091724309064749272794249063321076671908863590465544851797913038810912654892930058032156032696351232641701257308317843886563328321861571453054990391255663627593467645412053697784792717742627268539680491908356367887628950374547776804069405173086753558728381846453041208618750501774850530747859885695995496231795325167400822547623776548946062132824935065676526699584643380994341310235323423803547168908178861770343063137755745480312781418782959802518533071507405360815531786468005601078564554813901603820054611268663508697528768889628343605688404297049596482791202545704250698543069950757050521641770316863337335336374097309844944123604755575260516996650125261366737501014283681733536922919507996674711342574996766846101827584358457029128707686343622690042918038244648760087851393131630756512803773427475141968392096310643636596252141934565987883169137323589104391449442898909624179787394451054072973031385263786793430936247939167418114755343777822188531343229598604494060773257053675832346507949828487383790335973180102261516252489745244736999415636378666048565524416324310653091992191500157293663971772706090895913460914745069391507821607407119079643228761455973951456502533178244458604653367072208247136844293637699200643287171063323543071264194456731844289514661786350889430308378000623859334853499710695649927546553930859489538568835127452768087260261620951571152218348568929719647604673202322083355880695310174743610457469825948560363963194178330338717661812773680168893080697111977194694723029058532904402104183070246873285332971231965064831098195313946537722964800874303153979101249774266944684978714490326471233669690510878880297645474564156158989457731952855288748034996749984050907787463093200641078724037937331601107193002062607142334582424540462542816352856677028430889581264765717876678209615246507786765087872876579003133134698338624886416752381893452723012001163113113034922197348228234562972085324530558808215284683475788390241823026060297736587629192442326257690596727099898138760798059017319872806116456671050828020313857962939085308641728493147347650389662707609350511398801922499039899386427952050922079528229736915415528950729894659100857580760402504515924176805312456595928815847212576854617355993371686752308486259055225379546441735683459211531704159539586262195682060312819955077548305878239777757471000557642922054213570564468304657936112737638081857238134537386315694972456099757128283052159658267650533880688019165391968118081281418572817220462275354095675911862857058211998333039295198503759091340411472036588937341537552271364297296808196599896469985420092587035276351185574613124473842321798493624035111419325317850897416455727774208238005295335892784239401954079585688942640101642480065408491600871030419967385671210921727088593422109492170881430916530371486986686971893179090200174110704118528398366526522301044888669286343645609490666154720754657171877519877813139000560447086571004937715998070976628393081479513366020160880383038706268705059769497694751767397008507404890547604186839928221021081130399669544722546602362870171695433294206230069208750619380871523396740933288856122974393873962887381758634584423578738264291004803756667693477749360819940001322660377896176798306587817917609943785269138158184041529402848733581418435970591379579640302235388232907281284199927893644729185255896812857249736740795602912638601051604084121854664026333259636443490047737400712524052142271307557177223718644380878139570493348240315980414040990842347102940869097156488101725379568353259267160845887570740559432298975447149848219162771649962305998564786314810119846095164450874514679765632251834857079057499439224964428029230689670767926868233893624811244604947042834617117937781325965227897322350201659300730107372479967565853987915222243858706826074362840581263173370500381210792807269616977634478284528864656653006242682724878778575478820403482309832337875262464806318641026961704528234584790327235788301279412929095117115574048470611073342621092132524224703194743294571228199637561311515852979620659565423507311318322911676832898668803357039688818470609589490061266012753972229635450284942904935805351259449321417370363952663330002226053999399493976847878006553505003002533676884193556909119395229541876962621299266331597772792862940937809403184874617127502263870006274003996395442342544914195287826641488147525494349583796260659420495576612103430544473916322575699055751049631519785776017501968635137055395586847394685476923560018187033465205842282662951905109025241855539482267976015496469063313573187025125372844144112789403485535788540116915885225539663969928808185475616304765301116517349885884405936331731432533799211895827560075034225205924165278014787237312897593027269541326581114529418241899001721402798568503278671018513545279607071002575123250839676257547507012180306883245517988455725639614671335400322017336633978725979742406809739074434849713367788775483348859367482214591151331249276586343256589118221419004652757799426605306095828358930206405554016138060678689066724033378193562867612701651633762322211931899503103752940992724735568995777465669508965004589174674841147523988346199165253245051342943517043177839997415531126829623625481724245532036772982202357745923377157001238230272487833972522323652446141230855886193819231870646619031765335717267735528420507029371753881025064279991852598942752816765278530756485593015469375198540642186735935640796252013159144435726671556867762786118448141819542800058844475657676470805275223210876130937076711621603388815334555907099900749277080522449657647447293299167735864452743062486723899043202975481149688526255530815693291541173946373125044792210818218274971922456732957266689999701700514112728316579750910292054024386449681639908403523846060297088448251094358934090524965062651966798913985381364764384862824498058997947342392021595105265330929741553926731104482099695044837836713826596572513348637631899862407598711389056234111194498836994171142578126e-4952 +3.237587559719012555462219479113823276249784669017340504844942194598519770062059685508835745638324970127939070738424059838293609943191271023342555035986308991521396355375667467208367312819235870119724263252776995195727778126085574034035411017344128491238136414394551514178668780674015531193282296319913113495953953933831631032855605791532328598034154166422617226534880263244723830482289656875701701315902175019974435037627824356684033058939701577883356651733717468531204705842607568803666569711421917525834491783583598401321476176752039857173551930268891446850107760584333855521475305010940756813993214730850216669600967698749412592167692757446422169965426483919224341062751152057061076522973232731542382055087239368522167656194830741819605276971705738272393130698937532095725613383807312946395184980707534803490003540251394324459987958400939111001126190861523615485938285497714410609640798273816511769391568591823198476415765275534341709798367687043373145262933998108452661682659942586304978413812755518166239176614473815940025342279575304159493260770068030636885746695206392378276051948759263882079389379666940357441139816661913198656187703463519723262653223919257185751827493927586153153792077729913353547954808876263400200663495414360816863385220457719546338953323399286762099558324132103460225580066817535680886906060858264089074120360391613368274811868067637495154569071591624185979937989402513750464346904036668477876379544221432800037599944499161940321774835027752710681217554286366043661491013593886229615614494736186475932160549630939390542165126494166960681499481651861215529870984381726203476917507560266886692644952355421814201350137351435237036912624414444992497142303802423605897110605364956579914507108584002230524766331348271456591814078599780820974961968314684496428310691542272663818486132771177670874927831510002443658417608078383611526899905533629456904234997116303929427262032216072887961072267850618234492852606488522739744757845004694461812790342894353802938671928834585447328398711684245164703625580196678024410303542544534512706792134908369873605619756775207191558754413381571756431003248529020572648048946458999967788526617126349345966896362376841092268841417781414969315002419192181972121568811432459128737128140063645558482525300089060238860392371092102688097987915838860882370022268312322882235690785726190915062699382576041643741555139697348927957856990969985342299599797431503615312038393069808777315725367497595040966093808407117316369389112216628231869173217637452855462790553030636920487796465880633399632793882734473382168542596184679158149228725004404714293460752371865436947855237307240001863573081174929166645758276081272685156100195420794154740486637315823136798695124738873328565945598241199335059398955049459449844741098478330319112865980346771381982151154499846478545530650091824164892591396650703633600023191521502618379988693800703884555191647864959327260468892793195316578510173816406054364319294906641284764788384683586662382042642852654156477478700779123584369965723284711409361741235548687181052639639279285373139084165798451899763979500837428077782309910703522399860010310321116623028924118238023770381424894162717815296210097245221769714495449744327945091943394325259297771090128969600269822520904193880119094781214175887316220311309028456568749910010962366586834018403242866721783519806933018588077977626913774236680220258524711348037750591646286531625306510583751929280541119187219596706615736304036444366663256426643903386694536649648686380122198677895751002327229059364018755164517060321515091173358005987498359799467138817648881479418623694683454881683746841149715181334498096967702613110590140231345676956141227850879905018558219984441819798054463206764413100251255775535830770535620946159535406497134759043192647996190512978586496199656070707105117773853504277795024754647024165589129442822627147868917463795166386552921913398878270019905147510849518894114102536073369047160130990411626048426437835295683097278297774735181045158616674564080237813146623269215019613231938626758927531490945029356207933289363847181438902539297057969524961348607844569521442237914899100699610921669921572167164875488132527187949318543809703388178931170799769792886086681284964861608656928109305369539955846964197786677053847603962194721523867993048528558551380823699291873352033111096244814245789620930756114228971363838828108534030152031715929722499546436547773404017947035596936338462103946797525667033935433489292620531649199724400832489751788129365426568881328357966337292439204382537174357675404105580244018783685041224798457022189315692175787257287203633134300759209060570319508886475377719911176071302732819878165468592717406388218727585026352127436844762994722826390779737322113768842482160812973100323673863050234437722898796145596181862320550301285861980052194863780743808106946940079349630782676930197134206259739125377941060751175427888774493677478593805682322173891730311959284895178856039354015035864931073602059531001572891528828982167810245343327388887928886208615327002834690068636094325052251429781641267821367266715283643659749152264457938319185148303604827363623405060374573505789923003843438436174489383805098509083722050766328250349793203837202162624690093533478114438810603140565070517669964629947543608404988178019652088162307525611931821066493746994641048066011859814337589829896549720562117090677291541318153057715167624128318297771376531788973088699647168159229805877415594828532539839967464064556647594705830374653113373530876658380240145380423210673778776803592627231257495817394581607796277282644312510714532297108722017217547317744900647318022108570947064304280100418971450552007356891519523293614416944016354756866350050833501416942505071203810116719053430543531027953437436446745566839242129860410443198862219469972163224971258348314341755015213118628882713134766297624091644805801186976152536913514712919240503721680740586016832099946807466311777189050656676962849581383790904722087478646766320517056183581970236248227413322748304134245717987665377396011236706627320817654565682680006957454759981618023476448544673508068369492066566895437050571584345511070959483898938738225050292533674383091612495407126805381796487365892131916426837522671623266627483065655765705534239355214893395905702329340402794052884259146049064629582075576563307670749189662176976725361937046200576007893814439695301892528761187544161389682003509216791271836545495416676148151145195082668323677621182991451835324281863619641773620601014510950996746726615703771971266687151564427772359427340566909351858654807999781808513034680104078196607462166928018863385629928965649243954503391493597963417955268639606791452833692467872935741940362479842688642227725662504694679557678170929873774151037857807219938356152056997839625453727441947651198316190826615266016347740875615970031428012228328190610356706715662722241878767131224669837573607121539572299329404101274463156060298348931678277361174057097484704587036227686110677413094941011961262438027467952964727129462752693949019764164538344775554466171428121848999818969114034332797672927989107710137279281184295118233855942385256333164153378143279674287318136458207166174996112638689535976047617221520910027427485161965702038805161865494457444594178063766957037428053543239915792369877811053417485684498667123216132006378630814477106813088898563644909178779463295955587688067277368683836470612208483299572260344016516194247232298740800342116589984844356688576984553507410293250093945014209879983314562948451929862241009275783684229669718641013736581856815277185073259140534024850924787544871716174654424640728091372513505922826813145390369149590652886241000625495880523771672395227312971578042522330551788256261683080675549820375567692574152956993944504349004617185470945673049153218968830613586193253490318451871770642617802890083608004460414305421033261048294750210470303202846332054952531617433058538758154347087854561609738141615145103748777579733574989673510104836750248325511777237502526995647687215364262385606217553691332159421351598905950537513518351520709657614578131639854432532002236696200855408766520105076378983345708235918180749273124590433024519869147132931932462703067876214268579940066030521414045386366551780718510535469417760242493782392451178913322503092692423649855756521279456558275339921490892868856862895022564047205838132429286600764536839036698193759634186899291274131934296059833048690594627623595320676097721540716472990950611858372856271872423573251506230042608074167903809812264198034505185435990821356377966484742250577592243727298923187891299404854048446822719928239317254073429532989089675503790372464487057264894107613242300912487070053676379388189496900004239731820229886894053019610823763957809819187948639826973433528683168917360632750040517847686479093538683816924213175672979768822065627696943474914020483056384006872835738311110986586149510661361915342172527409078742250880056867149831149121019729847242037335904440063130981999650700416787683293610119590221942974317455716336227454789239793488032299063316588917505912406020220045264868457718282165158892171630470709599503997282778168097827497383884195820921583645621293941200045604062174334998171535030513366277293714389988219756129580868518167923841173364269774889246694435264051484911461988227011238661037602452710188911900438270362280391121270021679247152879324195035694278071477495720447513017171148877312193736366348711630105507365864598069586257026976295714123943691621672377694552248018987680338612382795605985191106112971398796002636340393693119651973344711646854574482999700397952536878348512983782198330513744803168936076427075943787200489575435147989033386529956551570669047103070223076797892329848058499725632813524581372640746415923016932853954152472487866287318545051065376430120748079948860283261855738836955246188128622509828635867225708782966017423170535046509131388753895013061151387840089512861842615441729962315731301087767989000918136617870582141517330935619268642915983553727587587676791953536960714236687847602589538927962585440961131240218794236944630211930970546118745080346860636620310193382167597465544174488399379683716417891139157575146359165023126594124268610800205258776019000550873739401445303129974560221438061891795442780328126230093178952504570380957199592993338719686487798275474853570100033092481743129836527369756194343789131822069107283156271772679863538216891518713732520976834628418347371261368933454629405371869789752684339805368137450825001203521193642598238954329102258317328098581116978343883611320940814793654745807336162557057195523274610323601685712314930799144191673243832283659669368716126815118360353441303009936083544193524336572930768154506567477565558211143508568396203781879592033787429012753106951129653074630840496376302289668286168325299592504054003803917262600195834001336180158836765599057537979745423711070158871650976475924365707758401328959478791343481250979029363644046972556422294698558561670817595994409985323205913035009923360820734795546082012200697671744573982535291905800552837118327702125018691644774560916230166739307705017656065679867259837178918123254219579594535869171376148397610005870749992910355727569593729567789260479930835305112462727870603529547312621720559953074675620549217314861961905983960910846471569192459257648138212674016814845327496495507412976753381357634960529826817906824433858135485518651632270319927880227571858035210375443324098235463619647723862420557582355632137583370066602155641218235815280874570372436217877316899649287051943247206509113311767578124e-4966 +3.237587559719012555462219479113823276249784669017340504844942194598519770062059685508835745638324970127939070738424059838293609943191271023342555035986308991521396355375667467208367312819235870119724263252776995195727778126085574034035411017344128491238136414394551514178668780674015531193282296319913113495953953933831631032855605791532328598034154166422617226534880263244723830482289656875701701315902175019974435037627824356684033058939701577883356651733717468531204705842607568803666569711421917525834491783583598401321476176752039857173551930268891446850107760584333855521475305010940756813993214730850216669600967698749412592167692757446422169965426483919224341062751152057061076522973232731542382055087239368522167656194830741819605276971705738272393130698937532095725613383807312946395184980707534803490003540251394324459987958400939111001126190861523615485938285497714410609640798273816511769391568591823198476415765275534341709798367687043373145262933998108452661682659942586304978413812755518166239176614473815940025342279575304159493260770068030636885746695206392378276051948759263882079389379666940357441139816661913198656187703463519723262653223919257185751827493927586153153792077729913353547954808876263400200663495414360816863385220457719546338953323399286762099558324132103460225580066817535680886906060858264089074120360391613368274811868067637495154569071591624185979937989402513750464346904036668477876379544221432800037599944499161940321774835027752710681217554286366043661491013593886229615614494736186475932160549630939390542165126494166960681499481651861215529870984381726203476917507560266886692644952355421814201350137351435237036912624414444992497142303802423605897110605364956579914507108584002230524766331348271456591814078599780820974961968314684496428310691542272663818486132771177670874927831510002443658417608078383611526899905533629456904234997116303929427262032216072887961072267850618234492852606488522739744757845004694461812790342894353802938671928834585447328398711684245164703625580196678024410303542544534512706792134908369873605619756775207191558754413381571756431003248529020572648048946458999967788526617126349345966896362376841092268841417781414969315002419192181972121568811432459128737128140063645558482525300089060238860392371092102688097987915838860882370022268312322882235690785726190915062699382576041643741555139697348927957856990969985342299599797431503615312038393069808777315725367497595040966093808407117316369389112216628231869173217637452855462790553030636920487796465880633399632793882734473382168542596184679158149228725004404714293460752371865436947855237307240001863573081174929166645758276081272685156100195420794154740486637315823136798695124738873328565945598241199335059398955049459449844741098478330319112865980346771381982151154499846478545530650091824164892591396650703633600023191521502618379988693800703884555191647864959327260468892793195316578510173816406054364319294906641284764788384683586662382042642852654156477478700779123584369965723284711409361741235548687181052639639279285373139084165798451899763979500837428077782309910703522399860010310321116623028924118238023770381424894162717815296210097245221769714495449744327945091943394325259297771090128969600269822520904193880119094781214175887316220311309028456568749910010962366586834018403242866721783519806933018588077977626913774236680220258524711348037750591646286531625306510583751929280541119187219596706615736304036444366663256426643903386694536649648686380122198677895751002327229059364018755164517060321515091173358005987498359799467138817648881479418623694683454881683746841149715181334498096967702613110590140231345676956141227850879905018558219984441819798054463206764413100251255775535830770535620946159535406497134759043192647996190512978586496199656070707105117773853504277795024754647024165589129442822627147868917463795166386552921913398878270019905147510849518894114102536073369047160130990411626048426437835295683097278297774735181045158616674564080237813146623269215019613231938626758927531490945029356207933289363847181438902539297057969524961348607844569521442237914899100699610921669921572167164875488132527187949318543809703388178931170799769792886086681284964861608656928109305369539955846964197786677053847603962194721523867993048528558551380823699291873352033111096244814245789620930756114228971363838828108534030152031715929722499546436547773404017947035596936338462103946797525667033935433489292620531649199724400832489751788129365426568881328357966337292439204382537174357675404105580244018783685041224798457022189315692175787257287203633134300759209060570319508886475377719911176071302732819878165468592717406388218727585026352127436844762994722826390779737322113768842482160812973100323673863050234437722898796145596181862320550301285861980052194863780743808106946940079349630782676930197134206259739125377941060751175427888774493677478593805682322173891730311959284895178856039354015035864931073602059531001572891528828982167810245343327388887928886208615327002834690068636094325052251429781641267821367266715283643659749152264457938319185148303604827363623405060374573505789923003843438436174489383805098509083722050766328250349793203837202162624690093533478114438810603140565070517669964629947543608404988178019652088162307525611931821066493746994641048066011859814337589829896549720562117090677291541318153057715167624128318297771376531788973088699647168159229805877415594828532539839967464064556647594705830374653113373530876658380240145380423210673778776803592627231257495817394581607796277282644312510714532297108722017217547317744900647318022108570947064304280100418971450552007356891519523293614416944016354756866350050833501416942505071203810116719053430543531027953437436446745566839242129860410443198862219469972163224971258348314341755015213118628882713134766297624091644805801186976152536913514712919240503721680740586016832099946807466311777189050656676962849581383790904722087478646766320517056183581970236248227413322748304134245717987665377396011236706627320817654565682680006957454759981618023476448544673508068369492066566895437050571584345511070959483898938738225050292533674383091612495407126805381796487365892131916426837522671623266627483065655765705534239355214893395905702329340402794052884259146049064629582075576563307670749189662176976725361937046200576007893814439695301892528761187544161389682003509216791271836545495416676148151145195082668323677621182991451835324281863619641773620601014510950996746726615703771971266687151564427772359427340566909351858654807999781808513034680104078196607462166928018863385629928965649243954503391493597963417955268639606791452833692467872935741940362479842688642227725662504694679557678170929873774151037857807219938356152056997839625453727441947651198316190826615266016347740875615970031428012228328190610356706715662722241878767131224669837573607121539572299329404101274463156060298348931678277361174057097484704587036227686110677413094941011961262438027467952964727129462752693949019764164538344775554466171428121848999818969114034332797672927989107710137279281184295118233855942385256333164153378143279674287318136458207166174996112638689535976047617221520910027427485161965702038805161865494457444594178063766957037428053543239915792369877811053417485684498667123216132006378630814477106813088898563644909178779463295955587688067277368683836470612208483299572260344016516194247232298740800342116589984844356688576984553507410293250093945014209879983314562948451929862241009275783684229669718641013736581856815277185073259140534024850924787544871716174654424640728091372513505922826813145390369149590652886241000625495880523771672395227312971578042522330551788256261683080675549820375567692574152956993944504349004617185470945673049153218968830613586193253490318451871770642617802890083608004460414305421033261048294750210470303202846332054952531617433058538758154347087854561609738141615145103748777579733574989673510104836750248325511777237502526995647687215364262385606217553691332159421351598905950537513518351520709657614578131639854432532002236696200855408766520105076378983345708235918180749273124590433024519869147132931932462703067876214268579940066030521414045386366551780718510535469417760242493782392451178913322503092692423649855756521279456558275339921490892868856862895022564047205838132429286600764536839036698193759634186899291274131934296059833048690594627623595320676097721540716472990950611858372856271872423573251506230042608074167903809812264198034505185435990821356377966484742250577592243727298923187891299404854048446822719928239317254073429532989089675503790372464487057264894107613242300912487070053676379388189496900004239731820229886894053019610823763957809819187948639826973433528683168917360632750040517847686479093538683816924213175672979768822065627696943474914020483056384006872835738311110986586149510661361915342172527409078742250880056867149831149121019729847242037335904440063130981999650700416787683293610119590221942974317455716336227454789239793488032299063316588917505912406020220045264868457718282165158892171630470709599503997282778168097827497383884195820921583645621293941200045604062174334998171535030513366277293714389988219756129580868518167923841173364269774889246694435264051484911461988227011238661037602452710188911900438270362280391121270021679247152879324195035694278071477495720447513017171148877312193736366348711630105507365864598069586257026976295714123943691621672377694552248018987680338612382795605985191106112971398796002636340393693119651973344711646854574482999700397952536878348512983782198330513744803168936076427075943787200489575435147989033386529956551570669047103070223076797892329848058499725632813524581372640746415923016932853954152472487866287318545051065376430120748079948860283261855738836955246188128622509828635867225708782966017423170535046509131388753895013061151387840089512861842615441729962315731301087767989000918136617870582141517330935619268642915983553727587587676791953536960714236687847602589538927962585440961131240218794236944630211930970546118745080346860636620310193382167597465544174488399379683716417891139157575146359165023126594124268610800205258776019000550873739401445303129974560221438061891795442780328126230093178952504570380957199592993338719686487798275474853570100033092481743129836527369756194343789131822069107283156271772679863538216891518713732520976834628418347371261368933454629405371869789752684339805368137450825001203521193642598238954329102258317328098581116978343883611320940814793654745807336162557057195523274610323601685712314930799144191673243832283659669368716126815118360353441303009936083544193524336572930768154506567477565558211143508568396203781879592033787429012753106951129653074630840496376302289668286168325299592504054003803917262600195834001336180158836765599057537979745423711070158871650976475924365707758401328959478791343481250979029363644046972556422294698558561670817595994409985323205913035009923360820734795546082012200697671744573982535291905800552837118327702125018691644774560916230166739307705017656065679867259837178918123254219579594535869171376148397610005870749992910355727569593729567789260479930835305112462727870603529547312621720559953074675620549217314861961905983960910846471569192459257648138212674016814845327496495507412976753381357634960529826817906824433858135485518651632270319927880227571858035210375443324098235463619647723862420557582355632137583370066602155641218235815280874570372436217877316899649287051943247206509113311767578125e-4966 +3.237587559719012555462219479113823276249784669017340504844942194598519770062059685508835745638324970127939070738424059838293609943191271023342555035986308991521396355375667467208367312819235870119724263252776995195727778126085574034035411017344128491238136414394551514178668780674015531193282296319913113495953953933831631032855605791532328598034154166422617226534880263244723830482289656875701701315902175019974435037627824356684033058939701577883356651733717468531204705842607568803666569711421917525834491783583598401321476176752039857173551930268891446850107760584333855521475305010940756813993214730850216669600967698749412592167692757446422169965426483919224341062751152057061076522973232731542382055087239368522167656194830741819605276971705738272393130698937532095725613383807312946395184980707534803490003540251394324459987958400939111001126190861523615485938285497714410609640798273816511769391568591823198476415765275534341709798367687043373145262933998108452661682659942586304978413812755518166239176614473815940025342279575304159493260770068030636885746695206392378276051948759263882079389379666940357441139816661913198656187703463519723262653223919257185751827493927586153153792077729913353547954808876263400200663495414360816863385220457719546338953323399286762099558324132103460225580066817535680886906060858264089074120360391613368274811868067637495154569071591624185979937989402513750464346904036668477876379544221432800037599944499161940321774835027752710681217554286366043661491013593886229615614494736186475932160549630939390542165126494166960681499481651861215529870984381726203476917507560266886692644952355421814201350137351435237036912624414444992497142303802423605897110605364956579914507108584002230524766331348271456591814078599780820974961968314684496428310691542272663818486132771177670874927831510002443658417608078383611526899905533629456904234997116303929427262032216072887961072267850618234492852606488522739744757845004694461812790342894353802938671928834585447328398711684245164703625580196678024410303542544534512706792134908369873605619756775207191558754413381571756431003248529020572648048946458999967788526617126349345966896362376841092268841417781414969315002419192181972121568811432459128737128140063645558482525300089060238860392371092102688097987915838860882370022268312322882235690785726190915062699382576041643741555139697348927957856990969985342299599797431503615312038393069808777315725367497595040966093808407117316369389112216628231869173217637452855462790553030636920487796465880633399632793882734473382168542596184679158149228725004404714293460752371865436947855237307240001863573081174929166645758276081272685156100195420794154740486637315823136798695124738873328565945598241199335059398955049459449844741098478330319112865980346771381982151154499846478545530650091824164892591396650703633600023191521502618379988693800703884555191647864959327260468892793195316578510173816406054364319294906641284764788384683586662382042642852654156477478700779123584369965723284711409361741235548687181052639639279285373139084165798451899763979500837428077782309910703522399860010310321116623028924118238023770381424894162717815296210097245221769714495449744327945091943394325259297771090128969600269822520904193880119094781214175887316220311309028456568749910010962366586834018403242866721783519806933018588077977626913774236680220258524711348037750591646286531625306510583751929280541119187219596706615736304036444366663256426643903386694536649648686380122198677895751002327229059364018755164517060321515091173358005987498359799467138817648881479418623694683454881683746841149715181334498096967702613110590140231345676956141227850879905018558219984441819798054463206764413100251255775535830770535620946159535406497134759043192647996190512978586496199656070707105117773853504277795024754647024165589129442822627147868917463795166386552921913398878270019905147510849518894114102536073369047160130990411626048426437835295683097278297774735181045158616674564080237813146623269215019613231938626758927531490945029356207933289363847181438902539297057969524961348607844569521442237914899100699610921669921572167164875488132527187949318543809703388178931170799769792886086681284964861608656928109305369539955846964197786677053847603962194721523867993048528558551380823699291873352033111096244814245789620930756114228971363838828108534030152031715929722499546436547773404017947035596936338462103946797525667033935433489292620531649199724400832489751788129365426568881328357966337292439204382537174357675404105580244018783685041224798457022189315692175787257287203633134300759209060570319508886475377719911176071302732819878165468592717406388218727585026352127436844762994722826390779737322113768842482160812973100323673863050234437722898796145596181862320550301285861980052194863780743808106946940079349630782676930197134206259739125377941060751175427888774493677478593805682322173891730311959284895178856039354015035864931073602059531001572891528828982167810245343327388887928886208615327002834690068636094325052251429781641267821367266715283643659749152264457938319185148303604827363623405060374573505789923003843438436174489383805098509083722050766328250349793203837202162624690093533478114438810603140565070517669964629947543608404988178019652088162307525611931821066493746994641048066011859814337589829896549720562117090677291541318153057715167624128318297771376531788973088699647168159229805877415594828532539839967464064556647594705830374653113373530876658380240145380423210673778776803592627231257495817394581607796277282644312510714532297108722017217547317744900647318022108570947064304280100418971450552007356891519523293614416944016354756866350050833501416942505071203810116719053430543531027953437436446745566839242129860410443198862219469972163224971258348314341755015213118628882713134766297624091644805801186976152536913514712919240503721680740586016832099946807466311777189050656676962849581383790904722087478646766320517056183581970236248227413322748304134245717987665377396011236706627320817654565682680006957454759981618023476448544673508068369492066566895437050571584345511070959483898938738225050292533674383091612495407126805381796487365892131916426837522671623266627483065655765705534239355214893395905702329340402794052884259146049064629582075576563307670749189662176976725361937046200576007893814439695301892528761187544161389682003509216791271836545495416676148151145195082668323677621182991451835324281863619641773620601014510950996746726615703771971266687151564427772359427340566909351858654807999781808513034680104078196607462166928018863385629928965649243954503391493597963417955268639606791452833692467872935741940362479842688642227725662504694679557678170929873774151037857807219938356152056997839625453727441947651198316190826615266016347740875615970031428012228328190610356706715662722241878767131224669837573607121539572299329404101274463156060298348931678277361174057097484704587036227686110677413094941011961262438027467952964727129462752693949019764164538344775554466171428121848999818969114034332797672927989107710137279281184295118233855942385256333164153378143279674287318136458207166174996112638689535976047617221520910027427485161965702038805161865494457444594178063766957037428053543239915792369877811053417485684498667123216132006378630814477106813088898563644909178779463295955587688067277368683836470612208483299572260344016516194247232298740800342116589984844356688576984553507410293250093945014209879983314562948451929862241009275783684229669718641013736581856815277185073259140534024850924787544871716174654424640728091372513505922826813145390369149590652886241000625495880523771672395227312971578042522330551788256261683080675549820375567692574152956993944504349004617185470945673049153218968830613586193253490318451871770642617802890083608004460414305421033261048294750210470303202846332054952531617433058538758154347087854561609738141615145103748777579733574989673510104836750248325511777237502526995647687215364262385606217553691332159421351598905950537513518351520709657614578131639854432532002236696200855408766520105076378983345708235918180749273124590433024519869147132931932462703067876214268579940066030521414045386366551780718510535469417760242493782392451178913322503092692423649855756521279456558275339921490892868856862895022564047205838132429286600764536839036698193759634186899291274131934296059833048690594627623595320676097721540716472990950611858372856271872423573251506230042608074167903809812264198034505185435990821356377966484742250577592243727298923187891299404854048446822719928239317254073429532989089675503790372464487057264894107613242300912487070053676379388189496900004239731820229886894053019610823763957809819187948639826973433528683168917360632750040517847686479093538683816924213175672979768822065627696943474914020483056384006872835738311110986586149510661361915342172527409078742250880056867149831149121019729847242037335904440063130981999650700416787683293610119590221942974317455716336227454789239793488032299063316588917505912406020220045264868457718282165158892171630470709599503997282778168097827497383884195820921583645621293941200045604062174334998171535030513366277293714389988219756129580868518167923841173364269774889246694435264051484911461988227011238661037602452710188911900438270362280391121270021679247152879324195035694278071477495720447513017171148877312193736366348711630105507365864598069586257026976295714123943691621672377694552248018987680338612382795605985191106112971398796002636340393693119651973344711646854574482999700397952536878348512983782198330513744803168936076427075943787200489575435147989033386529956551570669047103070223076797892329848058499725632813524581372640746415923016932853954152472487866287318545051065376430120748079948860283261855738836955246188128622509828635867225708782966017423170535046509131388753895013061151387840089512861842615441729962315731301087767989000918136617870582141517330935619268642915983553727587587676791953536960714236687847602589538927962585440961131240218794236944630211930970546118745080346860636620310193382167597465544174488399379683716417891139157575146359165023126594124268610800205258776019000550873739401445303129974560221438061891795442780328126230093178952504570380957199592993338719686487798275474853570100033092481743129836527369756194343789131822069107283156271772679863538216891518713732520976834628418347371261368933454629405371869789752684339805368137450825001203521193642598238954329102258317328098581116978343883611320940814793654745807336162557057195523274610323601685712314930799144191673243832283659669368716126815118360353441303009936083544193524336572930768154506567477565558211143508568396203781879592033787429012753106951129653074630840496376302289668286168325299592504054003803917262600195834001336180158836765599057537979745423711070158871650976475924365707758401328959478791343481250979029363644046972556422294698558561670817595994409985323205913035009923360820734795546082012200697671744573982535291905800552837118327702125018691644774560916230166739307705017656065679867259837178918123254219579594535869171376148397610005870749992910355727569593729567789260479930835305112462727870603529547312621720559953074675620549217314861961905983960910846471569192459257648138212674016814845327496495507412976753381357634960529826817906824433858135485518651632270319927880227571858035210375443324098235463619647723862420557582355632137583370066602155641218235815280874570372436217877316899649287051943247206509113311767578126e-4966 +-3.237587559719012555462219479113823276249784669017340504844942194598519770062059685508835745638324970127939070738424059838293609943191271023342555035986308991521396355375667467208367312819235870119724263252776995195727778126085574034035411017344128491238136414394551514178668780674015531193282296319913113495953953933831631032855605791532328598034154166422617226534880263244723830482289656875701701315902175019974435037627824356684033058939701577883356651733717468531204705842607568803666569711421917525834491783583598401321476176752039857173551930268891446850107760584333855521475305010940756813993214730850216669600967698749412592167692757446422169965426483919224341062751152057061076522973232731542382055087239368522167656194830741819605276971705738272393130698937532095725613383807312946395184980707534803490003540251394324459987958400939111001126190861523615485938285497714410609640798273816511769391568591823198476415765275534341709798367687043373145262933998108452661682659942586304978413812755518166239176614473815940025342279575304159493260770068030636885746695206392378276051948759263882079389379666940357441139816661913198656187703463519723262653223919257185751827493927586153153792077729913353547954808876263400200663495414360816863385220457719546338953323399286762099558324132103460225580066817535680886906060858264089074120360391613368274811868067637495154569071591624185979937989402513750464346904036668477876379544221432800037599944499161940321774835027752710681217554286366043661491013593886229615614494736186475932160549630939390542165126494166960681499481651861215529870984381726203476917507560266886692644952355421814201350137351435237036912624414444992497142303802423605897110605364956579914507108584002230524766331348271456591814078599780820974961968314684496428310691542272663818486132771177670874927831510002443658417608078383611526899905533629456904234997116303929427262032216072887961072267850618234492852606488522739744757845004694461812790342894353802938671928834585447328398711684245164703625580196678024410303542544534512706792134908369873605619756775207191558754413381571756431003248529020572648048946458999967788526617126349345966896362376841092268841417781414969315002419192181972121568811432459128737128140063645558482525300089060238860392371092102688097987915838860882370022268312322882235690785726190915062699382576041643741555139697348927957856990969985342299599797431503615312038393069808777315725367497595040966093808407117316369389112216628231869173217637452855462790553030636920487796465880633399632793882734473382168542596184679158149228725004404714293460752371865436947855237307240001863573081174929166645758276081272685156100195420794154740486637315823136798695124738873328565945598241199335059398955049459449844741098478330319112865980346771381982151154499846478545530650091824164892591396650703633600023191521502618379988693800703884555191647864959327260468892793195316578510173816406054364319294906641284764788384683586662382042642852654156477478700779123584369965723284711409361741235548687181052639639279285373139084165798451899763979500837428077782309910703522399860010310321116623028924118238023770381424894162717815296210097245221769714495449744327945091943394325259297771090128969600269822520904193880119094781214175887316220311309028456568749910010962366586834018403242866721783519806933018588077977626913774236680220258524711348037750591646286531625306510583751929280541119187219596706615736304036444366663256426643903386694536649648686380122198677895751002327229059364018755164517060321515091173358005987498359799467138817648881479418623694683454881683746841149715181334498096967702613110590140231345676956141227850879905018558219984441819798054463206764413100251255775535830770535620946159535406497134759043192647996190512978586496199656070707105117773853504277795024754647024165589129442822627147868917463795166386552921913398878270019905147510849518894114102536073369047160130990411626048426437835295683097278297774735181045158616674564080237813146623269215019613231938626758927531490945029356207933289363847181438902539297057969524961348607844569521442237914899100699610921669921572167164875488132527187949318543809703388178931170799769792886086681284964861608656928109305369539955846964197786677053847603962194721523867993048528558551380823699291873352033111096244814245789620930756114228971363838828108534030152031715929722499546436547773404017947035596936338462103946797525667033935433489292620531649199724400832489751788129365426568881328357966337292439204382537174357675404105580244018783685041224798457022189315692175787257287203633134300759209060570319508886475377719911176071302732819878165468592717406388218727585026352127436844762994722826390779737322113768842482160812973100323673863050234437722898796145596181862320550301285861980052194863780743808106946940079349630782676930197134206259739125377941060751175427888774493677478593805682322173891730311959284895178856039354015035864931073602059531001572891528828982167810245343327388887928886208615327002834690068636094325052251429781641267821367266715283643659749152264457938319185148303604827363623405060374573505789923003843438436174489383805098509083722050766328250349793203837202162624690093533478114438810603140565070517669964629947543608404988178019652088162307525611931821066493746994641048066011859814337589829896549720562117090677291541318153057715167624128318297771376531788973088699647168159229805877415594828532539839967464064556647594705830374653113373530876658380240145380423210673778776803592627231257495817394581607796277282644312510714532297108722017217547317744900647318022108570947064304280100418971450552007356891519523293614416944016354756866350050833501416942505071203810116719053430543531027953437436446745566839242129860410443198862219469972163224971258348314341755015213118628882713134766297624091644805801186976152536913514712919240503721680740586016832099946807466311777189050656676962849581383790904722087478646766320517056183581970236248227413322748304134245717987665377396011236706627320817654565682680006957454759981618023476448544673508068369492066566895437050571584345511070959483898938738225050292533674383091612495407126805381796487365892131916426837522671623266627483065655765705534239355214893395905702329340402794052884259146049064629582075576563307670749189662176976725361937046200576007893814439695301892528761187544161389682003509216791271836545495416676148151145195082668323677621182991451835324281863619641773620601014510950996746726615703771971266687151564427772359427340566909351858654807999781808513034680104078196607462166928018863385629928965649243954503391493597963417955268639606791452833692467872935741940362479842688642227725662504694679557678170929873774151037857807219938356152056997839625453727441947651198316190826615266016347740875615970031428012228328190610356706715662722241878767131224669837573607121539572299329404101274463156060298348931678277361174057097484704587036227686110677413094941011961262438027467952964727129462752693949019764164538344775554466171428121848999818969114034332797672927989107710137279281184295118233855942385256333164153378143279674287318136458207166174996112638689535976047617221520910027427485161965702038805161865494457444594178063766957037428053543239915792369877811053417485684498667123216132006378630814477106813088898563644909178779463295955587688067277368683836470612208483299572260344016516194247232298740800342116589984844356688576984553507410293250093945014209879983314562948451929862241009275783684229669718641013736581856815277185073259140534024850924787544871716174654424640728091372513505922826813145390369149590652886241000625495880523771672395227312971578042522330551788256261683080675549820375567692574152956993944504349004617185470945673049153218968830613586193253490318451871770642617802890083608004460414305421033261048294750210470303202846332054952531617433058538758154347087854561609738141615145103748777579733574989673510104836750248325511777237502526995647687215364262385606217553691332159421351598905950537513518351520709657614578131639854432532002236696200855408766520105076378983345708235918180749273124590433024519869147132931932462703067876214268579940066030521414045386366551780718510535469417760242493782392451178913322503092692423649855756521279456558275339921490892868856862895022564047205838132429286600764536839036698193759634186899291274131934296059833048690594627623595320676097721540716472990950611858372856271872423573251506230042608074167903809812264198034505185435990821356377966484742250577592243727298923187891299404854048446822719928239317254073429532989089675503790372464487057264894107613242300912487070053676379388189496900004239731820229886894053019610823763957809819187948639826973433528683168917360632750040517847686479093538683816924213175672979768822065627696943474914020483056384006872835738311110986586149510661361915342172527409078742250880056867149831149121019729847242037335904440063130981999650700416787683293610119590221942974317455716336227454789239793488032299063316588917505912406020220045264868457718282165158892171630470709599503997282778168097827497383884195820921583645621293941200045604062174334998171535030513366277293714389988219756129580868518167923841173364269774889246694435264051484911461988227011238661037602452710188911900438270362280391121270021679247152879324195035694278071477495720447513017171148877312193736366348711630105507365864598069586257026976295714123943691621672377694552248018987680338612382795605985191106112971398796002636340393693119651973344711646854574482999700397952536878348512983782198330513744803168936076427075943787200489575435147989033386529956551570669047103070223076797892329848058499725632813524581372640746415923016932853954152472487866287318545051065376430120748079948860283261855738836955246188128622509828635867225708782966017423170535046509131388753895013061151387840089512861842615441729962315731301087767989000918136617870582141517330935619268642915983553727587587676791953536960714236687847602589538927962585440961131240218794236944630211930970546118745080346860636620310193382167597465544174488399379683716417891139157575146359165023126594124268610800205258776019000550873739401445303129974560221438061891795442780328126230093178952504570380957199592993338719686487798275474853570100033092481743129836527369756194343789131822069107283156271772679863538216891518713732520976834628418347371261368933454629405371869789752684339805368137450825001203521193642598238954329102258317328098581116978343883611320940814793654745807336162557057195523274610323601685712314930799144191673243832283659669368716126815118360353441303009936083544193524336572930768154506567477565558211143508568396203781879592033787429012753106951129653074630840496376302289668286168325299592504054003803917262600195834001336180158836765599057537979745423711070158871650976475924365707758401328959478791343481250979029363644046972556422294698558561670817595994409985323205913035009923360820734795546082012200697671744573982535291905800552837118327702125018691644774560916230166739307705017656065679867259837178918123254219579594535869171376148397610005870749992910355727569593729567789260479930835305112462727870603529547312621720559953074675620549217314861961905983960910846471569192459257648138212674016814845327496495507412976753381357634960529826817906824433858135485518651632270319927880227571858035210375443324098235463619647723862420557582355632137583370066602155641218235815280874570372436217877316899649287051943247206509113311767578124e-4966 +-3.237587559719012555462219479113823276249784669017340504844942194598519770062059685508835745638324970127939070738424059838293609943191271023342555035986308991521396355375667467208367312819235870119724263252776995195727778126085574034035411017344128491238136414394551514178668780674015531193282296319913113495953953933831631032855605791532328598034154166422617226534880263244723830482289656875701701315902175019974435037627824356684033058939701577883356651733717468531204705842607568803666569711421917525834491783583598401321476176752039857173551930268891446850107760584333855521475305010940756813993214730850216669600967698749412592167692757446422169965426483919224341062751152057061076522973232731542382055087239368522167656194830741819605276971705738272393130698937532095725613383807312946395184980707534803490003540251394324459987958400939111001126190861523615485938285497714410609640798273816511769391568591823198476415765275534341709798367687043373145262933998108452661682659942586304978413812755518166239176614473815940025342279575304159493260770068030636885746695206392378276051948759263882079389379666940357441139816661913198656187703463519723262653223919257185751827493927586153153792077729913353547954808876263400200663495414360816863385220457719546338953323399286762099558324132103460225580066817535680886906060858264089074120360391613368274811868067637495154569071591624185979937989402513750464346904036668477876379544221432800037599944499161940321774835027752710681217554286366043661491013593886229615614494736186475932160549630939390542165126494166960681499481651861215529870984381726203476917507560266886692644952355421814201350137351435237036912624414444992497142303802423605897110605364956579914507108584002230524766331348271456591814078599780820974961968314684496428310691542272663818486132771177670874927831510002443658417608078383611526899905533629456904234997116303929427262032216072887961072267850618234492852606488522739744757845004694461812790342894353802938671928834585447328398711684245164703625580196678024410303542544534512706792134908369873605619756775207191558754413381571756431003248529020572648048946458999967788526617126349345966896362376841092268841417781414969315002419192181972121568811432459128737128140063645558482525300089060238860392371092102688097987915838860882370022268312322882235690785726190915062699382576041643741555139697348927957856990969985342299599797431503615312038393069808777315725367497595040966093808407117316369389112216628231869173217637452855462790553030636920487796465880633399632793882734473382168542596184679158149228725004404714293460752371865436947855237307240001863573081174929166645758276081272685156100195420794154740486637315823136798695124738873328565945598241199335059398955049459449844741098478330319112865980346771381982151154499846478545530650091824164892591396650703633600023191521502618379988693800703884555191647864959327260468892793195316578510173816406054364319294906641284764788384683586662382042642852654156477478700779123584369965723284711409361741235548687181052639639279285373139084165798451899763979500837428077782309910703522399860010310321116623028924118238023770381424894162717815296210097245221769714495449744327945091943394325259297771090128969600269822520904193880119094781214175887316220311309028456568749910010962366586834018403242866721783519806933018588077977626913774236680220258524711348037750591646286531625306510583751929280541119187219596706615736304036444366663256426643903386694536649648686380122198677895751002327229059364018755164517060321515091173358005987498359799467138817648881479418623694683454881683746841149715181334498096967702613110590140231345676956141227850879905018558219984441819798054463206764413100251255775535830770535620946159535406497134759043192647996190512978586496199656070707105117773853504277795024754647024165589129442822627147868917463795166386552921913398878270019905147510849518894114102536073369047160130990411626048426437835295683097278297774735181045158616674564080237813146623269215019613231938626758927531490945029356207933289363847181438902539297057969524961348607844569521442237914899100699610921669921572167164875488132527187949318543809703388178931170799769792886086681284964861608656928109305369539955846964197786677053847603962194721523867993048528558551380823699291873352033111096244814245789620930756114228971363838828108534030152031715929722499546436547773404017947035596936338462103946797525667033935433489292620531649199724400832489751788129365426568881328357966337292439204382537174357675404105580244018783685041224798457022189315692175787257287203633134300759209060570319508886475377719911176071302732819878165468592717406388218727585026352127436844762994722826390779737322113768842482160812973100323673863050234437722898796145596181862320550301285861980052194863780743808106946940079349630782676930197134206259739125377941060751175427888774493677478593805682322173891730311959284895178856039354015035864931073602059531001572891528828982167810245343327388887928886208615327002834690068636094325052251429781641267821367266715283643659749152264457938319185148303604827363623405060374573505789923003843438436174489383805098509083722050766328250349793203837202162624690093533478114438810603140565070517669964629947543608404988178019652088162307525611931821066493746994641048066011859814337589829896549720562117090677291541318153057715167624128318297771376531788973088699647168159229805877415594828532539839967464064556647594705830374653113373530876658380240145380423210673778776803592627231257495817394581607796277282644312510714532297108722017217547317744900647318022108570947064304280100418971450552007356891519523293614416944016354756866350050833501416942505071203810116719053430543531027953437436446745566839242129860410443198862219469972163224971258348314341755015213118628882713134766297624091644805801186976152536913514712919240503721680740586016832099946807466311777189050656676962849581383790904722087478646766320517056183581970236248227413322748304134245717987665377396011236706627320817654565682680006957454759981618023476448544673508068369492066566895437050571584345511070959483898938738225050292533674383091612495407126805381796487365892131916426837522671623266627483065655765705534239355214893395905702329340402794052884259146049064629582075576563307670749189662176976725361937046200576007893814439695301892528761187544161389682003509216791271836545495416676148151145195082668323677621182991451835324281863619641773620601014510950996746726615703771971266687151564427772359427340566909351858654807999781808513034680104078196607462166928018863385629928965649243954503391493597963417955268639606791452833692467872935741940362479842688642227725662504694679557678170929873774151037857807219938356152056997839625453727441947651198316190826615266016347740875615970031428012228328190610356706715662722241878767131224669837573607121539572299329404101274463156060298348931678277361174057097484704587036227686110677413094941011961262438027467952964727129462752693949019764164538344775554466171428121848999818969114034332797672927989107710137279281184295118233855942385256333164153378143279674287318136458207166174996112638689535976047617221520910027427485161965702038805161865494457444594178063766957037428053543239915792369877811053417485684498667123216132006378630814477106813088898563644909178779463295955587688067277368683836470612208483299572260344016516194247232298740800342116589984844356688576984553507410293250093945014209879983314562948451929862241009275783684229669718641013736581856815277185073259140534024850924787544871716174654424640728091372513505922826813145390369149590652886241000625495880523771672395227312971578042522330551788256261683080675549820375567692574152956993944504349004617185470945673049153218968830613586193253490318451871770642617802890083608004460414305421033261048294750210470303202846332054952531617433058538758154347087854561609738141615145103748777579733574989673510104836750248325511777237502526995647687215364262385606217553691332159421351598905950537513518351520709657614578131639854432532002236696200855408766520105076378983345708235918180749273124590433024519869147132931932462703067876214268579940066030521414045386366551780718510535469417760242493782392451178913322503092692423649855756521279456558275339921490892868856862895022564047205838132429286600764536839036698193759634186899291274131934296059833048690594627623595320676097721540716472990950611858372856271872423573251506230042608074167903809812264198034505185435990821356377966484742250577592243727298923187891299404854048446822719928239317254073429532989089675503790372464487057264894107613242300912487070053676379388189496900004239731820229886894053019610823763957809819187948639826973433528683168917360632750040517847686479093538683816924213175672979768822065627696943474914020483056384006872835738311110986586149510661361915342172527409078742250880056867149831149121019729847242037335904440063130981999650700416787683293610119590221942974317455716336227454789239793488032299063316588917505912406020220045264868457718282165158892171630470709599503997282778168097827497383884195820921583645621293941200045604062174334998171535030513366277293714389988219756129580868518167923841173364269774889246694435264051484911461988227011238661037602452710188911900438270362280391121270021679247152879324195035694278071477495720447513017171148877312193736366348711630105507365864598069586257026976295714123943691621672377694552248018987680338612382795605985191106112971398796002636340393693119651973344711646854574482999700397952536878348512983782198330513744803168936076427075943787200489575435147989033386529956551570669047103070223076797892329848058499725632813524581372640746415923016932853954152472487866287318545051065376430120748079948860283261855738836955246188128622509828635867225708782966017423170535046509131388753895013061151387840089512861842615441729962315731301087767989000918136617870582141517330935619268642915983553727587587676791953536960714236687847602589538927962585440961131240218794236944630211930970546118745080346860636620310193382167597465544174488399379683716417891139157575146359165023126594124268610800205258776019000550873739401445303129974560221438061891795442780328126230093178952504570380957199592993338719686487798275474853570100033092481743129836527369756194343789131822069107283156271772679863538216891518713732520976834628418347371261368933454629405371869789752684339805368137450825001203521193642598238954329102258317328098581116978343883611320940814793654745807336162557057195523274610323601685712314930799144191673243832283659669368716126815118360353441303009936083544193524336572930768154506567477565558211143508568396203781879592033787429012753106951129653074630840496376302289668286168325299592504054003803917262600195834001336180158836765599057537979745423711070158871650976475924365707758401328959478791343481250979029363644046972556422294698558561670817595994409985323205913035009923360820734795546082012200697671744573982535291905800552837118327702125018691644774560916230166739307705017656065679867259837178918123254219579594535869171376148397610005870749992910355727569593729567789260479930835305112462727870603529547312621720559953074675620549217314861961905983960910846471569192459257648138212674016814845327496495507412976753381357634960529826817906824433858135485518651632270319927880227571858035210375443324098235463619647723862420557582355632137583370066602155641218235815280874570372436217877316899649287051943247206509113311767578125e-4966 +-3.237587559719012555462219479113823276249784669017340504844942194598519770062059685508835745638324970127939070738424059838293609943191271023342555035986308991521396355375667467208367312819235870119724263252776995195727778126085574034035411017344128491238136414394551514178668780674015531193282296319913113495953953933831631032855605791532328598034154166422617226534880263244723830482289656875701701315902175019974435037627824356684033058939701577883356651733717468531204705842607568803666569711421917525834491783583598401321476176752039857173551930268891446850107760584333855521475305010940756813993214730850216669600967698749412592167692757446422169965426483919224341062751152057061076522973232731542382055087239368522167656194830741819605276971705738272393130698937532095725613383807312946395184980707534803490003540251394324459987958400939111001126190861523615485938285497714410609640798273816511769391568591823198476415765275534341709798367687043373145262933998108452661682659942586304978413812755518166239176614473815940025342279575304159493260770068030636885746695206392378276051948759263882079389379666940357441139816661913198656187703463519723262653223919257185751827493927586153153792077729913353547954808876263400200663495414360816863385220457719546338953323399286762099558324132103460225580066817535680886906060858264089074120360391613368274811868067637495154569071591624185979937989402513750464346904036668477876379544221432800037599944499161940321774835027752710681217554286366043661491013593886229615614494736186475932160549630939390542165126494166960681499481651861215529870984381726203476917507560266886692644952355421814201350137351435237036912624414444992497142303802423605897110605364956579914507108584002230524766331348271456591814078599780820974961968314684496428310691542272663818486132771177670874927831510002443658417608078383611526899905533629456904234997116303929427262032216072887961072267850618234492852606488522739744757845004694461812790342894353802938671928834585447328398711684245164703625580196678024410303542544534512706792134908369873605619756775207191558754413381571756431003248529020572648048946458999967788526617126349345966896362376841092268841417781414969315002419192181972121568811432459128737128140063645558482525300089060238860392371092102688097987915838860882370022268312322882235690785726190915062699382576041643741555139697348927957856990969985342299599797431503615312038393069808777315725367497595040966093808407117316369389112216628231869173217637452855462790553030636920487796465880633399632793882734473382168542596184679158149228725004404714293460752371865436947855237307240001863573081174929166645758276081272685156100195420794154740486637315823136798695124738873328565945598241199335059398955049459449844741098478330319112865980346771381982151154499846478545530650091824164892591396650703633600023191521502618379988693800703884555191647864959327260468892793195316578510173816406054364319294906641284764788384683586662382042642852654156477478700779123584369965723284711409361741235548687181052639639279285373139084165798451899763979500837428077782309910703522399860010310321116623028924118238023770381424894162717815296210097245221769714495449744327945091943394325259297771090128969600269822520904193880119094781214175887316220311309028456568749910010962366586834018403242866721783519806933018588077977626913774236680220258524711348037750591646286531625306510583751929280541119187219596706615736304036444366663256426643903386694536649648686380122198677895751002327229059364018755164517060321515091173358005987498359799467138817648881479418623694683454881683746841149715181334498096967702613110590140231345676956141227850879905018558219984441819798054463206764413100251255775535830770535620946159535406497134759043192647996190512978586496199656070707105117773853504277795024754647024165589129442822627147868917463795166386552921913398878270019905147510849518894114102536073369047160130990411626048426437835295683097278297774735181045158616674564080237813146623269215019613231938626758927531490945029356207933289363847181438902539297057969524961348607844569521442237914899100699610921669921572167164875488132527187949318543809703388178931170799769792886086681284964861608656928109305369539955846964197786677053847603962194721523867993048528558551380823699291873352033111096244814245789620930756114228971363838828108534030152031715929722499546436547773404017947035596936338462103946797525667033935433489292620531649199724400832489751788129365426568881328357966337292439204382537174357675404105580244018783685041224798457022189315692175787257287203633134300759209060570319508886475377719911176071302732819878165468592717406388218727585026352127436844762994722826390779737322113768842482160812973100323673863050234437722898796145596181862320550301285861980052194863780743808106946940079349630782676930197134206259739125377941060751175427888774493677478593805682322173891730311959284895178856039354015035864931073602059531001572891528828982167810245343327388887928886208615327002834690068636094325052251429781641267821367266715283643659749152264457938319185148303604827363623405060374573505789923003843438436174489383805098509083722050766328250349793203837202162624690093533478114438810603140565070517669964629947543608404988178019652088162307525611931821066493746994641048066011859814337589829896549720562117090677291541318153057715167624128318297771376531788973088699647168159229805877415594828532539839967464064556647594705830374653113373530876658380240145380423210673778776803592627231257495817394581607796277282644312510714532297108722017217547317744900647318022108570947064304280100418971450552007356891519523293614416944016354756866350050833501416942505071203810116719053430543531027953437436446745566839242129860410443198862219469972163224971258348314341755015213118628882713134766297624091644805801186976152536913514712919240503721680740586016832099946807466311777189050656676962849581383790904722087478646766320517056183581970236248227413322748304134245717987665377396011236706627320817654565682680006957454759981618023476448544673508068369492066566895437050571584345511070959483898938738225050292533674383091612495407126805381796487365892131916426837522671623266627483065655765705534239355214893395905702329340402794052884259146049064629582075576563307670749189662176976725361937046200576007893814439695301892528761187544161389682003509216791271836545495416676148151145195082668323677621182991451835324281863619641773620601014510950996746726615703771971266687151564427772359427340566909351858654807999781808513034680104078196607462166928018863385629928965649243954503391493597963417955268639606791452833692467872935741940362479842688642227725662504694679557678170929873774151037857807219938356152056997839625453727441947651198316190826615266016347740875615970031428012228328190610356706715662722241878767131224669837573607121539572299329404101274463156060298348931678277361174057097484704587036227686110677413094941011961262438027467952964727129462752693949019764164538344775554466171428121848999818969114034332797672927989107710137279281184295118233855942385256333164153378143279674287318136458207166174996112638689535976047617221520910027427485161965702038805161865494457444594178063766957037428053543239915792369877811053417485684498667123216132006378630814477106813088898563644909178779463295955587688067277368683836470612208483299572260344016516194247232298740800342116589984844356688576984553507410293250093945014209879983314562948451929862241009275783684229669718641013736581856815277185073259140534024850924787544871716174654424640728091372513505922826813145390369149590652886241000625495880523771672395227312971578042522330551788256261683080675549820375567692574152956993944504349004617185470945673049153218968830613586193253490318451871770642617802890083608004460414305421033261048294750210470303202846332054952531617433058538758154347087854561609738141615145103748777579733574989673510104836750248325511777237502526995647687215364262385606217553691332159421351598905950537513518351520709657614578131639854432532002236696200855408766520105076378983345708235918180749273124590433024519869147132931932462703067876214268579940066030521414045386366551780718510535469417760242493782392451178913322503092692423649855756521279456558275339921490892868856862895022564047205838132429286600764536839036698193759634186899291274131934296059833048690594627623595320676097721540716472990950611858372856271872423573251506230042608074167903809812264198034505185435990821356377966484742250577592243727298923187891299404854048446822719928239317254073429532989089675503790372464487057264894107613242300912487070053676379388189496900004239731820229886894053019610823763957809819187948639826973433528683168917360632750040517847686479093538683816924213175672979768822065627696943474914020483056384006872835738311110986586149510661361915342172527409078742250880056867149831149121019729847242037335904440063130981999650700416787683293610119590221942974317455716336227454789239793488032299063316588917505912406020220045264868457718282165158892171630470709599503997282778168097827497383884195820921583645621293941200045604062174334998171535030513366277293714389988219756129580868518167923841173364269774889246694435264051484911461988227011238661037602452710188911900438270362280391121270021679247152879324195035694278071477495720447513017171148877312193736366348711630105507365864598069586257026976295714123943691621672377694552248018987680338612382795605985191106112971398796002636340393693119651973344711646854574482999700397952536878348512983782198330513744803168936076427075943787200489575435147989033386529956551570669047103070223076797892329848058499725632813524581372640746415923016932853954152472487866287318545051065376430120748079948860283261855738836955246188128622509828635867225708782966017423170535046509131388753895013061151387840089512861842615441729962315731301087767989000918136617870582141517330935619268642915983553727587587676791953536960714236687847602589538927962585440961131240218794236944630211930970546118745080346860636620310193382167597465544174488399379683716417891139157575146359165023126594124268610800205258776019000550873739401445303129974560221438061891795442780328126230093178952504570380957199592993338719686487798275474853570100033092481743129836527369756194343789131822069107283156271772679863538216891518713732520976834628418347371261368933454629405371869789752684339805368137450825001203521193642598238954329102258317328098581116978343883611320940814793654745807336162557057195523274610323601685712314930799144191673243832283659669368716126815118360353441303009936083544193524336572930768154506567477565558211143508568396203781879592033787429012753106951129653074630840496376302289668286168325299592504054003803917262600195834001336180158836765599057537979745423711070158871650976475924365707758401328959478791343481250979029363644046972556422294698558561670817595994409985323205913035009923360820734795546082012200697671744573982535291905800552837118327702125018691644774560916230166739307705017656065679867259837178918123254219579594535869171376148397610005870749992910355727569593729567789260479930835305112462727870603529547312621720559953074675620549217314861961905983960910846471569192459257648138212674016814845327496495507412976753381357634960529826817906824433858135485518651632270319927880227571858035210375443324098235463619647723862420557582355632137583370066602155641218235815280874570372436217877316899649287051943247206509113311767578126e-4966 +340282366920938463463374607431768211455.0 +179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137215.0 +1189731495357231765085759326628007130763444687096510237472674821233261358180483686904488595472612039915115437484839309258897667381308687426274524698341565006080871634366004897522143251619531446845952345709482135847036647464830984784714280967845614138476044338404886122905286855313236158695999885790106357018120815363320780964323712757164290613406875202417365323950267880089067517372270610835647545755780793431622213451903817859630690311343850657539360649645193283178291767658965405285113556134369793281725888015908414675289832538063419234888599898980623114025121674472051872439321323198402942705341366951274739014593816898288994445173400364617928377138074411345791848573595077170437644191743889644885377684738322240608239079061399475675334739784016491742621485229014847672335977897158397334226349734811441653077758250988926030894789604676153104257260141806823027588003441951455327701598071281589597169413965608439504983171255062282026626200048042149808200002060993433681237623857880627479727072877482838438705048034164633337013385405998040701908662387301605018188262573723766279240798931717708807901740265407930976419648877869604017517691938687988088008944251258826969688364194133945780157844364946052713655454906327187428531895100278695119323496808703630436193927592692344820812834297364478686862064169042458555136532055050508189891866846863799917647547291371573500701015197559097453040033031520683518216494195636696077748110598284901343611469214274121810495077979275556645164983850062051066517084647369464036640569339464837172183352956873912042640003611618789278195710052094562761306703551840330110645101995435167626688669627763820604342480357906415354212732946756073006907088870496125050068156659252761297664065498347492661798824062312210409274584565587264846417650160123175874034726261957289081466197651553830744424709698634753627770356227126145052549125229448040149114795681359875968512808575244271871455454084894986155020794806980939215658055319165641681105966454159951476908583129721503298816585142073061480888021769818338417129396878371459575846052583142928447249703698548125295775920936450022651427249949580708203966082847550921891152133321048011973883636577825533325988852156325439335021315312134081390451021255363707903495916963125924201167877190108935255914539488216897117943269373608639074472792751116715127106396425081353553137213552890539802602978645319795100976432939091924660228878912900654210118287298298707382159717184569540515403029173307292454391789568674219640761451173600617752186991913366837033887201582071625868247133104513315097274713442728340606642890406496636104443217752811227470029162858093727701049646499540220983981932786613204254226464243689610107429923197638681545837561773535568984536053627234424277105760924864023781629665526314910906960488073475217005121136311870439925762508666032566213750416695719919674223210606724721373471234021613540712188239909701971943944347480314217903886317767779921539892177334344368907550318800833546852344370327089284147501640589448482001254237386680074457341910933774891959681016516069106149905572425810895586938833067490204900368624166301968553005687040285095450484840073528643826570403767157286512380255109954518857013476588189300004138849715883139866071547574816476727635116435462804401112711392529180570794193422686818353212799068972247697191474268157912195973794192807298886952361100880264258801320928040011928153970801130741339550003299015924978259936974358726286143980520112454369271114083747919007803406596321353417004068869443405472140675963640997405009225803505672726465095506267339268892424364561897661906898424186770491035344080399248327097911712881140170384182058601614758284200750183500329358499691864066590539660709069537381601887679046657759654588001937117771344698326428792622894338016112445533539447087462049763409147542099248815521395929388007711172017894897793706604273480985161028815458787911160979113422433557549170905442026397275695283207305331845419990749347810524006194197200591652147867193696254337864981603833146354201700628817947177518115217674352016511172347727727075220056177748218928597158346744541337107358427757919660562583883823262178961691787226118865632764934288772405859754877759869235530653929937901193611669007472354746360764601872442031379944139824366828698790212922996174192728625891720057612509349100482545964152046477925114446500732164109099345259799455690095576788686397487061948854749024863607921857834205793797188834779656273479112388585706424836379072355410286787018527401653934219888361061949671961055068686961468019035629749424086587195041004404915266476272761070511568387063401264136517237211409916458796347624949215904533937210937520465798300175408017538862312719042361037129338896586028150046596078872444365564480545689033575955702988396719744528212984142578483954005084264327730840985420021409069485412320805268520094146798876110414583170390473982488899228091818213934288295679717369943152460447027290669964066815.0 +-340282366920938463463374607431768211455.0 +-179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137215.0 +-1189731495357231765085759326628007130763444687096510237472674821233261358180483686904488595472612039915115437484839309258897667381308687426274524698341565006080871634366004897522143251619531446845952345709482135847036647464830984784714280967845614138476044338404886122905286855313236158695999885790106357018120815363320780964323712757164290613406875202417365323950267880089067517372270610835647545755780793431622213451903817859630690311343850657539360649645193283178291767658965405285113556134369793281725888015908414675289832538063419234888599898980623114025121674472051872439321323198402942705341366951274739014593816898288994445173400364617928377138074411345791848573595077170437644191743889644885377684738322240608239079061399475675334739784016491742621485229014847672335977897158397334226349734811441653077758250988926030894789604676153104257260141806823027588003441951455327701598071281589597169413965608439504983171255062282026626200048042149808200002060993433681237623857880627479727072877482838438705048034164633337013385405998040701908662387301605018188262573723766279240798931717708807901740265407930976419648877869604017517691938687988088008944251258826969688364194133945780157844364946052713655454906327187428531895100278695119323496808703630436193927592692344820812834297364478686862064169042458555136532055050508189891866846863799917647547291371573500701015197559097453040033031520683518216494195636696077748110598284901343611469214274121810495077979275556645164983850062051066517084647369464036640569339464837172183352956873912042640003611618789278195710052094562761306703551840330110645101995435167626688669627763820604342480357906415354212732946756073006907088870496125050068156659252761297664065498347492661798824062312210409274584565587264846417650160123175874034726261957289081466197651553830744424709698634753627770356227126145052549125229448040149114795681359875968512808575244271871455454084894986155020794806980939215658055319165641681105966454159951476908583129721503298816585142073061480888021769818338417129396878371459575846052583142928447249703698548125295775920936450022651427249949580708203966082847550921891152133321048011973883636577825533325988852156325439335021315312134081390451021255363707903495916963125924201167877190108935255914539488216897117943269373608639074472792751116715127106396425081353553137213552890539802602978645319795100976432939091924660228878912900654210118287298298707382159717184569540515403029173307292454391789568674219640761451173600617752186991913366837033887201582071625868247133104513315097274713442728340606642890406496636104443217752811227470029162858093727701049646499540220983981932786613204254226464243689610107429923197638681545837561773535568984536053627234424277105760924864023781629665526314910906960488073475217005121136311870439925762508666032566213750416695719919674223210606724721373471234021613540712188239909701971943944347480314217903886317767779921539892177334344368907550318800833546852344370327089284147501640589448482001254237386680074457341910933774891959681016516069106149905572425810895586938833067490204900368624166301968553005687040285095450484840073528643826570403767157286512380255109954518857013476588189300004138849715883139866071547574816476727635116435462804401112711392529180570794193422686818353212799068972247697191474268157912195973794192807298886952361100880264258801320928040011928153970801130741339550003299015924978259936974358726286143980520112454369271114083747919007803406596321353417004068869443405472140675963640997405009225803505672726465095506267339268892424364561897661906898424186770491035344080399248327097911712881140170384182058601614758284200750183500329358499691864066590539660709069537381601887679046657759654588001937117771344698326428792622894338016112445533539447087462049763409147542099248815521395929388007711172017894897793706604273480985161028815458787911160979113422433557549170905442026397275695283207305331845419990749347810524006194197200591652147867193696254337864981603833146354201700628817947177518115217674352016511172347727727075220056177748218928597158346744541337107358427757919660562583883823262178961691787226118865632764934288772405859754877759869235530653929937901193611669007472354746360764601872442031379944139824366828698790212922996174192728625891720057612509349100482545964152046477925114446500732164109099345259799455690095576788686397487061948854749024863607921857834205793797188834779656273479112388585706424836379072355410286787018527401653934219888361061949671961055068686961468019035629749424086587195041004404915266476272761070511568387063401264136517237211409916458796347624949215904533937210937520465798300175408017538862312719042361037129338896586028150046596078872444365564480545689033575955702988396719744528212984142578483954005084264327730840985420021409069485412320805268520094146798876110414583170390473982488899228091818213934288295679717369943152460447027290669964066815.0 + + diff --git a/lib/yyjson-0.12.0/test/data/num/real_5.txt b/lib/yyjson-0.12.0/test/data/num/real_5.txt new file mode 100644 index 00000000000..8f9a4d2a4e5 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/real_5.txt @@ -0,0 +1,217 @@ +# ============================================================================== +# From https://github.com/google/double-conversion/tree/master/test + +0e1 +0e-2 +0e-999 +0e+999 + +1e0 +1e1 +1e2 +1e20 +1e22 +1e23 +1e35 +1e36 +1e37 +1e-1 +1e-2 +1e-5 +1e-20 +1e-22 +1e-23 +1e-25 +1e-39 + +2e0 +2e1 +2e2 +2e20 +2e22 +2e23 +2e35 +2e36 +2e37 +2e-1 +2e-2 +2e-5 +2e-20 +2e-22 +2e-23 +2e-25 +2e-39 + +9e0 +9e1 +9e2 +9e20 +9e22 +9e23 +9e35 +9e36 +9e37 +9e-1 +9e-2 +9e-5 +9e-20 +9e-22 +9e-23 +9e-25 +9e-39 + +12345e0 +12345e1 +12345e2 +12345e20 +12345e22 +12345e23 +12345e30 +12345e31 +12345e32 +12345e35 +12345e36 +12345e37 +12345e-1 +12345e-2 +12345e-5 +12345e-20 +12345e-22 +12345e-23 +12345e-25 +12345e-39 + +12345678901234e0 +12345678901234e1 +12345678901234e2 +12345678901234e20 +12345678901234e22 +12345678901234e23 +12345678901234e30 +12345678901234e31 +12345678901234e32 +12345678901234e35 +12345678901234e36 +12345678901234e37 +12345678901234e-1 +12345678901234e-2 +12345678901234e-5 +12345678901234e-20 +12345678901234e-22 +12345678901234e-23 +12345678901234e-25 +12345678901234e-39 + +123456789012345e0 +123456789012345e1 +123456789012345e2 +123456789012345e20 +123456789012345e22 +123456789012345e23 +123456789012345e35 +123456789012345e36 +123456789012345e37 +123456789012345e39 +123456789012345e-1 +123456789012345e-2 +123456789012345e-5 +123456789012345e-20 +123456789012345e-22 +123456789012345e-23 +123456789012345e-25 +123456789012345e-39 + +0e12345 +0.00000000e123 +2e-324 +3e-324 +1e-325 +20000e-328 +30000e-328 +10000e-329 +90000e-329 + +1e309 +1e308 +1234e305 +1234e304 +18e307 +17e307 + +1000000e303 +100000e303 +123400000e300 +123400000e299 + +180000000e300 +170000000e300 +1000000e303 +100000e303 +123400000e300 +123400000e299 +180000000e300 +170000000e300 +17976931348623157e292 +17976931348623158e292 +17976931348623159e292 + +# Fast Path Currect +89255e-22 + +# Some random values. +358416272e-33 +104110013277974872254e-225 + +123456789e108 +123456789e109 +123456789e110 +123456789e111 +123456789e112 +123456789e113 +123456789e114 +123456789e115 + +234567890123456789012345e108 +234567890123456789012345e109 +234567890123456789012345e110 +234567890123456789012345e111 +234567890123456789012345e112 +234567890123456789012345e113 +234567890123456789012345e114 +234567890123456789012345e115 + +234567890123456789052345e108 +234567890123456789052345e109 +234567890123456789052345e110 +234567890123456789052345e111 +234567890123456789052345e112 +234567890123456789052345e113 +234567890123456789052345e114 +234567890123456789052345e115 + +5445618932859895362967233318697132813618813095743952975439298223406969961560047552942717636670910728746893019786283454139917900193169748259349067524939840552682198095012176093045431437495773903922425632551857520884625114624126588173520906670968542074438852601438992904761759703022688483745081090292688986958251711580854575674815074162979705098246243690189880319928315307816832576838178256307401454285988871020923752587330172447966674453785790265533466496640456213871241930958703059911787722565044368663670643970181259143319016472430928902201239474588139233890135329130660705762320235358869874608541509790266400643191187286648422874774910682648288516244021893172769161449825765517353755844373640588822904791244190695299838293263075467057383813882521706545084301049855505888186560731e-1035 + +# Boundary cases. Boundaries themselves should round to even. +72057594037927928e0 +72057594037927936e0 +72057594037927932e0 +7205759403792793199999e-5 +7205759403792793200001e-5 + +9223372036854774784e0 +9223372036854775808e0 +9223372036854775296e0 +922337203685477529599999e-5 +922337203685477529600001e-5 + +10141204801825834086073718800384e0 +10141204801825835211973625643008e0 +10141204801825834649023672221696e0 +1014120480182583464902367222169599999e-5 +1014120480182583464902367222169600001e-5 + +5708990770823838890407843763683279797179383808e0 +5708990770823839524233143877797980545530986496e0 +5708990770823839207320493820740630171355185152e0 +5708990770823839207320493820740630171355185151999e-3 +5708990770823839207320493820740630171355185152001e-3 diff --git a/lib/yyjson-0.12.0/test/data/num/real_6.txt b/lib/yyjson-0.12.0/test/data/num/real_6.txt new file mode 100644 index 00000000000..5392b411de2 --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/real_6.txt @@ -0,0 +1,109 @@ + +# ============================================================================== +# From https://github.com/miloyip/nativejson-benchmark + +0.0 +-0.0 +1.0 +-1.0 +1.5 +-1.5 +3.1416 +1E10 +1E+10 +1E-10 +-1E10 +-1e10 +-1E+10 +-1E-10 +1.234E+10 +1.234E-10 +1.79769e+308 +2.22507e-308 +-1.79769e+308 +-2.22507e-308 + +# minimum denormal +4.9406564584124654e-324 + +# Max subnormal double +2.2250738585072009e-308 + +# Min normal positive double +2.2250738585072014e-308 + +# Max double +1.7976931348623157e+308 + +# must underflow +1e-10000 + +# 2^64 (max of uint64_t + 1, force to use double) +18446744073709551616.0 + +# -2^63 - 1(min of int64_t + 1, force to use double) +-9223372036854775809.0 + +# https://github.com/miloyip/rapidjson/issues/120 +0.9868011474609375 + +# Fast Path Cases In Disguise +123e34 +45913141877270640000.0 + +1e-00011111111111 +-1e-00011111111111 + +1e-214748363 +1e-214748364 +1e-21474836311 + +# Max double in another form +0.017976931348623157e+310 + +# http://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/ +2.2250738585072012e-308 +2.22507385850720113605740979670913197593481954635164564e-308 +2.22507385850720113605740979670913197593481954635164565e-308 + +# round to even +0.999999999999999944488848768742172978818416595458984375 + +# previous double +0.999999999999999944488848768742172978818416595458984374 + +# next double +0.999999999999999944488848768742172978818416595458984376 + +# round to even +1.00000000000000011102230246251565404236316680908203125 + +# previous double +1.00000000000000011102230246251565404236316680908203124 + +# next double +1.00000000000000011102230246251565404236316680908203126 + +# '1' followed by 308 '0' +100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0 + +# Cover trimming +2.225073858507201136057409796709131975934819546351645648023426109724822222021076945516529523908135087914149158913039621106870086438694594645527657207407820621743379988141063267329253552286881372149012981122451451889849057222307285255133155755015914397476397983411801999323962548289017107081850690630666655994938275772572015763062690663332647565300009245888316433037779791869612049497390377829704905051080609940730262937128958950003583799967207254304360284078895771796150945516748243471030702609144621572289880258182545180325707018860872113128079512233426288368622321503775666622503982534335974568884423900265498198385487948292206894721689831099698365846814022854243330660339850886445804001034933970427567186443383770486037861622771738545623065874679014086723327636718751234567890123456789012345678901e-308 + +# https://github.com/Tencent/rapidjson/issues/340 +7.450580596923828e-9 +3.725290298461914e-9 +1.862645149230957e-9 +9.094947017729282e-13 +4.547473508864641e-13 +4.440892098500626e-16 +2.220446049250313e-16 +3.469446951953614e-18 +1.734723475976807e-18 +5.421010862427522e-20 +2.710505431213761e-20 +1.3552527156068805e-20 +8.470329472543003e-22 +5.293955920339377e-23 +2.0194839173657902e-28 +1.0097419586828951e-28 diff --git a/lib/yyjson-0.12.0/test/data/num/real_7.txt b/lib/yyjson-0.12.0/test/data/num/real_7.txt new file mode 100644 index 00000000000..9bf050d749b --- /dev/null +++ b/lib/yyjson-0.12.0/test/data/num/real_7.txt @@ -0,0 +1,19532 @@ +# ============================================================================== +# From OpenJDK for Schubfach: +# https://github.com/openjdk/jdk/pull/3402 + +9.373140099599999e-243 +4.6865700497999995e-243 +2.3432850248999997e-243 +1.7330796735498307e128 +9.125737838703173e192 +5.3e-169 +5.03279e-234 +3.39602001553e-313 +6.3679310595426993e88 +1.2735862119085399e89 +6.204788547e-266 +1.485851e-213 +2.21429162884833e-221 +1.944493549e84 +8.20858081e-143 +4.104290405e-143 +2.99623e51 +9.9999999999999993e145 +1.0000000000000002e146 +1.4074042452299553e160 +2.8148084904599107e160 +5.6296169809198214e160 +1.1259233961839643e161 +9.9037355729328441e173 +1.9807471145865688e174 +1.4679715900000002e253 +1.3454023999999999e-138 +6.7270119999999993e-139 +3.3635059999999996e-139 +1.6817529999999998e-139 +8.4087649999999991e-140 +5.1166876662703116e294 +1.0233375332540623e295 +9.9282069999999989e-119 +4.1555397350000005e180 +8.3110794700000009e180 +1.6622158940000002e181 +3.3244317880000004e181 +2.0379005833237e236 +7.0176353e-46 +3.50881765e-46 +1.754408825e-46 +1.3900000000000002e-17 +6.3278087730388007e-176 +3.1639043865194004e-176 +1.5819521932597002e-176 +5.5903523658999994e-104 +8.1625337000000009e90 +3.6520000000000004e-304 +1.8260000000000002e-304 +9.130000000000001e-305 +5.44204554e-312 +6.5726086741477e-142 +1.28379673e-144 +7.0128999999999992e100 +1.417852531e-73 +5.0000000000000001e291 +1e292 +2.1941333723509998e-47 +2.0436469999999998e-56 +2.5630000000000003e148 +1.8750134036096098e50 +2.4390660705835997e-209 +1.2195330352917999e-209 +6.0976651764589993e-210 +9.31627064449e282 +6.5060671e32 +2.5939938490969e-172 +6.8591497501440008e-49 +3.4295748750720004e-49 +1.7147874375360002e-49 +8.5739371876800009e-50 +4.2869685938400005e-50 +2.1434842969200002e-50 +1.0717421484600001e-50 +5.3587107423000006e-51 +2.6793553711500003e-51 +1.3396776855750001e-51 +2.0489000000000002e295 +2.031326887255827e177 +1.09766259694681e-47 +1.2199999999999999e-209 +6.0999999999999993e-210 +2.2027e158 +1.4877906773604002e-67 +7.4389533868020008e-68 +3.7194766934010004e-68 +1.8597383467005002e-68 +2.0291276074699996e-320 +1.5109e-182 +1e-205 +5e-206 +2.5e-206 +1.2567319416742001e-293 +6.2836597083710007e-294 +7.3e-12 +1.6000298000000002e-204 +8.0001490000000009e-205 +6.0447504497800007e-182 +3.0223752248900003e-182 +1.9303964230430002e112 +3.8607928460860004e112 +3.3199761964788993e-24 +7e-105 +2.92657e-303 +1.9100188999999998e286 +6.54839e-55 +3.274195e-55 +1.6370975e-55 +1.20027e198 +7.1e-74 +1.8001723e-43 +2.2527235235604599e-190 +2.2000000000000003e-193 +1.1000000000000001e-193 +2.439967879e-63 +1.8999999999999998e-270 +4.0938337000000005e-56 +3.796246666651e-124 +1.8981233333255e-124 +1.6271639669264887e178 +4.358340523383389e-165 +8.4303282657999991e-140 +4.2151641328999995e-140 +1.2629999999999999e-234 +3.80559863e227 +1.959038741703e143 +1e-59 +5.1200169999999994e-57 +1.8074511805548081e162 +6.512860781949609e178 +5.7723811999999994e-188 +2.8861905999999997e-188 +1.4430952999999998e-188 +8.25725e208 +1.65145e209 +3.3029e209 +1.4526542999999998e222 +2.9053085999999997e222 +5.2741096487e-141 +2.91509525261639e-216 +1.9669999999999998e-295 +6.3294955980559293e262 +1.69367e66 +5.20754083898299e-318 +2.603770419491495e-318 +3.960909033597749e115 +7.7700000000000009e171 +9.9999999999999996e86 +3.152286323948611e203 +2.3793922129999997e-271 +1.365787432580007e-312 +1.61475171421881e206 +1.007046393e-146 +5.035231965e-147 +2.5176159825e-147 +5.291730306375e210 +1.058346061275e211 +2.11669212255e211 +4.2333842451e211 +1.9841e-31 +4.020144700758463e146 +4.7309e-38 +1.40716349e247 +3.575320071397493e-15 +2.9350543799999997e-303 +1.4675271899999998e-303 +2.77843619584409e70 +9.9999999999999997e232 +1.5062434702699998e51 +4.89873e-209 +1.733e-282 +8.665e-283 +2.19016877253791e186 +9.0192941e102 +1.5899999999999998e-176 +1.750128398473e-310 +9.2274407206499883e251 +1.091741e-19 +7.4785626205189e-214 +3.9e-121 +5.602391607e-309 +8.0659300000000009e-146 +1.79906247333e-102 +9.997649e-265 +3.5946496280751405e44 +1.4379000000000002e45 +2.8758000000000003e45 +3.507108151269e187 +1.32637239359e64 +1e-264 +5.0000000000000001e-265 +8.544543779e-168 +1.9661771361079898e143 +8.16735669145985e177 +1.63347133829197e178 +5.57e-76 +6.9999999999999999e-164 +1.2652530000000001e58 +2.5305060000000003e58 +2.9177620700000003e76 +5.8355241400000006e76 +5.6932999999999994e219 +1.7849041969710002e-220 +3.0900000000000003e54 +6.1800000000000007e54 +3.087093950743e200 +1.60462220675e88 +3.2092444135e88 +6.418488827e88 +1.66470026299e268 +3.59e-307 +6.4272699999999993e-58 +9.9999999999999999e-119 +1.8209244376300002e-276 +3.0000000000000001e284 +5.294727579e-141 +4.1011940127370005e-261 +2.25e43 +4.5e43 +9e43 +2.13429e124 +3.4333286899999996e38 +6.4020440000000007e-117 +3.2010220000000004e-117 +1.6005110000000002e-117 +1.5116734100000002e-95 +3.07614532882999e141 +2.240539e-16 +7.19385521e190 +2.188238669e-19 +3.489839e-223 +6.8907877099999992e243 +5.08453147186225e263 +1.01690629437245e264 +2.0338125887449e264 +5.32629997471e-228 +1.5689900000000002e85 +3.1379800000000003e85 +2.5569999999999997e176 +9.9999999999999996e27 +2.2541749254804198e-103 +1.1270874627402099e-103 +3.6812263768319224e-304 +1.8406131884159612e-304 +6.9100000000000008e-49 +1.3894476750151998e-135 +6.9472383750759992e-136 +3.4736191875379996e-136 +1.7368095937689998e-136 +8.684047968844999e-137 +4.314459e96 +1.6999999999999998e212 +3.3999999999999996e212 +2.5543193889992446e-321 +6.3263132700000007e-294 +6.113e-123 +9.6455426599999989e-153 +4.8227713299999995e-153 +1.50404293333e138 +3.4940349519299996e-223 +1.1387999999999999e-131 +5.6939999999999994e-132 +2.8469999999999997e-132 +4.8339381822065905e198 +1.3708609e-166 +6.70066092565094e-316 +5.3792051e-110 +1.3275071208999999e-287 +1.4377937427999998e-160 +7.1889687139999992e-161 +3.5944843569999996e-161 +1.781797e-279 +9.9999999999999985e173 +6.8057247e212 +2.0946999999860498e-317 +1.80527173e-102 +1.57101986193e85 +6.9999999999999993e274 +1.3999999999999999e275 +5.5393735305453312e-194 +2.7696867652726656e-194 +4.8987512999999995e-268 +2.3999999999999997e-66 +1.1999999999999999e-66 +5.9999999999999993e-67 +2.9999999999999997e-67 +3.01e138 +4.7594120840250895e-184 +3.9629999999999996e202 +1.3000000000000001e61 +1.9354300000000002e199 +3.8708600000000004e199 +9.9525174575e260 +1.9905034915e261 +3.981006983e261 +2.47443e-296 +1.237215e-296 +3.551344691e305 +9.25997960895853e-246 +9.72217e257 +1.8563291811e106 +1.6451470000000002e-260 +8.4239e-258 +8.4428979896666491e93 +1.6885795979333298e94 +3.3771591958666596e94 +6.7543183917333193e94 +1.3508636783466639e95 +2.684169193389e-315 +2.8703230472782862e278 +1.7e-139 +5.4820988345636235e126 +1.0964197669127247e127 +1.7637819587000002e41 +7.6164055633e-37 +1.75279e274 +9.8139e-268 +3.35747191e-316 +1.678735955e-316 +8.393679775e-317 +9.399999999999999e-215 +4.6999999999999995e-215 +4.6249999999999995e46 +9.249999999999999e46 +1.8499999999999998e47 +3.6999999999999996e47 +7.3999999999999992e47 +1.4799999999999998e48 +2.9599999999999997e48 +5.9199999999999994e48 +1.1839999999999999e49 +2.3679999999999997e49 +4.7359999999999995e49 +1.406947e-163 +9.617142157e-66 +9.9999999999999995e-178 +3.0000000000000003e225 +9.008044810736367e-162 +4.5040224053681835e-162 +2.2520112026840918e-162 +1.1260056013420459e-162 +5.6300280067102294e-163 +2.8150140033551147e-163 +1.769e-251 +8.845e-252 +1.2763666163199391e263 +2.5527332326398783e263 +2.4212959001e-299 +6.90439617897e-108 +1.07995371703e-255 +1.3e-290 +6.1e-36 +3.21566805007e-117 +2.3e279 +3.0999999999999997e-297 +1.3859113571e98 +6.99e215 +4.6400954058188731e-246 +2.3200477029094366e-246 +1.0403867e-289 +1.399523547059e70 +2.99e166 +2.0000000000000002e-31 +1.0000000000000001e-31 +1.2610180530131001e86 +2.5220361060262003e86 +6.0000000000000006e-272 +3.0000000000000003e-272 +2.3799000000000003e254 +1.064809e-140 +7.0087701541e-77 +1.0534953763e34 +2.4716095000000003e288 +4.9432190000000005e288 +9.8864380000000011e288 +1.9772876000000002e289 +1.3897695528480002e-194 +6.9488477642400008e-195 +3.4744238821200004e-195 +1.7372119410600002e-195 +8.686059705300001e-196 +4.3430298526500005e-196 +3.09623e-05 +1.312726255751e-172 +6.563631278755e-173 +1.166057e-187 +1.3753e-20 +6.7294859999999975e-316 +3.8632025926161397e286 +7.7264051852322794e286 +4.8704000000000005e-240 +2.4352000000000003e-240 +1.2176000000000001e-240 +6.0880000000000007e-241 +3.0440000000000003e-241 +1.5220000000000002e-241 +7.6100000000000008e-242 +3.8050000000000004e-242 +1.9025000000000002e-242 +4.9939848268034745e260 +9.9879696536069489e260 +1.9975939307213898e261 +3.9951878614427796e261 +7.9903757228855591e261 +1.5980751445771118e262 +3.1961502891542237e262 +6.3923005783084473e262 +1.2784601156616895e263 +3.3654060608e-316 +1.5176341930000002e197 +4.3225734877840005e-109 +2.1612867438920002e-109 +1.0806433719460001e-109 +5.4032168597300006e-110 +2.7016084298650003e-110 +1e115 +5.8024491648852071e-101 +6.2101672699109993e-297 +9.7776366713438089e-35 +3.4960596825769723e-282 +7.4529999999999992e106 +1.4905999999999998e107 +1.1409846543000001e307 +2.2819693086000002e307 +7.4700000000000008e-186 +1.2016361876144962e-271 +4.8642999999999995e52 +4.9819188486999995e55 +3.0114783386974793e79 +4.1792700000000005e62 +8.98429e-75 +5.7873375837569994e-306 +8.1366158110078345e-146 +4.0683079055039173e-146 +1.1100000000000001e245 +1.0700983899999999e65 +3.4988724210000004e-282 +1.950754966876963e-239 +9.7537748343848149e-240 +4.8768874171924075e-240 +2.4384437085962037e-240 +1.2192218542981019e-240 +6.0961092714905093e-241 +3.0480546357452547e-241 +1.5240273178726273e-241 +9.9999999999999993e260 +3.1962399999999997e-235 +1.5981199999999998e-235 +7.9905999999999991e-236 +3.9952999999999996e-236 +1.9976499999999998e-236 +6.2838555482700007e172 +9.526533760000001e-243 +4.7632668800000005e-243 +2.3816334400000003e-243 +1.1908167200000001e-243 +5.9540836000000007e-244 +2.9770418000000003e-244 +1.4885209000000002e-244 +7.4426045000000008e-245 +3.7213022500000004e-245 +1.8606511250000002e-245 +1.8851366941187e-68 +1.3e148 +3.03e-08 +1.4795204228973e-11 +4.2919276785069995e-227 +8.1077e-205 +3.527817e-18 +1.80250239e277 +2.575875413e176 +8.0151212043512909e115 +2.51e-178 +9.083000000000001e-103 +4.317254e-314 +8.73e155 +8.9786174132588305e217 +1.7957234826517661e218 +3.5914469653035322e218 +7.1828939306070644e218 +1e-236 +2.5849891e-262 +1.5e166 +3e166 +8.263728004799e-115 +3.3925081153809996e240 +6.7850162307619993e240 +1.3570032461523999e241 +5.9035643935428158e-216 +2.9517821967714079e-216 +1.4758910983857039e-216 +7.6313184121e-242 +9.9065740011782069e-209 +4.9532870005891035e-209 +2.4766435002945517e-209 +1.2383217501472759e-209 +6.1916087507363793e-210 +3.0958043753681897e-210 +6.44429536639e175 +3.8701e-211 +1.93505e-211 +9.67525e-212 +4.837625e-212 +2.1509258882299998e270 +3.623781514577e-307 +1.8118907572885e-307 +9.0594537864425e-308 +3.1e287 +1.1107869999999999e-252 +2.2097600000000002e-165 +1.1048800000000001e-165 +5.5244000000000006e-166 +2.7622000000000003e-166 +1.3811000000000002e-166 +6.9055000000000008e-167 +3.4527500000000004e-167 +2.3600415906999997e-69 +8.4673462656324329e-112 +4.2336731328162165e-112 +2.1168365664081082e-112 +1.0584182832040541e-112 +5.2920914160202706e-113 +8.559e-286 +4.2795e-286 +2.13975e-286 +2.021e-264 +1.0105e-264 +5.0525e-265 +4.6657623000000005e251 +9.331524600000001e251 +4.1000000000000004e-233 +2.0546158222999998e118 +6.5319036457646181e-291 +1.88074111e-127 +9.9999999999999999e-91 +5e-91 +1.561e54 +6.32638501e231 +1.0099999999999999e-118 +1.5629940442810002e-92 +5.66796609713e-309 +3.35699e-83 +4.0324380212685265e174 +8.0648760425370529e174 +2.4796138999999997e-209 +9.8142236562014118e-35 +3.311e-114 +3.28986941e119 +2.59543e89 +3.3188525337773365e237 +1.43192375935e306 +2.8638475187e306 +9.9999999999999987e55 +1.9999999999999997e56 +1.0831468900000001e183 +2.8761947930000003e-278 +6.2919027455973e-179 +7.4142730900000008e134 +4.7453000000000005e136 +9.490600000000001e136 +1.8981200000000002e137 +3.7962400000000004e137 +5.8429999999999994e250 +1.1685999999999999e251 +2.3371999999999997e251 +4.6743999999999995e251 +4.57e102 +1.9993380713369998e202 +1.093381e301 +1.6520072999993761e-319 +2.5158816712990913e-32 +5.7512683418799994e-132 +2.8756341709399997e-132 +1.4378170854699998e-132 +7.1890854273499992e-133 +4.1e59 +4.2166999999999995e121 +3.8185910781e50 +4.9999999999999995e201 +9.999999999999999e201 +1.9999999999999998e202 +3.9999999999999996e202 +2.867423e306 +2.9999999999999996e-39 +1.2182290000000001e-153 +4.779392141360701e-97 +2.729e-51 +1.3645e-51 +1.0999999999999999e214 +2.1999999999999998e214 +4.3999999999999995e214 +1.979511874601e-267 +3.2191900000000003e116 +8.4205995098389439e-230 +3.582159169e-192 +2.3151847404557e-218 +2.5184133832390003e-32 +7.33e-43 +3.2170852825717297e262 +6.4341705651434593e262 +1.0633e-258 +9.9999999999999984e-296 +2.0570000000000002e-233 +1.2248000000000001e-94 +6.1240000000000007e-95 +3.0620000000000003e-95 +1.5310000000000002e-95 +7.6550000000000008e-96 +4.490177907e158 +3.55352622e-310 +6.89e66 +4.9063645299551e-240 +3.58559055747e-192 +6.08161e284 +6.3506116798201663e231 +2.4465178239099997e198 +4.8930356478199995e198 +2.4811849720428701e229 +1.97e-34 +9.9999999999999998e-150 +8.3533843e-202 +4.2641219644168705e239 +8.5282439288337409e239 +6.948151270750723e-313 +3.4740756353753615e-313 +4.1999999999999995e-289 +2.0999999999999998e-289 +8.6214868629378291e65 +1.8063327478090002e218 +3.6126654956180004e218 +7.2253309912360008e218 +1.6641191e-260 +3.1000000000000003e-269 +3.3725403329343373e-83 +1.1005083435019999e-137 +5.5025417175099994e-138 +1.862429e-12 +3.6931589263999996e-130 +1.8465794631999998e-130 +9.232897315999999e-131 +4.6164486579999995e-131 +2.3082243289999997e-131 +1.1541121644999999e-131 +5.7705608224999994e-132 +0.001 +8.2546238609909991e264 +1.6509247721981998e265 +3.47679769514e-313 +2.8299999999999997e-76 +7.0298299999999992e156 +2.11801e-25 +4.272888923503867e93 +1.0046024498934286e56 +2.0092048997868572e56 +5.111116973e291 +9.179e102 +3.6363529999999996e131 +8.973899590000001e-47 +2.3476421369999997e251 +7.2658999999999992e277 +1.4531799999999998e278 +1.8400590000000002e-189 +2.7902929999999997e39 +2.4049003101035473e254 +4.8098006202070945e254 +9.619601240414189e254 +1.9239202480828378e255 +1e143 +4.122827e-87 +3.049e284 +3.2983919005930004e-86 +3e-98 +4.953e170 +1.460225445397e-306 +2.7317149262199997e-256 +1.3658574631099999e-256 +4.8166999081675086e108 +9.6333998163350172e108 +1.6109347826410871e-89 +1.1000000000000001e155 +5.0399353192000005e-237 +2.5199676596000003e-237 +1.2599838298000001e-237 +6.2999191490000007e-238 +3.1499595745000003e-238 +4.6098836344710005e307 +9.219767268942001e307 +7.3999999999999992e-130 +3.6999999999999996e-130 +1.4691214590000002e250 +4.824084300033e-38 +3.3689324593e-288 +1.0000000000000001e289 +2.9769999999999997e-216 +3.5723899999999996e187 +7.1447799999999992e187 +1.422831e129 +3e48 +5.2214999999999994e235 +1.0442999999999999e236 +2.0885999999999998e236 +4.1771999999999995e236 +2.0418630698271e87 +2.2547889934479032e158 +4.5095779868958065e158 +1.46802263e-247 +3.3345910229570388e-114 +1.6672955114785194e-114 +8.3364775573925971e-115 +4.1682387786962985e-115 +2.0841193893481493e-115 +4.4179999999999995e-283 +2.2089999999999998e-283 +1.1e301 +5.5e300 +1.1497849761500291e102 +7.9014080059426685e112 +1.5802816011885337e113 +2.8283675636547163e-281 +1.4141837818273582e-281 +7.0709189091367908e-282 +1.4862129999999998e76 +1.3300000153223436e-318 +8.4863171000000009e121 +1.6972634200000002e122 +3.3945268400000004e122 +6.7890536800000007e122 +1.3578107360000001e123 +2.7156214720000003e123 +1.5824799999999998e-33 +7.9123999999999991e-34 +3.9561999999999996e-34 +1.9780999999999998e-34 +9.8904999999999989e-35 +6.9e-139 +3.45e-139 +6.116391e138 +4.9459467890458005e-35 +2.4729733945229003e-35 +2.1798166675057673e-314 +6.4722599605203297e-322 +2.784636816273e-20 +4.257918999999947e-317 +8.0000000000000008e-208 +4.0000000000000004e-208 +2.0000000000000002e-208 +1.0000000000000001e-208 +5.0000000000000005e-209 +5.85225147e-306 +3.6223895495099996e-279 +3.0000000000000003e194 +6.0000000000000006e194 +1.2000000000000001e195 +2.4000000000000003e195 +4.7746562593048735e282 +8.703372741147379e-22 +1.6299999999999998e-117 +9e-47 +4.5e-47 +4.5543699999999995e276 +7.3810132237077725e-189 +6.81551631693309e-316 +3.407758158466545e-316 +8.17e233 +6.48721e-30 +1.6271639669264887e175 +3.0177843608930003e107 +1.7796979903653e274 +2.49652397659e83 +1.0908409999999999e-314 +5.4542049999999995e-315 +2.947528129e104 +1.458453e278 +1e-62 +3.7740115582437004e106 +7e38 +4.5042869999999995e-47 +2.8367156229113897e216 +2.2351242e-311 +2.9999999999999996e-303 +1.7e122 +8.9999999999999999e99 +4.00110962218013e-62 +6.8384463429e35 +1.207e254 +1.02349536733e87 +1.11579217896181e-19 +6.664994968963e-319 +4.3355598310000005e65 +6.44602438139509e-294 +4.9723499999999995e170 +9.9446999999999989e170 +1.9889399999999998e171 +3.9778799999999996e171 +7.9557599999999991e171 +6.48301813e262 +4.4359030000000005e214 +8.871806000000001e214 +1.2179000000000001e-271 +3.1281439017287e-64 +9.9999999999999984e83 +3e-157 +3.4219946999999996e35 +6.8439893999999993e35 +5.9629999999999994e76 +2.5946032194748903e263 +4.549591e71 +1.3299999999999999e120 +4.8436013e-38 +1.357547677920627e-82 +2.80736206258207e-107 +1.0436507099999999e177 +8.6600000000000009e-286 +4.3300000000000005e-286 +7.903e-93 +3.9515e-93 +4.5072977716846995e99 +9.014595543369399e99 +8.946999999999999e-165 +7.314453293391e131 +2.6408946371470003e-144 +9.9999999999999988e229 +1.9999999999999998e230 +3.9999999999999995e230 +7.1442382293046118e128 +1.4288476458609224e129 +2.8576952917218447e129 +2.20149202773e96 +3.1183000000000003e-123 +3e-11 +3.31e206 +1.1e242 +3.1574557e200 +5.04067e-150 +1.721e94 +7.019e38 +2.3000000000000002e43 +6.6517609002559363e265 +1.3303521800511873e266 +2.6607043601023745e266 +1.5421420717991698e197 +3.0842841435983397e197 +6.1685682871966793e197 +1.2337136574393359e198 +8.5699999999999991e34 +1.0748380486757e239 +7.1659153503365185e-164 +6.31e-297 +9.3428531e-72 +5.953697e-129 +3.5951604981721831e41 +7.1903209963443662e41 +1.4380641992688732e42 +2.8761283985377465e42 +5.752256797075493e42 +9.9999999999999998e-268 +4.9999999999999999e-268 +3e135 +9.8839e52 +2.8031033298704268e-312 +1.56121e-123 +2.91776207e73 +4.7237830723000005e-246 +8.23e-205 +4.115e-205 +9.09e-134 +1.7830944073599998e-77 +8.915472036799999e-78 +4.4577360183999995e-78 +2.2288680091999998e-78 +1.1144340045999999e-78 +5.5721700229999994e-79 +2.7860850114999997e-79 +1.3930425057499999e-79 +1.02897574300651e-205 +1.7263776303e-198 +1.1474264756673e-162 +2.50183e-268 +4.3129529027318865e-53 +2.1564764513659432e-53 +9.9999999999999998e-122 +4.59668214051e-308 +2.298341070255e-308 +1.9702000000000002e-06 +9.8510000000000011e-07 +5.3e-290 +7.0000000000000007e-21 +5.3522872512451e-318 +7.81429e-124 +6.97129456619e-80 +6.0668669999999993e107 +1.260054539e142 +3.907969e-124 +1.9540050999999998e-124 +1.9540257e-124 +5.0024639999999995e-122 +2.5012319999999997e-122 +1.2506159999999999e-122 +6.2530799999999993e-123 +3.1265399999999997e-123 +1.5632699999999998e-123 +7.8163499999999992e-124 +5.2272145330003884e-321 +1.140184355477e217 +7.6346219422293302e-127 +5.0639e201 +1.30900037556915e176 +2.6180007511383e176 +1.65051857701e293 +1.07e-171 +1.78966427311e274 +3.2171329e-61 +4.7890286300000005e77 +9.578057260000001e77 +9.9999999999999988e24 +1.9999999999999998e25 +4.55714837714719e-280 +3.142451e-64 +1.0187287305899999e115 +2.0374574611799998e115 +8.999999999999999e186 +1.197600214879e77 +1.51670488753845e253 +3.0334097750769e253 +5.8483921078398289e73 +1.8836552907056862e-158 +9.418276453528431e-159 +4.8483e-243 +3.32830847e-86 +5.1902618300000006e204 +1.0380523660000001e205 +4.396470821e183 +2.0515442226580726e-118 +1.0257721113290363e-118 +5.1288605566451816e-119 +6.6578188148000007e-86 +3.3289094074000004e-86 +1.6644547037000002e-86 +8.0579600000000009e-208 +4.0289800000000004e-208 +2.0144900000000002e-208 +1.58600925207e54 +9.9999999999999995e170 +1.8015095475815002e187 +3.6030190951630004e187 +7.2060381903260008e187 +1.4412076380652002e188 +4.0651234808300004e-90 +1.0519319999999999e-261 +5.2596599999999994e-262 +2.6298299999999997e-262 +1.3149149999999999e-262 +1.4165873e-48 +7.0908849464248872e-195 +3.5454424732124436e-195 +1.7727212366062218e-195 +8.863606183031109e-196 +4.4318030915155545e-196 +2.2159015457577772e-196 +2.392223e-274 +1.2301317e-212 +6.569e-117 +1.8509999999999998e-248 +1.0465937000000001e-174 +1.9900000000000002e258 +3.9800000000000004e258 +7.9600000000000009e258 +1.5920000000000002e259 +3.8820623722600004e-242 +1.9410311861300002e-242 +8.4282118249013509e236 +1.6856423649802702e237 +3.3712847299605404e237 +6.7425694599210807e237 +1.3485138919842161e238 +9.0000000000000219e-311 +1.60574678547e-266 +8.02873392735e-267 +1.19e-187 +7.7764450999999992e255 +1.0826036096982999e-199 +6.67284113e-232 +3.1110911461640297e256 +2.25184073388e-311 +7.8986483022547442e140 +1.5797296604509488e141 +3.1594593209018977e141 +6.3189186418037953e141 +7e-226 +3.5e-226 +6.7709999999999993e-201 +8.71360989e-286 +6.3e-64 +3.15e-64 +5.9059999999999994e-306 +2.9529999999999997e-306 +4.8282439999999995e-10 +2.4141219999999997e-10 +1.2070609999999999e-10 +2.0516909066819585e174 +2.55671e-32 +2.5217e-63 +5.52709111973e-256 +1e-180 +3.443959e181 +3.0258600000000003e-303 +1.5129300000000002e-303 +8.1931520000000009e-177 +4.0965760000000004e-177 +2.0482880000000002e-177 +1.0241440000000001e-177 +5.1207200000000005e-178 +2.5603600000000003e-178 +1.2801800000000001e-178 +6.4009000000000007e-179 +3.2004500000000003e-179 +1.6002250000000002e-179 +8.0011250000000009e-180 +4.02227e-267 +1.0999999999999999e-168 +1.263e-209 +2.0493775156076468e-177 +6.5942286481585659e-263 +3.2971143240792829e-263 +8.71897929e-140 +3.58679006061e-77 +2.4254678999999997e195 +1.3507474319999999e-259 +6.7537371599999993e-260 +3.3768685799999996e-260 +1.6884342899999998e-260 +8.4421714499999991e-261 +9.9999999999999993e-35 +2.0000000000000003e-34 +1.0000000000000001e-34 +6.6534244490000007e-145 +1.128394178419212e-311 +5.1652431370830994e86 +6.0000000000000006e-275 +3.0000000000000003e-275 +1.554523e51 +1.23427679e-212 +4.7749630653299995e-187 +5.3705988951859e-26 +1.1990777836479e-128 +1.7773239233770998e-49 +2.3e-221 +1.5890845039400002e-297 +7.9454225197000008e-298 +5.8254249e-45 +4.6559000000000005e102 +2.5760991883e-119 +9.9999999999999993e111 +4.81e223 +2.7018796739e-113 +3.1624014400000003e-210 +1.5812007200000002e-210 +7.9060036000000008e-211 +3.9530018000000004e-211 +1.9765009000000002e-211 +9.8825045000000011e-212 +4.9412522500000005e-212 +1.7880099999999998e-136 +2.20402398915561e-168 +1.84510953e131 +9.8102937685183e167 +5.0500000000000005e83 +1.0100000000000001e84 +2.0200000000000002e84 +4.0400000000000004e84 +6.7488159000000007e32 +1.3497631800000001e33 +2.6995263600000003e33 +5.3529101368787694e-85 +9.27687317813859e43 +8.95231e-283 +6.9204709e-111 +4.3962699999999995e270 +2.3e-75 +1.15e-75 +6.49595783015e144 +1.29919156603e145 +7.7945180795985257e-96 +9.9999999999999984e257 +1.613682443e-266 +5.9930000000000006e163 +5.170527e232 +2.9452933147399997e-73 +1.4726466573699998e-73 +2.8794210483710997e-222 +3.630618967e-105 +5.4100830818230006e-113 +5.8150970016387091e-250 +1.8075263803277207e-164 +7.0000000000000007e-285 +4.643e43 +4.98543852457e52 +9.0000000000000009e-224 +7.3337790319999992e-133 +3.6668895159999996e-133 +1.8334447579999998e-133 +9.167223789999999e-134 +4.5836118949999995e-134 +3.2710325202973997e-89 +1.6355162601486998e-89 +6.5705814604230007e-30 +2.27e-106 +3.93e168 +1.0525894008434341e-174 +2.3000000000000002e71 +4.6000000000000005e71 +9.200000000000001e71 +1.05831083e-261 +1.898261459e-304 +5.6270000000000006e-225 +1.3812053000000002e-315 +6.127976543015576e-185 +4.1982587e264 +9.2423963360811309e130 +7.940305298290699e140 +2.0000000000000002e-239 +1.0000000000000001e-239 +1.525880198269e-244 +2.00256867e258 +7e-139 +4.4800453999999995e-137 +2.2400226999999998e-137 +3.5649516398744306e-49 +2.0331828969999998e143 +4.0663657939999996e143 +2.00279e258 +1.8371659360310002e-279 +2.3491438607714321e-131 +1.8372529999999998e-279 +1.3646167072500001e151 +2.7292334145000003e151 +5.4584668290000006e151 +1.0916933658000001e152 +2.1833867316000002e152 +4.3667734632000005e152 +8.7335469264000009e152 +1.7467093852800002e153 +1.587026405e287 +3.17405281e287 +3.0960547e-213 +2.9084993899999997e-104 +6.3343668999999993e-64 +6.1e-98 +3.05e-98 +1.525e-98 +1.9000000000000002e-304 +1.1180677382611601e155 +5.5721e-51 +3.0899999999999997e79 +7.0259500000000007e66 +1.4051900000000001e67 +2.8103800000000003e67 +5.6207600000000006e67 +1.1241520000000001e68 +2.5097200000000003e-35 +1.2548600000000001e-35 +6.2743000000000007e-36 +2.2461867176387898e214 +2.4298970000000003e-156 +1.0193739999999999e-149 +5.0968699999999995e-150 +3.161945481277e228 +4.1534892987e-59 +2.07674464935e-59 +1.038372324675e-59 +1.9678969900000002e168 +7.3706015068343e72 +3.2698868139426833e203 +6.5397736278853667e203 +3.9999999999999996e-93 +1.9999999999999998e-93 +9.999999999999999e-94 +4.9999999999999995e-94 +3.3699999999999996e-27 +1.4917525150353998e-247 +7.4587625751769992e-248 +8.67444247535909e-112 +5.3e-262 +1.8060079699999998e274 +3.6120159399999996e274 +2.1599358004795488e-171 +4.8488309268299995e282 +1.5499085657999998e-213 +7.7495428289999992e-214 +3.6877806616079173e72 +4.2800079999999995e-143 +2.1400039999999998e-143 +1.0700019999999999e-143 +5.3500099999999994e-144 +2.6750049999999997e-144 +4.2618745826000005e-202 +2.1309372913000002e-202 +9.9999999999999999e52 +3.4920597472083e-198 +1.74602987360415e-198 +5.3e-116 +4.84643039063e-215 +2.3792120709e-305 +1.18960603545e-305 +5.94803017725e-306 +8.30911e87 +2.3087304361600002e-75 +1.1543652180800001e-75 +5.7718260904000006e-76 +2.8859130452000003e-76 +1.4429565226000002e-76 +7.2147826130000008e-77 +3.6073913065000004e-77 +1.8036956532500002e-77 +6.3605247709810993e287 +7.08373e-167 +4.119e-31 +1.2637999999999999e-122 +6.3189999999999993e-123 +7.8149209999999992e50 +1.5083402401e-275 +7.240791195291e128 +4.849011171730407e-215 +1.7416117470000002e240 +3.4832234940000004e240 +4.3124999999999995e267 +8.6249999999999991e267 +1.7249999999999998e268 +3.4499999999999996e268 +6.8999999999999993e268 +1.3799999999999999e269 +2.7599999999999997e269 +5.5199999999999994e269 +1.1039999999999999e270 +2.2079999999999998e270 +4.4159999999999995e270 +8.8319999999999991e270 +1.7663999999999998e271 +3.5327999999999996e271 +1.1702012431562999e102 +5.95243e-306 +7.938569e-65 +1.18049e220 +4.9999999999999994e198 +9.9999999999999988e198 +1.9999999999999998e199 +3.9999999999999995e199 +7.9999999999999991e199 +3.4066633620899996e91 +6.8133267241799993e91 +1.3626653448359999e92 +1.2786632200000001e-296 +6.3933161000000007e-297 +3.47e181 +2.9999999999999996e-42 +8.9420017e-50 +1.36453857e-54 +2.0753111852419998e-264 +1.0376555926209999e-264 +1.9e134 +1.863540877148699e190 +3.2608617312486503e290 +6.5217234624973007e290 +1.3043446924994601e291 +1.979511874601e-270 +9.897559373005e-271 +2.9339172982911e-191 +5.37224123111663e207 +5.7311660000000006e-194 +2.8655830000000003e-194 +4.6154574350000005e217 +9.230914870000001e217 +1.8461829740000002e218 +3.6923659480000004e218 +7.3847318960000008e218 +1.4769463792000002e219 +3.1477404400000003e-36 +1.5738702200000002e-36 +7.8693511000000008e-37 +3.0974939749999997e225 +6.1949879499999993e225 +1.2389975899999999e226 +2.4779951799999997e226 +4.9559903599999995e226 +9.9119807199999989e226 +1.9823961439999998e227 +3.9647922879999996e227 +1.072262269613e-143 +5.361311348065e-144 +6.7246148863675e60 +1.3449229772735e61 +2.689845954547e61 +1.0064200777e112 +4.10450219082353e56 +5.0161924847900005e-94 +9.9999999999999991e-299 +2.0000000000000002e-298 +1.0000000000000001e-298 +3.2632476999999997e290 +6.5264953999999993e290 +3.90648659996633e-301 +8.684626953e180 +2.9743249360000003e-14 +1.4871624680000002e-14 +7.4358123400000008e-15 +3.7179061700000004e-15 +7.1e-167 +1.3000000000000001e232 +3.6404579055960342e-310 +4.03373497271e-34 +9.9999999999999985e-153 +1.7842142800000002e-108 +8.9210714000000009e-109 +4.4605357000000005e-109 +2.2302678500000002e-109 +4.91e-243 +3.0890078431920715e166 +6.178015686384143e166 +2.8217858942177e213 +1.4230301499e-312 +7.1151507495e-313 +5.717185205636801e-253 +2.8585926028184005e-253 +2.6655768646809997e235 +3.81292764980839e-12 +1.5686250000000002e51 +3.1372500000000003e51 +6.2745000000000007e51 +1.2549000000000001e52 +2.5098000000000003e52 +5.0196000000000005e52 +1.0039200000000001e53 +2.0078400000000002e53 +4.0156800000000004e53 +8.0313600000000009e53 +1.6062720000000002e54 +3.2829999999999997e-294 +4.2903289999999995e149 +8.5806579999999991e149 +9.9999999999999995e-07 +1.0429999999999999e87 +5.6552026785e67 +1.1310405357e68 +4.9744842269999995e80 +9.9489684539999989e80 +1.7202300000000002e-142 +9.778684449700001e-156 +9.37726653e-249 +2.6886078814095997e-144 +1.3443039407047999e-144 +6.7215197035239993e-145 +3.3607598517619996e-145 +1.6803799258809998e-145 +8.4018996294049991e-146 +8.6230699999999991e208 +1.7246139999999998e209 +3.4492279999999996e209 +5.7743e-135 +2.1230000801798364e-320 +2.7953761935100003e-256 +5.09171413e229 +1.850151516669e-279 +9.9999999999999985e139 +1.0532258366608999e205 +2.1064516733217998e205 +1.8586999999999998e-220 +4.8000000000000005e-100 +2.4000000000000003e-100 +1.2000000000000001e-100 +6.0000000000000006e-101 +3.0000000000000003e-101 +2.0841600000000002e-264 +1.0420800000000001e-264 +5.2104000000000006e-265 +2.6052000000000003e-265 +1.3026000000000001e-265 +6.5130000000000007e-266 +3.2565000000000003e-266 +1.6282500000000002e-266 +9.82237199821e49 +1.0999999999999999e152 +2.1999999999999998e152 +2.8218730899999997e-138 +1.2290999999999999e-97 +5.8177026286234994e275 +1.1635405257246999e276 +2.3270810514493998e276 +4.6541621028987995e276 +9.308324205797599e276 +8.1e-180 +3.2999999999999997e-89 +1.1086383108484855e-227 +5.5431915542424276e-228 +1.1341012700000001e-78 +5.0750706109999995e170 +9.9999999999999982e285 +1e286 +1.04516571991969e87 +7.6948389999999992e-245 +5.125696329e142 +7.9139199210300008e-183 +3.2663750889999997e85 +6.5327501779999993e85 +8.6926000000000009e-25 +4.3463000000000005e-25 +6.4275999999999993e-297 +3.2137999999999997e-297 +1.6068999999999998e-297 +5.70410861e-166 +2.089e233 +3.92440137e-301 +2.4558029999999997e195 +4.9116059999999995e195 +9.099999999999999e273 +6.7e-58 +8.8018757900000009e298 +4.78650382167e-159 +3.2752004982999997e-207 +8.7476520677e-112 +5.125785583413e288 +2.3918936524506707e-13 +1.9999999999999998e-211 +9.9999999999999988e-212 +2.9999999999999997e191 +7.0000000000000001e-111 +1.50013192707e191 +3.9585933539999996e-37 +1.9792966769999998e-37 +1.6181e259 +9.12938486900141e-19 +2.5178855386540493e198 +1.5483959999999998e-185 +7.7419799999999992e-186 +3.8709899999999996e-186 +7.9900000000000008e81 +9.9999999999999992e-66 +2.0000000000000003e-65 +1.0000000000000001e-65 +3.94846553847e-242 +9.7338774138954421e-274 +2.0198771290045402e-93 +1.0099385645022701e-93 +4.2818737e-261 +4.82736534793e251 +2.7087e61 +4.589e40 +1.3e-178 +3.7231624851000004e72 +6.9363426299999993e63 +1.1499799999999999e-252 +5.7498999999999994e-253 +4.69e-308 +1.72314257e296 +6.1479433082502584e-303 +4.4596066840334415e124 +8.9192133680668829e124 +1.7838426736133766e125 +9.113e-224 +2.2249748000000002e-227 +1.1124874000000001e-227 +5.5624370000000006e-228 +2.3713217255772298e161 +4.7426434511544595e161 +9.9999999999999992e80 +1.0000000000000001e81 +2.0000000000000003e81 +2.75473166357e-200 +1.377365831785e-200 +3.477538832931e-229 +6.4495361410000007e-297 +7.0999999999999992e212 +6.97101e122 +1.0221240733758199e-267 +1.2999999999999999e-32 +6.979408081e-24 +1.3384303e-116 +1.0790000000000001e149 +3.0965975e107 +6.193195e107 +1.238639e108 +1.626918206994923e-179 +2.7445567529e-259 +1.37227837645e-259 +1.18272070949e-44 +2.05845322677563e143 +9.430999999999999e-249 +3.7e-192 +5.1130000000000005e-268 +5.0000000000000005e226 +1.0000000000000001e227 +2.0000000000000002e227 +4.0000000000000004e227 +5.3000000000000006e58 +5.4745852809999994e179 +1.0949170561999999e180 +7.323812638931821e-18 +7.4120369999999992e305 +1.4824073999999998e306 +6.2039879e-39 +5.2953144824900006e204 +2.64183e-147 +1.320915e-147 +5.7474846999999994e39 +2.1e87 +9.5924044198226829e133 +2.5149999999999997e139 +5.0299999999999995e139 +1.0059999999999999e140 +2.0119999999999998e140 +4.0239999999999996e140 +5.0737281545e257 +1.0147456309e258 +2.651576518443653e58 +7.800420390631e-127 +2.1328429e-28 +6.3500000000000007e110 +1.2700000000000001e111 +2.5400000000000003e111 +5.0800000000000005e111 +1.960941e-214 +6.05e250 +1.21e251 +1.1829276364258336e102 +3.4351e-260 +2.261e-196 +5.076111556839807e257 +1.0152223113679614e258 +2.0304446227359228e258 +4.0608892454718456e258 +1e-270 +7.3000000000000008e-77 +1.9939366036712592e168 +7.3184477300000008e274 +1.1734344017275469e-16 +5.8671720086377346e-17 +2.9335860043188673e-17 +4.9751784400000005e-184 +2.4875892200000003e-184 +1.2437946100000001e-184 +3.3e144 +5.7000000000000006e67 +4.7e-162 +6.3499000000000007e256 +1.2699800000000001e257 +3.6171843325953e-49 +2.00804581649e-65 +8.1198842529400009e-239 +4.0599421264700004e-239 +9.212665390000001e40 +9.9999999999999993e-125 +1.0000000000000001e-124 +3e278 +1.8890881238490122e-102 +9.445440619245061e-103 +4.7227203096225305e-103 +1.0497818964057609e-264 +2.7999999999999997e-23 +1.3999999999999999e-23 +6.9999999999999993e-24 +1.1858893455227543e-44 +5.9294467276137716e-45 +2.0374519999999998e-34 +1.0187259999999999e-34 +5.0936299999999995e-35 +2.5468149999999997e-35 +9.206920156999999e186 +3.8323994192404674e-71 +1.1936977514802389e-277 +1.1299999999999999e96 +2.2799127108449e214 +1.5648619508000002e-272 +7.8243097540000008e-273 +3.9121548770000004e-273 +1.1155891000000001e-81 +3.8624526316654206e193 +1.582111103e197 +2.9000000000000003e-194 +5.3849e235 +5.157833447210451e288 +1.0564029899999999e292 +7.2361192657000008e97 +1.4472238531400002e98 +4.52270821587881e96 +3.0353404327e104 +1e22 +1.010795059541677e-152 +1.5983589999999998e169 +3.1967179999999997e169 +6.4073473854612717e-123 +1.7e206 +1.0101010000000001e-06 +1.1000000000000001e34 +2.2000000000000002e34 +7.358485863259613e-164 +3.431187097238289e-319 +1.7155935486191445e-319 +1.663258519795e57 +3.32651703959e57 +9.9999999999999993e167 +3.79e-248 +1.895e-248 +1.2274094870000001e77 +2.4548189740000003e77 +4.9096379480000005e77 +5.5339999999999994e-54 +2.7669999999999997e-54 +6.11851909e-129 +3.059259545e-129 +6.4305775e228 +1.2861155e229 +2.572231e229 +6.5e54 +1.3e55 +1.50688090029e-14 +6.2394850268359993e-185 +3.1197425134179997e-185 +1.5598712567089998e-185 +1.87791e-220 +2.7900000000000003e210 +5.5800000000000006e210 +2.4699999999999997e-10 +1.0700955781678006e118 +2.1401911563356012e118 +4.2803823126712024e118 +8.5607646253424049e118 +1.712152925068481e119 +1.0128322189107599e-152 +5.0641610945537995e-153 +2.5320805472768997e-153 +1.6243608224630498e200 +3.2487216449260997e200 +6.4974432898521993e200 +1.2994886579704399e201 +2.9899843009559e-132 +4.15385302651757e-295 +2.076926513258785e-295 +1.0384632566293925e-295 +4.597598602756187e127 +1.289957e-63 +1.455673e303 +2.3669137529010002e43 +2.7204167109179997e-144 +1.3602083554589999e-144 +2.0226880844645002e140 +4.0453761689290004e140 +8.0907523378580008e140 +1.6181504675716002e141 +3.2334825961e287 +3.9383e-68 +1.96915e-68 +5.2015124999999995e201 +1.0403024999999999e202 +2.0806049999999998e202 +4.1612099999999996e202 +8.3224199999999991e202 +1.6644839999999998e203 +3.3289679999999997e203 +6.6579359999999993e203 +1.3315871999999999e204 +2.6631743999999997e204 +1.99723503e-37 +1.4659093182087612e70 +2.727813330605e207 +5.45562666121e207 +9.999999999999998e-184 +1e-183 +5e-184 +2.9999999999999997e219 +3.0392946629e-247 +1.277646424811133e111 +6.46396431549e-210 +8.89504809e298 +4.0797605838297311e-239 +2.6143078163000003e260 +1.2805464617170001e-181 +8.8389395264823882e-112 +8.7923727348629991e-25 +5.05803981227e285 +2.6432070310569003e86 +5.2864140621138006e86 +1.0572828124227601e87 +2.1145656248455202e87 +4.2291312496910404e87 +3.0211680837596207e-14 +1.13035331e37 +3.78447410807e-307 +2.2366912396618437e211 +1.29343e-209 +1.12927e183 +5.086229301083475e198 +1.017245860216695e199 +2.03449172043339e199 +3.6297127871e243 +8.5883072999999991e-28 +3.5829999999999996e66 +1.7953772614967909e-226 +3.3050000000000003e85 +6.6100000000000007e85 +1.3220000000000001e86 +2.6440000000000003e86 +5.2880000000000006e86 +9.262734999999999e40 +1.8525469999999998e41 +3.7050939999999996e41 +7.4101879999999992e41 +1.4820375999999998e42 +2.9640751999999997e42 +9.9999999999999986e-38 +1.403e-228 +6.0000000000000006e-278 +3.0000000000000003e-278 +1.7e147 +1.3586257085813243e294 +1.473131131e275 +2.1e-177 +3.0962727088000003e-11 +1.5481363544000002e-11 +7.7406817720000008e-12 +3.8703408860000004e-12 +1.9351704430000002e-12 +9.675852215000001e-13 +1.1399999999999999e301 +5.6999999999999994e300 +4.1346351621643203e84 +6.8036223391730007e147 +4.8083842222667365e220 +9.616768444533473e220 +7.602238543e-102 +3.75224535589e-279 +7.3847268701239e-18 +3.69236343506195e-18 +2.0389e53 +1.892720130031e-161 +3.3230000000000003e144 +9.9999999999999998e108 +4.9252589352901695e223 +4.4363342117e239 +2.6105314965354177e55 +1.2828837917771143e-181 +9.0000000000000009e270 +1.231781407985e223 +2.46356281597e223 +9.530451604120851e248 +1.9060903208241702e249 +3.8121806416483404e249 +7.6243612832966808e249 +1.5248722566593362e250 +3.5308100000000721e-316 +1.1e121 +8.7425243000000009e-289 +7.51926699056053e218 +6.7e-235 +9.429733286999999e-221 +1.9292444191e-71 +6.5376027000000007e-92 +7.7441786689124992e134 +1.5488357337824998e135 +3.0976714675649997e135 +6.1953429351299994e135 +1.2390685870259999e136 +2.4781371740519997e136 +4.9562743481039995e136 +9.912548696207999e136 +1.9825097392415998e137 +3.9650194784831996e137 +7.9300389569663992e137 +4.9999999999999999e254 +9.9999999999999999e254 +2.05229e-34 +5.3902561961279998e-321 +3.709725e187 +7.41945e187 +1.48389e188 +5.9490000000000006e-104 +3.87824150699e-12 +9.738509282299999e46 +2.6512999999999997e86 +5.3025999999999994e86 +3.4339e-232 +3.8668537170800004e-217 +1.9334268585400002e-217 +9.667134292700001e-218 +6.73e-30 +9.879580555e77 +1.975916111e78 +2.757e-26 +6.9000000000000007e-173 +3.431548276889e-86 +3.5328650207565996e-170 +1.7664325103782998e-170 +8.9573e-140 +4.47865e-140 +6.0572868191510006e132 +8.49703e-59 +2.025863e-65 +7.4101115960600008e-164 +3.7050557980300004e-164 +4.3000000000000004e264 +8.6000000000000009e264 +1.7200000000000002e265 +3.4400000000000004e265 +6.8800000000000007e265 +9.9999999999999997e-243 +6.0975821414461e-101 +3.75837e-133 +2.0752230822299998e-62 +6.506483e141 +6.354733337e138 +2.38051079e43 +7.97991e196 +2.3961473424399998e-190 +1.1980736712199999e-190 +5.9903683560999994e-191 +1.917044117724569e-189 +9.585220588622845e-190 +3.5672710599999996e-52 +1.7836355299999998e-52 +3.8099461575161174e44 +1.21e-218 +5.6351769621e-228 +1.846590122393039e-223 +9.232950611965195e-224 +3.9999999999999996e-96 +1.9999999999999998e-96 +9.9999999999999991e-97 +4.9999999999999995e-97 +1.251353e-243 +5.1262512999999995e-240 +9.9482967418206961e-10 +5.2556722445222995e260 +1.0511344489044599e261 +1.1670109002829999e245 +4.9211969999999995e164 +5.83574703e244 +1.3853863000000001e179 +4.6944284247349995e158 +9.388856849469999e158 +1.8777713698939998e159 +3.7555427397879996e159 +5.0783053142298965e-212 +8.0999981710577e227 +1.3945026131e-54 +3.8836100000000004e134 +1.4735569095891583e216 +3.4829747347435734e91 +6.9659494694871467e91 +1.3931898938974293e92 +2.7863797877948587e92 +1.9002800000000002e-161 +9.501400000000001e-162 +4.7507000000000005e-162 +2.3753500000000002e-162 +2.8289693917899997e-23 +2.6236999999999997e-91 +1.8583937931e-310 +1.0000000000000001e50 +2.0000000000000002e50 +4.3702900000000005e295 +8.7405800000000009e295 +1.7481160000000002e296 +4.2129999999999996e115 +4.3003170599999996e-87 +2.1501585299999998e-87 +8.93163941669e-53 +4.465819708345e-53 +4.6933930000000005e304 +9.386786000000001e304 +1.8773572000000002e305 +3.7547144000000004e305 +7.5094288000000008e305 +1.8099999999999998e125 +6.5289999999999993e-05 +1.3975592852049001e-200 +1.2058193e-131 +6.0290965e-132 +1.7153755427e-291 +4.23391126938601e174 +9.9999999999999995e195 +8.645243e-28 +7.50741e-192 +3.7064317899999996e274 +7.4128635799999992e274 +1.4825727159999998e275 +1.4523919999999998e-166 +7.2619599999999992e-167 +3.6309799999999996e-167 +1.8154899999999998e-167 +2.3444026299999998e-47 +1.1423619237002899e242 +2.2847238474005798e242 +1.0037171761699999e-242 +5.7863804412996994e-225 +2.9286289999999997e98 +2.6386622070410873e114 +5.2773244140821745e114 +1.6870000000000002e262 +3.3740000000000003e262 +6.7480000000000007e262 +1.1857000000000001e-221 +9.9999999999999986e-302 +6.2503e-303 +2.0506544898517e199 +5.4338999999999994e30 +1.2983465357e-268 +3.3999999999999996e-117 +1.6999999999999998e-117 +3.0495259587548697e-160 +2.795447638391e92 +8.20683e199 +4.7000000000000005e-193 +3.5789114019700004e94 +7.1578228039400007e94 +1.4315645607880001e95 +6.9543767775333e178 +1.5949999999999998e284 +3.1899999999999997e284 +6.3799999999999993e284 +1.2759999999999999e285 +9.9999999999999981e-156 +1e-155 +5.0000000000000001e-156 +3e247 +4.3e-292 +2.6532933734716853e173 +5.3065867469433705e173 +1.0613173493886741e174 +2.1226346987773482e174 +4.2452693975546964e174 +1.71467e147 +4.9699426069999995e77 +2.68819e-293 +2.0402107528200002e-211 +1.0201053764100001e-211 +1.1673845455319499e186 +2.3347690910638998e186 +4.6695381821277995e186 +9.339076364255599e186 +5.7180749215999994e-256 +2.8590374607999997e-256 +1.4295187303999999e-256 +7.1475936519999993e-257 +3.5737968259999996e-257 +1.7868984129999998e-257 +8.9344920649999991e-258 +4.4672460324999995e-258 +2.5839100000000003e-35 +2.5210000000000003e108 +1.1135944303500001e180 +2.2271888607000002e180 +4.4543777214000005e180 +8.9087554428000009e180 +1.5944578017822398e-213 +7.9722890089111992e-214 +3.9861445044555996e-214 +1.9930722522277998e-214 +9.965361261138999e-215 +4.9826806305694995e-215 +1.2841718812147129e198 +2.5683437624294257e198 +9.9999999999999986e-10 +1.2581e-243 +1.2143e74 +7e91 +8.8449100000000009e-84 +1.773072215643e268 +3.0728279000000003e-247 +6.78740592429e-176 +3.393702962145e-176 +1.9271e-43 +5.213e229 +8.690561761e-174 +7.4331320000000008e-223 +3.7165660000000004e-223 +1.8582830000000002e-223 +9.291415000000001e-224 +8.7000019576185104e-320 +5.934367e70 +8.67339e118 +1e137 +4.72237e158 +1.3729999999999999e294 +2.98975620558e-309 +5.092988617515e226 +1.018597723503e227 +3.0000000000000002e-104 +8.8839359596763252e121 +2.4817799999999997e-128 +1.2408899999999999e-128 +7.4768946160672969e-310 +1.1e149 +1.113098329411e-171 +7.6748700000000008e44 +1.4172488454753999e-82 +7.0862442273769993e-83 +5.2405353e288 +6.9207e-86 +2.9437766547491203e-48 +1.4718883273745602e-48 +7.3594416368728008e-49 +3.6797208184364004e-49 +1.8398604092182002e-49 +9.1993020460910009e-50 +4.5996510230455005e-50 +2.2998255115227502e-50 +1.9524499999999998e280 +3.9048999999999996e280 +7.8097999999999992e280 +1.5619599999999998e281 +3.1239199999999997e281 +1.4530784899999999e-225 +9.21e-196 +1.5996179600999998e284 +3.1992359201999997e284 +1.5791e107 +5.0370323150203276e-97 +1.092251553e-115 +2.90384169e-79 +9.9999999999999996e282 +5.903e303 +2.2275054752056886e-171 +1.1137527376028443e-171 +5.5687636880142214e-172 +2.7843818440071107e-172 +1.3921909220035554e-172 +5.91e157 +3.0649669999999997e-306 +1.1247278870000001e-199 +7.4351e-77 +2.9999999999999997e42 +5.9999999999999993e42 +5.9425e70 +1.1885e71 +2.377e71 +1.69632737802605e116 +3.3926547560521e116 +6.34679e166 +3.77906235e305 +7.5581247e305 +1.473e-48 +9e-199 +3.092446298323e-188 +1.5462231491615e-188 +7.7311157458075e-189 +1.0999999999999999e295 +2.1999999999999998e295 +4.3999999999999996e295 +8.50093e-177 +2.9367624519635678e-253 +1.823882577e-21 +3.9378511e-99 +4.705110983674823e245 +1.4499999999999999e213 +2.8999999999999997e213 +5.7999999999999994e213 +1.1599999999999999e214 +2.3199999999999998e214 +1.2295621901e46 +2.1401586040489102e233 +1.0703149247e233 +5.4441554728790397e-175 +9.9999999999999991e-215 +2.0000000000000002e-214 +1.0000000000000001e-214 +5.0000000000000006e-215 +4.6720285105120005e-19 +2.3360142552560002e-19 +1.1680071276280001e-19 +5.8400356381400006e-20 +2.9200178190700003e-20 +1.4600089095350002e-20 +7e-114 +3.5e-114 +6.09193e73 +3.44089e293 +1.435363e-256 +2.8220307700000003e151 +5.6440615400000006e151 +1.5464099999999998e-42 +1.1473699140943001e-109 +8.0400741708079992e-155 +4.0200370854039996e-155 +2.0100185427019998e-155 +1.0050092713509999e-155 +5.0250463567549995e-156 +1.0291454200000001e-152 +5.1457271000000005e-153 +1.6879961314490002e-294 +9.40189e-106 +1.1136380020621e121 +6.4476910000000007e197 +1.2895382000000001e198 +2.5790764000000003e198 +1.5291085402956702e278 +2.61e-122 +1.305e-122 +9.9999999999999986e-69 +1.003400625561e137 +1.0600110126451601e-236 +5.3000550632258005e-237 +2.6500275316129003e-237 +1.3250137658064501e-237 +3.0000000000000007e-309 +7.9081318846819292e252 +7.2787364649055787e-80 +1.3e-181 +3.7231624851e69 +1.231911371783e46 +7.4072513555009992e156 +1.4814502711001998e157 +2.9629005422003997e157 +4.8698561536916005e-277 +2.4349280768458003e-277 +1.2174640384229001e-277 +1.001e-68 +5.005e-69 +9.999999999999998e77 +5e77 +1e78 +5.8083640999999994e-284 +3.5e178 +7e178 +3.0000000000000002e-163 +9.0285923e-199 +4.51429615e-199 +2.468676788523417e-100 +1.131345441542535e152 +2.26269088308507e152 +7.1241679999999993e-229 +3.5620839999999996e-229 +1.7810419999999998e-229 +8.9052099999999991e-230 +4.4526049999999995e-230 +7.4000000000000008e-195 +3.7000000000000004e-195 +1.5271692153760063e73 +6.77497460787351e203 +3.213298964227e284 +1.6189509999999998e-95 +9.9999999999999997e223 +9.88317684893509e-100 +3.0000000000000001e-17 +9.3758264007e-19 +4.7339772033920659e-47 +2.366988601696033e-47 +1.1834943008480165e-47 +5.9174715042400824e-48 +2.9587357521200412e-48 +1.1000000000000001e236 +2.2000000000000002e236 +1.7410381824496998e-232 +1.9565000000000002e75 +3.9130000000000004e75 +7.8260000000000008e75 +1.5652000000000002e76 +7.0638599999999993e-201 +3.5319299999999996e-201 +1.1788608171600001e-106 +5.8943040858000006e-107 +2.9471520429000003e-107 +1.4735760214500002e-107 +9.340075029708999e-78 +3.041335e160 +6.08267e160 +2.3811521806316701e-134 +3.8639244311627e-102 +1.93196221558135e-102 +6.71e-266 +3.4692070060407104e-291 +8.0000000000000008e-273 +4.0000000000000004e-273 +2.0000000000000002e-273 +1.0000000000000001e-273 +5.0000000000000005e-274 +7.41111169e-195 +3.4090529563046012e-322 +8.1233817432999992e255 +1.8349566665999998e-167 +9.1747833329999991e-168 +7.6395000000000008e218 +1.5279000000000002e219 +3.0558000000000003e219 +6.1116000000000006e219 +4.718803603e-106 +5.8300000000000006e213 +1.1660000000000001e214 +2.3320000000000002e214 +4.6640000000000005e214 +1.5583302321828498e163 +3.1166604643656997e163 +6.2333209287313994e163 +1.2466641857462799e164 +2.4933283714925597e164 +2.2504933822939998e-112 +1.1252466911469999e-112 +3.93e280 +1.2294999999999999e133 +2.4589999999999997e133 +4.9179999999999995e133 +9.835999999999999e133 +2.4429999999999997e-277 +5.3203932899999995e-237 +2.01e-214 +2.523567903248961e-156 +1.2617839516244805e-156 +9.153328589189473e270 +3.038336459e-191 +1.5191682295e-191 +1e-127 +6.6175009999999993e-151 +3e275 +1.179517668064873e40 +4.16846787094105e112 +8.3369357418821e112 +7.8564021519e-217 +3.92820107595e-217 +1.964100537975e-217 +7.06181e91 +1.3973173810679001e266 +5.33065547e260 +1.3557131972543927e-147 +1.8237009999999998e212 +3.6474019999999996e212 +7.2948039999999993e212 +2.6856414463299997e-119 +1.5837125064990998e48 +8.083e-155 +2.7655027e-203 +1.9716000000000002e-12 +9.858000000000001e-13 +4.9290000000000005e-13 +4.3639e-233 +2.18195e-233 +1.63646089999e169 +1e19 +2.7579615331839873e235 +9.63019e-16 +9.344490798086999e214 +3.04879707019e160 +1.1999999999999999e-221 +5.9999999999999994e-222 +2.9999999999999997e-222 +1.4999999999999998e-222 +1.15202607e183 +2.8248340087999853e238 +5.6496680175999706e238 +1.1299336035199941e239 +2.2598672070399882e239 +4.5197344140799765e239 +1.5887400000000002e-244 +7.9437000000000008e-245 +1.0324175950773e286 +3.5702176265000004e63 +7.1404352530000007e63 +1.4280870506000001e64 +2.8561741012000003e64 +5.7123482024000006e64 +7.3594600490199992e-167 +3.6797300245099996e-167 +5.869474653871e272 +1.83829e-21 +4.6509700000000005e301 +9.301940000000001e301 +1.8603880000000002e302 +1.0339177e140 +9.999999999999999e164 +1.0000000000000001e165 +2.0000000000000002e165 +4.0000000000000004e165 +8.0000000000000008e165 +1.6000000000000002e166 +3.2000000000000003e166 +6.3047000000000006e281 +4.5770362369933005e-81 +1.574333e-216 +4.9627626615711e-100 +2.48138133078555e-100 +2.9999999999999996e-76 +1.3265635063e-150 +8.923033770841e208 +1.2559420655526876e223 +1.0975999999999999e-174 +5.4879999999999994e-175 +2.7439999999999997e-175 +1.3719999999999999e-175 +6.8599999999999993e-176 +3.4299999999999996e-176 +1.7149999999999998e-176 +8.5749999999999991e-177 +2.11866107e143 +3.3351900000000003e-238 +9.500549192981551e99 +1.9001098385963102e100 +3.8002196771926204e100 +7.6004393543852408e100 +1.5349e73 +1.9187877e72 +1.3086000000000001e-181 +6.5430000000000007e-182 +4.6109999999999542e-314 +3.0000000000000004e70 +4.647663e-50 +1.50338663e-222 +4.6633792313957e155 +8.34582483e-239 +2.95897032079e39 +1.6765732055899998e-179 +8.3656945419000009e112 +1.6731389083800002e113 +3.3462778167600003e113 +7.97e252 +2.85567287e-287 +1.427836435e-287 +6.0876670000000006e101 +4.5953538999999995e270 +3.1953459999999997e-39 +1.5976729999999998e-39 +1.0815169974288999e87 +2.1630339948577998e87 +3.5476258899999996e-55 +2.0408911370943188e255 +2.4041e-75 +1.20205e-75 +1.898531061257e-251 +9.492655306285e-252 +9.986648060000001e-41 +4.9933240300000005e-41 +3.986526687039933e252 +2.112689e84 +7.803e-43 +8.3699999999999991e112 +1.93e131 +1.681365647212791e172 +2.4337404938891e248 +3.9999999999999996e-186 +1.9999999999999998e-186 +9.9999999999999991e-187 +7.0227117069999993e119 +3.1253480926000003e-188 +1.5626740463000002e-188 +2.9299999999999997e213 +1.81753062840719e-52 +3.4893100000000004e-291 +3.079943e-73 +9.1400000000000009e-140 +4.5700000000000005e-140 +8.9740000000000009e-230 +4.4870000000000005e-230 +7.7595569331886058e190 +1.5519113866377212e191 +3.1038227732754423e191 +6.2076455465508846e191 +1.2415291093101769e192 +6.509312589651e197 +2.02749209e-09 +1.1587098207e-109 +5.0148973628099995e164 +2.9000000000000003e-256 +4.1171159583e-124 +2.3993534603825998e-280 +1.1996767301912999e-280 +1.9999999999999999e-40 +9.9999999999999993e-41 +1.63134213e-95 +5.5275372428994548e-116 +2.7637686214497274e-116 +8.5911161480000009e-31 +4.2955580740000004e-31 +2.1477790370000002e-31 +3.45918523037e-263 +7.7316070041701008e131 +1.5463214008340202e132 +7.807881841e103 +1.03e-124 +1.500539873e-281 +4.2713e202 +1.8785450386282625e215 +5.1579277700346335e-271 +2.5789638850173167e-271 +8.6734132690000009e87 +3.323e141 +4.9999999999999994e105 +9.9999999999999989e105 +1.9999999999999998e106 +3.9999999999999995e106 +4.8990411467960995e307 +4.64155444667e-109 +1.5311033e306 +2.01326638529997e-127 +1.6601920051730002e287 +5.3353e-296 +2.8802643260900003e269 +5.7605286521800006e269 +7.3500000000000007e66 +1.4700000000000001e67 +2.9400000000000003e67 +5.8800000000000006e67 +1.1760000000000001e68 +1.3e-07 +2.7174905288881933e-206 +2.0227755429999998e-68 +4.7e214 +1.888317e274 +1.5840391465442498e281 +3.1680782930884997e281 +6.3361565861769994e281 +1.2672313172353999e282 +2.5344626344707997e282 +5.0689252689415995e282 +1.0137850537883199e283 +2.0275701075766398e283 +3.944059057766325e221 +7.88811811553265e221 +1.57762362310653e222 +2.5000000000000002e251 +5.0000000000000005e251 +1.0000000000000001e252 +2.0000000000000002e252 +4.0000000000000004e252 +8.0000000000000008e252 +1.6000000000000002e253 +2.3482197901e-283 +3.61800986913e-316 +2.4760999999999997e279 +3.580017e-142 +6.2311359073827006e45 +1.2462271814765401e46 +1.1322718044999999e180 +2.2645436089999998e180 +4.5290872179999995e180 +9.0581744359999991e180 +3.9577527e-217 +1.97887635e-217 +1.7e-207 +7.9688184487271008e193 +1.9e187 +2.15083e115 +6.5779982100000007e-182 +1.9882210572571e-158 +9.9411052862855e-159 +6.3559532999999994e-11 +2.3e65 +3.08396239e219 +2.140277021317e202 +3.6299222467099996e35 +7.2598444934199993e35 +1.4519688986839999e36 +1.364125037e145 +4.2123028723119996e-180 +2.1061514361559998e-180 +1.0530757180779999e-180 +5.2653785903899995e-181 +2.6326892951949997e-181 +5.504145e263 +1.100829e264 +1.9999999999999999e-245 +9.9999999999999993e-246 +9.394480000000001e-137 +4.6972400000000005e-137 +2.3486200000000002e-137 +1.1743100000000001e-137 +5.8715500000000006e-138 +1.74998078512937e-145 +3.0489190889999997e-104 +6.9999999999999999e-145 +1.2209499219999999e-249 +6.1047496099999994e-250 +5.7174999999999994e297 +1.1434999999999999e298 +2.2869999999999998e298 +4.5739999999999995e298 +9.1479999999999991e298 +1.8295999999999998e299 +3.6591999999999996e299 +7.3183999999999993e299 +5.23979363419e-94 +2.619896817095e-94 +1.3099484085475e-94 +2.4400000000000002e-103 +1.2200000000000001e-103 +6.1000000000000006e-104 +3.0500000000000003e-104 +2.4114373672377e217 +1.8999999999999991e-310 +5.09e-10 +1.6235245196360002e-213 +8.1176225981800008e-214 +4.0588112990900004e-214 +1.9149457694009259e-46 +3.724069980533099e-108 +2.97000308086139e-312 +9.312412397051e-109 +1e-99 +1.004457e-40 +1.496902921711e-48 +7.484514608555e-49 +1.01106444823e-273 +1.0729999999999999e56 +1.3e-212 +5.0843265142425351e282 +1.7321059287e175 +4.1477000000000004e227 +8.2954000000000008e227 +3.482974734743573e88 +4.3496999999999996e233 +8.6993999999999991e233 +8.0322043000000008e106 +6.155516046553e160 +6.0643857580999994e275 +1e47 +4.9571045010407e-72 +2.47855225052035e-72 +2.5408529999999997e-215 +3.44362793551e-235 +2.7463402595e204 +5.492680519e204 +5.7775126699999994e-228 +1.6852710389999998e113 +4.8530454397390695e276 +2.93e-197 +5.5347597072099749e-175 +1.1810356700980697e68 +1.277624111579e-302 +6.52835804449289e-08 +1.1900000000000018e-311 +4.75549444231e-165 +2.6459144335269997e170 +1.26991737091e-69 +2.9510299999999997e213 +1.903e-164 +9.9999999999999986e192 +2.4124388763e-134 +2.61286013707e-07 +4.5769192843472747e-53 +1.50791161e-135 +2.0725116840429072e-124 +4.2221059765728997e-34 +1.9959999999999998e-158 +9.979999999999999e-159 +4.9899999999999995e-159 +2.4949999999999997e-159 +1.81549e-170 +9.07745e-171 +4.863540905914745e130 +9.72708181182949e130 +4.0189874317389014e252 +8.0379748634778028e252 +1.032095693e-183 +4.8740000000000005e-162 +2.4370000000000002e-162 +5.2389925272402583e-299 +8.082127488334917e165 +2.214734628529e-28 +1.9821592426999998e221 +5.229646999e-07 +1.1427142260031494e239 +7.5788396757499e-77 +3.4103383e85 +4.8464449e71 +9.9999999999999997e-305 +6.31849e163 +6.08464055377817e129 +2.9803526962672e-312 +1.1706772092609999e242 +8.38100069e-152 +2.5087000000000003e-100 +9e-143 +4.5e-143 +1.2818687801e195 +6.5701731124989993e51 +3.1000000000000003e219 +6.2000000000000006e219 +4.9920860000000005e-13 +2.4960430000000003e-13 +9.502119099999999e273 +6.6436626599999993e-123 +3.3218313299999997e-123 +1.106436423881e264 +3.2379e166 +1.153985398112929e-286 +8.5622171747946659e289 +1.7124434349589332e290 +3.4248868699178663e290 +6.8497737398357327e290 +5.344984153e-209 +7.3461165867149903e-198 +4.1000000000000004e-301 +9.9999999999999986e-159 +6.6175214238680007e-182 +3.3087607119340003e-182 +1.6543803559670002e-182 +2.9999999999999998e244 +5.1599346804157e108 +1.265231575e164 +2.53046315e164 +5.0609263e164 +3.7103899999999996e-226 +8.8573547299999991e264 +8.7995099982599991e-146 +4.3997549991299996e-146 +8.1162268288421e-127 +6.368529043e-70 +1.3e-271 +1.1e-146 +7.1639114677750007e91 +1.4327822935550001e92 +2.8655645871100003e92 +5.7311291742200006e92 +1.1462258348440001e93 +2.2924516696880002e93 +4.5849033393760005e93 +9.1698066787520009e93 +1.8339613357504002e94 +3.6679226715008004e94 +3.0340735967998097e70 +6.0681471935996194e70 +7.010940881e-204 +3.5054704405e-204 +3.6999999999999996e212 +7.3999999999999993e212 +1.0181103849999999e78 +2.0362207699999998e78 +4.0724415399999996e78 +8.1448830799999992e78 +1.5059028000000002e-194 +7.5295140000000008e-195 +3.7647570000000004e-195 +7.8277088051970483e-307 +8.8133809804950961e-292 +7.2752353213216607e-24 +3.6376176606608304e-24 +9.9999999999999998e-13 +1.4426842659109657e-141 +7.2134213295548287e-142 +3.6067106647774144e-142 +1.8033553323887072e-142 +9.0167766619435359e-143 +2.3137797848057e211 +7.3328270149999993e240 +1.4665654029999999e241 +2.9331308059999997e241 +5.8662616119999994e241 +1.1732523223999999e242 +2.3465046447999998e242 +1.9917683400000002e-71 +9.958841700000001e-72 +3.68643727e153 +9.167275052991505e239 +1.833455010598301e240 +1.3498246805230001e-91 +2.2990000000000002e-199 +9.6550879630140305e304 +1.9310175926028061e305 +1.3029999999999999e226 +2.6059999999999997e226 +4.87e-221 +1.2550000000000001e192 +2.5100000000000003e192 +5.0200000000000005e192 +1.0040000000000001e193 +2.0080000000000002e193 +3.74420999e38 +6.9822589999999993e-117 +7.611e-223 +3.8055e-223 +1.90275e-223 +2.09901e-06 +1.049505e-06 +5.247525e-07 +9.67e158 +5.934367e67 +3.6892171812690496e153 +7.3784343625380993e153 +1.4756868725076199e154 +2.9513737450152397e154 +9.9999999999999992e133 +1.0000000000000001e134 +2.0000000000000002e134 +6.17e-45 +6.9999999999999992e234 +0.0043 +1.2221657866812099e-16 +7.89e103 +2.44219929572685e130 +4.8843985914537e130 +8.6300000000000009e202 +3.0040000000000003e-253 +1.5020000000000002e-253 +7.5100000000000008e-254 +3.18783942528541e76 +1.2642309373e-41 +1.7814046048538002e-173 +8.9070230242690009e-174 +4.6501128847860847e-227 +2.3250564423930423e-227 +2.32275118249e-81 +1e280 +2.527e105 +5.696571e-26 +3.26629204905e79 +6.5325840981e79 +2.7402850000000003e86 +5.4805700000000006e86 +1.0961140000000001e87 +2.1922280000000002e87 +4.3844560000000004e87 +3e39 +1.6071369929999998e-303 +4.7955471947e186 +1.2435041389999999e-277 +1.5100000000000002e-194 +5.9637526248909994e272 +4.4055989880220996e146 +8.8111979760441991e146 +9.731e217 +1.42987645e179 +2.8597529e179 +1.43e179 +2.2982090744894537e239 +4.5964181489789073e239 +1.5490227028941002e306 +3.0980454057882003e306 +2.1752772200000002e-31 +1.0876386100000001e-31 +3.1113e-278 +4.3e289 +1.9999999999999998e-217 +9.9999999999999988e-218 +4.3699999999999996e28 +5.8031e210 +1.2899999999999999e49 +2.5799999999999997e49 +1.9262928645800002e-251 +9.631464322900001e-252 +1.68191589e141 +8.942894517e177 +3.8364367104712627e-310 +3.1564872989599997e-247 +1.5782436494799998e-247 +7.8912182473999992e-248 +3.9456091236999996e-248 +1.9728045618499998e-248 +7.824537704634593e277 +2.5010000000000003e-218 +3.0999999999999997e306 +1.9208169000000002e187 +3.2999999999999997e197 +6.087559e216 +9.4087871569990009e-255 +7.6584600000000008e-18 +3.8292300000000004e-18 +3.05342143901e-222 +1.7282365999999998e-294 +8.6411829999999991e-295 +6.3369999999999994e-42 +3.5831e32 +5.3162000000000005e-35 +2.6581000000000003e-35 +1.75156369e-117 +3.9999999999999997e-71 +1.9999999999999998e-71 +9.9999999999999992e-72 +2.6613278438993997e-181 +1.3306639219496999e-181 +8.3000000000000008e109 +3.0000000000003367e-312 +1.5000000000001683e-312 +7.4601281013999993e-226 +3.7300640506999996e-226 +1.01e-99 +2.5856600000000003e-97 +1.2928300000000001e-97 +7.6579449060701e128 +1.4909093277655131e-79 +1.2481321159090001e220 +4.6999999999999995e37 +5.4243876700000005e-91 +3.3217032190000003e110 +6.6434064380000007e110 +3.1303e-219 +2.0013382773200002e-71 +1.0006691386600001e-71 +5.0033456933000005e-72 +3.8300000000000004e128 +2.9094817409304851e64 +1.77e-145 +6.8925042248989993e290 +1.3785008449797999e291 +3.8963300000000004e-279 +1.9235300000000002e187 +2.66080865409e-35 +6.7100000000000007e82 +6.7032525220999993e228 +6.2898498999999994e-160 +9.9999999999999993e74 +1.0000000000000001e75 +2.0000000000000003e75 +3.0000000000000003e-166 +1.7899998348828362e-319 +8.647819e-149 +2.4685453841421098e-103 +6.0011680665590006e-166 +1.5379e-309 +3.133e-219 +9.519999999999999e-283 +4.7599999999999995e-283 +2.3799999999999998e-283 +1.1899999999999999e-283 +5.9499999999999994e-284 +4.6091987714620631e239 +1.7791041e-86 +3.2997e-154 +2.81e-262 +7.53543e-108 +6.3554097e-188 +3.17770485e-188 +1.9650700000000002e-15 +4.1476750371000004e-242 +2.7900000000000003e117 +3.5521e206 +1.9399999999999998e-192 +9.699999999999999e-193 +8.79489269e233 +3.831e274 +8.271429892232569e196 +9.4643888300000009e-50 +1e221 +1.9365e100 +3.873e100 +9.1949005350000009e34 +1.8389801070000002e35 +3.6779602140000004e35 +7.3559204280000007e35 +1.4711840856000001e36 +1.1999999999999999e-19 +5.9999999999999994e-20 +2.9999999999999997e-20 +1.4999999999999998e-20 +1.0636031e258 +1.2052483471455841e40 +4.0575930873709996e252 +8.1151861747419992e252 +1.6230372349483998e253 +1.07277075901e-267 +2.4554032699999998e130 +4.9108065399999995e130 +9.821613079999999e130 +1.9643226159999998e131 +3.9286452319999996e131 +7.8572904639999992e131 +1.5714580927999998e132 +3.1429161855999997e132 +6.2858323711999994e132 +1.2571664742399999e133 +2.5143329484799997e133 +5.0286658969599995e133 +1.58699e104 +2.1533020543579998e-62 +1.0766510271789999e-62 +5.336974962151e-181 +2.6684874810755e-181 +5.6390000000000006e89 +1.1278000000000001e90 +5.1121175728027e-128 +1.1449912871501079e-25 +5.7249564357505394e-26 +2.8624782178752697e-26 +1.4312391089376349e-26 +8.8500000000000009e146 +1.7700000000000002e147 +3.5400000000000004e147 +7.0800000000000007e147 +1.2993367030000001e254 +5.1139080000000005e-128 +2.5569540000000003e-128 +1.2784770000000001e-128 +6.182410494241627e-104 +3.0912052471208135e-104 +1.6000000000000002e-275 +8.0000000000000008e-276 +4.0000000000000004e-276 +2.0000000000000002e-276 +1.0000000000000001e-276 +5.0000000000000005e-277 +1.7689999999999998e293 +3.5379999999999996e293 +6.0061053199999994e-20 +3.0030526599999997e-20 +1.5015263299999998e-20 +7.5076316499999992e-21 +3.0000000000000002e126 +6.6040007e-08 +1.4258818612739999e-85 +7.1294093063699993e-86 +2.28387737e-230 +1.141938685e-230 +6.2857708574900006e278 +1.3069227e167 +1.9000000000000002e302 +1.4035115269999999e176 +2.732263e-32 +2.297107825643e-317 +1.1485539128215e-317 +1.2863134679e-215 +4.0549070776711e-99 +3.251359e253 +9.142411051514033e-230 +5.7774742424315236e238 +1.1554948484863047e239 +4.0000000000000003e-130 +2.0000000000000002e-130 +1.0000000000000001e-130 +2.1290056169527681e-239 +6.5754603e79 +4.0433834711e-304 +2.3614663703368998e-109 +7.551959679e38 +2.95e36 +5.9e36 +6.2881391961328466e-219 +3.1440695980664233e-219 +2.9e-200 +2.2929100000000002e121 +9.9878382493e161 +1.502974418081711e126 +3.31949e197 +6.6891177956290007e-182 +2.5629670607798233e-128 +7.6066769822140008e-195 +3.8033384911070004e-195 +2.6596114999999997e52 +5.3192229999999995e52 +1.0638445999999999e53 +2.1276891999999998e53 +8.96296167e118 +7.3429396004640246e122 +4.5405601e295 +2.3000000000000002e-171 +1.9171857967143969e69 +3.8343715934287938e69 +1.7084771475472988e259 +3.4169542950945977e259 +2.802219321e117 +1.9131399999999998e-282 +9.565699999999999e-283 +9.9999999999999994e161 +3.46589315458517e290 +4.7226679922889995e183 +9.4453359845779991e183 +1.0681407780005901e258 +1.8769619000000002e-226 +6.9109448902190007e85 +6.4385707300000006e76 +9.3504248310000009e-286 +1.0781e-267 +4.0039815255681e162 +5.0000000000000001e307 +1e308 +2.96073e-110 +1.480365e-110 +5.248619261759e167 +7.4590000000000007e153 +3.9019023999999996e-192 +1.9509511999999998e-192 +9.754755999999999e-193 +4.8773779999999995e-193 +2.4386889999999998e-193 +1.2193444999999999e-193 +1.8291000000000002e209 +3.7262002584784704e299 +3.8072839999999996e-49 +1.9036419999999998e-49 +9.5182099999999991e-50 +4.7591049999999995e-50 +1.2054028263051001e127 +3.023e-312 +1.5115e-312 +7.5575e-313 +3.2599999999999997e-244 +1.6299999999999998e-244 +9.31723e298 +3.4969474136909e-89 +1.1239103613799999e-28 +5.6195518068999994e-29 +5.1885567e-156 +5.6079063072999006e263 +1.6712965779721751e256 +3.3425931559443503e256 +4.1827193995963896e109 +2.828141e-262 +8.4841000000000008e140 +4.8800000000000005e-193 +2.4400000000000002e-193 +1.2200000000000001e-193 +6.1000000000000006e-194 +3.0500000000000003e-194 +8.9364737e205 +3.7e35 +2.2099999999999998e-264 +9.3e-53 +3.7040000000000004e-111 +1.8520000000000002e-111 +9.2600000000000009e-112 +4.6300000000000005e-112 +2.2152181e87 +4.6057995217600005e-25 +2.3028997608800002e-25 +1.1514498804400001e-25 +5.7572494022000006e-26 +2.8786247011000003e-26 +1.4393123505500001e-26 +7.7948208142301e100 +1.9999999999999997e-189 +9.9999999999999987e-190 +1.2900000000000001e77 +6.75639e228 +5.3991173e-268 +9.4080055902682397e-227 +1.63405e253 +3.2681e253 +2.84381e-203 +1.33e-153 +1.4468626999999999e33 +7.9632928890000008e-102 +1.1076244679971001e233 +7.111179267117e-204 +4.37831e-90 +4.1e-186 +1.53749432531e216 +1.9999999999999998e-43 +9.9999999999999988e-44 +4.2999999999999996e-180 +4.6475406389115285e239 +3e-284 +9.2258164427496539e-25 +2.3569492755e270 +4.713898551e270 +7.9e-220 +3.95e-220 +1.03e-127 +1.754505285385093e-235 +1.3502264439000001e-122 +2.2999999999999998e-230 +1.3346301049900899e198 +2.6692602099801797e198 +5.3385204199603595e198 +1.1289400007472484e-320 +7.118783200275439e-204 +1.832391e-288 +9.161955e-289 +1.0530510999999999e168 +5.1420474549109995e164 +2.5e102 +5e102 +1e103 +1.1997999999999999e-137 +5.9989999999999994e-138 +1.866695571036947e-198 +2.546631329905983e192 +3.0000000000000001e-138 +8.6664635950000009e230 +1.7332927190000002e231 +3.4665854380000003e231 +6.9331708760000007e231 +1.3866341752000001e232 +5.647170331965448e-321 +1.0099999999999999e75 +2.0199999999999998e75 +4.0399999999999996e75 +3.17349647e-14 +1.181e124 +9.79e-193 +9.4790000000000131e-314 +2.3070000000000002e121 +4.6140000000000005e121 +1.9562642900000002e-46 +1.19673191095e301 +2.3934638219e301 +5.98365955475e300 +3.479e-207 +4.09896860915e106 +8.1979372183e106 +9.9851629100789e-249 +4.243e-65 +1.838482590967215e63 +3.67696518193443e63 +3.0547543512424605e98 +6.109508702484921e98 +2.17282179739e-62 +5.45e142 +1.09e143 +9.9999999999999992e248 +1.9999999999999998e249 +2.3482197901e-286 +2.6990000000000003e170 +5.3980000000000005e170 +6.2439229999999994e-250 +6.9999999999999992e-294 +1.1758732899999999e211 +2.3517465799999998e211 +4.7034931599999995e211 +9.4069863199999991e211 +1.8813972639999998e212 +3.7627945279999996e212 +2.8245340903049e-175 +1.41226704515245e-175 +1.23034602391e-134 +5.3717000000000005e257 +2.8841e266 +1.5837265999999998e-219 +7.9186329999999992e-220 +3.4874068209e290 +7.9461601703952971e-15 +4.411063650767e-31 +1.502607e-138 +3.2269008655522087e-129 +1.7399999999999998e-61 +8.6999999999999991e-62 +4.3499999999999996e-62 +2.399383884113e155 +9.9143958148178223e276 +9.9999999999999998e-249 +4.9040000000000005e-193 +2.4520000000000002e-193 +1.2260000000000001e-193 +6.1300000000000006e-194 +3.0650000000000003e-194 +2.9999999999999997e154 +5.474037333e-296 +5.98054141e-51 +1.155683e121 +2.1e255 +2.1179311734515998e-270 +1.0589655867257999e-270 +5.2948279336289995e-271 +2.6474139668144997e-271 +3.643e237 +2.93629e-141 +6.9705112365474002e-207 +4.9000000000000005e-47 +1.8000000000000002e-86 +9.0000000000000009e-87 +2.5283e220 +2.3e208 +4.907e-193 +1.0470716105482202e50 +1.2059638999999999e214 +2.0498269999999998e-245 +6.2097866670119e129 +5.8520512535161216e-200 +1.330602812095289e-212 +4.3180760636109957e-180 +9.9999999999999993e-103 +2.0000000000000003e-102 +1.0000000000000001e-102 +0.070000000000000007 +8.3449000000000008e-09 +1.9639999999999998e-192 +9.819999999999999e-193 +4.9099999999999995e-193 +2.0286860937570002e-71 +5.00679e-249 +3.3172597115e225 +6.634519423e225 +5.0999999999999995e-159 +4.56496616054293e90 +3.2091035557600643e250 +9.1700000000000009e149 +4.7204099999999995e65 +2.3424263117247e-199 +1.0158998242485883e-217 +1.3073578772180999e-302 +1.2190528567484495e186 +2.438105713496899e186 +1.7700533e-176 +1.828411927e-55 +6.0761364983431364e-20 +5.13e-246 +2.6869e-94 +4.913900690924893e-193 +2.103930611e255 +3.5335877571910003e116 +5.0000000000000004e43 +1.0000000000000001e44 +2.0000000000000002e44 +4.0000000000000004e44 +8.0000000000000007e44 +1.36420013e-209 +1.2064343699999999e-283 +1.5328124010000002e98 +9.2751319999999991e-25 +4.6375659999999995e-25 +2.3187829999999998e-25 +4.4138877297928996e261 +1.77517151e175 +2.6999999999999997e-35 +3.6875746128623593e209 +3.1000000000000003e-76 +8.179e-304 +2.768458077921149e-178 +4.1167796804245e106 +8.233559360849e106 +1.1815227623000001e65 +3.5710500000000004e88 +7.1421000000000007e88 +1.4284200000000001e89 +1.139e-115 +1.3521428334780001e-181 +6.7607141673900007e-182 +7.2909740000000007e-114 +3.6454870000000004e-114 +1.0000000000000001e190 +2.0000000000000001e190 +1.0713612767394143e-152 +2.1964461e-295 +2.431e127 +4.3930771850569727e-295 +3.6896290999999996e209 +7.3792581999999993e209 +2.7638225380300003e114 +5.5276450760600005e114 +3.511e-148 +1.7555e-148 +1.0208181e-12 +6.49177e222 +3.6857598424100004e-288 +3.3488472399999997e-154 +1.6744236199999998e-154 +8.3721180999999992e-155 +1.3338065002999999e-212 +6.8152300493665997e82 +3.6000000000000004e-291 +1.8000000000000002e-291 +9.0000000000000009e-292 +1.1000000000000001e202 +2.2000000000000002e202 +4.4000000000000004e202 +8.8000000000000009e202 +1.7316479000000002e-179 +2.7174528578300003e-122 +4.8692635904611e-19 +1.8755760505764002e-52 +9.3778802528820009e-53 +4.6889401264410005e-53 +1.4542179999997498e-318 +3.1099999999999997e275 +1.39e27 +1.5315309379999998e-253 +7.6576546899999992e-254 +3.0999999999999997e70 +1.2492842e-308 +8.366487e-09 +1.341639e-299 +3.461e-33 +1.7398498278123998e-120 +8.6992491390619991e-121 +4.3496245695309996e-121 +2.1748122847654998e-121 +7.41788507e268 +6.0832886017963085e126 +4.012489e-102 +4.8149999999999995e301 +9.629999999999999e301 +1.9259999999999998e302 +3.8519999999999996e302 +7.7039999999999992e302 +1.5407999999999998e303 +9.744304000000001e-19 +4.8721520000000005e-19 +2.4360760000000002e-19 +1.2180380000000001e-19 +6.0901900000000006e-20 +3.0450950000000003e-20 +1.97e-192 +1.98715975201e-74 +2.9264461086198997e238 +2.4152799417999998e-137 +1.2076399708999999e-137 +2.8332705e117 +5.666541e117 +9.9999999999999991e-308 +8.0000000000000009e-307 +4.0000000000000004e-307 +2.0000000000000002e-307 +1.0000000000000001e-307 +5.0000000000000005e-308 +2.38428215701376e-314 +5.7589217169199994e-144 +2.8794608584599997e-144 +1.4397304292299999e-144 +3.2669887e135 +3.8114390291351186e-167 +1.3000000000000001e223 +1.9647107e246 +5.718298133e235 +4.21e-96 +3.0800000000000003e-194 +1.5400000000000002e-194 +7.7000000000000008e-195 +3.8500000000000004e-195 +1.97623381e159 +1.2011100000000001e96 +2.4022200000000002e96 +9.9999999999999983e-162 +1e-161 +2.8733230000000003e294 +5.7466460000000006e294 +1.9747490000000002e305 +3.9494980000000004e305 +7.0000000000000006e-61 +4.7896592828221e-109 +4.2957879999330004e-152 +3.3457050000000003e284 +6.6914100000000007e284 +1.3382820000000001e285 +2.6765640000000003e285 +6.719292783440953e-322 +3.3596463917204765e-322 +8.3991159793011913e-323 +1.3000000000000001e-274 +5.2400000000000005e-10 +2.6200000000000003e-10 +1.3100000000000001e-10 +6.5500000000000006e-11 +8.1722220875000008e280 +1.6344444175000002e281 +3.2688888350000003e281 +6.5377776700000006e281 +1.3075555340000001e282 +2.6151110680000003e282 +5.2302221360000005e282 +1.0460444272000001e283 +2.0920888544000002e283 +4.1841777088000004e283 +8.3683554176000008e283 +1.6736710835200002e284 +1.01824028780587e75 +3.847053848531651e97 +1.0970068912300001e289 +2.0000000000000002e-15 +1.0000000000000001e-15 +4.9358670400000005e-193 +2.4679335200000002e-193 +1.2339667600000001e-193 +6.1698338000000006e-194 +3.0849169000000003e-194 +1.5424584500000002e-194 +3.5567300000000004e-176 +6.0980920149999994e126 +1.2196184029999999e127 +2.4392368059999998e127 +4.8784736119999995e127 +9.756947223999999e127 +7.3728853e150 +4.2181883703999996e-96 +2.1090941851999998e-96 +1.0545470925999999e-96 +5.2727354629999995e-97 +2.6363677314999997e-97 +9.3881143677743e239 +8.1264657001929992e-130 +1.0302121160000001e-99 +5.1510605800000005e-100 +2.5755302900000003e-100 +1.9006367e-80 +3.8178658370394964e-21 +1.9089329185197482e-21 +9.5446645925987409e-22 +4.7723322962993705e-22 +2.3861661481496852e-22 +5.7332259349000006e235 +1.1466451869800001e236 +2.2932903739600002e236 +4.9999999999999996e130 +9.9999999999999991e130 +1.9999999999999998e131 +3.9999999999999996e131 +1.3553031764409e111 +7.6126283287714481e-226 +3.806314164385724e-226 +1.903157082192862e-226 +9.5157854109643101e-227 +4.757892705482155e-227 +1.41515063158997e58 +8.9309e28 +7.788457e-77 +3.9031e274 +3.91957609750457e-310 +1.0580011678565e255 +2.116002335713e255 +8.5733611609457e-211 +9.53e270 +1.4620331909999999e179 +2.9240663819999997e179 +5.923617387e-287 +1.5397159730000002e244 +1.0300000000000001e47 +4.5151496117121774e-146 +2.6942350651195123e-299 +1.3471175325597561e-299 +6.7355876627987807e-300 +3.3677938313993903e-300 +1.6838969156996952e-300 +3.933759085704383e-105 +2.5696606900000003e-305 +1.1649109999999999e121 +2.3298219999999998e121 +4.33e-239 +7.902852878939e-46 +1.4328625063189999e-262 +2.5317e-190 +1.5929006064912315e219 +3.1858012129824631e219 +6.3716024259649262e219 +5e276 +1e277 +9.9999999999999981e276 +3e36 +2.0199451e249 +1.01e249 +2.624877e136 +2.0550211e-158 +2.2815416163617e-174 +2.1875707059999998e-267 +1.0937853529999999e-267 +5.2960270000000005e254 +1.0592054000000001e255 +2.4848186335799998e-134 +1.2424093167899999e-134 +6.2120465839499994e-135 +4.2138388999999996e-301 +4.0412859167009996e249 +5.401e198 +2.385701e270 +2.3e90 +4.7104658015883621e93 +2.4327860949900002e214 +4.8655721899800005e214 +5.98506105036593e-169 +2.2565336775899998e146 +3.41e169 +9.9999999999999999e-221 +5e-221 +7.185192171e234 +3.77543e-52 +4.27947022109301e-270 +3.4130248999999997e169 +1.40724774731e-60 +1.0053320532590001e-161 +2.579527061e192 +9.9999999999999996e-75 +3.7093093757010004e-142 +4.4129999999999996e143 +1.1431936351743686e-174 +1.9199999999998202e-313 +3.0000000003857079e-315 +3.2179999999999997e-160 +1.6089999999999998e-160 +1.2210323000000001e-78 +2.0443824643609998e221 +4.0887649287219996e221 +8.1775298574439992e221 +4.0844490000000004e-276 +1.19145187e65 +4.0377061333627004e44 +1.6134305900000002e191 +1.417567867e-293 +4.671141e267 +9.9999999999999994e71 +1.0000000000000001e72 +5.7262208353000474e-321 +9e233 +5.81e-290 +2.905e-290 +2.5011940953099998e71 +2.0732570477350598e-245 +1.0366285238675299e-245 +1.9797340704075849e246 +1.5515114158795548e-194 +7.7575570793977738e-195 +7.7999999999999992e-282 +3.8999999999999996e-282 +3.8839629999999996e302 +7.7679259999999992e302 +2.3989000000000002e-22 +4.3359699999999996e199 +8.6719399999999992e199 +1.7343879999999998e200 +8.83359320743e289 +4.9999999999999994e217 +9.9999999999999989e217 +1.9999999999999998e218 +2.47867429915e99 +4.9573485983e99 +2.1943622503000002e-121 +2.2062036677000002e-208 +3e-23 +5.08749787459e-190 +7.380435e237 +1.476087e238 +2.0287965436855e249 +4.057593087371e249 +1.4763201168157691e238 +2.5695976000093997e-218 +1.2847988000046999e-218 +1.696980119e51 +4.6947090702999995e-171 +1.603e73 +5.1403039407000005e-218 +4.3031194030300004e81 +8.6062388060600008e81 +4.3690732834609996e-34 +6.5889999999999994e281 +1.3177999999999999e282 +3.0125407613000003e182 +3.362873994673975e79 +6.72574798934795e79 +1.34514959786959e80 +9.9999999999999986e-280 +3.108453714683e-194 +1.5542268573415e-194 +1.196305411339061e-81 +5.981527056695305e-82 +4.7497368114750955e298 +9.4994736229501909e298 +1.8998947245900382e299 +3.7997894491800764e299 +7.5995788983601527e299 +1.5199157796720305e300 +3.1e244 +2.7622642863581e-209 +3.2686427e163 +1.1329039385822101e292 +5.42548879991e-299 +7.5144092820000007e-24 +3.7572046410000004e-24 +1.0000000000000001e-133 +1.7106491167999998e-182 +8.5532455839999992e-183 +4.2766227919999996e-183 +2.1383113959999998e-183 +1.0691556979999999e-183 +5.3457784899999995e-184 +2.6728892449999997e-184 +1.3364446224999999e-184 +1.9724727268157e-164 +1.8292307526814029e-232 +9.1461537634070145e-233 +8.0633970000000008e131 +1.6126794000000002e132 +4.6887736315990738e267 +2.1000000000000002e-273 +4.1690000000000004e106 +9.020132615437603e-264 +2.1999999999999998e-121 +1.0999999999999999e-121 +2.2649850915999998e-205 +1.1324925457999999e-205 +5.6624627289999994e-206 +2.8312313644999997e-206 +4.4432679159000004e-149 +6.6210000000000006e-157 +1.2084092951773e37 +8.67e-06 +1.3844628999999999e288 +2.7689257999999997e288 +1.8541444308705243e-55 +7.3000000000000007e206 +1.4600000000000001e207 +2.9200000000000003e207 +7.3718329999999993e178 +1.4743665999999999e179 +1.32938269e49 +3e-228 +3.803338491107e-198 +6.742236641e79 +5.1000000000000005e-44 +3.8204510290000004e-139 +4.6092926261867e177 +2.3880000000000002e-140 +1.1940000000000001e-140 +5.9700000000000006e-141 +2.3120000000000002e-261 +1.1560000000000001e-261 +5.7800000000000006e-262 +2.8900000000000003e-262 +1.4450000000000001e-262 +2.9723376627379003e-200 +2.8998897000000003e-57 +2.18186352936563e-93 +1.2590979000000001e-221 +8.0239139373e-279 +9.9999999999999993e158 +1.9999999999999999e159 +8.4257e224 +2.000234676624263e159 +1.62091803889e-306 +7.1e290 +2.4131858753789998e-168 +4.31e-270 +1.8999999999999998e94 +3.7999999999999996e94 +7.5999999999999993e94 +3.0533855829999997e154 +6.1067711659999994e154 +2.3171748570000002e236 +4.6343497140000005e236 +2.5697000000000003e-277 +1.630717067e250 +9.319636160205099e149 +3.0155207e-23 +1.50776035e-23 +9.9999999999999994e304 +7.2537703113530007e88 +1.4507540622706001e89 +7.269233e-204 +8.4548872835299992e-68 +7.32661e60 +1.1239999999999999e-31 +5.6199999999999995e-32 +2.8099999999999997e-32 +1.4049999999999999e-32 +4.147e-12 +2.0735e-12 +3.1e185 +1.6932030794607e-213 +1.2427071700000001e-106 +1.0978572927111e-34 +1.85e32 +3.7e32 +9.6900000000000009e183 +1.9380000000000002e184 +8.3236910571019e193 +3.1619273194107529e129 +9.8716830630490551e273 +9.7127716499408009e-109 +4.8563858249704005e-109 +2.4281929124852002e-109 +1.2140964562426001e-109 +6.0704822812130006e-110 +3.0352411406065003e-110 +5.9995669999999994e210 +1.1999133999999999e211 +6.4000000000000006e-191 +3.2000000000000003e-191 +1.6000000000000002e-191 +8.0000000000000008e-192 +4.0000000000000004e-192 +2.0000000000000002e-192 +1.0000000000000001e-192 +5.0000000000000005e-193 +2.5000000000000002e-193 +2.9999999999999996e210 +4.6073e-28 +2.30365e-28 +1.151825e-28 +5.47472922089e-240 +1.963977156908479e-282 +1.7e-08 +5.6189999999999995e114 +1.97705e128 +3.9541e128 +3.64710903e147 +1.6302667208793e-101 +2.083e193 +9.986502842593699e99 +2.1080083167633e-127 +1.529e300 +1.1172920246632041e-295 +5.5864601233160205e-296 +2.7932300616580103e-296 +1.3966150308290051e-296 +3.1793767e188 +1e-46 +9.9999999999999983e-47 +1.552589e185 +4.1099999999999996e162 +5.58187034716343e-150 +2.017739e72 +2.4576302900000002e-283 +7.8649257916279008e-282 +1.5148294349e-315 +2.6621970711e-156 +1.1965266846612789e152 +8.1e277 +8.529e-301 +6.51553e191 +3.3000000000000003e-275 +4.8700000000000005e-255 +4.0727707003e190 +8.439928496349319e-127 +4.2199642481746595e-127 +1.3258909948999999e-215 +3.6847373609430996e265 +1.5639999999999998e-48 +7.8199999999999992e-49 +3.9099999999999996e-49 +5.6900000000000006e-60 +9.9999999999999982e99 +1e100 +7.7200000000000008e-226 +3.8600000000000004e-226 +1.9300000000000002e-226 +2.3208600000000002e-115 +1.1604300000000001e-115 +2.619e251 +3.19e-104 +8.8636873342560409e-267 +4.4318436671280205e-267 +7.4604691239125993e-55 +3.7302345619562996e-55 +1.511618484743e123 +2.307e118 +4.8385910000000005e124 +3.1e-20 +3.3973699899999997e-213 +8.7176730297053873e140 +5.5793589999999995e142 +2.6175233e-246 +1.479945441e-172 +8.432062133e165 +9.260272400002484e-320 +2.8232058000000003e-178 +1.4116029000000001e-178 +9.9999999999999987e245 +1.9999999999999997e246 +3.8063e-111 +3.72585046759e237 +9.9477138668e-311 +3.6066792146410998e-322 +6.6333926837951655e-70 +3.01040390317e210 +9e-236 +5.0999999999999995e189 +1.2999999999999999e133 +2.0010000000000002e246 +9.1e233 +3.1e126 +8.641921059e168 +2.03e277 +3.171914488325332e275 +1.48974270888829e-259 +7.44871354444145e-260 +3.724356772220725e-260 +1.01391444329e-220 +1.11e-267 +1.6958049e225 +3.510727800173887e54 +6.1562014270640006e-138 +3.0781007135320003e-138 +1.5390503567660001e-138 +7.6952517838300007e-139 +3.8476258919150004e-139 +9.9999999999999982e-252 +1e-251 +3.8571047923000004e212 +1.63e-160 +8.6298836386400008e-183 +4.3149418193200004e-183 +2.1574709096600002e-183 +1.0787354548300001e-183 +4.8539734339999995e-22 +2.4269867169999998e-22 +5.4946601359534385e-94 +1.95424622862919e-254 +7.3763630000000007e-86 +2.1445878272452998e50 +4.2891756544905996e50 +8.92771e-208 +4.463855e-208 +2.2319275e-208 +8.2981e75 +9.2929411146999991e177 +3.7332967e237 +4.2487477134843943e78 +8.4974954269687886e78 +9.9999999999999997e-106 +8.5726572465000008e196 +1.7145314493000002e197 +3.4290628986000003e197 +6.8581257972000007e197 +1.3716251594400001e198 +7.6302030000000007e-111 +6.9999999999999994e-05 +1.6999999999999998e79 +4.1728759999999996e-12 +2.0864379999999998e-12 +1.0432189999999999e-12 +5.2160949999999995e-13 +7.115174105669e-266 +1.2930709999999999e-131 +4.53021171654673e-177 +2.1188889900000002e-127 +2.88741298772861e-234 +6.974540916915501e-64 +1.41e-237 +1.3491793185782253e-38 +6.7458965928911267e-39 +3.3729482964455633e-39 +1.7704700000000002e-179 +9.9999999999999981e40 +5e40 +1e41 +2.3226026010997e-320 +2.0371901787373e131 +6.9999999999999999e141 +1.4476408093e117 +4.969e273 +4.568409839777e87 +1.2476082862699e-311 +3.6982949e-232 +1.4169999999999999e-178 +5.3537e-156 +5.9323905437000006e120 +2.1816981552000002e-65 +1.0908490776000001e-65 +5.4542453880000005e-66 +2.7271226940000003e-66 +1.3635613470000001e-66 +5.070571904013355e217 +1.014114380802671e218 +9.9999999999999991e186 +5.0000000000000005e186 +1.0000000000000001e187 +2.0000000000000002e187 +4.0000000000000004e187 +8.0000000000000008e187 +2.4418104999999998e183 +4.8836209999999995e183 +9.7672419999999991e183 +1.9534483999999998e184 +3.9068967999999996e184 +1.509846038236193e-287 +3.4000000000000003e-272 +1.7000000000000002e-272 +2.3395203051391408e236 +1.931e-139 +2.81e-150 +5.388950127e-243 +1.54013e300 +7.4881329999999993e237 +1.4976265999999999e238 +2.9952531999999997e238 +1.7413843201629998e-269 +1.71069764523e284 +1.2910330699999999e-190 +4.51829786787e-90 +1.6000000000000001e-309 +9.9999999999999694e-311 +3.3196690238619297e-129 +4.3889767542999996e-06 +2.5330718051000002e-134 +6.2383807029434206e-20 +3.1191903514717103e-20 +3.5234737495e200 +7.046947499e200 +5.1e276 +7.155362187e85 +6.6141955766179463e-188 +2.56721051018635e43 +5.1344210203727e43 +2.3e146 +2.0210000000000002e305 +4.0420000000000004e305 +3.7237707377971713e-173 +1.0492971468675725e-304 +5.2464857343378625e-305 +2.6232428671689313e-305 +4.0599448721613996e-279 +2.0299724360806998e-279 +2.772588091007e-35 +1.4149163e-237 +9.9999999999999996e-165 +7.812878489261e-167 +3.9064392446305e-167 +1.95321962231525e-167 +9.76609811157625e-168 +1.7669753e-92 +1.4587309999999999e176 +1.6782794309107597e-157 +2.6000000000000002e-277 +1.3000000000000001e-277 +3.0468152842999997e123 +1.5700000000000002e-107 +3.033837e64 +1.4525529987732648e-321 +5.2630901864813774e46 +1.0526180372962755e47 +2.8994697714000003e-234 +1.4497348857000001e-234 +5.0736134000000005e-134 +2.5368067000000002e-134 +4.96002213e-283 +1.7891960786899998e231 +3.5783921573799997e231 +9.7200000000000009e-81 +4.8600000000000005e-81 +2.4300000000000002e-81 +1.2150000000000001e-81 +1.2164181315445568e-227 +1.5790141000000002e-194 +1.0700000000000001e-214 +7.7276048866557077e153 +8.8144018938678008e-298 +4.4072009469339004e-298 +2.0000000000000001e-18 +1.0000000000000001e-18 +7.3e175 +8.8439532113775841e-93 +2.1247445359e165 +2.87665e291 +5.7533e291 +4.2272319453000004e252 +8.4544638906000008e252 +1.6908927781200002e253 +5.3523981656578655e-215 +2.6761990828289327e-215 +7.33447019e234 +1.5364497999999999e-256 +7.6822489999999993e-257 +2.069e-43 +8.8575608801e-239 +4.3208556469999996e-96 +1.3358540379900001e77 +1.45617e-29 +1.0860866871427e-183 +1.917e35 +1.9006367e-83 +2.832339919e-91 +8.6533e-242 +4.32665e-242 +6.49e160 +2.10837720719e47 +2.5573e276 +1.0000000000000001e128 +2.0000000000000002e128 +2.8148590722999997e142 +1.0089103499999999e246 +2.0178206999999998e246 +4.0356413999999996e246 +8.0712827999999992e246 +3.8496035210000004e240 +3.9422120694202386e243 +4.694014380933e-261 +3.2437e306 +5.9449753000000006e-85 +6.2134299999999994e-284 +2.44081901e270 +4.6403229999999996e59 +9.2806459999999991e59 +1.8561291999999998e60 +9.3e-233 +4.65e-233 +2.325e-233 +1.1625e-233 +1.6990000000000002e-185 +2.7809999999999997e-35 +1.1869421773e208 +9.9999999999999992e273 +1.0000000000000001e274 +2.0000000000000002e274 +3.8558880168875891e94 +7.7117760337751781e94 +8.872523767962681e-239 +8.1142999999999992e305 +1.6228599999999998e306 +4.19505315983e280 +1.8348294278310338e-263 +9.1741471391551691e-264 +1.5662077911e-20 +7.8310389555e-21 +1.7091565063e-272 +8.5457825315e-273 +1.7999999999999998e-207 +8.9999999999999992e-208 +6.36070065447217e-135 +8.2931507130707e-43 +4.14657535653535e-43 +9.6232149665590009e-258 +4.2788225889846886e224 +8.5576451779693772e224 +1.7115290355938754e225 +1.8081043937311651e-148 +9.0405219686558255e-149 +1.189164625125833e62 +3.8967801085698269e66 +7.7935602171396537e66 +1.5587120434279307e67 +3.1174240868558615e67 +6.234848173711723e67 +8.8696589927000009e-93 +1.4949016812581e-26 +4.793832500109593e-317 +9.9999999999999997e-224 +1.8489100000000002e147 +3.6978200000000004e147 +1.4570999999999999e263 +2.9141999999999997e263 +2.249771989e-62 +6.0398420598492994e-54 +6.3555900000000006e157 +6.801933e-39 +9.7930000000000009e124 +1.9586000000000002e125 +2.3e233 +7.1265570566300007e113 +1.4253114113260001e114 +8.5324361489000008e165 +1.7064872297800002e166 +3.4129744595600003e166 +3.3690715229392003e-11 +1.6845357614696002e-11 +8.4226788073480008e-12 +4.2113394036740004e-12 +2.1056697018370002e-12 +1.0528348509185001e-12 +5.2641742545925005e-13 +1.7570000000000002e82 +3.5104436900000003e228 +7.0208873800000007e228 +8.824293e140 +6.14246112227e-315 +6.2498732411941e-79 +1.9999999999999999e-77 +9.9999999999999993e-78 +3.0000011861432579e-318 +1.1656611e-233 +7.706329e-111 +3.643017240491e-235 +3.3352681668775907e163 +6.6705363337551814e163 +1.7599999999999998e-64 +8.7999999999999992e-65 +4.3999999999999996e-65 +2.1999999999999998e-65 +1.0999999999999999e-65 +5.4999999999999995e-66 +6.7e222 +1.8239221e262 +2.683e77 +6.24035e213 +1.24807e214 +3.2089999999999997e275 +3.1742366364803997e-194 +1.5871183182401998e-194 +7.9355915912009992e-195 +3.9677957956004996e-195 +3.7e293 +1.9232767000000002e181 +7.95482240073875e156 +1.59096448014775e157 +3.1819289602955e157 +6.363857920591e157 +2.529e-252 +1.19305251433339e-84 +5.96526257166695e-85 +3.2485099999999997e-45 +1.0000000000000001e69 +2.0000000000000001e69 +5.671867e-296 +5.2999999999999995e-100 +5.6122931730822035e-122 +5.747e-119 +4.8999999999999995e270 +6.43639e-17 +1.13e289 +6.6915448055204561e-129 +4.8429599999999995e-53 +2.4214799999999998e-53 +1.2107399999999999e-53 +6.0536999999999994e-54 +3.0268499999999997e-54 +1.1901274943754479e-289 +5.9506374718772394e-290 +2.9753187359386197e-290 +1.4876593679693099e-290 +7.4382968398465493e-291 +6.7000000000000006e-275 +8.6238081677124433e283 +2.6032782910000002e-190 +6.3010217868159259e-312 +6.6227671768358989e45 +5.8947315663443006e-262 +1.21e93 +2.7871851610000003e257 +5.5743703220000005e257 +2.0018999999999998e69 +9.9999999999999991e214 +5.0000000000000005e214 +1.0000000000000001e215 +2.0000000000000002e215 +4.0000000000000004e215 +8.0000000000000008e215 +1.6000000000000002e216 +5.87803e176 +4.38028495808325e168 +8.7605699161665e168 +1.7521139832333e169 +1.0545157852929036e134 +2.1090315705858072e134 +2.5858206999999998e189 +2.3899999999999998e-84 +1.1000000000000001e227 +2.2000000000000002e227 +7.21e231 +7.2014020000000007e-266 +3.6007010000000003e-266 +3.0375753734546903e297 +3.9820999999999996e302 +7.9641999999999992e302 +1.3121108300000001e220 +2.6242216600000003e220 +2.4280999999999998e-199 +2.961e-57 +1e-282 +1.0045699484615601e-223 +5.0228497423078005e-224 +2.5114248711539002e-224 +1.2557124355769501e-224 +1.9877e-49 +4.8789999999999995e-140 +2.2999999999999998e174 +1.0082932843362938e-18 +1.2229803419300001e211 +5.5251e-212 +2.8138035999999997e-122 +1.4069017999999999e-122 +7.0345089999999993e-123 +1.5453729099999999e36 +3.0907458199999997e36 +1.0009567359999999e-282 +5.0047836799999995e-283 +2.5023918399999998e-283 +1.2511959199999999e-283 +6.2559795999999994e-284 +3.1279897999999997e-284 +1.5639948999999999e-284 +7.8199744999999993e-285 +3.9099872499999996e-285 +1.9679389149681002e125 +9.9999999999999981e-137 +1e-136 +5e-137 +2.5e-137 +1.3743898377853999e-125 +6.8719491889269993e-126 +5.42669e-302 +7.129448929571475e54 +1.1934660017000001e-289 +8.6000000000000008e-273 +4.3000000000000004e-273 +8.3535999999999992e-189 +4.1767999999999996e-189 +2.0883999999999998e-189 +1.0441999999999999e-189 +5.2209999999999995e-190 +2.6104999999999998e-190 +1.6423987828473102e219 +1.7000000000000002e48 +8.9229163999999991e-93 +4.4614581999999996e-93 +2.2307290999999998e-93 +8.4000000000000008e-276 +4.2000000000000004e-276 +2.1000000000000002e-276 +1.007973e128 +9.4173852753800004e-320 +6.9127e-213 +1.916673610853e-83 +4.0196799999999996e-77 +2.0098399999999998e-77 +1.0049199999999999e-77 +5.0245999999999995e-78 +2.5122999999999998e-78 +5.2350847348787005e161 +3.0934769999999997e36 +8.8879099999999992e-152 +7.1812054883e-179 +3.59060274415e-179 +4.32204131e-214 +1.5982999999999998e157 +3.1965999999999997e157 +6.3931999999999994e157 +8.0347099999999992e69 +2.6960376100000003e77 +1.2953796209e-308 +1.4839329699999999e-57 +4.6174861400000004e-118 +2.3087430700000002e-118 +1.3585792143096437e-302 +2.6999999999999997e-69 +7.43e-204 +2.0187746542123e128 +1.8399999999999998e-176 +9.1999999999999991e-177 +4.5999999999999996e-177 +2.2999999999999998e-177 +1.1499999999999999e-177 +1.5089999988106273e-318 +1.664869447e-101 +1.4378874800000001e-178 +7.1894374000000007e-179 +3.5947187000000003e-179 +9.9999999999999998e155 +5.8523045263724994e58 +1.1704609052744999e59 +2.3409218105489998e59 +4.6818436210979996e59 +9.3636872421959991e59 +1.8727374484391998e60 +3.7454748968783996e60 +3.3088764308651433e132 +2.3819632418353863e295 +4.7639264836707725e295 +9.5278529673415451e295 +1.905570593468309e296 +3.811141186936618e296 +1.19871884077e62 +4.47026219e-93 +1.6370000000000002e306 +1.0809046790482052e-68 +5.4166900000000005e282 +1.2329142552923e124 +2.62227977e161 +3.5081000000000003e-36 +2.4953999999999998e-196 +1.2476999999999999e-196 +5.1000000000000005e99 +3.0432264001517171e-54 +1.5216132000758586e-54 +8.9440459760000009e-93 +4.4720229880000004e-93 +2.2360114940000002e-93 +1.1180057470000001e-93 +8.153585335e246 +1.630717067e247 +1.6841019415277418e-275 +8.4205097076387088e-276 +4.2102548538193544e-276 +2.1051274269096772e-276 +1.0493000000000001e162 +2.0986000000000002e162 +2.0939357800000002e-189 +1.0469678900000001e-189 +1.148929157523e115 +7.4008870160236007e-117 +3.7004435080118004e-117 +1.8502217540059002e-117 +6.9e-272 +1.0000000000000001e302 +2.0000000000000002e302 +4.0000000000000003e302 +1.8405606291e-30 +9.035717654955069e-121 +3.579578879632699e-92 +8.6925455277008092e-09 +1.48205092049e-262 +3.87310602616777e181 +9.8082100000000009e-286 +1.5e61 +3e61 +2.920784351849e-147 +3.87061367746e-316 +1.9711979622393202e-226 +9.8559898111966009e-227 +4.9279949055983005e-227 +1.5400000000000001e-228 +7.7000000000000007e-229 +2.1700000000000002e283 +4.3400000000000004e283 +1.1713e205 +9.0816820502000009e-62 +4.5408410251000004e-62 +7.2190000000000007e172 +1.4438000000000001e173 +1.217732767e93 +6.0760024703099994e-259 +3.469e-213 +3.6731e-235 +3.12150904708683e-51 +9.9031898001e-168 +3.2000000000000003e-194 +1.6000000000000001e-194 +8.0000000000000007e-195 +4.0000000000000004e-195 +2.0000000000000002e-195 +1.0000000000000001e-195 +5.0000000000000005e-196 +2.5000000000000002e-196 +7.8304110000000007e153 +1.733e-67 +5.1767304454999995e276 +1.0353460890999999e277 +2.0706921781999998e277 +4.1413843563999996e277 +8.2827687127999992e277 +7.0540726780007937e169 +1.4108145356001587e170 +2.9972788315199997e-290 +1.4986394157599999e-290 +7.4931970787999993e-291 +3.7465985393999996e-291 +1.8732992696999998e-291 +3.87e-170 +7.5429271476119e119 +1.3e-308 +1.0800000000000001e-273 +5.4000000000000005e-274 +2.7000000000000003e-274 +1.3500000000000001e-274 +5.8622761670980144e204 +1.1724552334196029e205 +2.3449104668392058e205 +4.6898209336784116e205 +9.3796418673568231e205 +6.8614182078493293e107 +3.1540000000000003e-79 +1.5770000000000001e-79 +4.419711854513601e-124 +1.2988513869969843e-162 +3.5977449529999997e113 +7.1954899059999993e113 +1.4390979811999999e114 +3.8799e181 +7.0040433999999993e-95 +3.5020216999999997e-95 +8.49699213e134 +9.9999999999999994e-50 +2.0000000000000003e-49 +1.0000000000000001e-49 +1.2037169452670051e-84 +3.7822177e-173 +5.2107000000000005e189 +3.4336989860999997e107 +5.6679999999999995e-268 +2.8339999999999997e-268 +1.4169999999999999e-268 +7.0849999999999993e-269 +1.744851e-154 +8.724255e-155 +3.1129819999999997e-110 +1.5564909999999999e-110 +1.7299999999999998e-272 +1.7853e-05 +9.97422852243e-255 +7.9630000000000008e38 +1.5926000000000002e39 +3.1852000000000003e39 +6.3704000000000006e39 +1.2740800000000001e40 +2.5481600000000002e40 +1.6900000000000002e-275 +3.33334335143253e-306 +1.0000000000000001e97 +2.0000000000000001e97 +1.9136440360100002e296 +3.8272880720200004e296 +7.6545761440400007e296 +7e197 +4.1949999999999996e103 +8.3899999999999992e103 +1.6779999999999998e104 +3.3559999999999997e104 +3.6978140800000004e-176 +1.8489070400000002e-176 +9.2445352000000009e-177 +4.6222676000000004e-177 +2.3111338000000002e-177 +1.1555669000000001e-177 +5.7778345000000005e-178 +2.8889172500000003e-178 +2.4602842934107e-286 +1.0454295818768072e-102 +1.60585e303 +3.2117e303 +1.2945406211620001e-75 +6.4727031058100006e-76 +3.5585603158124003e-64 +1.7792801579062002e-64 +8.8964007895310008e-65 +4.4482003947655004e-65 +5.395506353e164 +9.45154329437e118 +6.075427e179 +4.3637799999999996e-09 +2.1818899999999998e-09 +1.82256579610247e-61 +6.1218944178038994e-200 +1.0863357821e-68 +2.19885e255 +4.3977e255 +2.1403596295798919e47 +1.0000000000000001e243 +2.0000000000000001e243 +8.0609e-136 +5.8907497e-88 +2.8031515099999997e198 +9.9796778185339991e-109 +4.9898389092669995e-109 +3.1938589999999997e-107 +2.6821e-246 +1.1569999151872412e-177 +5.7849995759362058e-178 +7.7645263e-170 +6.2997922999110834e-138 +3.1498961499555417e-138 +1.5749480749777709e-138 +3.4564730904369997e166 +6.9129461808739993e166 +6.629246368832419e73 +2.51e-196 +6.0500000000000006e266 +1.2100000000000001e267 +2.4200000000000002e267 +4.8400000000000005e267 +9.6800000000000009e267 +1.6810421176017035e104 +3.362084235203407e104 +5.3387063980599995e-159 +2.6693531990299997e-159 +1.3161549471039999e-190 +6.5807747355199994e-191 +3.2903873677599997e-191 +1.6451936838799998e-191 +8.2259684193999992e-192 +4.1129842096999996e-192 +2.0564921048499998e-192 +1.0282460524249999e-192 +2.7100000000000003e-274 +1.1666026110700001e87 +1.10183e109 +2.554350485213e40 +2.187e-155 +1.907271e-260 +7.9999999999999993e-254 +3.9999999999999996e-254 +1.9999999999999998e-254 +9.9999999999999991e-255 +1.2884708999999999e158 +2.5769417999999998e158 +3.47e-272 +1.9056875371705998e-114 +9.5284376858529991e-115 +2.7198999999999997e-69 +2.8094230000000003e52 +2.39e90 +3.7221999999999996e-117 +1.8610999999999998e-117 +6.145071790455e151 +1.229014358091e152 +1.8531125728000002e-176 +9.2655628640000009e-177 +4.6327814320000004e-177 +2.3163907160000002e-177 +1.1581953580000001e-177 +5.7909767900000005e-178 +2.8954883950000003e-178 +1.4477441975000001e-178 +1.3e276 +1.83e290 +3.3900000000000003e-275 +1.95424622862919e-257 +2.0493351000000002e-251 +2.1282799999999998e-217 +1.0641399999999999e-217 +5.3206999999999995e-218 +4.3400000000000004e-273 +2.1700000000000002e-273 +4.63540989e-177 +5.8767043776702683e-147 +2.3634333227111998e-233 +1.1817166613555999e-233 +5.9085833067779994e-234 +2.9542916533889997e-234 +1.4771458266944999e-234 +3.6974895900000003e262 +7.7368236285112007e-83 +3.8684118142556004e-83 +1.9342059071278002e-83 +9.6710295356390009e-84 +4.8355147678195005e-84 +9.9999999999999985e-109 +1e-108 +9.861e-140 +3.0000000000000001e294 +4.2400000000000004e-276 +2.1200000000000002e-276 +1.0600000000000001e-276 +5.3000000000000005e-277 +4.4560692699999996e81 +7.9327e-226 +2.07541852595e72 +4.1508370519e72 +1.6301999999999998e-17 +8.1509999999999992e-18 +8.8000000000000008e-96 +4.4000000000000004e-96 +2.2000000000000002e-96 +1.1000000000000001e-96 +5.5000000000000005e-97 +3.236141956591e-281 +5.7000000000000005e229 +2.6116123559999998e-162 +1.3058061779999999e-162 +6.5290308899999994e-163 +5.4300000000000005e-274 +6.1667908822220006e-141 +3.0833954411110003e-141 +5.862821e291 +1.834152685964539e144 +6.6223999999999994e-132 +3.3111999999999997e-132 +1.6555999999999998e-132 +8.2779999999999992e-133 +4.1389999999999996e-133 +2.8940229649629997e114 +8.6899999999999992e-273 +1.0327607590000001e159 +2.0655215180000002e159 +5.9023899999999994e58 +1.1516423900000001e202 +6.7900000000000006e-275 +9.9999999999999998e37 +5.8017e-178 +2.24700438386623e-298 +1.123502191933115e-298 +5.617510959665575e-299 +4.9842999999999995e-168 +8.4900000000000008e-276 +1.237e211 +8.38227e190 +1.739e-272 +2.9020595400000003e-178 +1.4510297700000001e-178 +8.03e243 +1.9e-27 +9.5e-28 +7.0329999999999993e197 +1.4065999999999999e198 +5.7237e-209 +2.1740000000000002e-273 +1.0870000000000001e-273 +3.1e-82 +2.12595035219657e221 +5.4360000000000005e-274 +2.7180000000000003e-274 +1.3590000000000001e-274 +8.6979999999999992e-273 +4.3489999999999996e-273 +5.5074760119111e-97 +1.0873000000000001e-273 +8.5225149009999992e-71 +7.5368494960616907e-145 +1.66831e278 +3.7769999999999996e206 +4.3493999999999996e-273 +2.1746999999999998e-273 +5.4368000000000005e-274 +2.7184000000000003e-274 +1.3592000000000001e-274 +6.7960000000000006e-275 +3.3980000000000003e-275 +1.6990000000000002e-275 +8.4950000000000008e-276 +4.2475000000000004e-276 +2.1747399999999998e-273 +1.0873699999999999e-273 +8.699e-273 +4.3495e-273 +2.17475e-273 +5.4369000000000005e-274 +1.0874000000000001e-273 +5.4370000000000005e-274 +9.8063061771492691e239 +2.7840000000000003e-271 +1.3920000000000001e-271 +6.9600000000000007e-272 +3.4800000000000003e-272 +1.7400000000000002e-272 +8.7000000000000008e-273 +4.3500000000000004e-273 +2.1750000000000002e-273 +9.9999999999999983e183 +1e184 +1.8546444248226688e116 +9.95779191233e124 +7.198413193889e-297 +3e-57 +1.5e-57 +9.4066479276914787e146 +5.4400000000000005e-274 +2.7200000000000003e-274 +1.3600000000000001e-274 +6.8000000000000006e-275 +3.4000000000000003e-275 +1.7000000000000002e-275 +8.5000000000000008e-276 +4.2500000000000004e-276 +3.9884747808299996e-21 +5.8420000000000006e-265 +2.9210000000000003e-265 +7.675e91 +1.535e92 +3.07e92 +7.2490317617726937e113 +1.4498063523545387e114 +4.75603213226859e-28 +2.378016066134295e-28 +1.1890080330671475e-28 +3.11701e-23 +1.558505e-23 +6.1409000000000006e92 +1.0007409381937e184 +2.4885330299999998e270 +4.9770660599999995e270 +9.9541321199999991e270 +1.2712783e-78 +1.50092703e-57 +7.50463515e-58 +3.1754493000000003e67 +1.7664391000000002e-241 +5.9534526973699994e-175 +1.7177655742011998e-303 +8.5888278710059992e-304 +4.2944139355029996e-304 +1.218015659693e-25 +5.8524482479526476e232 +1.3715126880053689e-10 +9.9999999996388075e-314 +4.0000000000037427e-313 +1.0000000000132873e-313 +1.8689947866279998e-117 +9.3449739331399991e-118 +4.6724869665699996e-118 +1.377891022779e49 +6.492790319e-281 +5.5900000000000005e80 +1.1180000000000001e81 +2.2360000000000002e81 +3.00122913618027e89 +5.596259556939e-66 +1.0180000000000001e-77 +5.0900000000000005e-78 +1.921e91 +7.6099999999999993e119 +1.5219999999999999e120 +2.4358004531e121 +8.4146492629e44 +2.1037301e44 +8.37e131 +1.0900000000000001e-273 +6.4622790000000006e-194 +9.9999999999999981e-168 +1e-167 +5e-168 +2.5e-168 +3.3053769999999997e-45 +5.1100000000000005e127 +3.63477e-33 +1.2832926999999999e186 +5.0288422299999995e-255 +1.3e-280 +2.6370662670000002e-249 +5.0248099999999995e-109 +3.4567591673919997e-244 +1.7283795836959998e-244 +8.6418979184799992e-245 +4.3209489592399996e-245 +2.1604744796199998e-245 +1.0802372398099999e-245 +5.4011861990499995e-246 +2.7005930995249997e-246 +2.0235750000000002e302 +4.0471500000000004e302 +8.0943000000000008e302 +1.6188600000000002e303 +3.2377200000000003e303 +6.4754400000000006e303 +1.2950880000000001e304 +2.5901760000000002e304 +3.8806222581e209 +8.7386952999999992e224 +2.4306520000000002e-84 +1.2153260000000001e-84 +6.0766300000000006e-85 +4.7121609999999996e292 +9.9999999999999991e-22 +1.6000000000000002e-20 +8.0000000000000008e-21 +4.0000000000000004e-21 +2.0000000000000002e-21 +1.0000000000000001e-21 +5.0000000000000005e-22 +2.5000000000000002e-22 +4.5440575e112 +9.088115e112 +1.817623e113 +6.1592819349999994e92 +1.2318563869999999e93 +2.4637127739999998e93 +4.9274255479999995e93 +1.9e-86 +2.2216320109339998e-37 +1.1108160054669999e-37 +1.354635859e105 +4.04143925169593e-49 +1.114640765e168 +2.22928153e168 +1.2767694300000001e-224 +2.5730679080711e40 +3.1075393307619497e210 +6.2150786615238994e210 +1.2430157323047799e211 +2.4860314646095598e211 +4.9720629292191195e211 +9.9441258584382391e211 +4.9300000000000005e93 +9.9999999999999992e124 +1.9999999999999998e125 +5.3337715879e-277 +7.0000000000000006e225 +1.4000000000000001e226 +2.8000000000000003e226 +5.6000000000000005e226 +9.4252867652599991e-205 +4.7126433826299996e-205 +5.56409e-184 +2.6449999999999998e248 +5.2899999999999995e248 +1.0579999999999999e249 +2.1159999999999998e249 +4.2319999999999996e249 +2.1000000000000002e-15 +2.05511726349e-310 +1.6604275632819959e306 +1.6585060000000002e-191 +8.2925300000000008e-192 +2.3069022666909998e143 +4.6138045333819996e143 +1.7373411488999998e-39 +2.3e-62 +3.901e-229 +1.003e-167 +4.8763993686900005e-230 +4.5172572617e-152 +4.49785162097e-211 +6.6884053492877006e73 +9.9999999999999995e270 +1.0000000000000001e271 +6.270109171009e-169 +3.1350545855045e-169 +4.1899224150309996e-220 +5.5999999999999995e-271 +2.7999999999999997e-271 +1.3999999999999999e-271 +6.9999999999999993e-272 +3.4999999999999997e-272 +5.3869999999999995e-159 +3.4704906602899997e253 +3.1261e269 +8.9038453209999992e-37 +2.050958976207763e128 +3.7631386895137571e234 +7.2722687908631934e-238 +6.1332518769699e-318 +6.0420767461502263e-203 +5.831446072237e114 +2.709612507e-246 +4.1e274 +1.93e91 +5.3806957410630705e133 +8.54386669e-130 +3.3992640000000003e-42 +1.6996320000000002e-42 +8.4981600000000008e-43 +4.2490800000000004e-43 +2.1245400000000002e-43 +1.0622700000000001e-43 +9.9999999999999992e-227 +2.0000000000000002e-226 +1.0000000000000001e-226 +2.157029e-158 +7e-126 +5.187939215773e-47 +9.3071557677110009e-90 +1.1e-214 +4.137829457097561e-251 +1.0300000000000003e-310 +1.8499999999999998e144 +3.6999999999999997e144 +7.3999999999999993e144 +1.4799999999999999e145 +6.390935023893e67 +2.1962228498531e78 +3.435831059157211e-70 +2.829818734842879e-153 +9.9999999999999996e-81 +2.213321e-301 +4.0093e271 +1.7388100000000002e253 +3.4776200000000003e253 +8.3e100 +1.559469e210 +1.9659999999892656e-316 +1.0341448984570474e-105 +5.1707244922852368e-106 +2.661830213179e-190 +6.89e281 +2.7591951497102303e136 +5.5183902994204605e136 +6.81e-42 +2.3833922899999998e59 +4.7667845799999996e59 +9.5335691599999991e59 +3.9856000000000004e-139 +1.9928000000000002e-139 +9.9640000000000009e-140 +4.9820000000000005e-140 +2.4910000000000002e-140 +1.2455000000000001e-140 +6.2275000000000006e-141 +3.240990377e244 +1.7304716560519528e-303 +8.6523582802597638e-304 +1.4284421e-35 +7.1422105e-36 +3.57110525e-36 +9.9999999999999995e65 +1.0000000000000001e66 +1.16038315291e-149 +1.064567399e-43 +5.685269209e52 +1.4618182687e114 +4.5e227 +9e227 +2.8739501618509997e-122 +1.8633758914622302e57 +4.4465908125712189e-323 +2.0623057e-164 +1.03115285e-164 +1.4750487657883e232 +1.6986820790087e-247 +8.4934103950435e-248 +1.2739812556999999e155 +4.63e289 +1.1751e174 +5.0909156624739695e301 +1.0181831324947939e302 +2.0363662649895878e302 +1.5220966600000001e-144 +7.6104833000000007e-145 +9.5555136977555621e-87 +1.09807193617703e-273 +5.02149e270 +1.4287e111 +4.9999999999999995e211 +9.9999999999999991e211 +1.9999999999999998e212 +3.9999999999999996e212 +7.9999999999999993e212 +1.5999999999999999e213 +2.09723e218 +1.40749e226 +3.97e-52 +3.9109275420487e63 +6.0000000000000005e-29 +3.0000000000000003e-29 +8.0700000000000164e-313 +1.24210079279359e-199 +2.077423747345241e246 +7.49263e116 +6.925867e-157 +9e-270 +3.3751123729999997e132 +5.4115693508734163e-159 +7.334617561626053e-179 +3.7233633432801e-294 +1.86168167164005e-294 +1.9400000000000002e-55 +9.7000000000000009e-56 +3.15119777e-169 +2.0831211632600002e-46 +1.0415605816300001e-46 +6.3176206278490356e182 +1.2635241255698071e183 +2.5270482511396142e183 +5.0540965022792285e183 +1.0108193004558457e184 +2.3869227591089e205 +3.0617621739409e-85 +1.9999999999999998e-285 +9.9999999999999989e-286 +1.5e117 +3e117 +6.9483495172411535e194 +1.3896699034482307e195 +2.9807671560409993e-293 +1.6603968540889998e-104 +2.0488280003e-282 +2.2000000000000002e-273 +1.1000000000000001e-273 +1.1825485700000001e233 +1.64462243e-76 +3.8628999999999996e32 +7.7257999999999993e32 +1.391993721e49 +3.17162423e-256 +1.585812115e-256 +1.8585679e144 +7.0058620000000007e-185 +3.5029310000000003e-185 +2.8296838129491319e-212 +1.414841906474566e-212 +8.025937494511e66 +9.9999999999999984e-140 +1e-139 +4.021873805777867e-226 +7e-39 +3.5e-39 +2.3137602866499998e84 +4.6275205732999996e84 +9.2550411465999991e84 +1.8510082293199998e85 +3.7020164586399997e85 +2.0374017129299998e-49 +1.5132260000000001e-262 +7.5661300000000007e-263 +3.7150000000000003e290 +7.4300000000000007e290 +1.4860000000000001e291 +2.9720000000000003e291 +6.43730301271e-225 +6.82429e250 +3.7e231 +1.6917485e132 +3.383497e132 +7.7013000000000007e-27 +2.8999999999999997e-209 +1.5521000000000001e238 +3.1042000000000003e238 +6.2084000000000006e238 +1.0678958299999999e103 +2.1357916599999998e103 +1.7439804039999998e-98 +8.7199020199999992e-99 +4.3599510099999996e-99 +2.1799755049999998e-99 +1.6440582049100002e216 +3.2881164098200003e216 +6.5762328196400006e216 +1.3152465639280001e217 +2.6304931278560002e217 +1.1963799094729999e205 +1.1299999999999999e227 +2.2599999999999998e227 +5.0777494203999995e-109 +2.5388747101999998e-109 +1.2694373550999999e-109 +5.7230221e-240 +3.4708777729999997e-11 +1.2709375189000001e-255 +4.12039e-77 +1.4687115536370001e114 +2.9374231072740003e114 +1.30159e-252 +1.553540022537e238 +5.3318389238082765e-249 +2.6659194619041382e-249 +1.3329597309520691e-249 +6.6647986547603456e-250 +1.63253e-48 +8.689259073229e-158 +6.8999999999999994e222 +1.3799999999999999e223 +2.7599999999999997e223 +5.5199999999999995e223 +1.1390000000000001e-152 +1.5589e-200 +7.1358584886494781e197 +3.5947187e-182 +1.25e152 +2.5e152 +5e152 +1e153 +3.297937963e-76 +8.9596355967381008e255 +3.69e172 +2.9999999999999999e-88 +1.1371e140 +7.8565197045300007e63 +1.5713039409060001e64 +3.1426078818120003e64 +6.2852157636240006e64 +1.82741e200 +1.1898937858559281e-205 +5.9494689292796404e-206 +3.1e33 +2.4300000000000002e236 +7.8179259957183994e150 +1.6771909999999998e306 +2.9e83 +3.7e-120 +5.9263601166189406e-265 +2.9631800583094703e-265 +1.917327e206 +2.8507457967999997e-153 +1.4253728983999999e-153 +7.1268644919999993e-154 +3.5634322459999997e-154 +1.7817161229999998e-154 +4.4212818100000004e224 +8.8425636200000008e224 +1.7685127240000002e225 +3.5370254480000003e225 +1.0000000000000001e299 +5.109183653900897e-50 +3.0000000000000002e58 +6.0000000000000005e58 +5.783893e-122 +2.8919465e-122 +1.44597325e-122 +7.22986625e-123 +2.827173e-271 +3.5307151591099997e-126 +6.626940377791e129 +2.920784351849e-150 +2.7174242416920097e-13 +1.506900219815802e-321 +7.6015851397020693e234 +1.5203170279404139e235 +3.0406340558808277e235 +3.5554384932730003e284 +6.35806667e36 +7.9999999999999993e-198 +3.9999999999999996e-198 +1.9999999999999998e-198 +9.9999999999999991e-199 +4.9999999999999996e-199 +9.36419e-295 +2.0708810099e274 +1.3600260000000001e-13 +6.8001300000000006e-14 +1.8732992697e-294 +9.3664963485e-295 +1.9835376999999985e-316 +1.2999999999999812e-311 +2.7000000000000003e-277 +1.14988383995937e258 +3.1000000728615262e-318 +3.79295e29 +7.5859e29 +3.85941e265 +3.6371e-64 +1.81855e-64 +1.2699999999985945e-314 +8.9e283 +4.25721616601e-161 +3.3116149164760003e-222 +1.6558074582380002e-222 +8.2790372911900008e-223 +5.6471e167 +1.8604316837693472e85 +3.7208633675386943e85 +2.3405927753939998e-149 +1.1702963876969999e-149 +3.8682727901e-27 +1.5441823e266 +1e-52 +5e-53 +2.108476850679e-133 +2.9546287000000003e-178 +3.4396650387951103e-188 +5.398101337926721e-131 +2.150167e-189 +1.3792299999999999e164 +8.9999999999999992e109 +1.38523555713595e223 +2.7704711142719e223 +2.0417999999999998e-254 +1.0208999999999999e-254 +5.0940527102367005e37 +1.0188105420473401e38 +1.7410595857e135 +1.928699e-232 +2.27e227 +3.3315253e-309 +7.21091881981e-36 +6.0296171e-234 +4.575943e-152 +5.2650000000000005e158 +1.0530000000000001e159 +2.1060000000000002e159 +4.2120000000000004e159 +8.4240000000000008e159 +1.09e-12 +7.7036103379599707e60 +1.5407220675919941e61 +1e94 +1.4211e80 +7.02968642463e253 +4.3514085471273e280 +5.392484808362099e161 +2.4181049277838519e118 +4.8362098555677038e118 +9.6724197111354077e118 +7.87184308801e-288 +3.935921544005e-288 +5.75291e-240 +2.45e295 +4.9e295 +1.537647650745823e-290 +3.527231087149503e-185 +1.7224643405760002e-188 +8.6123217028800008e-189 +4.3061608514400004e-189 +2.1530804257200002e-189 +1.0765402128600001e-189 +5.3827010643000005e-190 +2.6913505321500002e-190 +1.3456752660750001e-190 +9.0793787962999992e-270 +3.8453e-291 +6.1269182999999994e294 +1.2253836599999999e295 +7.32674396659e-151 +2.0560999999999998e302 +1.908639943e88 +3.4832576619793269e281 +7.28864401e-64 +3.6016739249e256 +2.42208979371e-28 +5.5072841889475953e-41 +2.7536420944737977e-41 +1.3768210472368988e-41 +3.0217e263 +6.07634139e176 +2.09e41 +2.9573e-32 +9.9999999999999983e239 +1e240 +3.33e-17 +1.2011978000000001e-146 +6.0059890000000006e-147 +7e-303 +5.0724941e270 +4.5099999999999996e109 +3.5695015373e284 +1.4700061249259e201 +2.6999999999999998e161 +5.3999999999999995e161 +1.361776451e279 +2.9847969100000003e86 +6.0999999999999994e-262 +3.7478020908807e144 +5.4719599999999995e-305 +2.7359799999999997e-305 +1.3679899999999999e-305 +6.8329999999999994e-160 +2.1103637759e159 +9.1926063057e199 +1.066713929947e-15 +3.978104352521e-170 +4.5086423936952017e255 +1.793647129e-300 +2.46261283431e-143 +9.9999999999999998e-258 +6.2237400000057243e-318 +7.9e209 +1.735385520955739e-275 +5.5182318842363e-41 +5.3658316856075995e-103 +2.6829158428037998e-103 +1.3414579214018999e-103 +6.7072896070094994e-104 +4.65905917e-267 +3.97319603988043e122 +3.3399999999999997e-163 +1.6699999999999998e-163 +7.7523625384329007e265 +7.9999999999999992e-111 +3.9999999999999996e-111 +1.9999999999999998e-111 +9.999999999999999e-112 +4.9999999999999995e-112 +5.41e161 +4.79e-59 +2.1273351550919998e-74 +1.0636675775459999e-74 +5.3183378877299995e-75 +2.6591689438649998e-75 +1.40777391141e-97 +9.8747378511842183e-289 +3.6517703e82 +5.7000000000000005e226 +2.5017022000000002e-112 +1.2508511000000001e-112 +1.4283e-66 +6.0697501299999994e117 +1.2139500259999999e118 +2.4279000519999998e118 +4.8558001039999996e118 +1.1689999999999999e84 +2.3379999999999998e84 +8.6816790969999992e-130 +1.3406335577e189 +2.4809058675769998e-230 +1.82489082547e228 +9.9999999999999997e34 +2.2837326650764833e81 +1.1859401316504298e115 +3.0000000000000002e-206 +1.9014761999999998e-176 +9.5073809999999991e-177 +1.6038410000000001e-256 +6.1920694885899994e61 +1.2384138977179999e62 +3.0962683e61 +2.4558103212072402e-56 +1.2279051606036201e-56 +6.1395258030181006e-57 +3.0697629015090503e-57 +3.0698303e-57 +1.3899999999999999e-128 +9.5839517000000009e87 +2.2123496774437202e-40 +1.1061748387218601e-40 +5.5308741936093005e-41 +2.7654370968046503e-41 +1.0259999999999999e-108 +5.1299999999999995e-109 +1.5208652699047e-29 +9.9999999999999992e180 +1.9999999999999998e181 +3.9999999999999997e181 +7.9999999999999993e181 +4.3138179003523407e249 +3.2838494072899997e-107 +1.2300000000000001e-202 +1.3009839436919999e-78 +6.5049197184599994e-79 +3.2524598592299997e-79 +4.389e-158 +3.924269455e237 +7.84853891e237 +8.3e-282 +4.15e-282 +5.0392908081056005e-199 +2.5196454040528002e-199 +1.2598227020264001e-199 +6.2991135101320006e-200 +3.1495567550660003e-200 +1.5747783775330001e-200 +7.8738918876650007e-201 +3.9369459438325004e-201 +1.202973515e292 +2.40594703e292 +3.1975324653e-315 +4.8596138890536455e264 +1.77e107 +2.3e-06 +2.2075579e-245 +8.3400399999999992e-223 +4.1700199999999996e-223 +2.0850099999999998e-223 +2.6661683e-75 +7.809646257248e-319 +1.263557679e152 +9.9999998365971443e-317 +3.4109807877329997e73 +6.8219615754659994e73 +2.0661265500470002e-195 +5.1e270 +5.804127e111 +1.8999999999999998e262 +1.3057846999999999e273 +2.6115693999999998e273 +8.0829000000000007e299 +6.557449013e-312 +5.768281e-299 +7.64375654123219e175 +2.95052405621e-150 +3.4500439e-101 +1.925579139e-204 +2.60986121847091e-224 +4.1000000000001308e-313 +2.0500000000000654e-313 +1.0250000000000327e-313 +8.4161538867545191e41 +9.9999999999999998e-171 +3e232 +1.00543149e-257 +5.02715745e-258 +1.8630708000000002e-179 +9.3153540000000009e-180 +4.6576770000000004e-180 +2.3288385000000002e-180 +5.1497990000000005e-255 +3.1980999999999997e-23 +2.75353830910021e-305 +3.2655715595140003e-225 +1.6327857797570001e-225 +4.9353136437e-202 +9.9999999999999992e-25 +2.0000000000000002e-24 +1.0000000000000001e-24 +2.296118324347e-65 +3.5e76 +7e76 +1.1507014370242236e286 +1.3585146099999999e307 +3.0067198061490003e86 +6.4223299999999994e182 +1.6999999999999998e160 +2.0752369999999998e156 +3.31e-48 +2.6059041000000002e214 +5.2118082000000005e214 +5.7430963e-66 +2.87154815e-66 +1.4234351710650799e-184 +7.1171758553253993e-185 +3.5585879276626997e-185 +1.7792939638313498e-185 +9.6679741651533e146 +2.6260966107e-165 +1.31304830535e-165 +3.057267761e-175 +1.774102081e253 +5.6223991490582105e282 +3.6730000000000003e82 +7.5055421591419e-266 +5.0000000000000001e121 +1e122 +9.9999999999999983e121 +1.069186417e72 +1.7015473436010102e160 +1.55239e-290 +7.76195e-291 +7.4196899999999993e54 +5.9616464991699995e114 +1.8711341710861098e172 +3.7625488254104506e85 +2.1e-18 +9.0586537825900008e50 +3.4116796710916997e-132 +7.3989345799999993e-151 +3.6994672899999997e-151 +1.721e-14 +2.0339999999999998e-139 +1.0169999999999999e-139 +3.0214826536999997e291 +2.570000000001046e-314 +6.6814047693263936e216 +9.9999999999999997e267 +9.36427e171 +1.4000000000000001e-274 +7.0000000000000007e-275 +2.1925499999999998e75 +4.3850999999999996e75 +8.7701999999999992e75 +1.7540399999999998e76 +3.5080799999999997e76 +7.9e91 +1.2172556868524211e59 +7.1471457700000007e166 +1.4294291540000001e167 +1.0512786427000001e-18 +6.16613219e235 +2.7351077053169997e-277 +1.019e-285 +2.6005895338999998e155 +5.2011790677999995e155 +1.0402358135599999e156 +8.2443e184 +6.399e-228 +1.9999999999999998e-229 +9.9999999999999989e-230 +8.17501235309e66 +5.7719401197300005e285 +5.5362128372999995e192 +1.3883921399999999e-246 +6.9419606999999994e-247 +1.7021752999999998e-191 +2.4189999999999998e-205 +2.5424670000000002e152 +2.2999999999999998e227 +1.7795978821700002e253 +3.5591957643400003e253 +2.76009279888989e-13 +8.1030000000000007e94 +1.1136697300000001e106 +2.2273394600000002e106 +4.30399527591e277 +4.0999999999999996e-226 +1e-83 +5.3511552596382995e-280 +4.9520000000000005e-56 +2.4760000000000002e-56 +1.2380000000000001e-56 +6.1900000000000006e-57 +3.0950000000000003e-57 +9.8294360240116e-320 +6.11823371e263 +2.2766769e-242 +2.6450000000000002e40 +5.2900000000000005e40 +1.0580000000000001e41 +2.1160000000000002e41 +1.00261e268 +6.6416652999999994e98 +8.9817109e-273 +1.308586321453e214 +3.09e235 +2.6399999999999998e-311 +6.4045299999999994e-82 +1.08859e103 +2.853825616527e108 +1.7158107829999998e219 +1.6865029999999998e-17 +8.8718152093699992e193 +1.7743630418739998e194 +5.311e245 +2.2299520120153948e106 +4.4599040240307896e106 +8.9198080480615792e106 +1.7839616096123158e107 +9.9999999999999988e62 +5.6671666573644005e-156 +2.8335833286822003e-156 +1.4167916643411001e-156 +7.0839583217055006e-157 +8.31e97 +1.2476200000000001e-289 +6.2381000000000006e-290 +1.3083e-283 +1.57e120 +3.0500000000000003e204 +6.1000000000000006e204 +1.2200000000000001e205 +2.4400000000000002e205 +3.1675699999999997e238 +6.3351399999999994e238 +1.2670279999999999e239 +7.3044953000000007e256 +1.4608990600000001e257 +1.8458957509e82 +1.7604043300000002e76 +1.3709e-131 +6.8545e-132 +6.73e-222 +3.365e-222 +2.5103159208499998e267 +5.0206318416999995e267 +1.0041263683399999e268 +2.0082527366799998e268 +4.0165054733599996e268 +8.0330109467199993e268 +6.6369999999999994e-253 +4.3308921999999996e-307 +2.1654460999999998e-307 +5.0050000000000005e62 +1.0010000000000001e63 +2.0020000000000002e63 +4.0040000000000004e63 +8.0080000000000007e63 +2.1541502000000002e-220 +1.0770751000000001e-220 +1.0000000000000001e209 +2.0000000000000001e209 +4.0000000000000003e209 +9.026591e-68 +6.696327e-135 +5.3747044391300005e71 +3e-32 +5.42233575435627e189 +6.3405597611500006e238 +1.2681119522300001e239 +2.5362239044600002e239 +5.0724478089200005e239 +9.0000000000000008e-273 +3.6472744807074059e-95 +1.823637240353703e-95 +9.1181862017685148e-96 +4.5590931008842574e-96 +2.2795465504421287e-96 +1.5818931161633901e-113 +4.3626803456699996e103 +8.7253606913399992e103 +1.1735617206991321e-180 +5.8678086034956605e-181 +2.9339043017478303e-181 +3.1e89 +6.5645179969330963e67 +2.0384072766999998e299 +4.3960189953100004e-276 +2.5157225308227851e121 +5.0314450616455701e121 +1.741927646231e-247 +3.47357213e191 +4.24462617717441e41 +9.9999999999999988e-289 +4.4702344453699996e106 +4.2818299999999996e159 +8.5636599999999992e159 +3.5647194214897697e-98 +1.6709000000000002e303 +7.0000000000000006e-188 +6.29889e-26 +1.04549851581e156 +5.388425589271e-75 +4.4334046681299996e-12 +1.9187369231634097e262 +1.1000000000000001e-276 +6.7366467983121965e-76 +2.9886970688990903e55 +5.9773941377981805e55 +1.0180610000000001e-52 +9.7833297959115265e205 +1.9566659591823053e206 +2.5260380833e-317 +1.26301904165e-317 +3.34407994535973e303 +7.1196516389999994e194 +1.4239303277999999e195 +1.5996716908306001e-141 +7.9983584541530007e-142 +5.60437744762121e-187 +1.613728999800523e-23 +6.0901818845917851e145 +1.218036376918357e146 +1.034961540581e-313 +9.9788131000000009e149 +1e-142 +2.9999999999999998e260 +2.021683816823497e-316 +5.5641e192 +8.3008016770000008e38 +1.5597180094776187e148 +5.8483999999999995e-94 +2.9241999999999997e-94 +1.4620999999999999e-94 +7.3104999999999993e-95 +1.06034587681e-310 +2.1772429999999998e44 +4.6310000000000004e81 +3.337e98 +3.5750649878476403e-244 +1.7875324939238202e-244 +8.9376624696191008e-245 +4.4688312348095504e-245 +1.06789583e100 +5.2708997081451691e-78 +2.6354498540725846e-78 +1.3177249270362923e-78 +6.5886246351814614e-79 +3.2943123175907307e-79 +1.6471561587953654e-79 +8.2357807939768268e-80 +7.1367285206222695e48 +1.4273457041244539e49 +8.027e209 +2.7758158057e-13 +1.1297321757041653e224 +5.898522725e170 +1.179704545e171 +2.35940909e171 +5.5596547629820995e-159 +4.1116500000000004e212 +8.2233000000000007e212 +1.6446600000000001e213 +3.2893200000000003e213 +6.0037602273e-237 +1.9778929999962623e-319 +1.6884400000000002e-76 +8.4422000000000008e-77 +4.2211000000000004e-77 +1.1704116687998999e53 +9.9999999999999998e149 +1.3248999999999999e-19 +1.2419e-261 +4.4551696927894738e-304 +2.2275848463947369e-304 +1.4869231436999999e-209 +5.8596248243167995e-94 +2.9298124121583997e-94 +1.4649062060791999e-94 +7.3245310303959993e-95 +3.6622655151979997e-95 +1.8311327575989998e-95 +9.1556637879949992e-96 +4.5778318939974996e-96 +4.6278599999999996e-270 +2.3139299999999998e-270 +1.43706647482607e-38 +4.1963192471713127e156 +5.51218219e-131 +5.6521710699999995e-274 +2.6952422929999998e-280 +7.6526878048999993e-148 +5.2817858539999995e-78 +2.6408929269999998e-78 +9.9999999999999998e295 +3.0323194141702003e-119 +1.5161597070851001e-119 +9.8407902054372507e-87 +2.3386207156368502e-298 +1.1693103578184251e-298 +5.8465517890921255e-299 +2.9232758945460627e-299 +1.4616379472730314e-299 +8.0621133290783e-83 +2.1000000000000002e156 +4.2000000000000004e156 +5.469298957e-249 +3.0036521000000003e-91 +2.2795559763421418e-09 +1.1397779881710709e-09 +2.75305e161 +5.5061e161 +1.6749e-48 +1.1928227733909999e289 +2.3856455467819998e289 +4.7712910935639996e289 +1.70264166987288e-309 +1.04166211811e38 +9.71212611e-118 +4.856063055e-118 +2.4280315275e-118 +1.21401576375e-118 +6.2365e89 +1.2473e90 +9.9999999999999995e-202 +1.0000000000000001e-201 +4.479502283e-99 +3.6030000000000003e-185 +2.9999999999999997e201 +5.9999999999999994e201 +2.11121e215 +5.1824133899999995e124 +7.9341507999999941e-319 +1.3000000000024515e-314 +1.0999999999999999e-189 +3.35e98 +6.7e98 +8.21459894743919e153 +1.0401200000000004e-313 +7.24144285831567e-126 +9.200338935e255 +1.840067787e256 +2.27081e78 +3.17227e-172 +9.9999999999999999e-56 +5e-56 +1.909495928790331e-207 +2.80923360912986e251 +5.6184672182597199e251 +1.123693443651944e252 +3.9834043336219296e-114 +6.326350886056753e266 +3.2602715047e36 +3.378160938735837e-281 +5.1548559172119695e-286 +6.948856876393403e-219 +1.2133927e174 +4.699e53 +2.1050809e156 +7.5348143e-238 +5.3100000000000005e273 +2.2342000000000002e-158 +1.1171000000000001e-158 +7.0969999999999994e222 +7.2995710000000007e284 +3.6065870000000003e-39 +3.6613309967060897e-154 +4.9999999999999995e90 +9.999999999999999e90 +1.9999999999999998e91 +3.9999999999999996e91 +4.652123279e227 +7.0000000000000007e191 +1.4000000000000001e192 +3.7745845210299997e259 +8.2646854999999993e212 +1.6529370999999999e213 +3.3058741999999997e213 +6.6117483999999994e213 +1.3223496799999999e214 +8.1418100000000264e-316 +5.5060524083999995e-44 +2.7530262041999998e-44 +1.3765131020999999e-44 +6.8825655104999994e-45 +9.3996010000000008e199 +3.7802792398700003e113 +4.9870050099999995e-115 +2.2269208999999998e-217 +5.4965100000000005e248 +4.9238963068633e-292 +9.9999999999999994e236 +1.0000000000000001e237 +1.415e164 +2.83e164 +5.76529e254 +0.0012000000000000001 +0.00060000000000000006 +0.00030000000000000003 +0.00015000000000000001 +1.981383881e265 +3.2673208500000003e36 +6.5346417000000006e36 +1.3069283400000001e37 +2.6138566800000002e37 +2.5500000000000002e180 +5.1000000000000005e180 +1.0200000000000001e181 +2.0400000000000002e181 +1.5099999999999999e-237 +4.4431069999999996e221 +2.8900000000000003e-38 +5.052370233156689e208 +1.3708936087625e43 +2.741787217525e43 +5.48357443505e43 +1.09671488701e44 +3.294377342467759e300 +8.6723380831959e-279 +3.507070291164563e191 +7.014140582329126e191 +1.3969e133 +9.9999999999999996e-261 +1.8649509240219228e228 +3.7299018480438457e228 +7.4598036960876913e228 +1.4919607392175383e229 +2.9839214784350765e229 +5.9678429568701531e229 +1.1935685913740306e230 +3.0000000000000003e142 +6.0000000000000006e142 +7.9922048999191459e-114 +2.582664293439e-140 +1.2913321467195e-140 +6.5631995201769994e241 +3.0300879535430726e114 +7.4951436439349657e287 +1.4990287287869931e288 +2.9980574575739863e288 +5.9961149151479725e288 +1.1992229830295945e289 +1.1e-248 +3.060061609774469e86 +9.462292809703991e258 +7.1798677295269936e-303 +3.5899338647634968e-303 +4.3457397e218 +2.8539785187222343e-69 +1.4269892593611171e-69 +1.0282716219999999e-52 +5.1413581099999995e-53 +1.2035423057050555e-149 +3.5183937795734584e-101 +1.0000000000000001e-114 +8.7114243600000008e-74 +4.3557121800000004e-74 +2.1778560900000002e-74 +1.0889280450000001e-74 +3.8520923899999997e-148 +1.1848100000000001e112 +1.4604239000000001e80 +2.9208478000000003e80 +5.8416956000000005e80 +1.58876128934125e266 +3.1775225786825e266 +6.355045157365e266 +1.271009031473e267 +7.9e-291 +5.1e-171 +1.89e-92 +1.3724273247000001e189 +2.7448546494000002e189 +1.207312335e202 +2.41462467e202 +1.4913241380821e-122 +3.2794844605267158e-110 +4.19821601e-108 +2.099108005e-108 +9.9999999999999987e31 +5.545756632515e161 +1.109151326503e162 +4.962479019267e-233 +2.4737843e205 +1.8831724000000002e-151 +9.4158620000000008e-152 +4.7079310000000004e-152 +4.3102225487e246 +5.4699999999999995e130 +1.9900666965167315e119 +3.980133393033463e119 +7.1486324386269994e-70 +1.31440623e-255 +4.3780211227448287e131 +2.1285811284499998e69 +4.2571622568999996e69 +8.5143245137999992e69 +1.7028649027599998e70 +3.4057298055199997e70 +6.8114596110399994e70 +1.6205809999999999e-287 +7.7948616784856993e-176 +1.0000000000000001e178 +7.1900000000000006e-157 +1.2870106699182143e93 +3.21045667e-259 +2.83033055797003e105 +3.0000000000000003e-63 +3.10206969364311e-88 +1.551034846821555e-88 +2.3900000000000002e-121 +1.5563067843999266e-321 +5.5e189 +1.1e190 +1.9000000000000002e113 +2.7292566454060002e-75 +1.3646283227030001e-75 +1.743127952723e219 +8.2407265348999993e94 +1.1684923089999999e-270 +1.67877665903493e185 +1.01798605697e-229 +2.11e97 +9.2599796089585292e-242 +3.80585737e-33 +1.3800823e-249 +3.21006523e-113 +1.605032615e-113 +1.51757e-237 +4.0000048752953161e-319 +3e83 +3.0689529999999997e232 +4.5292765e252 +9.058553e252 +9.9998886718268301e-320 +5.7170000000000005e223 +2.3163140344553e-242 +3.0037909017275159e-63 +1.5018954508637579e-63 +7.5094772543187897e-64 +2.8125999999999997e-159 +1.4062999999999999e-159 +9.5e258 +1.9e259 +1.1e-307 +5.5e-308 +1.041329e66 +5.9000000000000005e-153 +7.368108517543e-08 +7.5050000000000007e82 +1.5010000000000001e83 +3.0020000000000003e83 +6.0040000000000005e83 +1.2008000000000001e84 +2.6952590822999998e-106 +1.011862861e150 +2.69e186 +6.660242475e213 +1.332048495e214 +2.66409699e214 +9.692059951833977e202 +1.6959746108988648e303 +3.3919492217977297e303 +6.7838984435954594e303 +1.3567796887190919e304 +1e-173 +4.7430000000000004e-93 +4.81e-62 +2.405e-62 +6.6330413909999994e154 +1.3266082781999999e155 +7.27e-39 +1.7981899999999998e135 +4.8953000000000004e174 +2.0935593651e125 +4.2595299999999996e-282 +6.9043961789699994e-104 +2.674061e-224 +6.267088760899e176 +8.0132507098991777e-319 +1.8066872547703e194 +1.1699999999999999e-124 +2.6980000000000002e-106 +1.3490000000000001e-106 +1.1403975471792899e165 +1.72126288e-309 +3.9690898338058404e-291 +1.9845449169029202e-291 +9.9227245845146009e-292 +4.9613622922573004e-292 +2.4806811461286502e-292 +6.3931684999999994e120 +1.2786336999999999e121 +2.5572673999999998e121 +5.1145347999999995e121 +1e-27 +2.669998859e68 +7e73 +2.3999999999999998e-267 +1.1999999999999999e-267 +5.9999999999999995e-268 +2.9999999999999997e-268 +1.4999999999999999e-268 +8.6663468664954429e100 +1.54275433e-206 +9.5492778344630009e-180 +3.3711524300000003e39 +3.66717e225 +2.9115999999999997e-38 +1.4557999999999999e-38 +7.2789999999999993e-39 +7.0787e-101 +3.53935e-101 +8.4577319659990992e243 +1.6915463931998198e244 +5.1899999999999995e152 +3.3e-256 +8.8999999999999992e-189 +9.9999999999999994e118 +1.0000000000000001e119 +2.7996946389000003e220 +1.3580945490000001e-193 +1.471083016199e-66 +2.57150499883061e180 +3e-122 +2.524898250901e90 +2.679e-224 +8.399969e-21 +5.1269957632473e-25 +6.6842637673000006e67 +9.0393299382385395e-304 +1.2751403699999999e62 +1.43869133089e-215 +9.45e140 +1.89e141 +2.68867e-19 +9.11e-40 +4.2792571369105361e69 +1.4850505093e52 +6.5598500000000006e123 +1.3119700000000001e124 +2.6239400000000002e124 +5.2478800000000005e124 +1.0495760000000001e125 +9.9999999999999989e264 +1.9999999999999998e265 +2.585e239 +5.17e239 +1.365443919181e-134 +6.0703841492707629e-296 +3.0351920746353814e-296 +2.0545997e-170 +2.44674799e-31 +3.9663e147 +7.0000000000000007e-278 +1.9140295385600002e-179 +9.5701476928000009e-180 +4.7850738464000004e-180 +2.3925369232000002e-180 +1.1962684616000001e-180 +5.9813423080000005e-181 +2.9906711540000003e-181 +1.4953355770000001e-181 +7.4766778850000007e-182 +3.7383389425000003e-182 +1.8691694712500002e-182 +3.2573173519362997e-141 +1.877760136376555e-123 +9.3888006818827752e-124 +4.6944003409413876e-124 +2.3472001704706938e-124 +1.1736000852353469e-124 +5.8680004261767345e-125 +1.1500000000000001e78 +2.3000000000000002e78 +4.6000000000000004e78 +9.2000000000000008e78 +4.7105000000000004e81 +9.4210000000000008e81 +1.8842000000000002e82 +3.7684000000000003e82 +7.5368000000000007e82 +1.3754880711299999e276 +2.7509761422599998e276 +5.5019522845199995e276 +1.1003904569039999e277 +2.2007809138079998e277 +4.4204778058056296e-307 +5.7073962901130005e-187 +2.6153245263757307e65 +1.8107999999999998e-303 +9.0539999999999992e-304 +4.5269999999999996e-304 +2.2634999999999998e-304 +8.74767020479821e-133 +9.9999999999999985e-233 +1e-232 +3.64997863651e-39 +3.5453946217500003e45 +7.0907892435000006e45 +1.4181578487000001e46 +2.8363156974000003e46 +5.6726313948000005e46 +1.1345262789600001e47 +2.2690525579200002e47 +4.5381051158400004e47 +3e170 +1.2869999999678424e-317 +3.9027089e-89 +7.8230000000000007e262 +2.39e112 +2.7110341659999998e-252 +1.3555170829999999e-252 +1.3e298 +6.4229071947299994e-26 +1.9899999999999998e-145 +1.6391e-228 +9.5623695699999991e112 +1.9124739139999998e113 +9.1100000000000008e252 +1.8220000000000002e253 +7.5685000000000007e287 +1.5137000000000001e288 +3.0274000000000003e288 +6.0548000000000005e288 +1.2109600000000001e289 +2.4219200000000002e289 +1.157297e-09 +3.7723749999999997e82 +7.5447499999999993e82 +1.5089499999999999e83 +3.0178999999999997e83 +6.0357999999999995e83 +1.2071599999999999e84 +2.4143199999999998e84 +4.8286399999999996e84 +9.6572799999999991e84 +1.9314559999999998e85 +9.3317299999999992e255 +1.8663459999999998e256 +4.81413e-121 +4.747513726103e-152 +7.9999999999999992e-86 +3.9999999999999996e-86 +1.9999999999999998e-86 +9.9999999999999991e-87 +4.9999999999999995e-87 +1.4029669999999999e-277 +1.491927e-240 +1.3895026424135399e-249 +6.9475132120676994e-250 +9.97e-292 +4.985e-292 +2.6167343863699507e211 +1.6514816842650001e182 +3.3029633685300003e182 +6.6059267370600006e182 +1.3211853474120001e183 +2.6423706948240002e183 +5.3999999999999995e-165 +2.6999999999999998e-165 +5.7e251 +1.0279e122 +8.3395500000000007e153 +1.6679100000000001e154 +3.3358200000000003e154 +6.6716400000000006e154 +1.3343280000000001e155 +5.8300000000000005e-243 +7.5527000000000007e82 +9.0912797e47 +9.8144901429999991e-31 +4.9388367151e-264 +1.936019874619e-61 +1.1329800000000001e-158 +5.6649000000000005e-159 +8.147655389843e150 +9.9999999999999995e59 +2.6900000000000002e-224 +5.8971610000000005e226 +1.1794322000000001e227 +1.2000000000000001e-180 +6.0000000000000006e-181 +3.0000000000000003e-181 +1.5000000000000001e-181 +3.73027e-95 +3.4859642999999997e101 +6.9719285999999994e101 +1.1361830000000001e193 +1.1e72 +2.3116783e-214 +1.7560710899999998e-278 +5.3538339999999995e-137 +2.6769169999999998e-137 +6.0155761e170 +2.3272147604898537e196 +1.6339979e-141 +9.7918367999999991e-236 +4.8959183999999996e-236 +2.4479591999999998e-236 +1.2239795999999999e-236 +6.1198979999999995e-237 +3.0599489999999997e-237 +1.5299744999999999e-237 +2.956353e-66 +2.1626925045081002e-164 +2.3400559213e109 +1.3417473100000001e214 +4.3778738583500004e159 +8.7557477167000008e159 +1.7511495433400002e160 +2.1265930049999998e243 +4.2531860099999996e243 +8.5063720199999992e243 +1.7012744039999998e244 +6.32354840527e-116 +1e206 +6.1300000000000005e260 +1.8059800000000002e-70 +9.0299000000000008e-71 +1.3e93 +1.1e218 +5.547e-308 +2.6256107000000002e65 +5.2512214000000005e65 +2.9000000000000003e136 +5.8000000000000005e136 +7.2890300000000006e48 +1.4578060000000001e49 +4.9770000000000004e292 +2.3862832999999998e199 +1.8988159896373e287 +3.40607462933e244 +2.019394514246927e-319 +1.6175135301299999e179 +3.2350270602599997e179 +6.4700541205199994e179 +5.5338049999999995e130 +1.1067609999999999e131 +2.2135219999999998e131 +4.4270439999999996e131 +9.9999999999999996e-292 +1.5e111 +3e111 +5.0992146589980351e295 +9e-130 +8.33742272180539e-52 +3.8120705051e-151 +2.72046159e-106 +1.13377178869e134 +1.1e-279 +3.4566661667837797e275 +0.039 +1.9882999999999998e-58 +4.69e109 +7.979715373785e147 +1.595943074757e148 +1.9127754551712102e54 +3.8255509103424203e54 +7.2416639349572829e-216 +9.8370000000000009e115 +2.69524285693e-78 +1.347621428465e-78 +2.085591e-52 +8.21880961e63 +9.9999999999999991e-146 +1.6000000000000001e-144 +8.0000000000000007e-145 +4.0000000000000004e-145 +2.0000000000000002e-145 +1.0000000000000001e-145 +5.0000000000000005e-146 +3e257 +0.00030487929999999997 +2.2739e-158 +1.13695e-158 +7e-45 +5.67327387279871e133 +6.0141917616000005e-35 +3.0070958808000003e-35 +1.5035479404000001e-35 +7.5177397020000007e-36 +3.7588698510000003e-36 +1.8794349255000002e-36 +1.4417000000000001e-128 +6.3190996103095433e-321 +8.63133485819627e-77 +1.0334137e-24 +1.5169000000000001e83 +2.50139e-146 +8.180143063272721e150 +4.4353000000000004e131 +2.5376090000000002e-115 +9.3872472709836843e-323 +9.016768791884241e-130 +9.125737838703173e193 +1.9470056429999998e-207 +7.7151290000000007e-179 +1.1085210028795e277 +2.217042005759e277 +2.214397e-220 +6.0743831234776905e83 +1.2148766246955381e84 +5.4299364300000005e-165 +5.92685e226 +1.18537e227 +1.2880095800623e-84 +5.21963e93 +1.9444935490000002e85 +6.5668646479999994e-141 +3.2834323239999997e-141 +1.6417161619999999e-141 +8.2085808099999993e-142 +9.9999999999999998e146 +5.6908598265713e-13 +1.2678257e177 +5.5465242769670095e276 +1.3956179374971292e43 +2.7912358749942584e43 +5.5824717499885167e43 +3.5846253499999997e250 +7.1692506999999994e250 +1.4338501399999999e251 +2.8677002799999997e251 +5.7354005599999995e251 +1.3368319e96 +2.0379005833237002e237 +1.8999999999999998e82 +3.7999999999999997e82 +2.0490733647900002e150 +4.0981467295800004e150 +1.8940296661700002e-123 +2.8138999999999998e307 +5.6277999999999995e307 +2.3e-40 +1.15e-40 +2.72102277e-311 +3.8136465480524297e287 +6.5726086741477e-141 +1.8580540683200002e-67 +9.2902703416000008e-68 +4.6451351708000004e-68 +2.3225675854000002e-68 +1.1612837927000001e-68 +5.8064189635000005e-69 +5.7008561720000005e-159 +2.8504280860000003e-159 +1.4252140430000001e-159 +1.28379673e-143 +2.063e-83 +1.0315e-83 +2.7396025354544998e99 +5.4792050709089995e99 +1.0958410141817999e100 +2.1916820283635998e100 +4.28509433e-49 +2.6101e239 +6.22297447e232 +9.9999999999999992e292 +1.9999999999999998e293 +3.9999999999999997e293 +5.961289e285 +1.5081565345162999e-35 +7.3088582821865861e-303 +2.5939938490968998e-171 +1.3541487828939599e-224 +6.7707439144697994e-225 +3.3853719572348997e-225 +1.6926859786174499e-225 +2.8522999999999997e-159 +6.2794923199999994e-293 +3.1397461599999997e-293 +1.5698730799999999e-293 +7.8493653999999993e-294 +3.9246826999999997e-294 +1.9623413499999998e-294 +9.8117067499999991e-295 +2.2027e159 +3.15368095837e-234 +9.6999999999999991e25 +1.9399999999999998e26 +3.8799999999999997e26 +8.3598499999999993e240 +1.6719699999999999e241 +3.3439399999999997e241 +6.6878799999999994e241 +1.3375759999999999e242 +6.7453000000000006e-284 +1.5109e-181 +8.65485e69 +1.73097e70 +9.9999999999999982e-205 +1e-204 +6.61083e-82 +3.3596698609099997e300 +6.639952392957798e-23 +3.319976196478899e-23 +1.0996348474385767e-192 +5.4981742371928835e-193 +2.7490871185964418e-193 +1.3745435592982209e-193 +6.8727177964911044e-194 +6.9999999999999993e-104 +2.0954847999999998e-52 +1.0477423999999999e-52 +5.2387119999999995e-53 +2.6193559999999998e-53 +1.3096779999999999e-53 +6.5483899999999994e-54 +1.2002700000000001e199 +2.47145888429e115 +5.4057845e214 +1.0811569e215 +2.7498946589359998e-193 +1.3749473294679999e-193 +6.8747366473399994e-194 +3.4373683236699997e-194 +1.7186841618349998e-194 +4.8799357579999996e-62 +2.4399678789999998e-62 +2.6483959044812562e-227 +1.3241979522406281e-227 +6.6209897612031406e-228 +3.3104948806015703e-228 +1.6552474403007851e-228 +2.840978519032327e-72 +1.4204892595161635e-72 +3.3837151e67 +6.8702838999999994e-48 +1.3174965156599999e-140 +6.5874825782999994e-141 +1e-58 +1.8074511805548081e163 +3.2347865190773003e-231 +2.0931e240 +6.512860781949609e179 +3.5916999999999997e-247 +3.7622687965464097e-95 +2.8644968863341297e192 +5.7289937726682595e192 +4.764593340755e81 +9.52918668151e81 +6.83e185 +2.5094695460889998e146 +2.8104606713584728e248 +3.960909033597749e116 +4.0686800000672494e-319 +6.0305155507066943e-240 +9.9999999999999996e87 +6.1906511559201392e114 +3.7498463e-154 +3e-153 +1.16058900213e-127 +5.80294501065e-128 +2.359749e255 +1.3e-25 +2.5229284169999998e205 +1.6147517142188099e207 +3.2295034284376197e207 +1.6624083699999999e123 +3.3248167399999997e123 +2.2995267780000002e-99 +1.1497633890000001e-99 +4.5841602454490657e-304 +1.29040711e-289 +1.9841e-30 +4.020144700758463e147 +3.49802599e-309 +1.749012995e-309 +8.745064975e-310 +1.4071634899999999e248 +7.0204407000000006e-104 +3.575320071397493e-14 +1.19063777219e-270 +7.9050099999999993e-89 +9.9999999999999984e233 +1e234 +1.5879172599999999e-29 +7.9395862999999993e-30 +1.733e-281 +3.853e200 +1.093807981e-310 +3.5999999999999997e-247 +1.7999999999999998e-247 +8.9999999999999992e-248 +9.2274407206499883e252 +3.589e191 +1.112172512677e72 +3.4199999999999886e-312 +1.79906247333e-101 +9.997649e-264 +1.83248780375933e-11 +3.359e241 +1.9364999999999998e259 +3.8729999999999997e259 +7.7459999999999993e259 +1.5491999999999999e260 +3.0983999999999997e260 +1.97e-148 +1e-263 +3e139 +7.4109999999999993e-185 +6.9999999999999993e-163 +7.412001e-185 +2.2333030977100002e277 +4.4666061954200004e277 +8.9332123908400008e277 +4.0668069999999996e119 +8.1336139999999993e119 +3.4041267838079377e-225 +1.1e-251 +1.1736392026592999e-09 +8.0737758516059e-145 +2.40367425711e-06 +4.7821055262941296e81 +6.4184888269999994e89 +1.2836977653999999e90 +2.5673955307999998e90 +5.1347910615999995e90 +1.0269582123199999e91 +2.0539164246399998e91 +5.23567e34 +3.5900000000000003e-306 +1.097e187 +5.5029638973129995e-252 +9.9999999999999985e-118 +1e-117 +2.530076831921e205 +2.577e295 +6.2841870000000006e-206 +2.2520000000000002e-102 +1.1260000000000001e-102 +5.6300000000000005e-103 +2.8150000000000002e-103 +9.767e-121 +4.8835e-121 +9.601e286 +5.2947275790000005e-140 +4.9e84 +9e44 +6.9407873999999994e-135 +3.4703936999999997e-135 +2.0338125887448998e265 +4.0676251774897996e265 +8.1352503549795993e265 +1.6270500709959199e266 +3.2541001419918397e266 +6.5082002839836794e266 +5.7000000000000005e220 +1.4128846316558395e102 +2.825769263311679e102 +2.34231406383413e-214 +1.171157031917065e-214 +5.9849286518423e80 +9.9999999999999991e28 +1.6000000000000001e30 +5.0000000000000005e28 +1.0000000000000001e29 +2.0000000000000002e29 +4.0000000000000004e29 +8.0000000000000007e29 +1.3192379999999999e-199 +6.5961899999999994e-200 +6.0320000000000005e-299 +3.0160000000000003e-299 +1.5080000000000001e-299 +7.5400000000000007e-300 +3.7700000000000003e-300 +1.8850000000000002e-300 +2.3950000000000002e81 +4.7900000000000004e81 +9.5800000000000008e81 +1.9160000000000002e82 +3.8320000000000003e82 +4.3144589999999996e97 +8.6289179999999992e97 +2.4000000000000002e-211 +1.2000000000000001e-211 +6.0000000000000005e-212 +3.0000000000000003e-212 +1.5000000000000001e-212 +1.1035071902648202e246 +3.2848390953603997e-259 +1.6424195476801999e-259 +8.2120977384009993e-260 +1.30290643e267 +1.3e-84 +6.5e-85 +2.7799999999999998e-134 +1.3899999999999999e-134 +4.5898186119130004e134 +1.50404293333e139 +5.4955000000000005e186 +1.0991000000000001e187 +2.1982000000000002e187 +4.3964000000000004e187 +1.3708609e-165 +4.2155951e94 +5.7081840499999995e220 +1.1416368099999999e221 +2.2832736199999998e221 +4.5665472399999996e221 +9.1330944799999992e221 +9.09394561517e162 +1.3261165288845601e-140 +6.6305826444228006e-141 +3.3152913222114003e-141 +1.6576456611057001e-141 +8.2882283055285007e-142 +1.105327e100 +9.9999999999999994e174 +1.9999999999999999e175 +2.1475e184 +4.295e184 +8.59e184 +2.147522025e184 +4.29504405e184 +8.5900881e184 +1.8052717299999998e-101 +3.3703264443225e241 +6.740652888645e241 +1.348130577729e242 +1.0960686709668999e-18 +4.226821e-198 +1.01547197437e60 +5.1439753081058895e236 +1.1795954660601999e-301 +5.8979773303009995e-302 +2.9489886651504997e-302 +2.3591909321203998e-301 +2.37525477589e109 +4.129130453e-201 +3.9810069829999997e262 +7.9620139659999993e262 +1.5924027931999999e263 +3.1848055863999997e263 +6.3696111727999994e263 +1.2739222345599999e264 +1.0539958870000001e240 +7.5948999019299993e256 +1.5189799803859999e257 +9.25997960895853e-245 +1.117158730650127e72 +1.11002556057e305 +2.7275569999999998e68 +9.7221700000000009e258 +1.647e238 +8.4239e-257 +2.8270054878476157e-249 +2.886305736509474e192 +5.7726114730189481e192 +1.1545222946037896e193 +8.9999999999999993e-161 +2.753e186 +1.7527899999999998e275 +1.1499999999999999e134 +2.2999999999999998e134 +4.5999999999999996e134 +9.1999999999999992e134 +3.35747191e-315 +1.6844369256740001e-110 +8.4221846283700007e-111 +4.2110923141850004e-111 +1.406947e-162 +1.0172175784296991e60 +2.0344351568593982e60 +4.0688703137187964e60 +1.7837270710905698e-132 +8.9186353554528488e-133 +4.4593176777264244e-133 +2.2296588388632122e-133 +1.1148294194316061e-133 +5.5741470971580305e-134 +2.7870735485790152e-134 +1.3935367742895076e-134 +1.8130000000000002e250 +4.4269374893000004e246 +8.8538749786000008e246 +1e-176 +5e-177 +3.0000000000000003e226 +6.0000000000000006e226 +2.1064817559217751e-111 +6.9999999999999999e-76 +5.193e-143 +1.4586707430999999e164 +3.112285503e-237 +6.7780157196699994e-197 +1.8194700000000002e-188 +1.1797438777400001e-09 +5.8987193887000005e-10 +8.1425000000000007e60 +1.6285000000000001e61 +3.2570000000000003e61 +6.5140000000000006e61 +1.3028000000000001e62 +2.6056000000000002e62 +5.2112000000000005e62 +1.0422400000000001e63 +4.8425918001999996e-298 +2.4212959000999998e-298 +6.90439617897e-107 +1.0799537170300001e-254 +3.19473279073453e117 +6.1e-35 +2.3e280 +5.7870639050810005e46 +1.3859113570999999e99 +6.99e216 +1.3995235470589999e71 +2.7990470941179998e71 +1.8126289215999998e-247 +9.0631446079999992e-248 +4.5315723039999996e-248 +2.2657861519999998e-248 +1.1328930759999999e-248 +5.6644653799999995e-249 +2.8322326899999998e-249 +1.4161163449999999e-249 +7.0805817249999994e-250 +1.111301197e-192 +1.0000000000000001e-30 +5.0000000000000004e-31 +1.6000000000000001e-29 +8.0000000000000007e-30 +4.0000000000000003e-30 +2.0000000000000002e-30 +1.098369923e128 +2.1591e-108 +3.2840000006857232e-318 +7e70 +9.7469425750000009e258 +1.9493885150000002e259 +3.8987770300000003e259 +7.7975540600000007e259 +1.5595108120000001e260 +3.1190216240000003e260 +6.2380432480000005e260 +7.199709155596939e132 +3e-271 +1.8332867166700002e222 +1.5066881527e-212 +4.0840346999999996e-232 +0.00030962299999999997 +7.351171e-70 +3.3e-259 +1.65e-259 +3.1138300000000003e-91 +9.8789513583146261e-208 +1.6827030304e-315 +1.077008e-313 +9.9999999999999984e115 +1e116 +1.018701772446623e206 +3.4960596825769726e-281 +6.1507973739999995e-268 +3.0753986869999997e-268 +3.60423e132 +8.3918472805857007e122 +1.6783694561171401e123 +3.3567389122342803e123 +5.899136089116515e282 +1.179827217823303e283 +4.001931731314097e-322 +2.9558645648446167e-10 +1.9331421299999998e287 +1.44042686006531e279 +0.00031 +0.000155 +8.4569000000000007e-257 +3.8752877000000003e-05 +8.98429e-74 +2.98259e108 +9.7099999999999992e-298 +1.2511777560674275e115 +2.5023555121348549e115 +3.9776918824052164e-294 +1e262 +8.6827e97 +8.21e-27 +1.8851366941187e-67 +5.7839999999999995e-159 +2.8919999999999997e-159 +1.4459999999999999e-159 +7.2299999999999994e-160 +3.6149999999999997e-160 +1.7997199999999998e-219 +8.9985999999999992e-220 +4.4992999999999996e-220 +8.999958851151e-220 +4.4999794255755e-220 +6.0799656276999995e198 +3.527817e-17 +2.2123104087000002e187 +4.4246208174000004e187 +3.78854903063e-08 +1.894274515315e-08 +2.5758754130000002e177 +2.51e-177 +6.5952277299999994e179 +2.158627e-313 +8.73e156 +9.105297e249 +3.3733015410819e-315 +9.9999999999999996e-236 +1.0352647846999999e237 +1.3538999999999999e-109 +7.8644390000000007e172 +2.0660000000000002e-114 +1.0330000000000001e-114 +1.6998161379999999e-51 +8.4990806899999993e-52 +3.1292870675530003e260 +4.52011e-15 +3.1e288 +6.89780051107779e-20 +3.063597e-35 +1.686099534033e-169 +4.4300000000000004e187 +8.8600000000000008e187 +3.2336000000000003e-262 +1.6168000000000001e-262 +8.0840000000000007e-263 +4.0420000000000004e-263 +2.0210000000000002e-263 +8.7e97 +3.3298197650000003e297 +6.6596395300000006e297 +1.3319279060000001e298 +2.6638558120000002e298 +1.9739775531537e-266 +6.5319036457646175e-290 +9.9999999999999986e-90 +1e-89 +3.238899458171e235 +6.3263850100000006e232 +1.2652770020000001e233 +4.31e125 +2.747e68 +8.715380633e-49 +4.3576903165e-49 +2.17884515825e-49 +1.8597e194 +8.6233139467967308e125 +3.1e-209 +1.55e-209 +3.23e30 +1.2400819400000001e-208 +6.2004097000000005e-209 +3.59e-132 +1.3903e-252 +1.1015337823e-223 +5.5076689115e-224 +1.2890172699998122e-320 +2.0654089999999998e178 +4.1216419823999996e-173 +2.0608209911999998e-173 +1.0304104955999999e-173 +5.1520524779999996e-174 +2.5760262389999998e-174 +1.2880131194999999e-174 +1.081619e-313 +8.653284134e-313 +2.8638475187e307 +9.9999999999999987e56 +3.40287241e95 +7e157 +1.0100000000000001e29 +2.0200000000000002e29 +1.0165199999999999e-204 +5.0825999999999996e-205 +2.5412999999999998e-205 +1.2706499999999999e-205 +6.6977331929599994e-287 +3.3488665964799997e-287 +1.6744332982399999e-287 +8.3721664911999993e-288 +4.1860832455999996e-288 +2.0930416227999998e-288 +1.0465208113999999e-288 +5.2326040569999995e-289 +2.6163020284999998e-289 +1.3081510142499999e-289 +6.5407550712499994e-290 +1.86721e-244 +4.7703452700000004e50 +2.9751395339384715e-302 +1.4875697669692357e-302 +7.4378488348461786e-303 +3.7189244174230893e-303 +1.8594622087115447e-303 +3.60135485208505e219 +7.2027097041701e219 +1.1477077500000001e162 +2.2954155000000002e162 +4.5908310000000004e162 +9.1816620000000008e162 +1.8363324000000002e163 +3.6726648000000003e163 +7.3453296000000006e163 +1.4690659200000001e164 +3.20291821123e58 +5.635325813087e71 +9.9999999999999999e202 +3.29104637e266 +1.3250000000000001e34 +2.6500000000000002e34 +5.3000000000000005e34 +1.0600000000000001e35 +2.1200000000000002e35 +4.2400000000000004e35 +8.4800000000000007e35 +1.6960000000000001e36 +1.21937351e-298 +1.1176345450312079e-46 +5.5881727251560395e-47 +2.7940863625780198e-47 +1.3970431812890099e-47 +6.9852159064450494e-48 +7.2854977000000006e45 +6.4151171360000006e-88 +3.2075585680000003e-88 +1.6037792840000001e-88 +8.0188964200000007e-89 +4.0094482100000003e-89 +2.0047241050000002e-89 +1.0023620525000001e-89 +1.91e51 +2.5414797216999998e-59 +8.5010173e-257 +4.99199287e-149 +9.2985988999999992e-158 +6.207e-63 +2.7038197e-22 +3.3833e-169 +2.2509517716299398e-279 +1.1254758858149699e-279 +2.3151847404556998e-217 +1.9068676600000002e-300 +9.5343383000000008e-301 +1.5027e-184 +7.5135e-185 +3.75675e-185 +5.550023e-311 +2.7750115e-311 +3.0913463904774003e-122 +1.5456731952387001e-122 +6.8433004680592171e300 +9.9999999999999984e-295 +1e-294 +8.0532700272123187e-322 +7.0000000000000006e-194 +2.19715838059341e-136 +2.5223000000000002e-177 +1.77676311e-309 +7.8999999999999993e172 +1.5799999999999999e173 +3.1599999999999997e173 +8.27416677746794e-319 +2.2000000000000002e-282 +1.1000000000000001e-282 +5.5000000000000005e-283 +1.495859e-97 +7.479295e-98 +2.9000000000000003e279 +8.5402399999999993e-52 +4.2701199999999996e-52 +2.1350599999999998e-52 +1.0675299999999999e-52 +5.3376499999999995e-53 +2.7066912032334002e-22 +1.3533456016167001e-22 +1.5207302999999999e285 +8.6915148709999992e184 +7.837e54 +1.6490000000000001e266 +1.1946429410000001e196 +9.9999999999999994e-149 +2.0000000000000002e-148 +1.0000000000000001e-148 +1.8528418035172098e-70 +2.560330925707e-146 +7.6305859778235747e-154 +3.8152929889117873e-154 +5.27918631e267 +2.1051e63 +3.3282381999999997e-259 +1.6641190999999999e-259 +1.4973639570700001e-97 +4.7509e-214 +2.37545e-214 +3.3725403329343376e-82 +3.52902251e216 +1.0862299999999999e-313 +1.105229236835693e-77 +1.3478549271359e65 +6.3310437300699995e173 +1.2662087460139999e174 +0.0099999999999999985 +0.01 +7.654573063512901e197 +1.73839884757e-312 +5.03279e-236 +3.5417440316663e-222 +2.11801e-24 +3.39627261933833e-315 +5.111116973e292 +6.1e139 +9.1789999999999992e103 +5.2859423690000005e267 +1.0571884738000001e268 +4.3438999999999996e-167 +2.1652206566352652e271 +4.3304413132705304e271 +8.6608826265410608e271 +1.7321765253082122e272 +3.4643530506164243e272 +6.9287061012328486e272 +4.5503859502300004e-15 +7.8780273942469993e259 +1.5756054788493999e260 +4.7719511415181626e-09 +5.8889869e-187 +2.92287804231e192 +9.9999999999999985e143 +1e144 +7.0000000000000007e244 +5.9999999999999994e-97 +2.9999999999999997e-97 +4.953e171 +2.4632538038362998e258 +4.9265076076725996e258 +3.331077e-113 +1.3e31 +2.9000000000000002e74 +5.8000000000000005e74 +1.323174607e267 +4.824084300033e-37 +5.4432246222439e-314 +3.5753915e42 +7.150783e42 +2.4835569003e-121 +1.24177845015e-121 +9.9999999999999989e289 +1.9999999999999998e290 +3.8104539874889997e-213 +9.989441929768951e-208 +6.1300000000000005e-299 +3.2985092799227987e61 +3.0000000000000002e49 +6.0000000000000005e49 +3.0130670381e108 +1.2029266747999999e-242 +6.0146333739999995e-243 +3.0073166869999997e-243 +1.5036583434999999e-243 +4.2324871390121e-229 +1.5802816011885338e114 +3.1605632023770677e114 +6.3211264047541353e114 +1.48293694108403e-274 +7.41468470542015e-275 +3.62513e219 +1.9885455172430002e-120 +6.181e-35 +6.7379827e-141 +6.9e-138 +1.2648999999999999e115 +7.596193653317e-272 +9.9999999999999993e-208 +4.0000000000000004e-207 +2.0000000000000002e-207 +1.0000000000000001e-207 +7.0906967974225006e70 +1.4181393594845001e71 +2.8362787189690002e71 +5.6725574379380005e71 +1.1345114875876001e72 +2.2690229751752002e72 +4.5380459503504004e72 +5.85225147e-305 +7.451312572531e-216 +8.703372741147379e-21 +9e-46 +5.9882268076691e-156 +5.0946399699999996e-118 +6.81551631693309e-315 +8.9721e-251 +8.17e234 +2.439967879e-65 +8.7348231963233381e184 +1.6271639669264887e176 +8.65346581e212 +1.4316226640085048e189 +4.4071405245151486e302 +6.6167e-85 +1.3493061169945999e-140 +6.7465305849729994e-141 +1e-61 +9.0372559027740405e159 +1.8074511805548081e160 +1.2981794323300001e-28 +8.9999999999999992e100 +2.6017496910000043e-320 +1.3008748455000022e-320 +6.306493799e55 +2.0029645709907998e-207 +1.0014822854953999e-207 +5.0074114274769996e-208 +2.5037057137384998e-208 +1.207e255 +3.375220011925367e-141 +1.27537e-118 +6.44602438139509e-293 +8.7564608457e38 +1.0009e-61 +6.5462028095892624e235 +3.1281439017287003e-63 +1e85 +3.641829715918403e-73 +1.7919184531921e188 +8.3e265 +9.8200000000000008e-06 +4.9100000000000004e-06 +1.2000000000000001e-155 +6.0000000000000005e-156 +3.0000000000000002e-156 +3.3061636999999997e207 +5.4339999999999995e-227 +2.7169999999999998e-227 +1.6390589990907e89 +1.3e-28 +6.578136475e294 +1.315627295e295 +2.63125459e295 +1.44194403853039e102 +2.80736206258207e-106 +2.40116592069e-155 +3.4979184569454991e-312 +1.1451e-161 +1.182775529e-40 +3.653e278 +7.314453293391e132 +1.0000000000000001e231 +2.20149202773e97 +4.7894371496068996e283 +1.7108193099999999e182 +3.4216386199999997e182 +9.3649999999999992e134 +1.8729999999999998e135 +3.7459999999999997e135 +7.4919999999999994e135 +1.4983999999999999e136 +2.9967999999999997e136 +3e-10 +3.1574556999999997e201 +6.3149113999999995e201 +1.2629822799999999e202 +3.04690029717e-125 +2.70908159e-286 +9.6780866849199279e255 +8.5218937640788383e122 +1.7043787528157677e123 +3.4087575056315353e123 +9.5033631e165 +9.7e-37 +9.997649e-267 +4.9988245e-267 +3.3336519618450707e-26 +5.953697e-128 +6.5531e-262 +9.9999999999999998e-267 +4.1188158697e293 +3.0000000000000003e136 +2.1181e-288 +1.05905e-288 +2.91776207e74 +1.3168000000000001e-202 +6.5840000000000006e-203 +3.2920000000000003e-203 +1.6460000000000001e-203 +8.2300000000000007e-204 +2.75302048223637e242 +1.743e-225 +6.4242576243390006e-60 +3.35013307e33 +4.1159029720260404e-204 +2.0579514860130202e-204 +1.0289757430065101e-204 +3.5202771e-253 +1.76013855e-253 +6.9055105211999994e-197 +3.4527552605999997e-197 +1.7263776302999999e-197 +5.9835296999999995e-69 +1.1474264756672999e-161 +9.6683840599999992e-96 +4.8341920299999996e-96 +3.3949999999999997e210 +6.7899999999999994e210 +1.3579999999999999e211 +2.7159999999999998e211 +5.4319999999999995e211 +1.0863999999999999e212 +1.1124874625202317e215 +2.5541549500000002e174 +5.1083099000000004e174 +1.0216619800000001e175 +2.0433239600000002e175 +4.0866479200000004e175 +4.0300000000000003e144 +8.0600000000000007e144 +3.2169199470000003e-206 +9.9999999999999998e-121 +7.679946393453801e284 +8.9500000000000008e128 +1.7900000000000002e129 +3.5800000000000003e129 +7.1600000000000006e129 +3e282 +5.3e-289 +9.52055900975387e165 +6.9491e-284 +3.9079689999999997e-123 +5.1999999999999996e-233 +2.5999999999999998e-233 +1.2999999999999999e-233 +6.4999999999999994e-234 +1.9540174600000002e-123 +9.7700873000000008e-124 +2.21209820726667e-195 +1.106049103633335e-195 +1.65051857701e294 +4.5120556617e-251 +2.25602783085e-251 +1.4254730899999999e217 +2.8509461799999998e217 +5.7018923599999995e217 +9.9999999999999988e25 +4.55714837714719e-279 +3.7698040591166997e-303 +7.0000000000000005e126 +4.94122961989e-298 +2.3999999999999998e-214 +1.1999999999999999e-214 +5.9999999999999995e-215 +2.9999999999999997e-215 +1.4999999999999999e-215 +3.9322253890399997e-210 +1.9661126945199998e-210 +9.8305634725999992e-211 +4.9152817362999996e-211 +2.4576408681499998e-211 +3.3308690000000003e-231 +1.1782876995271644e-304 +3.0334097750768997e254 +6.0668195501537995e254 +1.2133639100307599e255 +2.4267278200615198e255 +8.5567022561800007e-24 +4.2783511280900004e-24 +3.8662857508029997e197 +4.8482999999999996e-242 +3.32830847e-85 +3.74740053e-70 +7.21e42 +6.6080587662999994e294 +1.3287535099809e208 +2.3e-161 +1.58600925207e55 +2.60988449e118 +5.0000000000000004e171 +1.0000000000000001e172 +2.0000000000000002e172 +4.0000000000000003e172 +8.0000000000000007e172 +1.6000000000000001e173 +1.17818179489e-158 +2.392223e-273 +3.01e136 +1.3137999999999999e-115 +6.5689999999999994e-116 +6.683841836039851e120 +1.28595911e233 +4.8633500000000004e109 +9.7267000000000008e109 +1.9453400000000002e110 +3.8906800000000003e110 +7.7813600000000007e110 +1.81553e-191 +1.6231833579719344e204 +1.273638717167e261 +3.9926924222120108e-179 +1.3e59 +2.75e183 +5.5e183 +1.1e184 +6.4229871418800006e-265 +3.2114935709400003e-265 +1.6057467854700001e-265 +6.9941731640000006e-225 +3.4970865820000003e-225 +1.7485432910000001e-225 +8.7427164550000007e-226 +7.6160000000000007e-185 +3.8080000000000003e-185 +1.9040000000000002e-185 +9.5200000000000008e-186 +4.7600000000000004e-186 +2.3800000000000002e-186 +1.1900000000000001e-186 +2.797952522720608e-224 +1.398976261360304e-224 +4.6089999999999996e-307 +8.8874982470178908e156 +1.126651e187 +2.9000000000000002e102 +4.0505199999999997e-148 +2.0252599999999998e-148 +1.0126299999999999e-148 +5.0631499999999996e-149 +1.0676545807999999e-229 +5.3382729039999995e-230 +2.6691364519999998e-230 +1.3345682259999999e-230 +6.6728411299999994e-231 +5.5329999999999995e96 +1.1065999999999999e97 +1.1210992670030001e274 +1.0307031e88 +5.2947187761470895e295 +1.0589437552294179e296 +4.1993258315e178 +8.398651663e178 +8.6097396999999993e35 +5.3467469e267 +1.1468718800000001e-220 +5.7343594000000005e-221 +2.8671797000000002e-221 +2.7999999999999998e-224 +1.3999999999999999e-224 +6.9999999999999994e-225 +1.3152217e-115 +2.8403168869999998e-193 +1.52839e167 +5.9e-159 +1.30752984325e118 +2.6150596865e118 +5.230119373e118 +6.3503615889610005e201 +2.5567100000000002e-31 +2.7071329119999998e-53 +1.3535664559999999e-53 +6.7678322799999994e-54 +3.3839161399999997e-54 +1.6919580699999999e-54 +8.4597903499999993e-55 +2.760329779e-109 +2.5217e-62 +1e-179 +3e223 +3.443959e182 +3.1389e-122 +4.0222699999999997e-266 +3.2319784003914483e-206 +1.6159892001957241e-206 +8.0799460009786207e-207 +4.0399730004893103e-207 +2.0199865002446552e-207 +1.524883e-38 +2.114114965973e91 +3.3320213012458393e207 +8.03e26 +1.2987439342099999e-146 +1.560116913422049e111 +7.118306438131433e303 +2.5260000000000002e-208 +1.2630000000000001e-208 +8.2163614213e175 +1.3536296637e93 +3.5867900606100003e-76 +1.0000000000000001e-33 +7e67 +3.0000000000000003e-274 +1.5989119805700001e114 +3.8000000000000003e-98 +1.9000000000000002e-98 +4.9922792781099996e258 +9.9845585562199991e258 +5.7565657000000005e276 +1.1513131400000001e277 +4.6000000000000004e-220 +2.3000000000000002e-220 +5.8254249e-44 +4.148738161e293 +1.617e-60 +8.085e-61 +4.0425e-61 +5.8577340000000005e-131 +2.9288670000000003e-131 +1e113 +4.81e224 +6.9997009999999994e213 +1.3999401999999999e214 +6.9999999999999994e213 +6.0000000000000006e-128 +3.0000000000000003e-128 +1.8451095300000002e132 +3.6902190600000003e132 +8.3548057721764037e60 +1.7904620000000002e-281 +8.9523100000000008e-282 +1.9e48 +1.8716982209e163 +9.7610000000000008e255 +1.9522000000000002e256 +1.91254174189493e-185 +9.2000000000000008e-74 +4.6000000000000004e-74 +2.3000000000000002e-74 +1.6185559999999999e-60 +8.0927799999999993e-61 +4.0463899999999997e-61 +7.4173881002182467e191 +9.9999999999999993e258 +1.9999999999999999e259 +3.9999999999999997e259 +4.1007448604823463e-322 +7.1837758595499994e70 +1.4367551719099999e71 +2.8735103438199998e71 +5.7470206876399995e71 +1.1494041375279999e72 +2.0220862543e85 +6.3469999999999995e142 +4.6429999999999996e44 +7.781601695e197 +1.556320339e198 +4.98543852457e53 +6.8000000000000006e-200 +3.4000000000000003e-200 +1.7000000000000001e-200 +1.8512025799999998e-160 +9.2560128999999992e-161 +1.756022717e-79 +1.1e271 +5.200039045e146 +1.040007809e147 +1.7675123869487e-312 +3.379223e33 +2.8195851259289e127 +3.9299999999999997e169 +7.8599999999999993e169 +1.0525894008434341e-173 +1.01257e-61 +9.7000000000000008e-09 +4.1982587e265 +4.2027597098849996e119 +8.4055194197699993e119 +1.6811038839539999e120 +3.3622077679079997e120 +7.940305298290699e141 +1.6175000000000001e232 +3.2350000000000003e232 +6.4700000000000006e232 +1.2940000000000001e233 +2.5880000000000002e233 +5.1760000000000004e233 +1.0352000000000001e234 +2.0704000000000002e234 +9.9999999999999999e-239 +5e-239 +5.4395098648936524e-53 +1.85730481123153e191 +2.3491438607714321e-130 +9.520030871541619e47 +3.1740528100000003e288 +6.3481056200000005e288 +1.2696211240000001e289 +2.5392422480000002e289 +2.193123599075047e212 +1.1180677382611601e156 +5.5721e-50 +1.38417511155041e183 +2.7355912999999998e-140 +7.7670000000000007e-08 +1.0801899999998821e-316 +6.8999999999999994e-23 +2.5483514606216558e-149 +1.2741757303108279e-149 +6.3708786515541395e-150 +3.1854393257770697e-150 +1.5927196628885349e-150 +3.3479699999999997e207 +1.3062721229000001e-292 +2.5324255020244967e84 +4.1534892987e-58 +7.3705543e73 +9.9999999999999999e-93 +4.722723e-71 +6.4349490000000005e-178 +1.1882789515942701e-304 +5.3e-261 +2.9744685835299997e192 +5.9489371670599995e192 +3.1022767e285 +1.321413705277201e177 +6.472875391481e-265 +1.0114024042000001e-266 +5.0570120210000004e-267 +2.58941e-264 +1.294705e-264 +2.0230000000000002e-266 +4.6503538499999996e190 +9.3007076999999992e190 +1.8601415399999998e191 +3.7202830799999997e191 +7.4405661599999994e191 +2.693e267 +1.0000000000000001e54 +2.0000000000000002e54 +4.0000000000000003e54 +1.08314689e181 +1.0600000000000001e-114 +5.3000000000000004e-115 +8.815453e-226 +4.4077265e-226 +3.8067393134399997e-303 +1.9033696567199998e-303 +9.5168482835999992e-304 +4.7584241417999996e-304 +2.3792120708999998e-304 +8.30911e88 +1.7369999999999999e-110 +3.0166804802000003e-274 +1.5083402401000001e-274 +1.5800000000000001e-122 +7.9000000000000007e-123 +3.194218537921989e-296 +4.2463838149821404e-260 +2.1231919074910702e-260 +1.414299069570657e127 +3.0999999999999997e-66 +3.562357e-253 +1.2349393807999999e-124 +6.1746969039999995e-125 +3.0873484519999997e-125 +1.5436742259999999e-125 +7.7183711299999993e-126 +3.8591855649999997e-126 +1.9295927824999998e-126 +5.95243e-305 +5.10811e-149 +2.515881671299091e-34 +9.9999999999999997e199 +5.3111999999999995e-261 +2.6555999999999998e-261 +1.3277999999999999e-261 +6.6389999999999994e-262 +3.3194999999999997e-262 +3.47e182 +7.6321e194 +1.5700000000000001e257 +7.5098859399999994e-188 +3.7549429699999997e-188 +9.9721999999999992e-06 +4.9860999999999996e-06 +1.5201265626842299e136 +1.979511874601e-269 +5.8678345965821995e-190 +2.9339172982910998e-190 +4.943665657e-124 +7.799957578739e-154 +3.2999999999999997e-29 +4.2890490784520004e-142 +2.1445245392260002e-142 +1.0722622696130001e-142 +3.1310000000000003e52 +2.6127873854409232e146 +4.1045021908235297e57 +7.829023e51 +2.9740000000000003e-13 +1.4870000000000001e-13 +8.1396043718900007e-61 +9.9999999999999987e-298 +1e-297 +8.684626953e181 +3.1525484439037949e-181 +1.5762742219518974e-181 +2.9519316550620803e-277 +1.4759658275310401e-277 +7.3798291376552006e-278 +3.6899145688276003e-278 +1.8449572844138002e-278 +9.2247864220690008e-279 +4.6123932110345004e-279 +2.3061966055172502e-279 +7.5010000000000006e104 +1.0166695417201299e85 +7.1e-166 +1.1496999999999999e159 +2.2993999999999998e159 +9.3375227e44 +4.7911483741489796e-245 +2.3955741870744898e-245 +4.87013e137 +1.3344655319e-56 +1.20075709190927e106 +5.1404180294474564e-90 +2.5702090147237282e-90 +1.2851045073618641e-90 +6.4255225368093205e-91 +3.2127612684046603e-91 +1.6063806342023301e-91 +8.0319031710116507e-92 +4.0159515855058253e-92 +3.2267318809803746e-32 +4.03373497271e-33 +4.6108110194948821e-133 +2.4542229999999998e-242 +3.4541902531000003e-228 +9.3337e190 +1.9999999999999999e-151 +9.9999999999999994e-152 +3.9026965887480823e-08 +1.9513482943740412e-08 +9.7567414718702058e-09 +6.178015686384143e167 +2.226311235331e184 +5.717185205636801e-252 +4.3385703399999996e-170 +2.1692851699999998e-170 +2.520139e112 +4.4337674255527e125 +6.431543e-91 +3.2157715e-91 +1.60788575e-91 +2.2629739375267e-77 +4.11293247e57 +7.7024470552699559e-39 +7.9999999999999993e-05 +3.9999999999999996e-05 +1.9999999999999998e-05 +9.9999999999999991e-06 +4.9999999999999996e-06 +1.045224382813e-204 +3.5e95 +7e95 +1.6835500504999999e207 +3.3671001009999997e207 +6.7342002019999994e207 +1.3468400403999999e208 +3e-246 +1.5e-246 +1.05446513e-86 +4.044645551753e-179 +2.0223227758765e-179 +1.9728940377488806e-36 +9.8644701887444032e-37 +4.9322350943722016e-37 +2.4661175471861008e-37 +1.2330587735930504e-37 +1.3e-118 +3.3536710991000003e148 +9.0912050000000008e128 +1.8182410000000002e129 +3.6364820000000003e129 +7.2729640000000006e129 +1.4545928000000001e130 +5.0917141299999996e230 +1.0183428259999999e231 +2.4997071996999998e140 +7.947e-269 +9.9999999999999985e140 +1e141 +1.6277971918028439e-265 +8.1389859590142193e-266 +4.0694929795071097e-266 +3.9525251667299724e-322 +9.8813129168249309e-323 +2.4703282292062327e-323 +1.514884221859e-128 +1.7983480000000002e-194 +8.9917400000000008e-195 +4.4958700000000004e-195 +2.2479350000000002e-195 +4.3859942019999996e-52 +2.1929971009999998e-52 +8.1e-179 +6.1145411e-10 +1.8009999999999998e303 +3.6019999999999997e303 +6.329401e-181 +1.1931704009068699e134 +2.3863408018137398e134 +9.5143564573051202e-71 +8.3970008029e147 +5.0000000000000004e286 +1.0000000000000001e287 +2.0000000000000002e287 +4.0000000000000003e287 +3.0256499999999997e164 +6.0512999999999995e164 +1.2102599999999999e165 +2.4205199999999998e165 +4.8410399999999996e165 +9.6820799999999992e165 +5.125696329e143 +8.4612374869913993e-232 +4.2306187434956996e-232 +1.0099999999999999e259 +2.0199999999999998e259 +1.2236490000000001e-09 +5.70410861e-165 +1.98763553094767e-123 +9.93817765473835e-124 +1.1783843425101129e-43 +9.737226328045429e78 +1.0999999999999999e299 +2.1999999999999998e299 +2.2599999999999998e-136 +1.1299999999999999e-136 +5.0672623591730096e-180 +1.3900000000000001e124 +2.7800000000000002e124 +5.5600000000000005e124 +1.187610883e221 +2.3930000000000002e-158 +6.7000000000000006e-57 +9.2586331e-133 +1.5437000000000001e108 +3.0773e-97 +9.8905039339999992e-37 +4.9452519669999996e-37 +8.7476520677000007e-111 +3.05513193e282 +5.125785583413e289 +1.4257e-19 +7.1285e-20 +1e-210 +1.5e192 +3e192 +3.07217e195 +2.2838518661127098e-164 +3.1766135423537368e170 +6.3532270847074735e170 +1.2706454169414947e171 +2.5412908338829894e171 +5.0825816677659788e171 +1.0165163335531958e172 +9.3145685999999992e-220 +4.6572842999999996e-220 +2.3286421499999998e-220 +1.2249136637046225e-09 +6.1245683185231125e-10 +3.2148454339913e-150 +5.82395087941e-221 +2.9185416972596261e130 +1.2455590650615772e-270 +9.9999999999999997e-65 +3.9484655384700003e-241 +2.7431149999999998e239 +5.4862299999999995e239 +1.0972459999999999e240 +2.1944919999999998e240 +4.3889839999999996e240 +9.7338774138954429e-273 +9.528253528009543e75 +1.0844116938336662e-83 +2.949e102 +2.4712469703000002e255 +1.6926676689091616e61 +1.28863883292067e-295 +2.3621517939999998e-43 +1.1810758969999999e-43 +1.0091053206124282e54 +1.6444922428535001e145 +3.2889844857070003e145 +6.5779689714140006e145 +1.3155937942828001e146 +2.6311875885656002e146 +8.82051025e299 +1.76410205e300 +3.5282041e300 +5.16752237e56 +4.6899999999999996e-307 +2.1056617283e147 +2.973e-277 +2.5899899293399e-236 +2.7337195627213739e180 +9.9999999999999996e81 +3.3700000000000003e148 +3.1221383647389997e226 +2.21347661803e-139 +7.89e51 +3.4775388329309997e-228 +4.9163e-155 +6.9794080809999994e-23 +3.78769e-188 +1.238639e109 +4.33e-288 +5.1183969999999996e230 +7.3685214619430006e-250 +6.323e-94 +4.9999999999999996e227 +9.9999999999999992e227 +1.9999999999999998e228 +3.9999999999999997e228 +2.1e88 +8.011048300699117e82 +9e-254 +1.88552151e-101 +2.6856804749578998e236 +2.6515765184436532e59 +5.3031530368873064e59 +1.0606306073774613e60 +2.1212612147549226e60 +2.0848830673e-176 +1.04244153365e-176 +2.8999999999999998e158 +4.4059577692775e94 +8.811915538555e94 +1.762383107711e95 +5.4658200000000005e-171 +2.7329100000000002e-171 +3.3300024529700017e-321 +1.6650012264850009e-321 +2.1610297e150 +6.8701999999999994e-259 +3.4350999999999997e-259 +5.635e242 +1.127e243 +1.1690561740726361e-220 +5.8452808703631805e-221 +2.9226404351815902e-221 +1.4613202175907951e-221 +3.4209451164e-318 +9.9999999999999996e-270 +8.3183199727189993e262 +1.6636639945437999e263 +5.6000000000000005e-168 +2.8000000000000002e-168 +1.4000000000000001e-168 +7.0000000000000006e-169 +3.5000000000000003e-169 +6.866222093e-113 +1.0752885314039385e237 +2.150577062807877e237 +2.1531004985000002e91 +4.3062009970000004e91 +8.6124019940000007e91 +1.7224803988000001e92 +5.5957e-22 +9.42978293e44 +7.351404602e-309 +5.682131e-137 +1.7380392870709999e210 +2.2009975492983002e-257 +1.4725e189 +2.945e189 +5.89e189 +2.2349083250000002e271 +4.4698166500000004e271 +8.9396333000000008e271 +1.7879266600000002e272 +3.5758533200000003e272 +7.1517066400000006e272 +1.4303413280000001e273 +3.8184832442679997e-275 +1.9092416221339998e-275 +9.5462081106699992e-276 +4.7731040553349996e-276 +2.0000000000000001e-123 +1.0000000000000001e-123 +1.4521689999999999e158 +3.0000000000000003e279 +1.1718770000000001e277 +9.851e-09 +1.0067489496500001e287 +2.0134978993000002e287 +4.0269957986000003e287 +8.0539915972000007e287 +6.97015418417e-82 +3.485077092085e-82 +1.7425385460425e-82 +6.9042861369999994e-54 +3.1264297899999997e-125 +2.2799127108449e215 +6.6571256853742994e-234 +3.536086133e-51 +1.69e294 +5.62237199e183 +8.7186322198999993e-83 +4.5227082158788096e97 +1.1478383686099999e-18 +8.1999999999999993e-120 +4.0999999999999997e-120 +6.0767998808675037e-41 +3.0915e195 +6.183e195 +1.6777215999999999e30 +3.3554431999999997e30 +6.7108863999999994e30 +1.3421772799999999e31 +2.6843545599999998e31 +5.3687091199999995e31 +1.0737418239999999e32 +2.1474836479999998e32 +4.2949672959999996e32 +8.5899345919999993e32 +1.7179869183999999e33 +3.4359738367999997e33 +6.8719476735999994e33 +1.3743895347199999e34 +2.7487790694399998e34 +5.4975581388799995e34 +1.0995116277759999e35 +2.1990232555519998e35 +4.3980465111039996e35 +8.7960930222079993e35 +1.7592186044415999e36 +3.5184372088831997e36 +7.0368744177663994e36 +1.4073748835532799e37 +2.8147497671065598e37 +5.6294995342131195e37 +1.1258999068426239e38 +2.2517998136852478e38 +4.5035996273704956e38 +9.0071992547409912e38 +1.8014398509481982e39 +3.6028797018963965e39 +7.205759403792793e39 +9.9999999999999992e22 +1.9999999999999998e23 +3.9999999999999997e23 +7.9999999999999993e23 +1.5999999999999999e24 +3.1999999999999997e24 +6.3999999999999995e24 +1.2799999999999999e25 +2.5599999999999998e25 +5.1199999999999996e25 +1.0239999999999999e26 +2.0479999999999998e26 +4.0959999999999997e26 +8.1919999999999993e26 +1.6383999999999999e27 +3.2767999999999997e27 +6.5535999999999995e27 +1.3107199999999999e28 +2.6214399999999998e28 +5.2428799999999996e28 +1.0485759999999999e29 +2.0971519999999998e29 +4.1943039999999996e29 +8.3886079999999993e29 +2.8085206e-314 +1.9572730000000002e-272 +3.5e123 +7e123 +3.2808791038405597e-119 +1.6404395519202799e-119 +8.2021977596013993e-120 +4.1010988798006997e-120 +2.0505494399003498e-120 +8.9999999999999992e184 +1.9726322132574289e-08 +5.6255330720738295e183 +1.1251066144147659e184 +8.1243800000000007e-92 +4.0621900000000003e-92 +5.804761563e-193 +5.101049e-34 +2.5505245e-34 +6.0100000000000005e279 +1.6644547037e-88 +1.26454197e-152 +6.08269738203293e-41 +4.9247089430000004e283 +9.8494178860000008e283 +5.98611e220 +1.774461562795729e300 +3.5489231255914581e300 +9.9999999999999993e168 +1.0000000000000001e169 +2.0000000000000002e169 +1.302339e-236 +4.69218269e-220 +6.3593283992437995e-240 +3.1796641996218997e-240 +3.4070418522922045e61 +6.814083704584409e61 +5.5523056813699995e152 +1.1104611362739999e153 +2.2693e-195 +3.93677186561637e-213 +6.11851909e-128 +1.0421238445899999e-235 +1.3499970000000001e90 +2.6999940000000002e90 +1.45593e158 +5.27429696961073e87 +1.87791e-219 +2.594972677e-295 +3.5215569999999997e182 +6.67284113e-234 +3.336420565e-234 +1.18826860943e103 +3.1150738921636818e108 +6.0521182495e192 +1.2104236499e193 +3e74 +2.5799140000000002e-62 +1.2899570000000001e-62 +2.4711112462926329e-09 +1.1784409600000001e-15 +5.8922048000000005e-16 +2.9461024000000002e-16 +1.4730512000000001e-16 +7.3652560000000006e-17 +3.6826280000000003e-17 +1.8413140000000002e-17 +9.2065700000000008e-18 +4.6032850000000004e-18 +2.3016425000000002e-18 +1.1508212500000001e-18 +4.2642289439837263e60 +8.5284578879674525e60 +6.3476848954678995e198 +1.2695369790935799e199 +5.417253e-202 +5.8739529600000005e-221 +2.9369764800000002e-221 +1.4684882400000001e-221 +7.3424412000000006e-222 +3.6712206000000003e-222 +1.8356103000000002e-222 +9.1780515000000008e-223 +4.5890257500000004e-223 +5.5181582687789995e-112 +6.7e-29 +3.2334825961e288 +3.9383e-67 +9.9000000000000008e-155 +1.3489222774603e-261 +9.997878507563e-183 +4.9989392537815e-183 +5.52709111973e-258 +1e-182 +1.39393e-140 +5.581897e-286 +1.3627707550710001e-289 +2.3543000000000002e277 +4.7086000000000004e277 +1.6299999999999999e-91 +6.0785893258000005e-246 +3.0392946629000003e-246 +1.277646424811133e112 +6.46396431549e-209 +8.8950480899999993e299 +2.4714713885e137 +4.942942777e137 +2.9749431068950002e102 +5.9498862137900005e102 +1.1899772427580001e103 +2.3799544855160002e103 +1.99e-95 +1.1510000000000001e128 +2.8964374173440002e-106 +1.4482187086720001e-106 +7.2410935433600006e-107 +3.6205467716800003e-107 +1.8102733858400002e-107 +9.0513669292000008e-108 +4.5256834646000004e-108 +2.2628417323000002e-108 +1.1314208661500001e-108 +5.6571043307500005e-109 +3.1272559999999997e-184 +1.5636279999999999e-184 +7.8181399999999993e-185 +3.9090699999999997e-185 +1.9545349999999998e-185 +1.1292699999999999e184 +2.2585399999999998e184 +5.4609999999999995e208 +2.03449172043339e200 +3.6297127871000003e244 +2.01491e228 +9.5864787686864713e-130 +3.0879365145874097e282 +6.1758730291748195e282 +2.2202878723999998e-52 +1.1101439361999999e-52 +5.5507196809999995e-53 +2.71033e-56 +1.7440280000000001e-141 +8.7201400000000007e-142 +4.3600700000000004e-142 +1.9999999999999999e-36 +9.9999999999999994e-37 +1.0419507206625001e203 +2.0839014413250002e203 +4.1678028826500003e203 +8.3356057653000007e203 +1.6671211530600001e204 +3.3342423061200003e204 +6.6684846122400006e204 +1.3336969224480001e205 +2.6673938448960002e205 +5.3347876897920004e205 +1.0669575379584001e206 +9.8846650000000008e283 +1.9769330000000002e284 +3.9538660000000003e284 +7.9077320000000007e284 +1.5815464000000001e285 +3.0000000000000003e-277 +1.7000000000000001e148 +3.4000000000000003e148 +1.3586257085813244e295 +1.809928735e39 +3.61985747e39 +2.0555924814300128e172 +4.1111849628600257e172 +1.51839200837161e46 +3.4638651329577503e238 +6.9277302659155006e238 +1.3855460531831001e239 +2.7710921063662002e239 +5.5421842127324005e239 +1.1084368425464801e240 +2.2168736850929602e240 +1.305739151e-90 +4.8594558173e47 +2.9216909e158 +1.2947602808690622e-208 +7.1107970000000006e-51 +3.75224535589e-278 +2.0389e54 +9.619403298529e221 +1e110 +4.4363342117e240 +3.44696261331e-318 +2.1499236099999998e-27 +2.7018796739e-115 +6.9999999999999999e210 +2.6105314965354177e56 +1.2828837917771143e-180 +2.3565608619999998e-220 +1.1782804309999999e-220 +1.0500000000000001e-30 +5.2500000000000004e-31 +6.7200000000000006e-29 +3.3600000000000003e-29 +1.6800000000000001e-29 +8.4000000000000007e-30 +4.2000000000000004e-30 +2.1000000000000002e-30 +2.46356281597e224 +6.3410000000000005e139 +1.2682000000000001e140 +8.95231e-285 +7.5829403200999994e-306 +3.63993e98 +1.1083932591989083e-257 +6.7e-234 +1.9292444191000002e-70 +5.8128000000000005e-252 +2.9064000000000002e-252 +1.4532000000000001e-252 +7.2660000000000006e-253 +3.6330000000000003e-253 +1.8165000000000002e-253 +1.5859782098563421e139 +1.3233703251000001e233 +2.6467406502000002e233 +4.229930490366557e-263 +1e256 +4.1045800000000003e-33 +2.0522900000000002e-33 +2.6951280980639999e-320 +4.1995579896505956e-322 +3.5529989999999997e241 +1.4838899999999999e189 +2.9677799999999998e189 +5.9355599999999995e189 +1.1871119999999999e190 +2.3742239999999998e190 +4.7484479999999996e190 +7e-287 +3.5e-287 +9.927012822937309e-09 +4.9635064114686545e-09 +7.6224465719280006e-247 +3.8112232859640003e-247 +1.9056116429820002e-247 +9.5280582149100008e-248 +4.7640291074550004e-248 +4.2726399999999996e-291 +2.1363199999999998e-291 +1.0681599999999999e-291 +5.3407999999999996e-292 +2.6703999999999998e-292 +1.3351999999999999e-292 +6.6759999999999994e-293 +3.3379999999999997e-293 +1.6689999999999999e-293 +8.3449999999999993e-294 +4.1724999999999997e-294 +2.0862499999999998e-294 +1.3557340317006132e236 +2.7114680634012264e236 +3.97131931e-08 +3.0994069999999997e136 +8.8276977058000007e-170 +4.4138488529000004e-170 +3.4339e-231 +2.9e186 +1.476907765e276 +2.95381553e276 +9.3207347409999992e246 +1.7340851969319902e-259 +4.0033950534738767e256 +1.7816884522000001e-51 +8.9084422610000007e-52 +4.4542211305000004e-52 +8.49703e-58 +1.50627255819e220 +2.1429677292288037e60 +4.2859354584576074e60 +8.5718709169152147e60 +1.7143741833830429e61 +9.9999999999999997e-242 +4.4800000000000004e-139 +2.2400000000000002e-139 +1.1200000000000001e-139 +5.6000000000000005e-140 +2.8000000000000002e-140 +1.4000000000000001e-140 +7.0000000000000006e-141 +3.5000000000000003e-141 +1.7500000000000001e-141 +4.5243677111e-167 +9.1486890435662702e302 +1.829737808713254e303 +4.9803428760996463e-301 +8.6775799999999993e-260 +4.3387899999999996e-260 +1.9e-306 +2.38051079e44 +2.248430992462957e66 +2.4776408710000002e-214 +2.8999999999999961e-311 +9.28081493077e-310 +8.13e287 +9.99938236367429e-96 +6.9915152499999994e151 +1.3983030499999999e152 +2.7966060999999998e152 +5.5932121999999995e152 +1.1186424399999999e153 +2.2372848799999998e153 +4.4745697599999996e153 +8.9491395199999993e153 +1.7898279039999999e154 +9.4541621600000008e-220 +4.7270810800000004e-220 +2.3635405400000002e-220 +1.1817702700000001e-220 +5.9088513500000005e-221 +7.3863604895721566e-222 +3.6931802447860783e-222 +1.8465901223930392e-222 +9.9999999999999999e-96 +2.7373281019894843e-143 +2.761156318270017e-25 +8.9220876467e-52 +5.2387e56 +9.05855211351e-167 +5.83574703e245 +3.5731068999999997e-197 +6.2322502410153005e-302 +2.23849e153 +1.1156020904799999e-52 +5.5780104523999995e-53 +2.7890052261999998e-53 +1.3945026130999999e-53 +1.9146999999999998e104 +1.234604661e-273 +1.4735569095891582e217 +2.9471138191783164e217 +7.5687132754299994e-219 +9.7e280 +3.9095362999999997e-98 +6.2894454775410345e-184 +3.1447227387705173e-184 +1.9953238655699998e-300 +2.3281585212328932e41 +4.7320562774232707e-220 +4.4125186999999996e268 +5e50 +9.9999999999999999e50 +6.5820769024221255e114 +1.3164153804844251e115 +2.6328307609688502e115 +5.2656615219377004e115 +1.0531323043875401e116 +2.1062646087750802e116 +4.2125292175501603e116 +8.4250584351003207e116 +1.6850116870200641e117 +3.3700233740401283e117 +6.7400467480802566e117 +1.3480093496160513e118 +4.9518512093e78 +5.8583483736189995e-193 +1.8034029898252181e-79 +9.0170149491260907e-80 +4.4651374390600004e-52 +2.2325687195300002e-52 +7.0000000000000006e151 +1.901513e-160 +5.9170643318195434e-221 +1.808131e272 +8.2229953e259 +1.8594247137730628e-309 +9.6968229180000008e-217 +4.8484114590000004e-217 +5.9761830275821863e-249 +2.9880915137910932e-249 +1.4940457568955466e-249 +1.0137193618063699e228 +2.0274387236127398e228 +4.0548774472254797e228 +1.7871466064799999e-51 +8.9357330323999993e-52 +4.4678665161999996e-52 +2.2339332580999998e-52 +1.1169666290499999e-52 +1.28788233547e-34 +7.44e-309 +6.819423e-57 +9.9999999999999995e196 +8.645243e-27 +2.1085e116 +4.217e116 +4.85129e-217 +1.0924742369857e-201 +1.2000000000000001e-43 +6.0000000000000005e-44 +3.0000000000000002e-44 +2.124699552393e-263 +1.9939161321408166e-08 +9.9695806607040832e-09 +4.9847903303520416e-09 +2.4923951651760208e-09 +1.2461975825880104e-09 +1.59e-212 +5.4577183e-56 +1.889640371e219 +3.099327252691603e77 +1.08946220565e237 +2.1789244113e237 +1.3678437e295 +4.5210339686086104e-226 +1.3346075580166839e-205 +6.4130299000000005e52 +1.2826059800000001e53 +1.0064200777e110 +7.0896437413468554e-23 +3.5448218706734277e-23 +1.7724109353367139e-23 +8.8620546766835693e-24 +4.4310273383417846e-24 +9.9999999999999986e-301 +1e-300 +2.0506544898517002e200 +3.71790617e-17 +1.858953085e-17 +5.9036035985113995e-280 +2.9518017992556998e-280 +1.2983465356999999e-267 +5.8727095970317751e-193 +2.9177010000000002e40 +5.8354020000000005e40 +3.1609999999999997e167 +6.3219999999999995e167 +1.2643999999999999e168 +5.7334854633182625e-50 +3.131983751e195 +9.9999999999999997e-155 +4.814910638899e-189 +2.9999999999999998e248 +5.9999999999999995e248 +1.1999999999999999e249 +5.7151903e-255 +6.284343278447e-243 +4.1500000000000003e26 +8.3000000000000007e26 +1.6600000000000001e27 +3.3200000000000003e27 +6.6400000000000006e27 +1.3280000000000001e28 +8.5999999999999993e-291 +4.2999999999999996e-291 +3.7382344970000003e42 +7.4764689940000006e42 +1.4952937988000001e43 +7.278255103e-166 +2.7232777999999998e-115 +1.3616388999999999e-115 +3.6280999999999997e272 +1.715304715e148 +3.43060943e148 +8.6150000000000007e206 +1.7230000000000001e207 +3.4460000000000003e207 +6.8920000000000006e207 +1.3784000000000001e208 +2.7568000000000002e208 +1.7025794743378699e-116 +3.4169999999999997e89 +1e-08 +8.104737e169 +1.2143000000000001e75 +8.853686434843997e-229 +4.4268432174219985e-229 +1.8691e188 +3e-249 +1.7730722156430001e269 +3.5461444312860003e269 +9.456830699e-133 +1.357e-174 +6.184895e164 +1.236979e165 +6.9652300000000006e179 +1.3930460000000001e180 +2.7860920000000002e180 +5.1503531744300004e-93 +2.72121427e177 +3.0438298226615837e-218 +1.5219149113307919e-218 +7.6095745566539594e-219 +3.8047872783269797e-219 +1.9023936391634898e-219 +9.5119681958174492e-220 +5.213e230 +8.23525e54 +1.64705e55 +3.2941e55 +6.0566843339378995e-131 +1e138 +1.0185977235029999e228 +2.0371954470059998e228 +4.0743908940119997e228 +8.1487817880239993e228 +1.6297563576047999e229 +4.195e144 +8.39e144 +3e-103 +1.5e-103 +5.4694295965852139e236 +1.01e110 +4.2180409999999997e57 +5.2729495e56 +1.0545899e57 +2.23092433553e181 +9.9386000999999992e-273 +1.1e150 +2.636873e56 +1.113098329411e-170 +9.21e-195 +1.17147957695e41 +2.3429591539e41 +1.6737422551e-60 +1.092251553e-114 +7.0659791567117006e-287 +2.9038416899999998e-78 +4.9999999999999996e283 +9.9999999999999991e283 +1.9999999999999998e284 +3.9999999999999997e284 +7.9999999999999993e284 +1.6069e-299 +8.0345e-300 +8.8454213256790007e209 +2.3769999999999998e72 +4.7539999999999996e72 +9.5079999999999992e72 +1.9015999999999998e73 +3.8031999999999997e73 +7.6063999999999994e73 +4.6274916240782996e-136 +6.3467899999999995e167 +1.2693579999999999e168 +2.11141e57 +3.87419439143493e163 +2.961979e-134 +8.6026189875397854e147 +1.3e171 +1.1202371495119529e-257 +5.2746089e202 +3.2752004983e-209 +1.7890874190999999e36 +3.5781748381999997e36 +7.36757e-48 +2.526236701106623e255 +7.911207257e-39 +1.719339847e294 +8.5873649074079307e-204 +2.0276898256999998e-182 +3.6929164168801057e303 +7.6533774988899994e-14 +9.9999999999999995e-214 +8.656497e60 +5.5999999999999995e-112 +2.7999999999999998e-112 +1.3999999999999999e-112 +6.9999999999999994e-113 +6.09193e74 +1.4888532900000001e-75 +2.171441e265 +3.4000000000000003e-29 +1.7000000000000001e-29 +3.4408900000000003e294 +2.7291659979169998e177 +5.4583319958339996e177 +1.0916663991667999e178 +1.435363e-255 +3.205075577e285 +1.1e-201 +2.1244822771173601e-322 +5.3211878131765804e-177 +2.6605939065882902e-177 +1.1136380020621e122 +8.9870269999999993e240 +1.5257037339100299e-72 +9.9999999999999994e-68 +2.0000000000000002e-67 +1.0000000000000001e-67 +9.9138756652600008e-186 +4.9569378326300004e-186 +1.0034006255610001e138 +3.78701e306 +6.45e198 +1.29e199 +6.6050999999999995e201 +3.3891e-88 +1.69455e-88 +8.47275e-89 +7.78166934064919e-129 +1.8999999999999998e-132 +7.0407399939999994e-54 +3.5203699969999997e-54 +1.138713e-226 +1.230810028146545e193 +2.46162005629309e193 +4.81847e-102 +3.5215399999999997e-54 +1.7607699999999999e-54 +9.9999999999999997e78 +5.3000000000000004e-90 +2.8397000000000002e211 +3e-162 +1.5e-162 +3.6387802900000003e67 +9.0285923e-198 +7.8738810289476994e-303 +8.8180000000000007e-201 +4.4090000000000004e-201 +1.1e91 +1.57496176797e-302 +2.2626908830850702e153 +4.5253817661701404e153 +2.4691002732654881e-99 +1.234550136632744e-99 +5.4886272020000005e-261 +2.7443136010000002e-261 +3.1e-41 +3.7482999999999997e-17 +1.0382199881671488e259 +8.4775e57 +1.6955e58 +3.391e58 +1.491473058304333e71 +9.9999999999999993e224 +5.0000000000000005e224 +1.0000000000000001e225 +2.0000000000000002e225 +4.0000000000000004e225 +8.1132346624528993e256 +7.8555987155e135 +1.5711197431e136 +9.88317684893509e-99 +2.01753371e-300 +3.7580451885211713e-309 +1.680117241e86 +3.5580500000000003e64 +7.1161000000000006e64 +1.4232200000000001e65 +2.8464400000000002e65 +5.6928800000000005e65 +1.1385760000000001e66 +1.2016921000000001e-161 +2.884211e242 +9.43e-105 +4.7000000000000005e-310 +2.5900952638283e53 +4.7623043612633398e-133 +2.3811521806316699e-133 +1.8765921699999998e-17 +1.4333021578099999e-168 +2.9769570431440002e-134 +1.4884785215720001e-134 +7.4423926078600006e-135 +3.7211963039300003e-135 +1.8605981519650002e-135 +1.6869300500000001e291 +3.3738601000000003e291 +6.7477202000000006e291 +1.3495440400000001e292 +9.9999999999999993e-273 +2.0000000000000002e-272 +1.0000000000000001e-272 +8.0097098621549223e225 +5.9288893520000005e-193 +2.9644446760000002e-193 +1.4822223380000001e-193 +7.4111116900000006e-194 +1.1199999999999999e-170 +5.5999999999999995e-171 +2.7999999999999998e-171 +1.3999999999999999e-171 +6.9999999999999994e-172 +3.4999999999999997e-172 +1.7499999999999999e-172 +3.8691328000000003e-247 +1.9345664000000002e-247 +9.6728320000000008e-248 +4.8364160000000004e-248 +2.4182080000000002e-248 +1.2091040000000001e-248 +6.0455200000000005e-249 +3.0227600000000002e-249 +1.5113800000000001e-249 +7.5569000000000006e-250 +3.7784500000000003e-250 +1.8892250000000002e-250 +9.4461250000000008e-251 +4.7230625000000004e-251 +4.7188036030000004e-105 +1.0999999999999999e-260 +4.0199999999999997e-213 +2.0099999999999998e-213 +9.9e-99 +2.018854322599169e-154 +1.0094271612995845e-154 +5.0471358064979224e-155 +2.5235679032489612e-155 +3.61e241 +5.7575750089999995e37 +1.5522465e105 +3.104493e105 +9.153328589189473e271 +4.5224480589999996e-52 +5.833e214 +9.9999999999999995e-127 +1.7482950453e120 +7.06181e92 +9.0699999999999993e299 +1.3531225e146 +2.706245e146 +5.41249e146 +2.780161250963e-289 +1.3900806254815e-289 +6.9504031274075e-290 +6.3150899999999995e-156 +1.1062010799999999e-201 +5.5310053999999995e-202 +2.7655026999999998e-202 +5.7879227300000005e96 +1.1575845460000001e97 +2.3151690920000002e97 +4.705824564401e-164 +1.8684919e216 +5.363049e174 +1e20 +7.19831e182 +2.7579615331839875e236 +6.813162912667e-88 +3.4065814563335e-88 +3.04879707019e161 +3.6974901709699997e-253 +4.3e-117 +3.9661659e-98 +1.98308295e-98 +4.5e181 +9e181 +1.4777544199999999e-106 +7.3887720999999994e-107 +6.6772499999999995e114 +1.3354499999999999e115 +2.6708999999999998e115 +5.3417999999999996e115 +1.0683599999999999e116 +2.1367199999999998e116 +4.2734399999999997e116 +8.5468799999999993e116 +3.2571988622299997e257 +1.1e32 +1.380983441e90 +5.8549143096092005e-78 +2.9274571548046002e-78 +1.4637285774023001e-78 +1.4989017813667569e-75 +5.75516173e-314 +7.7500698520899994e-101 +4.0420102074627997e-08 +2.0210051037313998e-08 +1.0105025518656999e-08 +5.1518257000000004e-65 +1.8382899999999998e-20 +7.41e244 +1.257961915575889e-68 +6.289809577879445e-69 +3.1449047889397225e-69 +1.0339176999999999e141 +2.0678353999999998e141 +9.9999999999999994e165 +1.0000000000000001e166 +2.0000000000000002e166 +2.64432415447e289 +1.649e-63 +1.404301087e-171 +7.021505435e-172 +2.3538003107983e-18 +1.7276429242717301e89 +2.1186610700000002e144 +4.2373221400000003e144 +1.1228404054249e-24 +1.9187877e73 +4.7000000000000004e274 +3.1000000000000003e46 +1.6698790000000001e260 +9.8356439800000008e-71 +4.9178219900000004e-71 +6.4483000000000005e-66 +5.1363715263927485e-124 +3.8480291488960003e-219 +1.9240145744480002e-219 +9.6200728722400008e-220 +4.8100364361200004e-220 +2.4050182180600002e-220 +1.2025091090300001e-220 +6.0125455451500005e-221 +3.0062727725750002e-221 +9.7780558677000008e162 +1.8631786081668517e303 +3.7263572163337033e303 +7.4527144326674066e303 +1.4905428865334813e304 +2.9810857730669626e304 +9e-170 +4.6633792313957e156 +2.9589703207899998e40 +4.4570000000000004e-142 +1.6111578661416884e80 +4.4000004221683893e-319 +7.1940999999999994e-23 +5.54218717991109e-56 +2.771093589955545e-56 +2.0849484899999998e-92 +6.8478025500000006e263 +1.3695605100000001e264 +2.7391210200000002e264 +5.4782420400000004e264 +1.0956484080000001e265 +9.6163999999999992e-74 +4.8081999999999996e-74 +2.4040999999999998e-74 +7.4973614144987006e216 +7.6619269623e-132 +9.9999999999999999e-186 +5e-186 +1.5000000000000001e217 +3.0000000000000002e217 +6.0000000000000005e217 +1.2000000000000001e218 +2.4000000000000002e218 +4.8000000000000004e218 +2.369209527e41 +1.1846638038810153e41 +1.0950818048037399e-232 +5.4754090240186996e-233 +6.493e-153 +3.21853845087e-271 +1.533350016491e-131 +7.666750082455e-132 +6.5093125896509995e198 +7.5529940323e-17 +2.010108320917859e-126 +6.46047708051e-66 +4.982639365661e-245 +2.237e209 +2.551189e-242 +3.1687037536784957e-10 +1.5843518768392479e-10 +7.9217593841962394e-11 +3.9608796920981197e-11 +1.9804398460490598e-11 +9.9021992302452992e-12 +4.9510996151226496e-12 +2.4755498075613248e-12 +4.087153097939e256 +3.3588979610999997e-178 +3.3339803784038297e201 +9.9999999999999993e-40 +4.0000000000000004e-39 +2.0000000000000002e-39 +1.0000000000000001e-39 +5.0000000000000005e-40 +1.5407799999999999e-72 +7.7038999999999994e-73 +3.0096074515700002e-75 +4.9790000000000004e-99 +1.3082901663787559e258 +4.6127317780000004e-21 +2.3063658890000002e-21 +1.1531829445000001e-21 +8.9999999999999999e122 +7.4290470779999994e-253 +3.7145235389999997e-253 +1.2278375620300001e-130 +2.8435867689999998e-53 +1.0559e-266 +2.9e-109 +1.45e-109 +5.5080000000000004e-174 +2.7540000000000002e-174 +1.3770000000000001e-174 +7.2436730000000006e36 +8.9103558459346535e296 +1.7820711691869307e297 +9.9999999999999997e106 +2.0995183653000002e-33 +3.4999999999999997e207 +6.9999999999999994e207 +1.3999999999999999e208 +1.5311032999999999e307 +2.4736676613508367e280 +8.8450000000000007e32 +1.7690000000000001e33 +3.5380000000000003e33 +7.0760000000000006e33 +3e-134 +1.5e-134 +7.5247086290462679e70 +5.1763936274126591e-65 +4.6927799999999996e-282 +2.3463899999999998e-282 +5.3353e-295 +1.928619179891e-73 +5.861e-137 +3.9083000000000003e104 +7.10187957e238 +9.429733287e-223 +1.8183112999999999e241 +1.888317e275 +2.2999999999999998e-80 +4.9711319034278414e-304 +4.11726057e169 +9.9999999999999994e252 +1.9999999999999999e253 +9.3928791603999992e-282 +4.6964395801999996e-282 +2.3482197900999998e-282 +3.7256656700000003e244 +2.8000099999999998e-289 +3.9577527e-216 +9.477646893e-164 +3.865421e-219 +1.9327105e-219 +6.5698813467628925e-35 +3.2849406733814463e-35 +1.6424703366907231e-35 +1.5766930000000001e-274 +5.9071858422790005e273 +1.1814371684558001e274 +2.3e66 +1.074588368017e262 +3.0839623900000003e220 +1.1206234631013729e-288 +2.5592470100000002e-242 +3.797240949496217e-309 +1.8986204747481085e-309 +4.8715370000000004e44 +6.1623650992323e-277 +1.364125037e146 +2.15e262 +4.3e262 +3.9999999999999997e-244 +1.9999999999999999e-244 +9.9999999999999993e-245 +4.9999999999999997e-245 +4.79994661353e159 +3e158 +8.9999999999999999e-83 +6.4999999999999995e285 +1.2999999999999999e286 +2.5999999999999998e286 +5.1999999999999996e286 +1.0399999999999999e287 +3.5966667538674997e64 +7.1933335077349994e64 +1.4386667015469999e65 +2.8773334030939998e65 +5.7546668061879995e65 +1.1509333612375999e66 +2.3018667224751998e66 +4.6037334449503996e66 +2.780241383379e236 +5.0899999999999996e-09 +4.9176952700000004e162 +2.9315355867260998e155 +1.17e-195 +1.9149457694009257e-45 +2.8476444999999998e239 +5.6952889999999995e239 +1.1390577999999999e240 +2.2781155999999998e240 +1.5656359941900001e251 +4.5471000000000004e-111 +9.9999999999999994e-99 +2.0000000000000002e-98 +1.0000000000000001e-98 +1.7900000000000001e151 +3.5800000000000003e151 +1.247465e193 +2.49493e193 +5.2999999999999996e-267 +2.7970732351159002e149 +5.5941464702318005e149 +1.1188292940463601e150 +4.1500000000000003e82 +8.3000000000000007e82 +1.6600000000000001e83 +3.3200000000000003e83 +6.6400000000000005e83 +1.0044569999999999e-39 +7.738127337e-73 +2.2111700000000002e-173 +1.1975223373688001e-46 +5.9876116868440005e-47 +2.9938058434220002e-47 +1.4969029217110001e-47 +1.7577872123308051e61 +3.5155744246616103e61 +7.0311488493232206e61 +1.4062297698646441e62 +2.8124595397292882e62 +5.6249190794585765e62 +2.0221288964599998e-272 +1.0110644482299999e-272 +6.2799999999999995e-41 +3.1399999999999997e-41 +1.5699999999999999e-41 +4.477112227e150 +3.482974734743573e89 +3.5667340742999997e92 +7.1334681485999994e92 +1.4266936297199999e93 +8.58675478954613e57 +2.2150445100000606e-319 +9.9999999999999988e47 +5.492680519e205 +5.2774000000000004e-180 +2.6387000000000002e-180 +1.0797589048279999e-30 +5.3987945241399996e-31 +2.6993972620699998e-31 +1.3496986310349999e-31 +6.7484931551749995e-32 +8.6380712386239993e-30 +4.3190356193119996e-30 +2.1595178096559998e-30 +9.0000000000000007e209 +3.4184945447e145 +9.2362663930000007e-80 +1.1810356700980696e69 +1.0233621547764699e197 +4.5399999999249504e-316 +4.7e156 +1.6700000000000001e142 +9.3323e-108 +9.9999999999999994e193 +1.0000000000000001e194 +2.0000000000000002e194 +2.4124388763e-133 +2.6128601370700002e-06 +4.8669101030470226e-15 +2.4334550515235113e-15 +4.5769192843472747e-52 +6.0316464400000005e-134 +3.0158232200000002e-134 +1.5079116100000001e-134 +7.9489651918909806e-216 +3.9744825959454903e-216 +7.8728799999999994e-188 +3.9364399999999997e-188 +1.9682199999999998e-188 +9.8410999999999992e-189 +4.9205499999999996e-189 +5.1713923823499996e168 +1.0342784764699999e169 +2.0685569529399998e169 +4.1371139058799997e169 +8.2742278117599993e169 +1.81549e-169 +3.422317e145 +4.3286440000000004e-176 +2.1643220000000002e-176 +1.0821610000000001e-176 +9.7270818118294892e131 +1.9454163623658978e132 +3.8908327247317957e132 +5.1e137 +4.2782319010000003e144 +7.1000000075003839e-318 +3.550000003750192e-318 +2.2284431168273e-260 +2.214734628529e-27 +8.63393e262 +3.401801546253797e-265 +5.6649999999999995e121 +1.1329999999999999e122 +2.2659999999999998e122 +4.5319999999999996e122 +9.0639999999999993e122 +7.5788396757499e-76 +3.6575285000000003e241 +7.3150570000000006e241 +1.4630114000000001e242 +2.9260228000000002e242 +5.8520456000000005e242 +1.9551589045268419e191 +1.27987733927449e-301 +3.2731000000000003e-153 +1.687e260 +1.776353741744701e-318 +9.9999999999999993e-304 +4.0000000000000004e-303 +2.0000000000000002e-303 +1.0000000000000001e-303 +5.0000000000000005e-304 +9.2345669999999993e212 +1.4321e-53 +1.7671017352579101e-231 +2.94897574603217e-137 +1.474487873016085e-137 +7.372439365080425e-138 +3.6862196825402125e-138 +8.0719733000000007e-185 +2.91135393787e-314 +1.0547970043e259 +1.6373250237079901e-153 +3.5278699999999997e61 +7.0557399999999994e61 +3.053873e-308 +8.6256506169999993e-89 +1.2472288082061458e134 +2.4944576164122915e134 +4.988915232824583e134 +1.1971445079912816e-105 +4.5771370999999996e240 +9.1542741999999993e240 +9.9999999999999994e-158 +2.0000000000000002e-157 +1.0000000000000001e-157 +3.301884995e111 +6.60376999e111 +3.940271e-42 +1.9701355e-42 +9.8506775e-43 +1.5e245 +3e245 +5.1599346804157004e109 +1.7e27 +4.6333382901e-80 +2.3494100000000002e-49 +8.1162268288421007e-126 +5.3090000000000004e171 +1.0618000000000001e172 +1.4021881761999999e-202 +7.0109408809999994e-203 +2.58391e-37 +3.59e-200 +2.9380319920000002e-50 +1.4690159960000001e-50 +7.3450799800000006e-51 +3.6725399900000003e-51 +1.8362699950000001e-51 +1.7530288778171709e-203 +3.4501158679500003e58 +6.9002317359000006e58 +1.3800463471800001e59 +2.7600926943600002e59 +5.5201853887200004e59 +8.899999731055047e-319 +1.7144075391725e291 +3.428815078345e291 +6.85763015669e291 +9.9999999999999994e-12 +2.0000000000000002e-11 +1.0000000000000001e-11 +9.1647271500000007e240 +1.8329454300000001e241 +3.6658908600000003e241 +7.3317817200000006e241 +1.210291e-133 +7.3006968933e182 +2.3137797848057002e212 +2.9999999999999999e-252 +4.5e150 +9e150 +1.0903630000000001e-117 +1.833455010598301e241 +1.6091182000000001e-97 +8.0455910000000006e-98 +1.0659520529200001e-266 +5.3297602646000004e-267 +2.6648801323000002e-267 +1.99e76 +3.229e108 +1.9310175926028061e306 +5.7481671774179995e-199 +2.8740835887089998e-199 +8.3003028501329419e-322 +1.251958437e-158 +6.259792185e-159 +3.1298960925e-159 +7.3359629e241 +7.1557017598679e-259 +4.8700000000000004e-220 +6.200459e-131 +3.59e-54 +4.003495257e-11 +1.5257343499999999e130 +3.0514686999999998e130 +6.1029373999999995e130 +1.2205874799999999e131 +5.934367e68 +1.12819747e-142 +1.4058709300000001e295 +1.42873e34 +9.9999999999999996e134 +1.3495e56 +2.699e56 +1.5409e102 +9.1751800999999993e240 +0.042999999999999997 +2.9999999999999997e-106 +4.4999999999999996e296 +8.9999999999999993e296 +1.7999999999999999e297 +3.5999999999999997e297 +1.506809440983691e-47 +8.2400505332787781e51 +1.2642309373e-40 +7.833839e-160 +8.84060735e206 +1.76812147e207 +7.8955e104 +1.5791e105 +2.32275118249e-80 +2.5847221456123639e255 +5.1694442912247278e255 +2.4677245e103 +4.935449e103 +1e281 +8.57981e-207 +1.9320409284775998e-191 +9.6602046423879992e-192 +4.8301023211939996e-192 +2.4150511605969998e-192 +1.2075255802984999e-192 +1.037273e-182 +6.5325840980999995e80 +1.3065168196199999e81 +2.6130336392399998e81 +4.37e-117 +3.0000000000000002e40 +1.636862584639e-212 +8.184312923195e-213 +4.6831913000000004e184 +6.8000000000000006e-178 +3.4000000000000003e-178 +1.7000000000000001e-178 +8.5000000000000007e-179 +1.3e168 +1.8594173534799999e-79 +9.2970867673999993e-80 +4.6485433836999996e-80 +2.1161240256400002e-238 +1.0580620128200001e-238 +5.2903100641000004e-239 +3.5055687537084347e235 +7.0111375074168694e235 +1.4022275014833739e236 +2.8044550029667478e236 +5.6089100059334955e236 +6.7955468999999995e-32 +5.2525312099999996e140 +1.0505062419999999e141 +9.804138622583063e-161 +1.223e131 +1.1525303e-198 +4.6303061e-139 +3.2164069937219397e-302 +1.6082034968609699e-302 +2.9132760461555271e270 +1e-216 +5.8031e211 +2.2990214999999998e240 +4.5980429999999996e240 +9.1960859999999993e240 +1.8392171999999999e241 +2.8549633e-171 +1.399e31 +2.424656389e159 +7.7837303e-278 +3.89186515e-278 +1.0550558309838999e-297 +6.447691e195 +6.1024891969999995e-75 +8.9010259880729993e265 +1.7802051976145999e266 +1.75156369e-116 +4.1804946273629597e-269 +2.0902473136814798e-269 +1.0451236568407399e-269 +5.2256182842036996e-270 +2.6128091421018498e-270 +1e-70 +5e-71 +3.2847249999999997e285 +6.5694499999999995e285 +1.3138899999999999e286 +2.6277799999999998e286 +5.2555599999999996e286 +1.0511119999999999e287 +2.1022239999999998e287 +4.2044479999999997e287 +4.7284634938219e-195 +3.485381419e-29 +7.1384776676599436e-26 +1.76380591299769e294 +3.35e229 +6.7e229 +3.1399999999999997e-13 +1.5699999999999999e-13 +7.8244000000000006e-219 +3.9122000000000003e-219 +1.9561000000000002e-219 +1.08492932839e-89 +1.836031030881e36 +1.4173904958919999e-289 +7.0869524794599994e-290 +3.5434762397299997e-290 +1.7717381198649999e-290 +9.7000000000000008e305 +4.3545552150999997e116 +8.7091104301999993e116 +1.44241541829191e-53 +2.8879e-199 +1.44395e-199 +7.7527e-191 +1e76 +1.37e-118 +6.85e-119 +5.017e280 +4.3000000000000003e-61 +6.8800299999999994e-60 +8.855301144911417e-145 +8.647819e-148 +1.196521643819e274 +1.3000000000000001e-37 +1.57e133 +1.7791041e-85 +5.8999999999999995e242 +3.2997e-153 +9.04196926205e296 +1.80839385241e297 +2.5421638800000002e-186 +1.2710819400000001e-186 +6.3554097000000005e-187 +4.2239390999999997e-151 +1.060597e-92 +2.3e-111 +1.15e-111 +1.1853871297627804e302 +2.3707742595255608e302 +4.7415485190511216e302 +3.5099999999999997e-116 +8.059e-157 +1.0769999999999999e-207 +6.135859723791e130 +1.6346142335260001e-125 +8.1730711676300007e-126 +3.831e275 +2.2710000000000002e-288 +1e222 +1.1019999999999999e-58 +5.5099999999999996e-59 +1.0636031e259 +1.205248347145584e41 +2.410496694291168e41 +2.4792616418565e103 +4.958523283713e103 +6.013244459e-311 +2.6024522890990002e-37 +4.7850023392599996e-223 +2.3925011696299998e-223 +1.1238526373239711e-114 +4.2695799697207997e-179 +2.1347899848603998e-179 +1.0673949924301999e-179 +5.3369749621509996e-180 +4.1472435988911201e-95 +1.9190000000000002e129 +3.8380000000000003e129 +2.2999999999999998e35 +4.5999999999999996e35 +4.934219e190 +1.7929000002239243e-318 +2.2318750000000002e265 +4.4637500000000004e265 +8.9275000000000007e265 +1.7855000000000001e266 +3.5710000000000003e266 +7.1420000000000006e266 +1.4284000000000001e267 +2.8568000000000002e267 +5.7136000000000005e267 +1.1427200000000001e268 +2.2854400000000002e268 +4.5708800000000004e268 +9.1417600000000007e268 +1.8283520000000001e269 +7.1502907702500006e120 +1.4300581540500001e121 +2.8601163081000002e121 +5.7202326162000005e121 +1.1440465232400001e122 +2.2880930464800002e122 +4.5761860929600004e122 +3.425e173 +6.85e173 +1.37e174 +9.9999999999999993e-276 +2.0000000000000002e-275 +1.0000000000000001e-275 +1.5000000000000001e127 +3.0000000000000002e127 +6.0000000000000005e127 +1.2000000000000001e128 +2.28387737e-229 +3.3999999999999997e-91 +1.6999999999999999e-91 +1.2238673872300001e72 +2.4477347744600002e72 +2.7322629999999998e-31 +2.297107825643e-316 +6.46624127851531e-302 +3.233120639257655e-302 +1.1062999999999999e293 +2.2125999999999998e293 +4.0549070776710997e-98 +3.2513589999999997e254 +3.6649674760573547e123 +7.3299349521147094e123 +1.4659869904229419e124 +2.9319739808458838e124 +7.9999999999999994e-129 +3.9999999999999997e-129 +1.9999999999999999e-129 +9.9999999999999993e-130 +4.9999999999999996e-130 +3e273 +6.5754603e80 +6.9999999999999995e-29 +1.4569576280969999e-286 +1.4228360268000001e-289 +7.1141801340000006e-290 +3.5570900670000003e-290 +1.7785450335000001e-290 +3.6825193435565e182 +7.365038687113e182 +2.3569999999999998e184 +3.0792500673482757e-16 +5.9e37 +9.7947803461886992e218 +1.9589560692377398e219 +2.9e-199 +3.8548025525760997e-163 +3.31896679e198 +4.8659582267687e-192 +2.43297911338435e-192 +1.216489556692175e-192 +2.6637575671801818e-239 +1.3318787835900909e-239 +2.61e-37 +1e17 +8.939549e-232 +4.1100000000000003e225 +8.2200000000000007e225 +3.541613651969927e-203 +2.5938995851135e196 +5.187799170227e196 +8.9325635609e-86 +2.7468866584661e174 +9.6131186914999992e274 +1.9226237382999998e275 +3.8452474765999997e275 +7.6904949531999994e275 +2.58104398769325e283 +5.1620879753865e283 +1.0324175950773e284 +3.3109192400000003e-07 +1.6554596200000001e-07 +8.2772981000000007e-08 +6.308720113999e133 +3.3180683749800003e-299 +1.6590341874900001e-299 +7.9644613500000006e104 +1.5928922700000001e105 +3.1857845400000003e105 +6.3715690800000005e105 +1.2743138160000001e106 +3.99952907e163 +9.9999999999999994e162 +1.9999999999999999e163 +4.1182868201289e79 +1.36547123e-236 +6.82735615e-237 +2.1384460625281612e113 +4.2768921250563223e113 +7e263 +1.06584681879e-92 +5.1989999999999996e50 +1.0397999999999999e51 +4.5886596250384904e268 +4.9159999999999996e-74 +2.4579999999999998e-74 +1.2289999999999999e-74 +8.9999986177733153e-319 +1.2999999999999999e50 +1.2174148306836901e-46 +8.3753575600000007e-182 +4.1876787800000003e-182 +2.0938393900000002e-182 +1.0469196950000001e-182 +1.0826388318999999e-207 +4.7515954917074126e97 +3.0311163631e-106 +1.51555818155e-106 +4.6109999999999542e-316 +8.2978329466832251e-154 +4.1489164733416126e-154 +5.2486192617590004e168 +1.292547e283 +7.7874999999999994e101 +1.5574999999999999e102 +3.1149999999999998e102 +6.2299999999999995e102 +1.2459999999999999e103 +2.4919999999999998e103 +4.9839999999999996e103 +9.9679999999999992e103 +1.9935999999999998e104 +3.9871999999999997e104 +7.9743999999999994e104 +1.5948799999999999e105 +3.1897599999999997e105 +3.0000000000000002e68 +6.0000000000000004e68 +1.5264003181e304 +1.7e-150 +3.023e-311 +2.6678227304489002e-93 +1.496958949e-283 +9.3172299999999993e299 +1.8634459999999999e300 +3.7268919999999997e300 +2.63947e81 +1.68393579761559e-122 +1.214705999e-251 +6.073529995e-252 +1.4099999999999999e177 +8.4502789999999993e82 +1.0305481679300001e225 +2.0610963358600002e225 +8.37e110 +9.9999999999999995e-189 +5.69746548466189e149 +1.0795894651e-266 +1.2639630537529999e280 +2.5279261075059998e280 +5.3991173000000004e-267 +3.2183224620397687e-274 +3.2498342847933703e-302 +9.4080055902682404e-226 +1.2999999999999999e-301 +5.6204912040405004e118 +1.1240982408081001e119 +2.2481964816162002e119 +4.4963929632324004e119 +8.9927859264648007e119 +2.84381e-202 +1.3299999999999999e-152 +2.191e-235 +3.1680700000000003e-13 +7.111179267117e-203 +6.0310000000000005e273 +2.618307498892531e109 +1.7270000000000001e-119 +1.4771600000000001e-168 +7.3858000000000006e-169 +3.6929000000000003e-169 +4.1e-185 +2.9832684610000002e-196 +9.9999999999999988e-43 +1e-42 +1.6472371967e-125 +2.7637686214497277e-118 +6.9999999999999995e58 +5.7038054795e149 +1.1407610959e150 +1.8893050798030398e-20 +9.4465253990151992e-21 +4.7232626995075996e-21 +2.3616313497537998e-21 +1.1808156748768999e-21 +5.9040783743844995e-22 +2.9520391871922498e-22 +3e-283 +4.5729785377846147e-142 +2.4499999999999998e159 +4.8999999999999996e159 +9.7999999999999992e159 +1.9599999999999998e160 +6.353e-305 +4.713898551e271 +3.7914607029681429e185 +2.9299999999999998e-286 +3.763e-79 +3.1600000000000003e-218 +1.5800000000000001e-218 +7.9000000000000006e-219 +4.7860329999999996e156 +9.7798589176935922e-192 +1.1000000000000001e-30 +1.1647254789999999e-52 +5.6447000037362418e-320 +1.832391e-287 +2.5571414929000002e252 +1e104 +6.3857399999999995e-246 +3.1928699999999997e-246 +1.149159e-83 +5.745795e-84 +2.823585165982724e-320 +2.3165000000000002e181 +4.6330000000000004e181 +9.2660000000000007e181 +1.8532000000000001e182 +3.7064000000000003e182 +3.17349647e-13 +1.1809999999999999e125 +7.38217e123 +1.6514386840999999e-271 +1.8315675719310001e-141 +1.4280030586990001e149 +2.3934638219e302 +9.5218754300852008e-254 +4.7609377150426004e-254 +2.3804688575213002e-254 +1.999349733151023e250 +2.2899999999999998e-142 +8.1979372183000007e107 +1.6395874436600001e108 +3.2791748873200003e108 +5.2188229999999996e196 +4.2430000000000003e-64 +3.1513463e-277 +2.0969586299999998e256 +4.1939172599999997e256 +3.6769651819344303e64 +7.3539303638688606e64 +1.4707860727737721e65 +2.9415721455475442e65 +6.109508702484921e99 +1.0899999999999999e144 +2.1799999999999998e144 +8.4599648484559693e-269 +2.4999999999999998e249 +4.9999999999999996e249 +9.9999999999999992e249 +1.9999999999999998e250 +3.9999999999999997e250 +7.9999999999999994e250 +1.5999999999999999e251 +3.1999999999999997e251 +6.3999999999999995e251 +6.3581859999999995e-159 +3.1790929999999997e-159 +2.3482197901e-285 +2.2642084748401e178 +4.3000000000000003e113 +8.6000000000000007e113 +1.7200000000000001e114 +9.2645079753777164e-316 +9.0000000000000008e-232 +2.8125587498689798e-233 +1.4062793749344899e-233 +1.9432638e-309 +1.1535780540374523e268 +3.4874068209e291 +7.7599999999999994e-17 +3.8799999999999997e-17 +1.9399999999999998e-17 +9.6999999999999992e-18 +4.8499999999999996e-18 +1.5026070000000001e-137 +3.0843897749021963e217 +2.05e253 +4.1e253 +2.3993838841129998e156 +4.7987677682259996e156 +2.7787392999999998e233 +5.5574785999999996e233 +1e-247 +5.21e-09 +2.1e256 +1.3643994874328498e143 +1.3e283 +2.5283e221 +3.9000000000000003e42 +1.835989e-141 +7.819727028113e-250 +4.3180760636109957e-179 +9.9999999999999989e-102 +3e301 +5.66002535266869e-174 +1.7861400000000001e-203 +8.9307000000000007e-204 +4.1683389999999997e138 +8.3366779999999993e138 +1.6673355999999999e139 +6.634519423e226 +1.7428350608621279e-60 +8.7141753043106393e-61 +4.3570876521553197e-61 +2.1785438260776598e-61 +1.0892719130388299e-61 +5.4463595651941496e-62 +5.0073943e-248 +1.8338109691000001e151 +2.9024000000042572e-317 +3.4527698159999997e-32 +1.7263849079999999e-32 +8.6319245399999993e-33 +4.3159622699999997e-33 +2.1579811349999998e-33 +7.2181154167509e-231 +3.60905770837545e-231 +8.4033655385190819e-241 +4.201682769259541e-241 +2.4381057134968988e187 +4.8762114269937976e187 +9.7524228539875952e187 +1.950484570797519e188 +3.7767637332986093e67 +7.5535274665972186e67 +5.1300000000000004e-245 +1.2259884517e100 +9.9999999999999993e44 +1.9999999999999999e45 +3.9999999999999997e45 +1.36420013e-208 +1.21047875508033e-77 +1.37618747613701e-90 +1.3000000000000001e-68 +1.7885847741527561e-203 +8.9429238707637807e-204 +4.4714619353818904e-204 +2.2357309676909452e-204 +4.448041422663e-117 +6.1542700000000005e304 +8.2335593608489993e107 +1.6467118721697999e108 +3.2934237443395997e108 +6.5868474886791995e108 +1.6898547999999999e-181 +8.4492739999999993e-182 +4.2246369999999997e-182 +6.2954469999999995e-190 +4.9999999999999996e190 +9.9999999999999991e190 +1.9999999999999998e191 +3.9999999999999997e191 +2.6042889573999998e-214 +1.3021444786999999e-214 +2.1964460999999998e-294 +2.4310000000000002e128 +4.8620000000000004e128 +1.50791161e-137 +7.53955805e-138 +7.0000000000000005e291 +1.4000000000000001e292 +3.511e-147 +6.49177e223 +6.3000000000000005e-190 +7.2710899999987492e-318 +3.04988865017e-311 +1.524944325085e-311 +8.3664870000000007e-08 +2.01e250 +6.2609e43 +7.41788507e269 +4.0124890000000003e-101 +1.97e-191 +5.6665410000000004e118 +1.1333082000000001e119 +2.2666164000000002e119 +4.5332328000000004e119 +1e-306 +9.9999999999999987e-307 +3e96 +1.19214107850688e-313 +3.085389e158 +5.522514849089269e-236 +3.4037810581283983e-268 +1.7018905290641991e-268 +1.9e272 +4.6783496545831004e-257 +5.7182981330000005e236 +1.1436596266000001e237 +1.1143587600000001e-117 +5.5717938000000004e-118 +2.7858969000000002e-118 +1.3929484500000001e-118 +1.1e-294 +5.5e-295 +1.0652999999999999e228 +4.7e-198 +8.287e166 +4.1522955999999997e-126 +2.0761477999999998e-126 +1.0380738999999999e-126 +5.1903694999999996e-127 +1.8563072287925e269 +3.712614457585e269 +7.42522891517e269 +1.3921e28 +1.7290727098699999e260 +2.3008452099999998e150 +1.64914265e254 +3.2982853e254 +9.9999999999999999e-161 +3.3811578909999997e111 +3e242 +2.053e194 +2.5224719684510002e-43 +4.036526776584949e-42 +4.3999999999999996e-148 +2.1999999999999998e-148 +1.0999999999999999e-148 +4.5300356949342196e-232 +2.2650178474671098e-232 +4.9395676756100004e305 +1.01824028780587e76 +3.764757e-197 +6.5665231517295995e-302 +3.2832615758647997e-302 +1.6416307879323999e-302 +8.2081539396619994e-303 +4.1040769698309997e-303 +2.0520384849154998e-303 +1.0260192424577499e-303 +4.2260949999999997e256 +8.4521899999999993e256 +1.6904379999999999e257 +3.3808759999999997e257 +1e-14 +5e-15 +2.5e-15 +7.8050000000000006e129 +1.5610000000000001e130 +3.1220000000000002e130 +6.2440000000000005e130 +1.22335148008353e-310 +7.4924479723702663e-110 +1.2490441e131 +5.9817556469999995e183 +1.1963511293999999e184 +2.3927022587999998e184 +1.7111034780000001e-63 +8.5555173900000007e-64 +8.4087878453556181e-300 +4.204393922677809e-300 +5.77880146521e-289 +6.1060000000000005e-19 +3.0530000000000002e-19 +1.7542315998661e-206 +1.0299999999999999e-98 +1.3256138568991099e-183 +6.5223426895910005e77 +8.17e-216 +6.6867042175411e-66 +7.4084999999999994e210 +1.4816999999999999e211 +2.9633999999999998e211 +5.9267999999999995e211 +1.6413868896138309e-156 +5.3394542700000004e227 +1.0678908540000001e228 +2.1357817080000002e228 +1.50955e301 +3.0191e301 +3.51839328829385e145 +7.0367865765877e145 +9.9999999999999999e131 +1.3553031764409e112 +3.413678617501403e-268 +5.159e-245 +2.5795e-245 +8.69303633e-179 +4.0832302771e-70 +7.788457e-76 +1.2354289859999999e-192 +6.1771449299999995e-193 +9.0000000000000007e293 +1.8000000000000001e294 +9.53e271 +6.3410134985929915e161 +1.16090043207e-83 +5.5899224610124696e-118 +1.2642309373e-43 +1.3753003700000001e143 +2.2051000000000002e-148 +5.0964926104335406e221 +1.3665335965999999e-267 +6.8326679829999995e-268 +3.8300000000000016e-312 +1.0029999999999999e-160 +1.3147460199999999e-155 +6.5737300999999995e-156 +7.1585571441798861e-116 +9.9999999999999996e277 +1.435e236 +2.87e236 +1.8810289999999999e241 +3.7620579999999997e241 +5.9799999999999995e-168 +2.9899999999999998e-168 +1.0130618999999999e-188 +5.8147000000000005e-230 +2.9999999999999997e37 +5.9999999999999995e37 +1.0100000000000001e250 +1.1846133085109523e-139 +5.9230665425547615e-140 +2.2815416163617e-173 +5.7665e295 +1.1533e296 +6.2733900000000005e-162 +5.4010000000000004e199 +1.1301893794169318e-145 +1.451432056829e62 +7.6999999999999994e-253 +1.3358041844269999e-270 +2.31490652852047e-142 +2.62908007379e-09 +1.194358303e125 +2.5731600000000002e-304 +1.2865800000000001e-304 +6.4329000000000005e-305 +1.7158699858250729e-63 +1.0162254809999999e163 +8.1553e-275 +4.07765e-275 +1.8869257e-51 +1e-219 +7.3e-26 +2.549e-276 +3e183 +1.0012759730000001e278 +4.0445473508349997e250 +8.0890947016699994e250 +1.6178189403339999e251 +3.2356378806679997e251 +8.7040000000000007e-33 +4.3520000000000003e-33 +2.1760000000000002e-33 +1.0880000000000001e-33 +5.4400000000000004e-34 +2.7200000000000002e-34 +1.3600000000000001e-34 +6.8000000000000005e-35 +3.4000000000000003e-35 +1.7000000000000001e-35 +8.5000000000000007e-36 +4.2500000000000003e-36 +2.1250000000000002e-36 +1.0625000000000001e-36 +1.0592620000000001e-241 +5.2963100000000004e-242 +8.5589404421860193e-269 +4.2794702210930097e-269 +1.700879663e-35 +8.49571e110 +7.635306989919e-225 +1.9932503e-278 +1.1517e91 +1e-73 +5e-74 +3.5265000000000003e291 +7.0530000000000006e291 +1.4106000000000001e292 +2.8212000000000002e292 +5.6424000000000004e292 +1.7861e-175 +2.5031341000000002e-220 +3.8161473059999997e-79 +1.9080736529999999e-79 +1.7835769814869e-321 +4.2792993909999997e-123 +4.7975488618422821e-167 +3.938988504304757e188 +1.8442536755000001e92 +3.6885073510000003e92 +7.3770147020000006e92 +1.4754029404000001e93 +6.2898499e-162 +9.9999999999999998e72 +2.00212799221519e-73 +1.001063996107595e-73 +2.459718239e-310 +8.67406963e54 +1.0738023689999999e82 +2.1476047379999998e82 +2.8827289075075188e90 +7.3956219e-200 +6.7627151067983295e-299 +1.1000000000000001e85 +2.2000000000000002e85 +4.4000000000000003e85 +2.309607497893e-55 +1.1548037489465e-55 +2.2799886950390358e-232 +1.1399943475195179e-232 +5.6999717375975896e-233 +6.2009875269999995e-47 +1.260399361e-307 +1.3176245741810001e137 +2.6352491483620002e137 +5.7016799999999996e-233 +2.8508399999999998e-233 +1.4254199999999999e-233 +7.1270999999999994e-234 +3.5635499999999997e-234 +9.9999999999999997e218 +4.9573485983e100 +1.4726107026573701e-112 +1.0714714238236856e-123 +1.01976206309e163 +1.0012372371e73 +1.4760869999999999e239 +2.9521739999999998e239 +4.057593087371e250 +1.1274622210000001e88 +2.2549244420000002e88 +1.1373671623970299e206 +1.2999999999999999e106 +3.4900000000000003e114 +6.9800000000000005e114 +6.1e-283 +2.4140017299999998e-108 +7.4000000000000006e-54 +3.7000000000000003e-54 +1.6029999999999999e74 +1.8724850851875659e269 +2.28930257657e-319 +1.144651288285e-319 +5.723256441425e-320 +9.9999999999999994e-279 +2.0000000000000002e-278 +1.0000000000000001e-278 +1.1102305041912133e-294 +3e124 +6.2169074293659995e-193 +3.1084537146829998e-193 +3.6539702510912283e-231 +1.8269851255456141e-231 +9.1349256277280707e-232 +4.5674628138640354e-232 +3.8950000000000003e157 +7.7900000000000006e157 +1.5580000000000001e158 +3.1160000000000002e158 +1.196305411339061e-80 +1.382655e289 +2.76531e289 +9.439356132561e-111 +5.9000000000000005e-112 +2.7622642863581e-208 +3.21581107e-218 +3.675892870967e-318 +1.5738999999999999e130 +2.2005999999999998e-266 +1.1002999999999999e-266 +9.142411051514033e-232 +9.9999999999999999e-133 +1.0097474859279469e-160 +1.0010899999999999e-278 +8.61e228 +3.5615953483387294e204 +7.1231906966774588e204 +1.9859547e247 +8.81031e-266 +9.1099999999999993e-291 +8.6699999999999993e-05 +1.8700000000000001e64 +4.5749482376499976e-232 +2.2874741188249988e-232 +4.2988483e-123 +3.8016999999999997e-197 +3.8721e-107 +1.32938269e50 +1.5509555819000001e-252 +3e-227 +9.8530000000000008e128 +1.9706000000000002e129 +3.9412000000000003e129 +8.9523610586444531e262 +3.803338491107e-197 +2.93e-230 +1.465e-230 +6.2047299999999995e-252 +9.258040299721e237 +4.2829999999999997e-182 +7.5436670000000001e-315 +3.164113300526e-308 +2.060557327e-70 +2.18186352936563e-92 +1.401e115 +6.4120000000000005e-131 +3.2060000000000003e-131 +1.6030000000000001e-131 +1.3260694216557e-155 +6.8269e-240 +9.9999999999999985e159 +5e159 +1e160 +7.075e86 +1.415e87 +2.83e87 +1.3700117030556113e-34 +6.9999999999999995e260 +2.0002346766242632e160 +1.8769619e-228 +7.959e247 +1.140738667365239e-291 +5.703693336826195e-292 +2.8518466684130975e-292 +2.4291859907258029e243 +4.31e-269 +2.9598950099999998e-112 +4.10795040063e-129 +1.0292968940164901e222 +7.8952999999999994e129 +3.0639771937537788e-283 +1.5319885968768894e-283 +2.4124165599999998e-21 +1.2062082799999999e-21 +6.0310413999999995e-22 +3.0155206999999998e-22 +9.9999999999999986e305 +1e306 +2.2763053086743e147 +1.983e188 +5.9935550661561155e211 +1.1987110132312231e212 +2.3974220264624462e212 +4.7948440529248924e212 +9.5896881058497847e212 +4.02639883219045e73 +8.0527976643809e73 +6.2711547e-134 +9.6207059813471893e-226 +2.40032750542435e66 +4.8006550108487e66 +8.2477105000000006e76 +1.6495421000000001e77 +3.2990842000000003e77 +6.5981684000000005e77 +4.658615e296 +9.31723e296 +7.32661e61 +4.147e-11 +1.58035e130 +3.1607e130 +5.5187136459156777e-121 +1.0978572927111e-33 +5.3204993999999996e-301 +2.6602496999999998e-301 +8.3236910571019e194 +2.219845669e-207 +2.8632322875e59 +5.726464575e59 +1.145292915e60 +2.29058583e60 +4.9243259999999996e-77 +2.4621629999999998e-77 +1.2310814999999999e-77 +8.4794351027299993e284 +6.8646315930999995e-35 +1e-191 +4.4959973771553436e-322 +1.2053549e271 +3.4000000000000003e-07 +1.7000000000000001e-07 +3.9541000000000003e129 +7.9082000000000006e129 +1.5816400000000001e130 +1.5100000000000001e-22 +3.407674097e-299 +8.6965881247e141 +1.4748129079289687e-25 +5.1501891153600004e-276 +2.5750945576800002e-276 +1.2875472788400001e-276 +6.4377363942000005e-277 +3.2188681971000003e-277 +1.6094340985500001e-277 +1.33e-155 +1.3031167699999999e47 +2.1700059e-210 +5.3329999999999996e196 +1.5289999999999999e301 +3.0579999999999998e301 +4.9299999999999996e-77 +3.1793767e189 +5.8145100000000005e90 +9.9999999999999998e-46 +2.951653781e-25 +1.7574999999999999e114 +3.5149999999999997e114 +7.0299999999999995e114 +1.4059999999999999e115 +2.8119999999999998e115 +5.6239999999999996e115 +1.1247999999999999e116 +1.13957e293 +4.3e-182 +3e-286 +8.1e278 +8.5289999999999993e-300 +2.1300621507424443e-154 +2.7835e289 +5.567e289 +5.6028157484032504e56 +1.1205631496806501e57 +2.2411262993613002e57 +4.4822525987226003e57 +8.9645051974452007e57 +1.7929010394890401e58 +3.5858020789780803e58 +7.1716041579561606e58 +1.4343208315912321e59 +1.4943900000000001e298 +2.9887800000000002e298 +8.1099999999999994e132 +8.5042597e138 +1.3503885594158909e-124 +6.7519427970794547e-125 +3.3759713985397273e-125 +1.6879856992698637e-125 +8.4399284963493183e-126 +2.3e-232 +2.003752739627e-191 +1.1148748999999999e144 +2.4018113200000002e-285 +1.2009056600000001e-285 +6.0045283000000005e-286 +9.9999999999999998e100 +2.2229682155237438e-61 +1.1114841077618719e-61 +5.5574205388093594e-62 +2.619e252 +3.1900000000000002e-103 +1.2982980360900001e134 +2.2282267796799783e290 +4.4564535593599565e290 +1.6300000000000001e192 +2.7050916411778053e-270 +1.51e270 +1.5116184847430001e124 +8.141e-306 +6.941329e83 +3.9327677865707e-135 +3.62756101980889e-116 +2.307e119 +9.2571103798691e-319 +1.076567699e-182 +8.2320999999999994e163 +1.6464199999999999e164 +2.0185684201329e219 +5.20619349107849e-158 +2.603096745539245e-158 +1.793e204 +4.9981800144877907e246 +5.2350466000000004e-245 +2.6175233000000002e-245 +3.6839119462350797e-231 +1.8419559731175399e-231 +9.2097798655876993e-232 +4.6048899327938496e-232 +3.81775497279441e95 +1.3004711489999999e-12 +4.270393427105819e-300 +7.0960174178038126e-265 +3.5480087089019063e-265 +1.7740043544509531e-265 +8.8700217722547657e-266 +1.421057e233 +1.2648054309183514e-74 +9.9999999999999995e246 +1.0000000000000001e247 +3.8063000000000003e-110 +2.8062841143000002e56 +1.3152653477650547e-186 +1.5953122545e43 +3.190624509e43 +6.49268085848367e279 +3.9670000000000003e129 +7.9340000000000006e129 +1.5868000000000001e130 +9.2462961091137e-27 +6.3201686299999995e71 +8.3115e281 +1.6623e282 +7.0402999999999995e260 +1.4080599999999999e261 +2.8161199999999998e261 +9.0999999999999993e234 +6.7e-97 +3.1000000000000002e127 +6.1e-255 +8.6419210589999993e169 +1.7283842117999999e170 +3.4567684235999997e170 +5.6641452394624904e174 +1.1328290478924981e175 +6.7957486836013105e-66 +1.4736517159999999e-84 +7.3682585799999994e-85 +3.6841292899999997e-85 +2.2200000000000002e-266 +1.1100000000000001e-266 +2.0000000000000001e-250 +1.0000000000000001e-250 +1.469451903e-289 +5.8100000000000005e31 +1.1620000000000001e32 +1.58011987715e217 +3.1602397543e217 +1.95424622862919e-253 +2.628949675e106 +5.25789935e106 +1.05157987e107 +6.3296299999999995e71 +1.2659259999999999e72 +1.7529808999999999e-296 +1.5791217943516943e-280 +7.8956089717584715e-281 +6.7099699999999995e-97 +4.198133407e-244 +3.7332967e238 +1.1186647808467e144 +2.2886906099999998e293 +9.9999999999999993e-105 +8.0000000000000007e-104 +4.0000000000000003e-104 +2.0000000000000002e-104 +1.0000000000000001e-104 +5.0000000000000004e-105 +1.1818484493e-229 +9.486933e-24 +4.47545e144 +8.9509e144 +9.3152277539242141e-114 +4.6576138769621071e-114 +1.0221933943732999e191 +3.274569757738647e46 +6.656039e-215 +7.5513757335e64 +1.5102751467e65 +4.53021171654673e-176 +8.5030000000000007e79 +3.0372200000000002e-22 +1.5186100000000001e-22 +2.4014320962609998e299 +2.065137389e163 +2.8874129877286098e-233 +1.21e-80 +9.9999999999999989e41 +1.532812401e96 +4.9900000000000001e-310 +4.5684098397769996e88 +1.2999999689907e-71 +2.1414800000000002e-154 +1.0707400000000001e-154 +5.3537000000000004e-155 +4.386133145167e-151 +8.3399299999999994e281 +1.6679859999999999e282 +9.151e-58 +4.5755e-58 +8.3876457494099994e194 +2.01717068513795e306 +4.0343413702759e306 +5.1199900000000004e190 +1.0239980000000001e191 +2.0479960000000002e191 +1e188 +2.431e125 +3.6896291e207 +6.373e130 +3.0000000000000002e-53 +5.21601e280 +1.6637486023818999e77 +3.0196920764723862e-286 +1.5098460382361931e-286 +9.3054300000323739e-319 +5.5e199 +1.1e200 +2.71745285783e-124 +2.2480000000000002e-148 +1.1240000000000001e-148 +5.6200000000000004e-149 +2.8100000000000002e-149 +1.4829999999999999e267 +2.9659999999999998e267 +2.1510000000000002e51 +6.973315969654567e229 +1.502201283e-199 +1.1902552426005719e-170 +5.9512762130028596e-171 +1.60449333043e-103 +8.02246665215e-104 +4.011233326075e-104 +1.7700000000000001e114 +2.1738888417014848e-322 +5.434722104253712e-323 +3.1007e68 +1.9419999999999998e-225 +9.7099999999999992e-226 +1.0260125e45 +2.052025e45 +4.10405e45 +8.2081e45 +1.2101e212 +6.1699999999999995e155 +1.2339999999999999e156 +4.51829786787e-89 +9.9999999999999694e-310 +8.0000000000000003e-309 +1.9999999999999988e-309 +1.0000000000000019e-309 +3.0000000000000002e93 +6.0000000000000005e93 +7e-209 +1.0220159999999999e-14 +5.1100799999999996e-15 +2.5550399999999998e-15 +1.2775199999999999e-15 +6.3875999999999995e-16 +3.1937999999999998e-16 +1.5968999999999999e-16 +7.9844999999999994e-17 +3.9922499999999997e-17 +7.046947499e201 +1.2983927000000001e-276 +5.90479e-289 +6.0606271477100005e65 +3.33885018994803e-215 +7.155362187e86 +2.8999999999999998e264 +4.9606549008196141e215 +1.601e-308 +3.7237707377971713e-172 +2.5785687981969998e103 +4.316750825833e-241 +3.4246675900000003e285 +6.8493351800000005e285 +1.1185371620152999e85 +2.2370743240305998e85 +8.58870226705063e-154 +3.0947139549e-137 +1.54735697745e-137 +3.6733442851200003e-203 +1.8366721425600001e-203 +9.1833607128000007e-204 +4.5916803564000004e-204 +2.2958401782000002e-204 +1.1479200891000001e-204 +5.7396004455000004e-205 +2.8698002227500002e-205 +9.9999999999999992e-164 +1.2800000000000001e-161 +6.4000000000000005e-162 +3.2000000000000002e-162 +1.6000000000000001e-162 +8.0000000000000006e-163 +4.0000000000000003e-163 +2.0000000000000002e-163 +1.0000000000000001e-163 +5.0000000000000004e-164 +2.5000000000000002e-164 +1.2500000000000001e-164 +7.2825276196999741e-321 +3.7865283547900003e210 +7.5730567095800006e210 +7.0000000000000001e-63 +1.5968759000000001e130 +1.1531096300000001e-145 +4.9910000000000004e128 +7.832506061e185 +2.7e-242 +1.35e-242 +1.80226713071e-147 +3.7e207 +8.439398533053e-244 +4.2196992665265e-244 +1.3130363119999999e-304 +6.5651815599999995e-305 +3.2825907799999997e-305 +1.6412953899999999e-305 +8.2064769499999994e-306 +1.0518299999999999e194 +2.1036599999999998e194 +2.0878270533434429e-70 +7.5398271090000006e297 +7.9999999999999993e-17 +3.9999999999999997e-17 +1.9999999999999998e-17 +9.9999999999999992e-18 +4.9999999999999996e-18 +8.8439532113775841e-92 +5.7532999999999996e292 +1.1506599999999999e293 +2.3013199999999998e293 +4.6026399999999996e293 +5.9999999999999995e-258 +2.9999999999999997e-258 +9.0000000000000007e144 +6.4710073234908775e-190 +4.8855069041078826e-21 +1.6447766271992976e192 +3.2895532543985953e192 +6.5791065087971905e192 +1.3158213017594381e193 +2.6316426035188762e193 +5.2632852070377524e193 +1.0526570414075505e194 +4.0282069199999997e-250 +2.0141034599999998e-250 +1.0070517299999999e-250 +5.0352586499999996e-251 +1.4561700000000001e-28 +1.917e36 +7.9027001303023e-194 +3.95135006515115e-194 +1.9006367e-82 +7.878699279013e244 +6.0626524913979995e-286 +3.0313262456989998e-286 +1.5093869121883001e298 +3.0187738243766002e298 +8.7285984822999993e-123 +1.3771451851e-152 +6.4899999999999995e161 +1.2979999999999999e162 +2.5e128 +5e128 +1e129 +1.2967723887347901e308 +1.1680699998978751e-319 +5.8403499994893754e-320 +2.6934638428347e-301 +3.5887030159858493e86 +7.1774060319716986e86 +1.2002326461e-111 +2.7e50 +1.1e141 +5.96381266151e121 +1.9395013e-138 +2.5125222722247e187 +5.17351273e103 +8.97505277921e85 +9.80431648e-313 +2.236901207273e-120 +2.9259220107000002e177 +1.7307899999999999e-94 +1.10179e-05 +9.9999999999999996e274 +1.0000000000000001e275 +2.7253000000000002e168 +5.4506000000000004e168 +1.0901200000000001e169 +8.8725237679626817e-238 +4.1950531598299997e281 +8.3901063196599994e281 +2.9999999999999997e34 +4.1498934468099997e-188 +9.4368349e-201 +1.3e162 +1.8999999999999998e210 +3.3172602852282797e-41 +1.6586301426141399e-41 +8.2931507130706994e-42 +6.7064241183914968e-215 +9.50107866770267e209 +4.91201e184 +8.3771e-70 +4.18855e-70 +5.98506105036593e-171 +2.992530525182965e-171 +2.8387e-90 +5.8643000000000005e31 +2.2347405782445e172 +4.469481156489e172 +1.9911707e-281 +9.9558535e-282 +4.97792675e-282 +4.1449999999999997e104 +8.2899999999999994e104 +1.6579999999999999e105 +3.3159999999999997e105 +6.6319999999999995e105 +1.3263999999999999e106 +4.3e284 +9.9999999999999989e-223 +6.2501441e-224 +1.130977991191931e-148 +5.654889955959655e-149 +1.5849010000000001e-193 +9e-61 +6.292799e186 +1.2570693472e-310 +9.407e-260 +1.181e-201 +1.9266107730305399e-256 +9.6330538651526993e-257 +2.35186204693e-260 +1.175931023465e-260 +9.7175572289999993e-139 +5.8627103783665004e177 +1.1725420756733001e178 +2.3450841513466002e178 +4.6901683026932004e178 +9.3803366053864007e178 +2.59516879e-43 +1.323e-99 +3.1579999999999998e-252 +1.5789999999999999e-252 +6.4766168833734675e248 +1.2499746482388199e-77 +6.2498732411940995e-78 +2.579527061e190 +9.9999999999999993e-77 +8.0000000000000006e-76 +4.0000000000000003e-76 +2.0000000000000002e-76 +1.0000000000000001e-76 +5.0000000000000004e-77 +4.2308621846830003e48 +8.4617243693660006e48 +2.1993495425553079e-64 +2.377e-288 +3.87e-51 +8.7908283811500007e82 +1.7581656762300001e83 +3.5163313524600003e83 +7.0326627049200005e83 +1.5700000000000001e-19 +1.8239221e263 +3.8579723e-256 +9.889941e243 +4.1032423578099864e-219 +2.5729999999999998e-15 +2.6775502160000002e-273 +1.3387751080000001e-273 +6.6938755400000005e-274 +3.3469377700000003e-274 +1.6734688850000001e-274 +2.1284047432070002e-39 +1.19305251433339e-83 +1.7379999999999999e-240 +8.6899999999999993e-241 +4.113156185e132 +8.22631237e132 +5.27600657e-158 +1.528949e-227 +4.9999999999999996e69 +9.9999999999999992e69 +1.9999999999999998e70 +3.9999999999999997e70 +7.9999999999999994e70 +4.254065040009565e107 +8.50813008001913e107 +8.620065543e284 +1.1494000000000001e-117 +5.7470000000000004e-118 +1.01e42 +4.1456491841256737e-247 +2.0728245920628368e-247 +1.2053488041748999e-111 +6.6915448055204566e-128 +1.81e145 +6.3475610845962541e-47 +1.3e-43 +1.4386007827584895e-264 +1.5466350000000001e242 +3.0932700000000002e242 +6.1865400000000005e242 +1.2373080000000001e243 +7.4796419973811221e266 +4.067753e-191 +4.5067214989181897e85 +5.0309265593256004e-18 +2.5154632796628002e-18 +1.2577316398314001e-18 +6.2886581991570005e-19 +3.1443290995785002e-19 +1e216 +2.69e-68 +5.87803e177 +2.0284427000000002e247 +1.2691000000000001e100 +2.5382000000000002e100 +1.9199999999999999e-23 +9.5999999999999993e-24 +4.7999999999999996e-24 +2.3999999999999998e-24 +1.1999999999999999e-24 +5.9999999999999995e-25 +2.9999999999999998e-25 +1.4999999999999999e-25 +7.4999999999999994e-26 +3.6590000000000003e117 +2.4689016962601002e38 +3.1670573301e-252 +1.6357959999999999e-131 +8.1789799999999994e-132 +4.0894899999999997e-132 +2.0447449999999998e-132 +6.0232771499999995e180 +1.2046554299999999e181 +2.4093108599999998e181 +4.8186217199999996e181 +6.8252848375999995e-38 +3.4126424187999997e-38 +1.7063212093999999e-38 +8.5316060469999993e-39 +4.2658030234999997e-39 +7.3137121530000006e263 +1.4627424306000001e264 +3.2728483599999997e-131 +1.6364241799999999e-131 +8.1821208999999994e-132 +4.0910604499999997e-132 +1e-281 +1.5000000000000001e121 +3.0000000000000002e121 +6.0000000000000005e121 +1.2000000000000001e122 +2.4000000000000002e122 +4.8000000000000004e122 +8.6567499328316793e-08 +4.3283749664158397e-08 +2.1641874832079198e-08 +1.0820937416039599e-08 +5.4104687080197996e-09 +2.7052343540098998e-09 +1.3526171770049499e-09 +6.7630858850247495e-10 +9e-120 +7.1e-150 +1.2999999999999999e249 +1.4450297725210001e87 +1.1000000000000001e-269 +1.6517888236141461e-13 +8.2589441180707306e-14 +5.2523008275e221 +1.0504601655e222 +2.100920331e222 +1.1699360426633699e-232 +1.0710716717266999e166 +2.1421433434533998e166 +2.7807439990000002e199 +3.69193031e-262 +1.6080818000000001e-221 +8.0404090000000006e-222 +6.95993335e52 +1.39198667e53 +5.42548879991e-301 +2.712744399955e-301 +9.7021e94 +1e-135 +2.2522011802999998e-120 +6.2999999999999995e127 +3.228975079123823e-16 +1.2600345630000001e128 +2.5200691260000002e128 +5.0401382520000004e128 +8.6309914370769e-67 +3.8048031956009e297 +6.9127000000000005e-212 +6.431413683e-75 +3.2157068415e-75 +7.1812054883e-178 +4.32204131e-213 +2.3235e293 +4.647e293 +7.3547458068516294e-175 +6.64648232303e46 +5.5457166099927035e140 +1.7199999999999999e-125 +8.5999999999999993e-126 +4.2999999999999997e-126 +2.1499999999999998e-126 +9.7472839790000007e299 +3e-230 +1.82539688155099e204 +2.1617999999999998e-213 +1.0808999999999999e-213 +1.0881346990999999e197 +2.3523821653299998e-27 +5.5544957e-06 +3.05053e152 +8.1e-309 +5.0137359899999996e-282 +2.4485431944601998e-285 +1.2242715972300999e-285 +1.664869447e-100 +3.4134053672800003e-243 +1.7067026836400001e-243 +8.5335134182000007e-244 +4.2667567091000003e-244 +2.1333783545500002e-244 +9.9999999999999998e156 +2.9356999999999998e264 +1.5709999999999999e68 +3.59540281156751e-178 +4.4702621900000003e-92 +1.0809046790482052e-67 +1.2329142552922999e125 +2.4658285105845998e125 +1.0740342100000001e166 +2.6222797700000002e162 +5.2445595400000004e162 +1.0489119080000001e163 +3.2288648240170211e276 +3.1128017297100098e96 +4.3768562449130003e256 +3.562189e-150 +1.7810945e-150 +8.9054725e-151 +1.630717067e248 +2.1099999999999998e76 +1.25e302 +2.5e302 +5e302 +1e303 +4.2256835946307e-70 +2.11284179731535e-70 +3.6811212581999997e-29 +1.8405606290999999e-29 +2.3789999999999998e-55 +1.48205092049e-261 +3.8731060261677703e182 +7.7462120523355406e182 +3e62 +2.9207843518490002e-146 +1.9899999999999998e-253 +8.447e76 +3.86218574174581e-23 +7.527941e266 +1.93530683873e-315 +5.939e236 +7.74202077e-315 +4.35841e-300 +6.9379999999999995e-212 +3.4689999999999997e-212 +3.12150904708683e-50 +3.9270619902967197e-284 +1.9635309951483599e-284 +9.8176549757417993e-285 +4.9088274878708996e-285 +2.4544137439354498e-285 +9.9999999999999987e-195 +1e-194 +1.7330000000000001e-66 +7e-94 +6.45e71 +1.29e72 +4.0270821632825953e216 +8.0541643265651906e216 +1.6108328653130381e217 +3.2216657306260762e217 +6.4433314612521525e217 +1.2886662922504305e218 +3.92823610019177e-284 +1.964118050095885e-284 +2.9056341970999998e87 +2.0599999999999998e-278 +1.0299999999999999e-278 +1.0593873433291e-216 +5.2969367166455e-217 +1.2988513869969843e-161 +4.1439172197352097e278 +1.5123541820909999e-171 +8.4969921300000006e135 +1.6993984260000001e136 +9.9999999999999997e-49 +1.2037169452670051e-83 +1.8889766120999999e-26 +2.83e-121 +3.7822177e-172 +4.7484084160000004e-114 +2.3742042080000002e-114 +1.1871021040000001e-114 +5.9355105200000005e-115 +2.9677552600000002e-115 +1.4838776300000001e-115 +7.4193881500000006e-116 +3.7096940750000003e-116 +1.5544065e37 +3.108813e37 +4.6086201209099352e116 +4.0017768700000003e-48 +1.765799006753578e170 +8.529e-303 +3.998072635e98 +7.99614527e98 +2.1350667790000002e194 +0.00035705999999999997 +0.00017852999999999999 +9.97422852243e-254 +1.6397066112623e-44 +3.93925825416941e213 +5.4973503145690385e109 +1.0994700629138077e110 +1.09e-08 +2.5e97 +5e97 +1e98 +5.4447e137 +1.16043e-117 +8.9999999999999994e259 +2.4602842934106998e-285 +2.29417e203 +3.2117000000000002e304 +6.4234000000000005e304 +5.81e-264 +1.4700000000000001e59 +8.465904545661e222 +6.6497e133 +5.7618132999999996e261 +1.1523626599999999e262 +5.5959746840000004e-298 +2.7979873420000002e-298 +1.3989936710000001e-298 +2.27e-266 +2.2921713548775202e-294 +1.1460856774387601e-294 +5.7304283871938004e-295 +2.8652141935969002e-295 +1.4326070967984501e-295 +6.839690944507e195 +5.50706168430263e-37 +1.33154371e-12 +6.075427e180 +4.8759930218200004e-257 +2.4379965109100002e-257 +4.7321093700000004e-27 +2.4999999999999998e243 +4.9999999999999996e243 +9.9999999999999992e243 +1.9999999999999998e244 +3.9999999999999997e244 +7.9999999999999994e244 +1.5999999999999999e245 +3.1999999999999998e245 +6.2364592410999995e-109 +8.0608999999999994e-135 +1.43197739118897e-149 +1.2912103874768999e-279 +5.3641999999999996e-245 +2.6820999999999998e-245 +7.9e67 +1.3e131 +8.55684137e194 +8.7426642592563263e-154 +4.20526983e-42 +2.102634915e-42 +3.699e-29 +3.25748071e-162 +1.27e128 +1.5707100000000001e301 +3.1414200000000002e301 +1.133e172 +3.362084235203407e105 +2.554350485213e41 +1.5110000000000001e-230 +1.2233822149999999e94 +2.4467644299999998e94 +4.8935288599999996e94 +9.7870577199999993e94 +4.7888119999999996e-201 +2.3944059999999998e-201 +1.1972029999999999e-201 +4.0000000000000003e-253 +2.0000000000000001e-253 +1.0000000000000001e-253 +3e149 +1.90347e33 +1.2394951129999999e271 +2.4789902259999998e271 +1.7806087000000001e83 +2.3314555050999998e234 +3.6860705160199997e-88 +1.8430352580099999e-88 +3.013475807e208 +1.229014358091e153 +8.0121416369877964e244 +1.6024283273975593e245 +6.233e183 +2.6226107442648198e-248 +1.3113053721324099e-248 +6.0799999994641929e-317 +3.7104330002677615e-321 +1.1748735500377578e-145 +1.6897e164 +1.95424622862919e-256 +1.5090000000000001e62 +3.0180000000000002e62 +3.96401000136487e-225 +1.982005000682435e-225 +4.63540989e-176 +2.1564088200389768e-39 +4.2487477134843939e76 +1e-107 +5e-108 +2.5e-108 +1.3775516516299999e255 +3.1730799999999998e-224 +1.5865399999999999e-224 +7.9326999999999994e-225 +3.7546390799701003e148 +1.4016678315224001e-152 +7.0083391576120005e-153 +3.5041695788060003e-153 +1.7520847894030001e-153 +8.7604239470150007e-154 +4.1508370519e73 +1.80983878831e-32 +1.7038695298700001e-215 +9.6977112097099993e268 +5.862821e292 +1.8341526859645391e145 +3.6683053719290783e145 +7.3366107438581566e145 +1.50915449652677e208 +7.9804791629e-312 +2.4887541467e-21 +3.9740303253423703e272 +2.0790289000000002e-73 +1.0020586856206699e-253 +9.9999999999999994e38 +1.0000000000000001e39 +2.0000000000000002e39 +1.1603399999999999e-176 +5.8016999999999996e-177 +6.1694399999999995e-140 +3.0847199999999998e-140 +1.5423599999999999e-140 +7.7117999999999994e-141 +3.8558999999999997e-141 +1.9279499999999999e-141 +1.3023785e277 +2.604757e277 +2.5438880412699998e274 +5.0877760825399996e274 +1.7976035070929839e-296 +8.9880175354649193e-297 +4.4940087677324597e-297 +2.2470043838662298e-297 +1.5916497665927651e127 +3.1832995331855302e127 +6.3665990663710605e127 +1.2733198132742121e128 +2.5466396265484242e128 +5.0932792530968484e128 +1.7882773546000001e-209 +8.9413867730000007e-210 +4.4706933865000003e-210 +8.4370395429999994e-42 +3.6910965100000003e58 +1.0435469999999999e132 +8.1e-281 +2.43e122 +6.1800634809029995e-286 +3.9643e67 +1.3831e-37 +9.9999999999999998e184 +1.79941541e-296 +8.99707705e-297 +9.95779191233e125 +7.198413193889e-296 +4.7130159998439004e-145 +1.784737339e229 +3.1841179100000002e273 +3.327964046695e74 +6.65592809339e74 +2.94023258653e146 +7.4056680639705994e-234 +3.7028340319852997e-234 +2.81e-152 +1.405e-152 +4.219331e104 +2.2384682592736198e-210 +1.1192341296368099e-210 +1.5219302823259487e-25 +7.6096514116297434e-26 +3.8048257058148717e-26 +1.9024128529074359e-26 +9.5120642645371793e-27 +4.7560321322685896e-27 +3.11701e-22 +4.2751381e281 +1.0007409381937001e185 +2.0014818763874002e185 +2.640249691772777e-43 +1.2712783e-77 +5.1571e-46 +1.50092703e-56 +8.422442047e-247 +9.0260372170000007e54 +4.3738589357060003e-213 +2.1869294678530002e-213 +1.2180156596930001e-24 +3.9659000000000003e213 +7.9318000000000006e213 +9.9999999999846534e-313 +1.6000000000000149e-311 +3.0000000000000002e90 +6.0000000000000005e90 +9.0467735444557303e-238 +1.672724348666049e133 +3.4000000000000003e-128 +1.7000000000000001e-128 +1.3778910227790001e50 +2.7557820455580002e50 +2.500750596e-313 +1.8999999999999999e266 +3.7999999999999997e266 +7.5999999999999994e266 +3.9414487015309997e-197 +6.492790319e-280 +3.0012291361802702e90 +6.4597143927000005e-193 +1.450235e261 +2.90047e261 +8.9e169 +7.0739354721e-240 +9.9999999999999989e-167 +6.821e223 +2.9999999999999998e236 +2.53549e-136 +1.267745e-136 +3.4669352308088024e-38 +1.4035055509e286 +7.2636507685000005e114 +1.4527301537000001e115 +2.9054603074000002e115 +5.8109206148000004e115 +1.1621841229600001e116 +1.3256881399673e308 +1.1156685423688216e-123 +5.5783427118441078e-124 +2.7891713559220539e-124 +6.53702169859885e276 +1.30740433971977e277 +4.4777979910000003e82 +2.9e-236 +1.45e-236 +3.8806222580999997e210 +1.2578671000000001e-254 +9.9999999999999995e-21 +2.0000000000000002e-20 +1.0000000000000001e-20 +1.16805732787e175 +1.9177453899999999e-113 +1.817623e114 +4.9318096299999996e-52 +2.2623754307e54 +4.3999661561541e-08 +1.8060000000000001e-296 +9.0300000000000007e-297 +9.459317839e-145 +1.0883449027243198e166 +3.219e-106 +2.4508540128500072e181 +1.3546358589999999e106 +4.0414392516959303e-48 +2.0186465e98 +4.037293e98 +4.7664457e119 +1.858104882558689e-234 +9.290524412793445e-235 +1.745778318467e-125 +9.9999999999999992e125 +6.2500000000000005e124 +1.2500000000000001e125 +2.5000000000000002e125 +5.0000000000000004e125 +1.0000000000000001e126 +2.0000000000000002e126 +4.0000000000000003e126 +8.0000000000000006e126 +1.6000000000000001e127 +3.2000000000000002e127 +6.4000000000000005e127 +1.2800000000000001e128 +2.5600000000000002e128 +5.1200000000000004e128 +1.0240000000000001e129 +1.4456918970339714e-295 +4.637e57 +1.1999000000000001e-114 +1.8993700000000001e61 +1.0835035693345548e253 +2.6284957199999998e-161 +1.3142478599999999e-161 +6.5712392999999995e-162 +9.668687564653e296 +2.0060000000000002e-166 +1.0030000000000001e-166 +8.1383286999999994e-135 +1.0000000000000001e272 +2.0000000000000001e272 +4.0000000000000003e272 +2.5080436684036002e-167 +1.2540218342018001e-167 +6.2701091710090005e-168 +1.2595749e-108 +2.296401861195e231 +4.59280372239e231 +5.1429275775881e-310 +7.9258934545889994e300 +6.7497754999999995e192 +1.3499550999999999e193 +2.6999101999999998e193 +5.3998203999999996e193 +1.0799640799999999e194 +1.042145473e-132 +6.5769999999999995e-162 +3.1878329999999998e214 +1.1762110999999999e234 +6.7e-72 +1.234681111e94 +2.741588795773e78 +1.0745168092133267e281 +5.8314460722370004e115 +1.4848760510000001e205 +2.9697521020000002e205 +1.3172756040311623e-307 +6.5863780201558117e-308 +2.709612507e-245 +1.6844647506652001e-159 +8.4223237533260006e-160 +4.2111618766630003e-160 +2.1055809383315002e-160 +4.9717e-139 +1.6648099999999999e161 +3.3296199999999998e161 +3.98644667e213 +4.0999999999999997e275 +5.47935315814455e224 +1.09587063162891e225 +1.0151913027174189e303 +4.5911061039999997e-266 +2.2955530519999998e-266 +1.1477765259999999e-266 +5.7388826299999996e-267 +2.8694413149999998e-267 +8.351543e-278 +1.9175330000438372e-318 +3.3921867191e251 +9.9999999999999996e-226 +2.157029e-157 +7e-125 +1.4260471367586441e-34 +7.1302356837932205e-35 +6.0398420598493e-56 +1.8432804100000001e-60 +6.4644069927999995e-252 +3.2322034963999998e-252 +1.6161017481999999e-252 +8.0805087409999994e-253 +4.0402543704999997e-253 +4.1378294570975613e-250 +6.390935023893e68 +1.4421200000000001e-208 +7.2106000000000005e-209 +3.6053000000000003e-209 +8.8799999999999993e-95 +4.4399999999999997e-95 +2.2199999999999998e-95 +1.1099999999999999e-95 +5.5499999999999996e-96 +6.4333e-165 +3.21665e-165 +4.1000000000000003e-222 +3.4358310591572107e-69 +2.19894440507e-67 +1e-79 +5e-80 +2.5e-80 +7.0370461804485031e-66 +3.5185230902242515e-66 +1.7592615451121258e-66 +8.7963077255606288e-67 +4.7684899999999996e-86 +1.7746044937855001e52 +3.5492089875710003e52 +7.0984179751420005e52 +1.4196835950284001e53 +2.8393671900568002e53 +2.213321e-300 +4.0093e272 +8.3e101 +5.3236604263579996e-189 +2.6618302131789998e-189 +4.4999999999999997e82 +8.9999999999999993e82 +1.7999999999999999e83 +3.5999999999999997e83 +2.1e-219 +6.8899999999999995e282 +1.3779999999999999e283 +2.7559999999999998e283 +4.1290853178533503e188 +8.2581706357067006e188 +1.6516341271413401e189 +3.3032682542826802e189 +1.6784518952260001e-72 +8.3922594761300006e-73 +1.4876838658144641e205 +3.9e210 +3.921133391e123 +4.9975765767470004e66 +9.9951531534940007e66 +1.9990306306988001e67 +6.81e-41 +1.1928942589999999e-86 +6.207899203e298 +2.9e-149 +7.1499e-181 +2.2810000000000002e259 +2.0433778451575898e-281 +9.9999999999999998e66 +4.6415326116400003e-148 +2.3207663058200002e-148 +1.1603831529100001e-148 +4.3e-70 +2.9868599301200002e-233 +1.4934299650600001e-233 +7.4671498253000006e-234 +5.685269209e53 +5.828511767515961e-90 +2.728733e-186 +1.3643665e-186 +1.2915369999999999e187 +2.5830739999999998e187 +5.1661479999999996e187 +6.5982357899070195e-162 +3.2991178949535098e-162 +6.4580919649999995e186 +1.2916183929999999e187 +2.5832367859999998e187 +5.1664735719999996e187 +1.0332947143999999e188 +2.0665894287999998e188 +5.96301090559e59 +1.3099999999999999e218 +2.7176258005319167e-245 +1.3588129002659584e-245 +6.7947283160347995e-246 +3.3973641580173997e-246 +1.6986820790086999e-246 +6.3557000000000005e-196 +2.062615627871e-163 +4.7775363123854004e-86 +2.3887681561927002e-86 +1.09807193617703e-272 +1.9048840151e-290 +5.02149e271 +9.9999999999999998e212 +2.0972299999999998e219 +4.1944599999999997e219 +8.3889199999999994e219 +2.907e-295 +1.4535e-295 +1.31093840873309e218 +1.82500047099253e-237 +3e-28 +2.0774237473452408e247 +4.1548474946904817e247 +8.3096949893809634e247 +5.6241567934102607e-270 +7.4926299999999994e117 +2.907667445473e-295 +1.9727483088780658e182 +6.9258669999999995e-156 +7.2262497150701e-63 +1.608203469042232e273 +3.216406938084464e273 +1.88243249e176 +3.15119777e-168 +3.4463773727999997e-69 +1.7231886863999999e-69 +8.6159434319999994e-70 +4.3079717159999997e-70 +2.1539858579999998e-70 +1.0769929289999999e-70 +5.3849646449999996e-71 +2.6924823224999998e-71 +8.92950413e256 +3.999350789e-284 +1.6034050000000001e68 +3.2068100000000002e68 +6.4136200000000005e68 +1.2827240000000001e69 +2.5654480000000002e69 +5.1308960000000004e69 +3.0420922256340112e149 +5.1866515620680004e-105 +2.5933257810340002e-105 +1.2966628905170001e-105 +6.4833144525850005e-106 +1.0207625000000001e157 +2.0415250000000002e157 +4.0830500000000003e157 +8.1661000000000006e157 +1.6332200000000001e158 +3.2664400000000002e158 +6.5328800000000005e158 +1.3065760000000001e159 +2.6131520000000002e159 +5.2263040000000004e159 +1.0452608000000001e160 +9.9999999999999989e-285 +1e-284 +3e118 +2.9807671560409995e-292 +1.9e294 +1.6875536990890001e279 +3.3751073981780003e279 +1.2238541e63 +1.9899999999999999e-197 +6.3e-22 +3.15e-22 +1.1132242209599878e51 +1.64462243e-75 +3.43433e-128 +4.9547042105696004e-257 +2.4773521052848002e-257 +1.2386760526424001e-257 +6.1933802632120005e-258 +3.0966901316060002e-258 +1.5483450658030001e-258 +7.7417253290150006e-259 +3.8708626645075003e-259 +3.00248919637739e118 +1.8585679000000001e145 +3.7171358000000003e145 +7.4342716000000006e145 +3.4172156299999997e-41 +6.1232886829e62 +3.9999999999999997e-138 +1.9999999999999998e-138 +9.9999999999999992e-139 +4.9999999999999996e-139 +5.9225749999999996e87 +1.1845149999999999e88 +2.3690299999999998e88 +4.7380599999999996e88 +9.4761199999999993e88 +1.8952239999999999e89 +3.7904479999999997e89 +7.5808959999999994e89 +3e264 +6.8069999999999995e-100 +2.59405e41 +5.1881e41 +7.38843174310003e-265 +6.82429e251 +1.962619e-82 +2.5123e-80 +1.25615e-80 +8.9455930000000007e256 +1.7891186000000001e257 +3.7000000000000003e232 +7.4000000000000006e232 +3.1785000000000002e242 +6.3570000000000005e242 +1.2714000000000001e243 +2.5428000000000002e243 +5.0856000000000004e243 +3.383497e133 +4.9299999999999996e-24 +1.4599087909999999e202 +2.9198175819999998e202 +5.8396351639999996e202 +9.6100000000000007e265 +1.9220000000000001e266 +7.0000000000000005e108 +8.0709114981189994e126 +1.6141822996237999e127 +3e-233 +9.4375e175 +1.8875e176 +3.775e176 +7.55e176 +1.51e177 +1.8513499999999999e232 +3.7026999999999997e232 +7.4053999999999994e232 +1.4810799999999999e233 +2.9621599999999998e233 +3.1565397477999998e-22 +1.5782698738999999e-22 +5.7230220999999996e-239 +8.83876207e79 +8.2407799999999994e-76 +4.1203899999999997e-76 +3.23325937729e-19 +1.5535400225369999e239 +8.6892590732290006e-157 +6.035999995242509e-320 +2.6405999999999998e-220 +1.3202999999999999e-220 +1.9110586917926331e-144 +6.4129999999999995e-137 +3.5947187e-181 +5.68428364453e140 +1e154 +9.9999999999999989e153 +1.7069140999999999e-246 +4.4746894473717997e-241 +2.2373447236858998e-241 +3.6900000000000003e173 +1.1370999999999999e141 +8.8638216890608567e-213 +4.4319108445304284e-213 +1.82741e201 +6.44332253e-78 +7.92642413e182 +1.118005747e-95 +5.590028735e-96 +4.4336236319000003e-213 +6.7e-190 +3.1000000000000002e34 +3.1575125e124 +6.315025e124 +1.263005e125 +2.52601e125 +3.9991433392775703e300 +1.917327e207 +3.30095714976351e-75 +1.650478574881755e-75 +8.252392874408775e-76 +1.0000000000000001e300 +2.0000000000000001e300 +2.63e-133 +9.8299999999999993e63 +3.7661142773999029e117 +3.533748657e-271 +5.4220917e280 +3e59 +5.783893e-121 +2.827173e-270 +2.920784351849e-149 +1.3899999999999999e137 +2.7799999999999998e137 +5.82405209e289 +6.0999999999999995e-202 +1.1713e203 +5.3323e44 +1.071150381815e104 +2.14230076363e104 +3.325899702e-308 +3.6458753178479689e142 +3.7213605519999997e-60 +1.8606802759999999e-60 +9.3034013799999993e-61 +4.6517006899999997e-61 +2.3258503449999998e-61 +9.9999999999999999e-198 +6.3387053399999995e-168 +3.1693526699999998e-168 +9.36419e-294 +1.4571146553901171e289 +2.9142293107802341e289 +5.8284586215604682e289 +1.1656917243120936e290 +5.0230100980843e-139 +2.51150504904215e-139 +1.8732992697e-293 +3.87e-172 +1.935e-172 +5.0290259999999996e-285 +2.5145129999999998e-285 +3.46388366015e77 +6.9277673203e77 +5.1951521353e-164 +1.1980392949099999e-145 +9.3e85 +7.5859e30 +4.430293e225 +5.7999999999999996e-267 +2.8999999999999998e-267 +2.71e-71 +4.2572161660099997e-160 +1e-51 +3.0281283433610001e-320 +8.3799214358082494e101 +1.6759842871616499e102 +3.3519685743232998e102 +6.7039371486465995e102 +1.3407874297293199e103 +2.6815748594586398e103 +5.3631497189172796e103 +1.0726299437834559e104 +1.2037169452670051e-86 +2.108476850679e-132 +7.0000000000000005e49 +1.4000000000000001e50 +2.1293e-160 +1.06465e-160 +5.32325e-161 +1.69831211e279 +1.4368287368441962e-239 +7.1841436842209811e-240 +3.5920718421104906e-240 +1.563e-53 +2.83743854071851e227 +2.27e228 +1.1e-39 +5.7313000000000004e199 +1.7416173701427479e136 +2.6178559100000002e246 +5.2357118200000004e246 +6.0296171000000004e-233 +1.0338056447748043e70 +4.8400000000000004e-27 +2.4200000000000002e-27 +1.2100000000000001e-27 +6.0500000000000004e-28 +1.0899999999999999e-11 +9.9999999999999987e94 +1e95 +1.4211e81 +7.0296864246300005e254 +2.624443986014899e-46 +7.0000000000000005e195 +1.5743686176019999e-286 +7.8718430880099994e-287 +1.9450191710000001e33 +2.9999999999999997e-146 +5.75291e-239 +4.9e296 +1.9243709248979292e207 +1.537647650745823e-289 +6.0729560905492104e177 +1.1e107 +2.5307645999999998e-226 +1.2653822999999999e-226 +6.3269114999999995e-227 +5.792550610072817e171 +1.0847995687397699e76 +2.1695991374795398e76 +6.0417510132289996e264 +4.90677301e150 +3.6016739249000003e257 +1.5502788855711201e-25 +7.7513944278556006e-26 +3.8756972139278003e-26 +1.9378486069639001e-26 +9.6892430348195007e-27 +1.0000000000000001e241 +2.0000000000000001e241 +1.5879999999999999e-22 +7.9399999999999994e-23 +3.9699999999999997e-23 +3.7700000000000003e-88 +2.1782169690000002e281 +1.1363509854348671e-322 +1.834981008369e-296 +1.43837e-93 +3.5695015373e285 +1.4700061249259e202 +1.2999999999999999e128 +2.5999999999999998e128 +1.361776451e280 +1.087e-70 +1.13e-182 +5.65e-183 +2.589e69 +3.7478020908806997e145 +3.7e-32 +1.203459e-291 +6.017295e-292 +3.0086475e-292 +1.066713929947e-14 +8.7575437e-303 +4.37877185e-303 +2.189385925e-303 +1.0946929625e-303 +1.21520386251113e-319 +6.07601931255565e-320 +9.9999999999999998e-257 +3e146 +8.7136320000000006e-216 +4.3568160000000003e-216 +2.1784080000000002e-216 +1.0892040000000001e-216 +5.4460200000000004e-217 +2.7230100000000002e-217 +1.3615050000000001e-217 +6.8075250000000005e-218 +5.8793950768000004e-295 +2.9396975384000002e-295 +1.4698487692000001e-295 +7.3492438460000005e-296 +3.6746219230000003e-296 +1.8373109615000001e-296 +9.1865548075000007e-297 +5.45335933e280 +1.1000000000000001e-244 +2.1631966699999998e163 +3.9731960398804303e123 +5.6219218122999996e50 +1.2444718359999999e-170 +6.2223591799999995e-171 +3.1111795899999998e-171 +2.0000000000000001e-110 +1.0000000000000001e-110 +1.3138436181647911e246 +1.8994666717e-175 +2.3873100000000002e-263 +1.40777391141e-96 +3.497e136 +4.4186310463884003e-39 +2.2093155231942002e-39 +1.1046577615971001e-39 +5.5232888079855004e-40 +2.5556200796293441e184 +1.3e-223 +6.5e-224 +3.6517703e83 +4.1935391674701497e42 +8.3870783349402994e42 +1.6774156669880599e43 +3.3548313339761198e43 +1.3406335577e190 +1.8248908254699999e229 +3.6497816509399997e229 +7.2995633018799995e229 +1.09e-70 +9.9999999999999989e35 +2.2837326650764833e82 +7e136 +4.8793894436576394e178 +9.7587788873152787e178 +2.4003670865719864e-204 +1.2001835432859932e-204 +9.138184497e82 +3.75549107e291 +4.9121644599999996e-55 +2.4560822299999998e-55 +1.03813e216 +9.24088959e-92 +1.2244795881e-260 +6.1223979405e-261 +1.0000000000000001e182 +2.0000000000000001e182 +4.0000000000000003e182 +5.6413623733e-96 +4.2355374011409997e160 +8.4710748022819994e160 +5.5334026554839e-40 +1.2649615984759999e-139 +6.3248079923799995e-140 +3.1624039961899998e-140 +1.5812019980949999e-140 +7.8485389099999994e238 +1.5697077819999999e239 +3.1394155639999998e239 +1.3000000000000001e69 +2.6000000000000002e69 +5.2000000000000004e69 +3.6987e-91 +2.4189999999999998e206 +4.8379999999999996e206 +5.7985e112 +1.1597e113 +4.6801571700000003e231 +1.347366733861e-248 +1.7699999999999999e108 +3.5399999999999997e108 +2.3e-05 +1.432841509357e-211 +3.904823128624e-318 +5.3507293039277773e131 +7.62135915121e-175 +9.9999999848168381e-316 +5.8409487076131e-121 +1.2666110329000001e-139 +1.9160808500284185e-262 +9.5804042501420927e-263 +4.7902021250710464e-263 +2.3951010625355232e-263 +1.1975505312677616e-263 +5.1e271 +8.0899999999999994e154 +5.867849e-62 +2.51767e94 +1.1536562000000001e-297 +5.7682810000000004e-298 +7.6437565412321906e176 +1.5287513082464381e177 +4.2618505e219 +8.523701e219 +1.0886688654683e-129 +5.4433443273415e-130 +1.6849275380000001e-103 +8.4246376900000006e-104 +9.9999999999999987e-170 +1e-169 +1.2787199999999999e-21 +6.3935999999999995e-22 +3.1967999999999998e-22 +1.5983999999999999e-22 +7.9919999999999994e-23 +3.9959999999999997e-23 +1.9979999999999999e-23 +9.9899999999999993e-24 +4.9949999999999996e-24 +2.4974999999999998e-24 +1.2487499999999999e-24 +1.6653709808299999e217 +3.3307419616599998e217 +1.0066615990850501e241 +2.0133231981701001e241 +4.0266463963402003e241 +8.0532927926804006e241 +7.8134402096957994e-172 +3.9067201048478997e-172 +3.1973871711511002e-22 +1.0199344025477161e-225 +5.0996720127385804e-226 +2.5498360063692902e-226 +1.2749180031846451e-226 +1.893901e204 +6.7357349999999995e43 +1.3471469999999999e44 +2.6942939999999998e44 +5.3885879999999996e44 +1.601e-168 +8.005e-169 +5.0248295175378004e-111 +2.5124147587689002e-111 +6.0101e87 +2.7535383091002102e-304 +1.234994242813785e296 +2.46998848562757e296 +3.7042729099999997e55 +7.4085458199999995e55 +1.4817091639999999e56 +6.8557837e279 +3.2760729e-19 +3.8806222581e207 +4.9353136437e-201 +1.433423e81 +7.4029638192706095e201 +9.9999999999999996e-24 +1.0000000000000001e-23 +6.526125902769521e-78 +1.1507014370242236e287 +9.4286904634409575e290 +1.8857380926881915e291 +3.771476185376383e291 +3.31e-47 +2.2000000000000002e-11 +1.1000000000000001e-11 +3.0300000000000002e-292 +1.601e-22 +9.6679741651533e147 +1.02688377262e-312 +2.5730679080711e38 +7.1876774587000005e-212 +1.774102081e254 +8.2345351e39 +1.5289001e-174 +2.8146889999999998e137 +5.6293779999999996e137 +9.9999999999999998e122 +1.2434037945305899e209 +1.2419120000000001e-288 +6.2095600000000005e-289 +3.1047800000000002e-289 +1.5523900000000001e-289 +8.2640343734999994e244 +1.6528068746999999e245 +3.3056137493999998e245 +6.6112274987999995e245 +1.3222454997599999e246 +2.6444909995199998e246 +5.2889819990399996e246 +4.71264338263e-207 +1.491963286096077e-31 +7.459816430480385e-32 +3.7299082152401925e-32 +1.4399481469299999e286 +2.0817711369393802e-135 +1.0408855684696901e-135 +9.5177747399187523e-235 +3.400182197e307 +2.306902266691e141 +4.9382029739261596e-55 +2.4691014869630798e-55 +1.2345507434815399e-55 +6.1727537174076995e-56 +3.0863768587038498e-56 +2.5344194526317441e299 +1.0391832731099999e157 +7.9451043792523406e-141 +3.9725521896261703e-141 +3.5900000000000003e80 +8.8218101363513e-157 +4.41090506817565e-157 +3.227e-255 +4.6813611000000003e172 +9.3627222000000007e172 +1.5844720903367251e298 +1e269 +4.441e253 +5.391400043e-307 +2.6957000215e-307 +1.2939e97 +2.1357940600000002e-278 +1.0678970300000001e-278 +5.3394851500000004e-279 +9.3642699999999993e172 +4.15453379e303 +3.0326360739629e-146 +1.2597471293585318e-111 +1.2999999999999999e156 +1.1991791309999999e175 +2.3983582619999998e175 +1.019e-284 +1.7506724000000001e-274 +8.7533620000000006e-275 +4.3766810000000003e-275 +1.07567e132 +5.831446072237e112 +8.2443e185 +6.399e-227 +1.7761357e-243 +3.12140478361e-84 +7.5471203e-60 +1.3802966505427216e-158 +6.9014832527136079e-159 +3.450741626356804e-159 +9.9999999999999989e-229 +1e-228 +8.1750123530900006e67 +1.09609e222 +1.9259463469999999e-262 +3e174 +7e-128 +3.5e-128 +1.8413733104063269e83 +3.6827466208126537e83 +6.8540841136255e220 +1.3708168227251e221 +7.6999261818840806e-116 +3.8499630909420403e-116 +1.9249815454710201e-116 +9.6249077273551007e-117 +4.8124538636775504e-117 +7.9965197117090153e-82 +2.229543218191e-39 +2.0081962065769999e-23 +2.9003718116034079e-298 +1.263351184709311e-257 +7.62862553e-88 +1.1766384818660001e-266 +5.8831924093300004e-267 +5.4860287e221 +9.9999999999999996e-83 +4.3700000000000003e163 +8.7400000000000006e163 +7.779963e-144 +4.1874700000000003e216 +1.5199999999999999e-146 +7.5999999999999994e-147 +3.7999999999999997e-147 +1.8999999999999999e-147 +9.4999999999999993e-148 +1.3199999999999999e-310 +1.7854332819700001e-38 +2.7777318700000002e-99 +2.8538256165269998e109 +5.7076512330539996e109 +1.59624951597933e-286 +5.311e246 +8.01617721e-228 +2.07e-107 +3.5488648304448997e195 +7.0977296608897995e195 +9.9999999999999988e63 +1e64 +1.7308448553439999e-305 +8.6542242767199994e-306 +4.3271121383599997e-306 +2.1635560691799998e-306 +1.0817780345899999e-306 +5.4088901729499996e-307 +2.7044450864749998e-307 +1.6816268059846001e-221 +8.4081340299230006e-222 +1.3440183837099999e-74 +5.21696717455e156 +1.04339343491e157 +8.4198812942989e275 +1.72239446214047e-218 +5.8999999999999996e230 +1.0754516099999999e-73 +5.09091566247397e299 +1.3709e-130 +1.4160379800000001e-09 +7.0801899000000005e-10 +2.31781e141 +9.9999999999999993e209 +1.2500000000000001e209 +2.5000000000000002e209 +5.0000000000000004e209 +1.0000000000000001e210 +2.0000000000000001e210 +4.0000000000000003e210 +8.0000000000000006e210 +1.6000000000000001e211 +3.2000000000000002e211 +6.4000000000000005e211 +1.2800000000000001e212 +2.5600000000000002e212 +5.1200000000000004e212 +1.8053182000000001e-66 +9.0265910000000007e-67 +6.4072779109704785e65 +1.2814555821940957e66 +3.0000000000000003e-31 +6.422447668391e-227 +9.757874248781e-291 +5.4639691059832039e-189 +7.668667194628387e263 +7.6596698573600633e-234 +3.1374269e-230 +1.5400026180871655e-320 +8.2795703e185 +8.6627803e-160 +4.33139015e-160 +3.9654218770999997e238 +7.9308437541999994e238 +4.0651300000000003e95 +3.7012449934190657e-63 +8.077767961e-315 +4.24462617717441e42 +9.9999999999999988e-288 +1e-287 +1.2677099999999999e-257 +3.8364270966559444e263 +4.2359414617e-309 +6.2658026999999995e62 +1.5851109260431611e-258 +1.7964960344097e167 +1.0776851178542001e-73 +5.3884255892710004e-74 +2.5260380833e-316 +8.4500000000000006e129 +1.6900000000000001e130 +3.3800000000000002e130 +6.7600000000000005e130 +3.7168035e142 +7.433607e142 +5.60437744762121e-186 +9.8699000004059981e-319 +9.2624699999999993e-64 +6.8873716199000005e220 +1.3774743239800001e221 +1e-141 +2.3612490519882998e-120 +1.5000000000000001e261 +3.0000000000000002e261 +6.0000000000000004e261 +1.2000000000000001e262 +2.4000000000000002e262 +3.0430000000000002e292 +6.0860000000000004e292 +9.612179717857e116 +1.5597180094776186e149 +3.1194360189552372e149 +8.15911782391e-197 +7.97755234470983e297 +6.471294839347971e-314 +9.613331145179644e116 +1.5959841796999999e298 +1.2281081776980001e-232 +6.1405408884900004e-233 +3.337e99 +1.06789583e101 +2.669872847027077e100 +1.7725905000000001e282 +3.5451810000000003e282 +7.0903620000000005e282 +1.4180724000000001e283 +2.8361448000000002e283 +5.6722896000000004e283 +8.5999999999999994e-132 +4.2999999999999997e-132 +7.59025541e86 +4.2361999999999997e-17 +2.1180999999999998e-17 +2.35940909e172 +1.4232974757199999e-155 +7.1164873785999995e-156 +3.5582436892999997e-156 +1.7791218446499999e-156 +1.286326361e66 +9.55479479301e-148 +1.45644771e-06 +7.28223855e-07 +9.9999999999999987e150 +1e151 +3.7457838939493e55 +3.34843498339e-193 +2.77e-217 +2.1206176437e-17 +1.43706647482607e-37 +5.382561e-133 +5.0459588715850833e268 +2.43214189e88 +5.5121821899999996e-130 +6.4457900000000005e-81 +1.0803057231159556e73 +2.1606114462319112e73 +4.3212228924638223e73 +8.6424457849276446e73 +1.7284891569855289e74 +3.4569783139710579e74 +1.5402811298101001e264 +1.3591639827199999e-161 +6.7958199135999995e-162 +3.3979099567999998e-162 +1.6989549783999999e-162 +8.4947748919999994e-163 +4.2473874459999997e-163 +2.1236937229999998e-163 +1.0618468614999999e-163 +5.3092343074999996e-164 +1.4222911374895919e137 +1.2906670734259999e-226 +6.4533353671299995e-227 +3.7207957999999997e-209 +1.8603978999999999e-209 +1e297 +3.2630818893e242 +5.0599999999999996e-24 +2.5299999999999998e-24 +1.610617e65 +5.00645899847e150 +1.6124226658156601e-81 +8.0621133290783006e-82 +7.13e-156 +5.5061e162 +1.5101401383766999e-177 +9.5304577146978007e-207 +4.7652288573489003e-207 +1.6749e-47 +1.007e64 +6.1263e-146 +2.7952735811276215e47 +5.590547162255243e47 +1.57367e62 +1.3272121000000001e-18 +2.5398079429869e181 +1.7700116890771101e223 +8.25102195e67 +1.65020439e68 +1.0710542711903001e101 +8.5132083493644e-309 +8.31393870333073e-312 +1.8384589e257 +1.0416621181099999e39 +2.0833242362199998e39 +4.1666484724399997e39 +2.76022295449e-130 +1.380111477245e-130 +2.2710000000000002e-67 +1.326299697050534e128 +2.6525993941010679e128 +5.3051987882021358e128 +1.0610397576404272e129 +1.2472999999999999e91 +2.4945999999999998e91 +4.9891999999999996e91 +9.9999999999999998e-201 +4.479502283e-98 +2.8830143841e-183 +2.5359652247799998e-170 +1.2679826123899999e-170 +9.89648089e-27 +4.948240445e-27 +5.3474548000000004e-251 +2.6737274000000002e-251 +1.3368637000000001e-251 +6.6843185000000005e-252 +3.9670753999999971e-318 +1.3000000000024515e-313 +1.2123359450733e175 +1.1979604353578921e-148 +5.9898021767894604e-149 +2.9949010883947302e-149 +1.4974505441973651e-149 +7.4872527209868255e-150 +3.7436263604934127e-150 +1.8718131802467064e-150 +9.3590659012335318e-151 +1.1086223e76 +2.054167e154 +3.5901999999999997e-243 +1.7950999999999999e-243 +1.3246178786988569e-223 +5.5799999999999996e-158 +2.7899999999999998e-158 +1.018379e36 +1.151617126270603e110 +5.444097e-15 +2.7220485e-15 +1.4550885213409701e-65 +3.7452267200000003e-150 +1.8726133600000001e-150 +9.3630668000000007e-151 +4.6815334000000003e-151 +2.3407667000000002e-151 +1.1703833500000001e-151 +1e-54 +4.9899999999999996e237 +9.9799999999999993e237 +3e-295 +9e107 +4.02259051e-141 +2.49e-114 +6.8303428564999995e189 +1.3660685712999999e190 +2.7321371425999998e190 +5.4642742851999996e190 +1.0928548570399999e191 +1.3897713752786807e-217 +6.9488568763934035e-218 +2.1050809e157 +4.3071571609999997e306 +8.6143143219999994e306 +6.1731859513131125e-233 +2.3197313218279153e-123 +4.6648236671019997e-210 +2.3324118335509998e-210 +6.35609475180449e-317 +2.9000000000000002e-124 +6.4954677533000005e-22 +2.9857835217852529e-208 +3.9569409999999997e266 +1e92 +1.4211e78 +4.6521232789999997e228 +9.3042465579999993e228 +2.6906597639696427e-192 +4.361901637e-14 +4.2459999999999997e-222 +2.1229999999999998e-222 +5.0082145746204633e-55 +3.4014198202999998e276 +7.280803e80 +2.34009107557e141 +7.8186851218133e89 +1.1650966264999999e82 +2.3301932529999998e82 +4.6603865059999997e82 +9.3207730119999993e82 +2.472898458221e-232 +1e238 +2.0000000000000001e238 +2.83e165 +1.6796355551210001e99 +3.3592711102420002e99 +5.3e69 +7.3000000000000005e-212 +1.2130000000000001e-176 +5.0016051966194996e237 +1.0003210393238999e238 +2.0006420786477999e238 +4.0012841572955997e238 +6.1714136158425504e59 +1.2342827231685101e60 +2.4685654463370202e60 +4.9371308926740404e60 +2.309e110 +1.981383881e266 +3.470884503e220 +1.025497e95 +1.8379e198 +5.5964757496709996e-158 +5.0523702331566886e209 +5.507344122770319e103 +5.0417e-142 +5.2250515996999996e184 +1.0271044194551e-51 +5.1355220972755e-52 +1.6000000000000001e-258 +8.0000000000000006e-259 +4.0000000000000003e-259 +2.0000000000000001e-259 +1.0000000000000001e-259 +5.0000000000000003e-260 +2.5000000000000002e-260 +1.3803504388553263e-189 +2.67e-164 +7.9922048999191459e-113 +1.4792997899999999e112 +2.9585995799999998e112 +4.480233091e-157 +7.4855899999999995e-209 +2.5041089369999998e237 +3.0600616097744688e87 +4.8700000000000004e175 +7.7815339219996331e-321 +9.43e54 +9.1299308435079993e-67 +4.5649654217539997e-67 +2.2824827108769998e-67 +3.491e279 +1.5417805099999999e-292 +1.3507e305 +4.610669e-95 +2.6579328691116002e-77 +1.3289664345558001e-77 +6.6448321727790005e-78 +2.1426292683189998e188 +4.2852585366379997e188 +8.5705170732759994e188 +2.0409999999989083e-315 +2.742999976817e190 +9.9999999999999998e-114 +3.0000000000000002e289 +4.323498882601e306 +3.5913160000000003e-302 +1.7956580000000001e-302 +8.9782900000000006e-303 +2.4130000000000002e203 +7.0000000000000005e-13 +1.3113014729739746e-108 +4.9388827010209e-291 +9.8999999999999993e60 +1.9799999999999999e61 +2.41462467e203 +4.19821601e-107 +9.9999999999999995e32 +1.9999999999999999e33 +6.7249916580000005e-252 +3.3624958290000002e-252 +2.1641500000000002e306 +4.3283000000000003e306 +8.6566000000000006e306 +1.7313200000000001e307 +3.4626400000000002e307 +6.9252800000000005e307 +7.3092249999999995e80 +1.4618449999999999e81 +2.9236899999999998e81 +5.8473799999999996e81 +1.1694759999999999e82 +2.3389519999999998e82 +4.6779039999999997e82 +9.3558079999999993e82 +1.8711615999999999e83 +5.1265466679569e-111 +6.12546605898907e233 +7.5100000000000005e288 +3.38237536651013e304 +6.1e174 +1.952159e176 +6.995754260687551e279 +4.3780211227448284e132 +1.0909999999999999e-73 +4.2118356098529e244 +1.1676260608929822e-269 +5.8381303044649108e-270 +2.9190651522324554e-270 +1.4595325761162277e-270 +7.2976628805811385e-271 +3.6488314402905692e-271 +1.5208652699047e-31 +7.6043263495235e-32 +2.49179742209e-27 +9.9999999999999998e178 +7e279 +4.5924093707117003e138 +1.2841826679999999e-257 +6.4209133399999995e-258 +3.2104566699999998e-258 +3.67400709e139 +1.2408278774572441e-86 +6.2041393872862204e-87 +3.1020696936431102e-87 +4.5385811599999997e-185 +2.2692905799999998e-185 +1.1346452899999999e-185 +5.6732264499999996e-186 +4.2867111760070379e-163 +2.143355588003519e-163 +1.0716777940017595e-163 +5.3583889700087974e-164 +2.6791944850043987e-164 +6.7999999999999995e-280 +3.3999999999999998e-280 +1.6999999999999999e-280 +9.981396317e-173 +4.9906981585e-173 +1.3808929307403455e249 +2.761785861480691e249 +4.4567494577886457e-275 +2.2283747288943228e-275 +1.1e191 +1.1559e-95 +1.743127952723e220 +1.0650323601000001e70 +6.3e-202 +1.7869883458498728e77 +3.5739766916997455e77 +4.0719442278800003e-228 +2.0359721139400001e-228 +1.0179860569700001e-228 +1.9087507553810001e173 +5.99814963002561e84 +4.7880400000000003e-266 +2.3940200000000002e-266 +1.1970100000000001e-266 +5.9850500000000004e-267 +1.5175700000000001e-236 +3.9999999346388577e-318 +9.9999874849559983e-319 +3e84 +7e-218 +3.46632391e-190 +5.423e305 +1.8999999999999999e260 +3.7999999999999997e260 +7.5999999999999995e260 +6.97111355299e-277 +4.3999999999999997e-306 +2.1999999999999998e-306 +1.0999999999999999e-306 +0.012070000000000001 +1.31880085e243 +2.6376017e243 +4.7000000000000003e-210 +7.3681085175429995e-07 +9.7000000000000007e57 +1.9400000000000001e58 +3.8800000000000003e58 +1.9338882000000001e-147 +9.6694410000000007e-148 +1.09342019e-73 +2.66409699e215 +9.6920599518339777e203 +1.9384119903667955e204 +5.20344090769969e212 +1.5659960218699999e177 +1e-172 +5.9097479799299996e-298 +7e-72 +3.9833288976735997e-231 +1.9916644488367999e-231 +9.9583222441839993e-232 +4.9791611220919996e-232 +2.4895805610459998e-232 +1.2447902805229999e-232 +6.2239514026149996e-233 +3.1119757013074998e-233 +1.4539999999999999e-37 +7.2699999999999995e-38 +2.0935593651e126 +3.87e-147 +4.4620003167872603e-129 +2.2310001583936302e-129 +1.1500000000000001e284 +2.3000000000000002e284 +4.6000000000000003e284 +9.2000000000000007e284 +1.8400000000000001e285 +2.73e218 +1.5400733123779e-59 +7.7003665618895e-60 +3.85018328094475e-60 +1.925091640472375e-60 +9.625458202361875e-61 +4.8127291011809375e-61 +3.453e-103 +1.14039754717929e166 +6.1686505905910004e-205 +3.8435832751000003e232 +1.9699999999999999e89 +1e-26 +2.669998859e69 +1.2286444034773372e-263 +5.456303e-279 +3.473394627e-190 +1.54275433e-205 +5.0999999999999996e-83 +2.5999999999999998e-139 +1.2999999999999999e-139 +1.3751e-15 +7.0787e-100 +1.618275412478229e-199 +8.091377062391145e-200 +1.4608999999999999e168 +2.2293394031632998e163 +2.584309325570537e94 +1.9889609934666815e207 +3.977921986933363e207 +2.0541539e-315 +1.02707695e-315 +3.8223075272000003e-178 +1.9111537636000001e-178 +9.5557688180000007e-179 +4.7778844090000003e-179 +2.3889422045000002e-179 +1.6399999999999999e-22 +8.1999999999999994e-23 +4.0999999999999997e-23 +2.0499999999999999e-23 +9.9999999999999998e119 +2.4362562667610149e-235 +2.5715049988306102e181 +2.5248982509010002e91 +1.5000800000000001e-121 +7.5004000000000005e-122 +3.7502000000000003e-122 +1.8751000000000001e-122 +9.3755000000000007e-123 +4.5094847673002673e-11 +2.2547423836501336e-11 +1.1273711918250668e-11 +5.6368559591253341e-12 +5.5470770000000004e249 +1.1094154000000001e250 +9.9377109786722007e-291 +4.9688554893361004e-291 +2.7204379329999998e305 +2.7e41 +2.6886700000000002e-18 +1.357456831583e-46 +2.4299999999999998e203 +6.3012346000000005e-261 +3.1506173000000002e-261 +2.79835749e-276 +1.399178745e-276 +1.701e304 +1.4800000000000001e-152 +7.4000000000000005e-153 +3.7000000000000003e-153 +9.5859082745246751e172 +1e266 +5.1699999999999996e240 +1.0339999999999999e241 +2.0679999999999999e241 +5.4382271e-192 +2.71911355e-192 +1.8786346479999999e-268 +9.3931732399999993e-269 +4.6965866199999997e-269 +2.3482933099999998e-269 +1.1741466549999999e-269 +3.9129999150626726e-321 +1.9564999575313363e-321 +9.7824997876566816e-322 +9.36427e169 +2.44674799e-30 +3.9663e148 +1.34811230871052e-310 +2.0550866380000001e-169 +1.0275433190000001e-169 +2.4109849641000002e85 +4.8219699282000003e85 +6.382677641e62 +1.4296012800070001e165 +8.74767020479821e-132 +4.216576405590709e-312 +3.9658954999999997e294 +7.9317909999999994e294 +1.5863581999999999e295 +3.1727163999999998e295 +9.9999999999999999e-232 +3.64997863651e-38 +7.8054178000000006e-88 +3.9027089000000003e-88 +3.30610887e-109 +1.1660492377508508e256 +1.1572970000000001e-08 +2.542467e150 +9.3093779e-95 +6.24149e59 +8.7757945370982959e219 +1.9783150999999999e89 +4.81413e-120 +9.869675311e-263 +4.9348376555e-263 +3.1890694403450177e-289 +4.7475137261029997e-151 +2.9899999999999998e112 +9.9999999999999998e-86 +7.3318726471e167 +2.551781673e-288 +4.8153128441078001e-120 +2.6167343863699509e212 +1.53e261 +7.6330038399999995e-91 +3.8165019199999997e-91 +1.9082509599999999e-91 +9.5412547999999993e-92 +4.7706273999999997e-92 +2.3853136999999998e-92 +1.1926568499999999e-92 +5.9632842499999996e-93 +5.7e252 +1.0279e123 +3.833355553e-32 +2.947e227 +9.0912796999999994e48 +1.31733237643e-21 +1.936019874619e-60 +8.87181520937e191 +8.1476553898429994e151 +1.6295310779685999e152 +3.2590621559371998e152 +9.9999999999999995e60 +1.0000000000000001e61 +2.0000000000000002e61 +4.4807089999999997e163 +8.9614179999999994e163 +7.4605400000000005e-94 +3.7302700000000003e-94 +2.3189379136799998e-08 +1.1594689568399999e-08 +5.7973447841999996e-09 +2.8986723920999998e-09 +1.4493361960499999e-09 +8.65772230271e-309 +4.328861151355e-309 +4.32437e-163 +2.6827e215 +9.8856715493999993e-263 +4.9428357746999996e-263 +1.1e73 +4.6233565999999997e-213 +2.3116782999999998e-213 +1.9083859365006402e55 +1.2149000000000001e144 +5.9127059999999996e-65 +2.9563529999999998e-65 +4.53611213427e-157 +7.4651103e-94 +1e207 +1.2882715643000001e-24 +3e-34 +1.5e-34 +3.2529483399999998e-53 +1.6264741699999999e-53 +1.52458914253e-295 +7.62294571265e-296 +4.9000000000000004e-235 +5.547e-307 +2.13447e-194 +3.912557203e58 +4.01133283123e-85 +2.005666415615e-85 +1.23357e175 +2.3302100000000002e197 +7.40980583e-212 +3.704902915e-212 +8.0770000001820737e-318 +2.1500000000000002e216 +4.3000000000000003e216 +8.6000000000000006e216 +1.7200000000000001e217 +3.4400000000000002e217 +6.8800000000000005e217 +1.6000000000000001e-289 +8.0000000000000006e-290 +4.0000000000000003e-290 +2.0000000000000001e-290 +1.0000000000000001e-290 +5.0000000000000003e-291 +2.9169257109999998e50 +5.8338514219999996e50 +1.1667702843999999e51 +3.0000000000000002e112 +6.0000000000000004e112 +1.2000000000000001e113 +2.4000000000000002e113 +5.0992146589980355e296 +1.0198429317996071e297 +4.9e-89 +8.9999999999999993e-129 +6.5e239 +1.3e240 +3.4003602938137895e-106 +3.4634499227367e-16 +1.73172496136835e-16 +5.4409231800000004e-105 +2.7204615900000002e-105 +1.13377178869e135 +1.3809995287271e-220 +3.4566661667837797e276 +4.781355445691e54 +2.1100000000000002e272 +4.2200000000000003e272 +0.00076207 +7.143113845281e-246 +8.2188096099999994e64 +1.6437619219999999e65 +1.9999999999999999e-144 +9.9999999999999995e-145 +3e258 +2.2739e-157 +6.07153e-62 +5.6732738727987096e134 +2.5938724999999998e35 +5.1877449999999996e35 +1.0375489999999999e36 +2.0750979999999999e36 +4.1501959999999997e36 +8.3003919999999994e36 +1.6600783999999999e37 +3.3201567999999998e37 +3.3636590775905002e214 +6.7273181551810005e214 +1.3454636310362001e215 +2.6909272620724002e215 +5.3818545241448004e215 +2.88589111e-273 +2.6534700000000002e184 +5.3069400000000004e184 +3.4408703e-280 +2.0668273999999999e-23 +1.0334136999999999e-23 +8.180143063272721e151 +6.6366397e183 +1.7475085519418448e248 +5.6584428093699996e-71 +7.1043999999999995e-13 +3.5521999999999997e-13 +1.7760999999999999e-13 +1.2744284506999999e-55 +2.041213e-200 +1.0206065e-200 +2.3715151000379834e-322 +1.1857575500189917e-322 +5.9287877500949585e-323 +2.9643938750474793e-323 +1.8190000000000001e-10 +9.0167687918842416e-129 +5.9999999999999996e-239 +2.9999999999999998e-239 +7.1690699999999995e105 +3.2323300622398182e-25 +1.6161650311199091e-25 +3.759057039249664e111 +1.3000000000000001e-111 +2.2170420057590002e278 +4.4340840115180003e278 +8.8681680230360006e278 +1.7736336046072001e279 +2.2336577102833998e-101 +1.1168288551416999e-101 +2.226520537e-306 +1.1853699999999999e228 +2.3707399999999998e228 +4.7414799999999997e228 +9.4829599999999993e228 +1.8965919999999999e229 +1.6663e-255 +4.4352305882052045e278 +8.870461176410409e278 +1e148 +2.0000000000000001e148 +2.71639036701433e-164 +2.2275848463947367e-306 +1.2678257000000001e178 +2.5356514000000002e178 +1.9019589e-63 +7.7000000000000005e260 +5.3599999999999996e-195 +2.6799999999999998e-195 +1.3399999999999999e-195 +6.6999999999999995e-196 +3.3499999999999998e-196 +7.487919719215e198 +1.497583943843e199 +2.4721e-176 +1.23605e-176 +2.64310954433e-226 +7.2115814460854995e164 +1.4423162892170999e165 +2.8846325784341998e165 +5.7692651568683996e165 +1.1538530313736799e166 +2.063e-82 +4.28509433e-48 +2.237e-101 +2.6100999999999998e240 +4.9999999999999996e293 +9.9999999999999992e293 +1.9999999999999998e294 +3.9999999999999997e294 +7.9999999999999994e294 +2.7161881943e-18 +3.57225651e192 +4.3e157 +1.3657068523067001e-105 +1.0522335515035967e-138 +1.687450537662935e214 +3.37490107532587e214 +2.7e215 +3.1536809583700002e-233 +3.2999999999999998e65 +8.5599142048789994e244 +1.7119828409757999e245 +3.4239656819515998e245 +2.7185107169697302e-18 +2.6126099999999998e240 +5.2252199999999996e240 +1.63999355865e298 +3.2799871173e298 +7.4489797825862913e-212 +2.3458864999999998e51 +4.6917729999999997e51 +9.3835459999999993e51 +1.8767091999999999e52 +3.7534183999999997e52 +4.4032152438472327e306 +8.8064304876944654e306 +1e-203 +6.61083e-81 +2.4714588842899998e116 +4.9429177685799997e116 +1.7391590000000001e130 +3.4783180000000002e130 +4.4763920881666997e45 +1.0057602131932999e-290 +1.0846621951642192e-222 +3.2540025683429e180 +6.487e-25 +4.4296289000000003e219 +8.8592578000000006e219 +1.1363914076129309e-70 +5.6819570380646544e-71 +2.8409785190323272e-71 +6.1481046769943577e202 +7.6021999999999995e-268 +3.8010999999999997e-268 +7.99799750111833e-57 +5.1695706165240004e-83 +2.5847853082620002e-83 +1.2923926541310001e-83 +6.4619632706550005e-84 +5.4208966659338276e-77 +2.7104483329669138e-77 +1.3552241664834569e-77 +9.9999999999999995e-58 +1.0000000000000001e-57 +4.7590000000000003e228 +4.47e-306 +2.0931000000000001e241 +5.2436589000000004e-52 +1.7613334544679707e-190 +8.8066672723398536e-191 +6.7849563000000005e-224 +9.52918668151e82 +5.6857906258069996e-71 +1.4185720118609874e221 +2.1e-197 +1.05254045e154 +2.1050809e154 +6.3415929999999996e-28 +1.5992703e90 +2.1721944131700002e-222 +7.4636919999999995e-212 +3.7318459999999997e-212 +1.8659229999999999e-212 +9.3296149999999993e-213 +1.77e-131 +2.3e-244 +1.9653048725479999e-147 +9.8265243627399993e-148 +4.9132621813699997e-148 +2.4566310906849998e-148 +1.0725428015366168e244 +2.1450856030732336e244 +1.2881848153972339e-142 +6.4409240769861694e-143 +5e88 +9.9999999999999999e88 +9.9899999999999993e234 +1.9979999999999999e235 +3.7498462999999997e-153 +9.59e-05 +3e-152 +4.6423560085199997e-126 +2.3211780042599998e-126 +1.1605890021299999e-126 +1.4729000000000001e-242 +1.4431662529414643e-40 +1.0535e154 +2.107e154 +1.365910258e-310 +2.3597489999999998e256 +4.7194979999999997e256 +1.387e218 +2.0913055273503999e-110 +1.0456527636751999e-110 +5.2282638183759996e-111 +2.6141319091879998e-111 +1.3070659545939999e-111 +6.5353297729699995e-112 +3.2676648864849998e-112 +1.6338324432424999e-112 +4.85963863129447e172 +3.1e-31 +1.29040711e-288 +1.9841000000000001e-29 +1.3288333096418391e271 +5.6157430000000004e-102 +2.8082198199999998e-102 +1.4041099099999999e-102 +1.0000000000000001e235 +2.0000000000000001e235 +3.4433013098999998e-47 +6.250978993446663e233 +1.733e-280 +6.7414821548097372e301 +3.8529999999999997e201 +7.7059999999999995e201 +2.536073911303e265 +3.5889999999999997e192 +7.1779999999999995e192 +4.85378336068697e-179 +6.5299999999999995e180 +4.7e-300 +3.3116773000000002e211 +3.9990596000000003e-262 +1.9995298000000001e-262 +9.9976490000000007e-263 +1.286925733407e296 +8.4152000000000006e-51 +4.2076000000000003e-51 +2.1038000000000001e-51 +1.0519000000000001e-51 +5.2595000000000004e-52 +8.1556552510000002e-318 +3.5070702911645627e189 +4.6666045792834997e79 +9.3332091585669993e79 +1.8666418317133999e80 +3.7332836634267997e80 +7.4665673268535995e80 +3.0351922718338812e-180 +1.5175961359169406e-180 +7.587980679584703e-181 +6.0443e-239 +1.9700000000000001e-147 +1e-262 +9.9999999999999987e-263 +3.1456695373e146 +3e140 +3.1765385899999998e118 +6.3530771799999996e118 +7.412001e-184 +4.5539e222 +9.737293e172 +2.4054477825849013e-151 +4.59859e194 +4.6838231e284 +3.4041267838079377e-224 +1.1e-250 +3.1e261 +3.089970709e56 +8.0737758516059e-144 +1.123e191 +2.0894620000000007e-315 +1.0969999999999999e188 +2.1939999999999998e188 +1.57923727e-292 +9.9999999999999999e-117 +5e-117 +5.3e-285 +2.65e-285 +3.9067999999999997e-119 +1.9533999999999999e-119 +9.7669999999999993e-120 +9.6009999999999993e287 +4.8999999999999997e85 +3.30949392518389e-140 +1.654746962591945e-140 +1.0078965574509999e148 +1.0684569617599999e-20 +5.3422848087999996e-21 +2.6711424043999998e-21 +1.3355712021999999e-21 +6.6778560109999995e-22 +3.3389280054999998e-22 +1.6694640027499999e-22 +4.7355868700000003e256 +9.4711737400000007e256 +2.3727642319999998e-36 +1.1863821159999999e-36 +5.9319105799999996e-37 +2.9659552899999998e-37 +1.4829776449999999e-37 +2.8257692633116792e103 +5.6515385266233584e103 +1.1303077053246717e104 +9.3692562553365207e-213 +4.6846281276682603e-213 +2.3423140638341302e-213 +5.9849286518423004e81 +4.2304183202282997e154 +8.4608366404565994e154 +6.610199e152 +1.2338480269e-148 +1e30 +7.5389378000000005e-299 +3.7694689000000003e-299 +5.5273723000000004e-46 +2.5719964335271e91 +2.7409e-164 +3.24658982920691e62 +2.3980589999999998e-64 +4.0978393e33 +2.56390531e-114 +5.20577e-229 +3.1269999999999998e28 +1.2877154065049001e-55 +1.3200000000000001e-198 +6.6000000000000005e-199 +3.3000000000000002e-199 +1.6500000000000001e-199 +1.50404293333e140 +1.3708608999999999e-164 +4.2155951000000003e95 +1.4099241875300001e-102 +1.17643e-08 +2.6122185080113702e-24 +1.1134429999999999e-278 +1.8482000000000001e-97 +9.2410000000000006e-98 +2.005927539e-262 +7.845101975422727e232 +9.0939456151700006e163 +1.105327e101 +1.0922971000000001e-222 +5e175 +1e176 +1.6942474999999999e155 +3.3884949999999998e155 +6.7769899999999995e155 +1.3553979999999999e156 +2.7107959999999998e156 +5.4215919999999996e156 +1.0843183999999999e157 +4.3e39 +8.960575e278 +1.792115e279 +3.58423e279 +8.4441527426230524e-51 +3e-65 +1.01547197437e61 +2.37525477589e110 +2.52320345e293 +5.0464069e293 +4.129130453e-200 +4.335317519e303 +1.4500000000000001e106 +2.9000000000000002e106 +5.8000000000000004e106 +1.1600000000000001e107 +2.921735073822963e-273 +5.025885781648849e234 +9.25997960895853e-244 +2.8723e134 +1.6469999999999999e239 +1.9048639000000001e-181 +1.4739999999999999e-155 +7.3699999999999995e-156 +3.0159000000000002e-06 +3e81 +8.07e-203 +4.6925230573621897e-67 +2.1951133173064768e-17 +6.6632973e65 +1.3868051081719999e-192 +6.9340255408599995e-193 +3.4670127704299998e-193 +2.485051e-89 +1.2425255e-89 +3.4487891116616002e-106 +1.7243945558308001e-106 +8.6219727791540006e-107 +4.3109863895770003e-107 +2.1554931947885002e-107 +9.9801260459931802e-322 +4.9900630229965901e-322 +7.2255e46 +1.4451e47 +1.4847530976144656e255 +9.2290000000000006e-303 +1.3330699999999999e66 +2.6661399999999998e66 +3.5903071619734997e279 +7.1806143239469995e279 +1.4361228647893999e280 +2.8722457295787998e280 +2.5590976199999998e-173 +1.2795488099999999e-173 +1.4069469999999999e-161 +1e-175 +4.2129635118435505e-110 +2.1064817559217752e-110 +4.18193673496713e269 +1.3338689441816349e66 +3.2744839367e-25 +8.4371e-256 +1.73e245 +1.819747673e-187 +9.098738365e-188 +2.68279853e-21 +8.1e148 +6.9594781499999995e158 +1.3918956299999999e159 +2.7837912599999998e159 +5.5675825199999996e159 +1.1135165039999999e160 +5.343848229087e-80 +6.9899999999999995e217 +9.9999999999999994e-30 +2.0000000000000002e-29 +1.0000000000000001e-29 +8.796697064210463e-17 +4.3983485321052315e-17 +2.1991742660526158e-17 +1.0995871330263079e-17 +5.4979356651315394e-18 +2.7489678325657697e-18 +7.1997091555969395e133 +1.9328208950000001e142 +3.8656417900000003e142 +7.7312835800000005e142 +1.5462567160000001e143 +2.8337e-248 +1.41685e-248 +3.21853e-115 +1.1e-17 +7.6740169190369005e-122 +1.9e-94 +1.72239479459149e-311 +3.2893349999999998e180 +6.5786699999999995e180 +1.3157339999999999e181 +2.6314679999999998e181 +5.2629359999999996e181 +7.3511709999999995e-69 +3.3e-258 +8.1461890000000006e207 +1.6292378000000001e208 +3.4424461369600002e-165 +1.7212230684800001e-165 +8.6061153424000006e-166 +4.3030576712000003e-166 +2.1515288356000002e-166 +1.0757644178000001e-166 +5.3788220890000004e-167 +2.6894110445000002e-167 +1.3447055222500001e-167 +2.2127485484065998e-104 +1.1063742742032999e-104 +1.4193422220463499e249 +2.8386844440926998e249 +5.6773688881853996e249 +1.1354737776370799e250 +2.0009658656570485e-321 +4.20715428354e-315 +1.5540930701004171e202 +7.4581814181599995e-38 +3.7290907090799997e-38 +1.8645453545399999e-38 +9.3227267726999993e-39 +4.6613633863499997e-39 +9.9999999999999991e116 +1.9999999999999998e117 +9.283410482125847e-98 +4.0397213000000003e89 +8.0794426000000006e89 +3e-124 +3.152851451e233 +9.5300000000000007e256 +3.6042300000000003e133 +2.1372499810774615e213 +4.274499962154923e213 +7.1868930000000005e-72 +2.9000000000000002e47 +1.1956000000000001e-182 +5.9780000000000004e-183 +2.9890000000000002e-183 +1.4945000000000001e-183 +2.5023555121348551e116 +5.0047110242697101e116 +1.000942204853942e117 +9.6707328952499993e287 +1.9341465790499999e288 +3.8682931580999997e288 +7.7365863161999995e288 +1.5473172632399999e289 +3.0946345264799998e289 +6.1892690529599996e289 +5.665320793143835e44 +1.133064158628767e45 +4.1e120 +9.9999999999999988e262 +1e263 +5.48091095679e69 +6.7707999999999995e-255 +3.3853999999999998e-255 +1.6926999999999999e-255 +6.2130769906759984e-149 +3.1065384953379992e-149 +3.4388691868801267e273 +1.21e287 +1.1576600818029108e-157 +4.9029000000000003e-179 +2.5271900000000002e234 +9.1052969999999994e250 +3.831e-181 +9.9999999999999996e-235 +4.7998655499999997e169 +9.5997310999999993e169 +1.9199462199999999e170 +3.8398924399999997e170 +7.6797848799999995e170 +2.9999999999999998e168 +5.9999999999999996e168 +1.1999999999999999e169 +9.9899999999999993e-89 +3.9114169999999997e260 +7.8228339999999995e260 +1.3453692582999999e125 +2.8338771970000002e190 +3.78721e139 +5.398873e-313 +2.6994365e-313 +1.34971825e-313 +8.7606253453219994e-281 +4.3803126726609997e-281 +6.2932931846300004e174 +1.6007000000000001e-233 +3.8000000000000003e-299 +1.9000000000000001e-299 +6.8978005110777905e-19 +3.0635970000000002e-34 +2.221757729e-250 +8.624672454413e-20 +6.13465735160321e-180 +9.9999999999999993e-89 +1.6000000000000001e-87 +8.0000000000000006e-88 +4.0000000000000003e-88 +2.0000000000000001e-88 +1.0000000000000001e-88 +5.0000000000000004e-89 +2.276523e-247 +3.631113e192 +7.2236542767061e279 +2.767454e-310 +2.6000000000000002e-201 +1.3000000000000001e-201 +1.1e-76 +3.2574097500000002e149 +6.5148195000000005e149 +1.3029639000000001e150 +2.6059278000000002e150 +5.2118556000000004e150 +1.0423711200000001e151 +2.0847422400000001e151 +8.3031256077471006e92 +4.0022394254670037e-88 +2.0011197127335019e-88 +1.0005598563667509e-88 +5.0027992818337547e-89 +1.2890172699998122e-319 +1.2399999999999999e-207 +6.1999999999999996e-208 +3.0999999999999998e-208 +4.32153e-166 +2.160765e-166 +3.3874328381000002e37 +6.7748656762000005e37 +1.0724445206999999e213 +2.1448890413999999e213 +2.3256706999999998e194 +9.9999999999999994e57 +1.0000000000000001e58 +2.0000000000000002e58 +2.7106629999999998e38 +2.3490967425708502e166 +4.6981934851417003e166 +9.3963869702834007e166 +1.8792773940566801e167 +3.2217620000000002e-174 +1.6108810000000001e-174 +4.4712001265999997e-191 +2.2356000632999998e-191 +1.1e70 +4.2745323906998133e154 +7.2027097041701005e220 +1.4405419408340201e221 +2.8810838816680402e221 +5.7621677633360804e221 +4.7e166 +2.5426808709999998e-204 +4.972236904081001e290 +9.9999999999999999e203 +1.21937351e-297 +3.1086999999999998e289 +6.2173999999999996e289 +1.2434799999999999e290 +4.5530000000000003e45 +3e-37 +1.7094329999999999e301 +3.4188659999999998e301 +6.8377319999999995e301 +1.3675463999999999e302 +2.7350927999999998e302 +8.5471649999999994e300 +1.3026300789999999e-201 +9.13791997e250 +5.2900000000213774e-316 +2.6450000000106887e-316 +1.9e139 +2.88374688217e221 +1.8818200735e167 +3.763640147e167 +4.7194865037069997e-272 +4.99199287e-148 +1.2963272592999999e-114 +1.7083204457e-196 +3.40607462933e242 +3.22708639e-174 +2.2587147e-73 +5.550023e-310 +5.2999999999999996e181 +9.293272072201609e-11 +1.61751353013e177 +2.0000000000000001e-293 +1.0000000000000001e-293 +8.0100000000000006e204 +3.4889570424476879e245 +2.3061733489617998e-275 +1.1530866744808999e-275 +9.684806421e228 +2.19715838059341e-135 +3.45589e273 +2.487329711247e-207 +1.45562233e-304 +4.3995492891814989e-281 +2.1997746445907494e-281 +1.0998873222953747e-281 +5.4994366114768736e-282 +2.7497183057384368e-282 +1.3748591528692184e-282 +6.874295764346092e-283 +2.4609888066635362e-33 +1.2304944033317681e-33 +6.1524720166588404e-34 +3.0762360083294202e-34 +1.5381180041647101e-34 +7.6905900208235505e-35 +1.495859e-96 +4.5360933099999997e132 +3.8012575369115021e285 +6.9666221851129005e-106 +1.0192896999999999e-203 +8.4514620500000006e123 +1.6902924100000001e124 +3.3805848200000002e124 +6.7611696400000005e124 +1.039513e-259 +5.1643715199999996e-27 +2.5821857599999998e-27 +1.2910928799999999e-27 +6.4554643999999996e-28 +3.2277321999999998e-28 +1.6138660999999999e-28 +8.0693304999999994e-29 +4.0346652499999997e-29 +2.99e50 +9.9999999999999997e-148 +5.7340000000000004e-43 +2.8670000000000002e-43 +2.855069231639687e-102 +8.84582783e-222 +7.1e-16 +3.55e-16 +5.2791863100000004e268 +1.0558372620000001e269 +5.7867887e75 +2.6487729229999998e-170 +5.8439300000000004e47 +1.603e-292 +1.4805099999999999e224 +2.9610199999999998e224 +5.9220399999999996e224 +0.20000000000000001 +0.10000000000000001 +1.15533e-275 +5.3e-170 +6.9999999999999995e99 +1.3999999999999999e100 +1.59e233 +3.5417440316662998e-221 +3.5805866579493421e248 +7.1611733158986843e248 +8.8078365270410006e-135 +2.1829926009999998e-253 +1.3211477893e268 +8.7321175067455361e-253 +6.3679310595427e87 +9.9707427800000007e-207 +4.9853713900000003e-207 +2.782569e-310 +6.0999999999999996e140 +1.2199999999999999e141 +2.1511769629e-138 +1.132767144927811e-73 +3.29e208 +6.3637962251000004e233 +6.81811e-109 +3.409055e-109 +1.8166735573663001e279 +1.9717073476905191e114 +2.7100494148932698e125 +1.0795e67 +2.159e67 +5.3454847000000004e94 +9.9999999999999999e144 +9.903735572932843e172 +1.0889750281500001e185 +2.1779500563000002e185 +4.3559001126000003e185 +8.7118002252000006e185 +2.25e306 +4.5e306 +9e306 +4.4232916947218553e70 +8.8465833894437106e70 +1.7693166778887421e71 +3.5386333557774842e71 +7.0772667115549685e71 +1.4154533423109937e72 +3.9418999999999997e260 +1.3000000000000001e32 +2.6000000000000002e32 +4.438276563e275 +1.524980871e286 +1.5819521932597e-177 +3.0999999999999998e25 +6.1999999999999996e25 +3.3721258460807002e211 +6.7442516921614005e211 +5.5903523659e-105 +8.1625337e89 +2.11e64 +2.3704757000000002e-272 +1.5755041652808759e-236 +7.8775208264043795e-237 +4.824084300033e-36 +7.0129e99 +8.1023e-175 +4.05115e-175 +1.417852531e-74 +2.4835569003e-120 +9.9999999999999996e290 +4.5969168008999997e104 +9.1938336017999994e104 +1.8387667203599999e105 +2.9549000000000002e165 +5.9098000000000004e165 +2.563e147 +3.53e-134 +2.9999999999999998e50 +1.87501340360961e49 +7.1987497031717e-190 +3.59937485158585e-190 +3.23201063541e264 +9.31627064449e281 +4.9000000000000003e-151 +4.2324871390121003e-228 +6.1e-211 +1.4910681100000001e283 +4.86487726433125e228 +9.7297545286625e228 +1.9459509057325e229 +3.891901811465e229 +7.78380362293e229 +1.14001e-14 +3.5590105158955002e130 +7.1180210317910005e130 +1.4236042063582001e131 +2.8472084127164002e131 +1.3475965399999999e-139 +6.7379826999999995e-140 +4.2251883302299e64 +1.702730525320451e-314 +1.5109e-183 +5.8706182454711004e-99 +5.7891890000000004e-130 +9.9999999999999989e-207 +1e-206 +8.000149e-206 +2.54911558625309e-263 +7e-106 +3.7419000000000003e-156 +8.703372741147379e-20 +1.1201830665612401e-104 +5.6009153328062004e-105 +2.8004576664031002e-105 +1.4002288332015501e-105 +5.9882268076691e-155 +9.7173316137e-123 +2.439967879e-64 +2.317e-129 +1.3414899396911681e-52 +6.7074496984558405e-53 +3.3537248492279202e-53 +1.6768624246139601e-53 +8.3843121230698006e-54 +4.1921560615349003e-54 +2.0960780307674501e-54 +1.0480390153837251e-54 +1.6271639669264887e177 +3.947e-237 +1.9129999999999999e139 +2.46182373e54 +2.06062087e-290 +6.5387794015887095e236 +1.3077558803177419e237 +1.3233400000000001e-83 +6.6167000000000005e-84 +9.9999999999999997e-61 +1.8074511805548081e161 +2.6017496910000043e-319 +3e-301 +1.4430953e-189 +4.73958416496519e166 +3.360451e-199 +4.5940000000000003e-101 +2.2970000000000002e-101 +1.144954266012839e-306 +5.724771330064195e-307 +3.3689189497700002e152 +6.1282259707267004e140 +6.4460243813950896e-292 +4.98345857817843e-120 +1e86 +1.4474150995325501e162 +2.8948301990651002e162 +5.7896603981302004e162 +1.1579320796260401e163 +1.2635098827e-89 +6.0514996000000004e-37 +3.0257498000000002e-37 +1.5128749000000001e-37 +5.3e-83 +2.65e-83 +1.04074340587927e-172 +5.20371702939635e-173 +7.1000000000000005e217 +1.4200000000000001e218 +1.0974565999999999e-253 +5.4872829999999996e-254 +2.7436414999999998e-254 +3.7267e77 +1.2999999999999999e-27 +2.6312545900000002e296 +5.2625091800000004e296 +1.0525018360000001e297 +2.1050036720000001e297 +4.2100073440000003e297 +8.4200146880000006e297 +1.6840029376000001e298 +1.61475171421881e205 +4.3669999999999997e-166 +2.6398400000000002e-142 +1.3199200000000001e-142 +6.5996000000000005e-143 +3.2998000000000002e-143 +1.6499000000000001e-143 +8.2495000000000006e-144 +4.1247500000000003e-144 +1.0605506435469983e-82 +5.6147241251641396e-105 +2.8073620625820698e-105 +2.40116592069e-154 +1.3088773000000001e-260 +6.6302859999999995e-84 +3.3151429999999998e-84 +7.3144532933909995e133 +1.4628906586781999e134 +9.9999999999999992e231 +1.9999999999999998e232 +3.2313447000000002e205 +6.4626894000000004e205 +2.20149202773e98 +3.2588569999688622e-320 +1.6294284999844311e-320 +3e-09 +3.500256796946e-311 +2.39e-67 +5.7042360000000004e-220 +2.8521180000000002e-220 +1.4260590000000001e-220 +7.1302950000000005e-221 +3.0469002971700002e-124 +6.5434354119917e-115 +1.1204783214e-309 +9.5033630999999993e166 +5.62162852134311e-105 +7.058006393e-47 +9.997649e-266 +1.927931e198 +6.5531e-261 +9.9999999999999998e-266 +7.72923e-94 +3.864615e-94 +5.57e-77 +2.79724917e-18 +2.1181e-287 +3.874279e257 +2.91776207e75 +2.7530204822363698e243 +5.5060409644727396e243 +3.954513e55 +3.35013307e34 +1.6680674300000001e-25 +1.4071332293805201e-105 +7.0356661469026005e-106 +3.5178330734513002e-106 +1.7589165367256501e-106 +5.7888709870000004e-43 +7.8966475792999995e-296 +3.7699999999999997e195 +9.9999999999999988e-120 +1e-119 +1.5862820087e-236 +2.7700000000000002e156 +5.8840570241120896e-304 +5.3000000000000004e-288 +1.600511e-118 +1.0824022779185e154 +2.164804555837e154 +6.9490999999999995e-283 +1.3400487912499999e181 +2.6800975824999998e181 +5.3601951649999996e181 +1.0720390329999999e182 +2.1440780659999999e182 +4.2881561319999997e182 +8.5763122639999994e182 +1.7152624527999999e183 +3.4305249055999998e183 +6.8610498111999995e183 +1.3722099622399999e184 +2.7444199244799998e184 +4.8489999999999997e256 +5.09000840695e116 +1.01800168139e117 +9.1000000000000006e-132 +9.269e-42 +4.6345e-42 +2.31725e-42 +2.071466003017e-290 +4.8444037121e-241 +1.65051857701e295 +2.998691727671e-214 +4.5120556617e-250 +6.9012578267671785e96 +1.3802515653534357e97 +1e27 +4.6816858400000003e-70 +2.3408429200000002e-70 +1.1704214600000001e-70 +5.8521073000000004e-71 +2.9260536500000002e-71 +1.12708746274021e-104 +4.55714837714719e-278 +3.9234290000000003e83 +1.8890999999999999e49 +4.94122961989e-297 +1.8771949999999999e282 +3.7543899999999997e282 +7.5087799999999995e282 +1.5017559999999999e283 +4.6980597000000003e135 +9.3961194000000006e135 +1.8792238800000001e136 +1.3512119246000001e-198 +6.7560596230000005e-199 +2.6450413575848702e150 +8.838476181151e98 +5.0619999999999997e-294 +2.5309999999999998e-294 +4.82277133e-154 +3.1e-93 +4.4777499999999997e275 +8.9554999999999994e275 +1.7910999999999999e276 +3.5821999999999998e276 +7.1643999999999995e276 +1.4328799999999999e277 +2.8657599999999998e277 +5.7315199999999996e277 +1.1463039999999999e278 +1.3287535099809001e209 +2.3000000000000002e-160 +9.1413e73 +1.58600925207e56 +3.594484357e-162 +1.781797e-280 +2.46257e287 +1e173 +1.80527173e-103 +2.0946999999860498e-318 +1.0473499999930249e-318 +5.2367499999651245e-319 +1.3983153377295999e-223 +6.9915766886479995e-224 +3.4957883443239998e-224 +1.7478941721619999e-224 +8.7394708608099994e-225 +4.3697354304049997e-225 +1.17818179489e-157 +3e-68 +1.5e-68 +3.01e137 +1.2736387171669999e262 +4.2914781718422037e-315 +1.1545938115728645e45 +1.3045108228235261e265 +3.6600310108469997e74 +4.1611255398500003e61 +8.3222510797000006e61 +1.6644502159400001e62 +3.3289004318800002e62 +6.6578008637600005e62 +3.6092071119299998e43 +9.2591e-247 +7.2969999999999995e-131 +2.0829355999999999e-85 +1.0414677999999999e-85 +5.2073389999999996e-86 +1.9800000000000001e-296 +9.9000000000000007e-297 +1.69e-53 +3.8346391e226 +1.8563291811e105 +3.6529e-277 +1.82645e-277 +2.37382689e253 +7.4017955181495395e-100 +3.7008977590747697e-100 +1.612009577e-59 +8.060047885e-60 +1.0307030999999999e89 +2.0614061999999999e89 +6.7549e93 +3.8528784166653668e285 +7.7057568333307337e285 +1.3181941309699999e237 +5.4527811326474057e212 +1.0905562265294811e213 +4.97501470779151e-238 +2.487507353895755e-238 +7.6164055633e-38 +1.0999999999997941e-312 +1.0929999999999999e-79 +1.393e-136 +4.7e-216 +5.2301193730000004e119 +1.0460238746000001e120 +2.0920477492000001e120 +4.1840954984000003e120 +8.3681909968000006e120 +6.9451187813086965e301 +1.3890237562617393e302 +1.406947e-164 +1.9999999999999999e-178 +9.9999999999999995e-179 +7.7300000000000005e-07 +1.0465743e120 +1.5248829999999999e-37 +1.1952437111971699e166 +2.3904874223943398e166 +6.92915e96 +1.38583e97 +1.950524824597e111 +1.2110947014196001e-300 +6.0554735070980004e-301 +3.0277367535490002e-301 +6.99e214 +4.05146535e145 +8.1029307e145 +6.3030836038339296e84 +1.3536296637e94 +9.2422999999999994e-306 +1.9999999999999998e-32 +9.9999999999999992e-33 +4.99e259 +3.1897999999999998e-236 +1.5948999999999999e-236 +7.0000000000000005e68 +1.193535159e-185 +2.3821191160999998e107 +4.7642382321999997e107 +8.7810000000000006e272 +1.7562000000000001e273 +6.205661439e-298 +1.166057e-188 +4.7000000000000003e76 +3.181686446447129e202 +1.2074536299999999e284 +2.4149072599999998e284 +1.0348800000000001e-57 +5.1744000000000004e-58 +2.5872000000000002e-58 +1.2936000000000001e-58 +6.4680000000000004e-59 +3.2340000000000002e-59 +1.6170000000000001e-59 +7.29e-190 +1.9051117429741001e254 +8.851820992357233e-107 +4.1043939e-175 +1e114 +1.2882424396362809e-117 +2.8299999999999998e41 +5.6599999999999996e41 +1.1319999999999999e42 +8.4999999999999994e297 +1.6999999999999999e298 +3.3999999999999998e298 +6.7999999999999995e298 +3.9581909999999997e288 +1.0090830000000001e232 +1.13e-309 +1.8716982209e164 +1.6790000000000001e121 +1.79322588218063e217 +4.9080190000000003e169 +4.29866077925e123 +8.5973215585e123 +1.7194643117e124 +1.26465359237e-61 +4.1264746176560003e-116 +2.0632373088280001e-116 +1.0316186544140001e-116 +5.1580932720700004e-117 +2.5790466360350002e-117 +4.9999999999999996e259 +9.9999999999999993e259 +1.9999999999999999e260 +3.9999999999999997e260 +7.9999999999999994e260 +2.970891356064325e47 +5.94178271212865e47 +1.18835654242573e48 +6.5970978999999995e31 +1.8851366941187e-69 +6.5407e-87 +3.5494202304509002e-252 +8.336960483e-144 +4.1684802415e-144 +1.1534987103000001e278 +2.3069974206000002e278 +4.6139948412000003e278 +1.2016437024157601e-126 +6.0082185120788004e-127 +3.0041092560394002e-127 +1.5020546280197001e-127 +7.5102731400985005e-128 +8.1700000000000006e58 +1.0535900490999998e-318 +1.131333132653856e-309 +3.3792230000000002e34 +2.8195851259289002e128 +5.6391702518578004e128 +2.575875413e175 +5.5328045571700004e184 +4.9299999999999997e-269 +3.124916907413e-239 +1.5624584537065e-239 +9.9999999999999999e-238 +4.3747069699002003e-138 +2.1873534849501001e-138 +3.392508115381e239 +1.4758910983857041e-217 +1.7e-53 +1.8573048112315299e192 +3.09580437536819e-211 +1.547902187684095e-211 +7.739510938420475e-212 +6.44429536639e174 +5.3705971999999996e-229 +2.6852985999999998e-229 +1.3426492999999999e-229 +5.354201132462043e209 +1.0524850715400001e-26 +5.2624253577000004e-27 +4.891e256 +1.061792239792149e92 +5.29209141602027e-114 +2.646045708010135e-114 +5.0690437121057e-61 +1.74192371e-50 +4.1534892987e-57 +8.62649633699e-23 +4.313248168495e-23 +8.4891e238 +9.9999999999999989e-92 +1e-91 +9.23317e-219 +2.958325635097e280 +9.4454460000000006e-70 +4.7227230000000003e-70 +5.3e-260 +9.283653e-306 +4.6418265e-306 +3.1022767e286 +1.4618653492626641e-43 +7.3093267463133205e-44 +3.6546633731566602e-44 +1.8273316865783301e-44 +9.1366584328916506e-45 +1.7596999999999999e-78 +1.5749000000000001e171 +3.1498000000000002e171 +6.2996000000000004e171 +6.8235770199775e298 +1.3647154039955e299 +2.729430807991e299 +1.133593219426e-309 +5.0999999999999997e-148 +1.2945750782962001e-263 +6.4728753914810004e-264 +5.40097124789e-170 +3.913e-240 +1e55 +9.9999999999999987e54 +1.8869915147952997e223 +5.3280650723425479e-201 +2.3136999999999998e278 +1.7e239 +2.2159999999999984e-312 +1.5630000000000001e53 +1.306871e-145 +6.534355e-146 +3.2671775e-146 +4.3854201326400003e-138 +2.1927100663200001e-138 +1.0963550331600001e-138 +5.4817751658000004e-139 +2.7408875829000002e-139 +1.3704437914500001e-139 +1.1e67 +4.5447941047425914e188 +9.0895882094851828e188 +3.97627e288 +1.6408736767779999e-87 +8.2043683838899994e-88 +4.7453e135 +2.9215e249 +5.843e249 +3.562357e-252 +4.6399e-14 +1.3964178164305991e-49 +2.8600000000000002e-46 +1.4300000000000001e-46 +5.95243e-304 +1.9028603599999999e-156 +9.5143017999999994e-157 +4.7571508999999997e-157 +2.3785754499999998e-157 +5.10811e-148 +1.09e95 +9.999999999999999e200 +3.4700000000000002e183 +6.9400000000000005e183 +1.1999999999999999e-39 +5.9999999999999996e-40 +2.9999999999999998e-40 +1.4999999999999999e-40 +1.6888939999999999e-25 +8.4444699999999994e-26 +5.1715585486127004e175 +1.6999999999999999e-258 +5.546720776302e-313 +7.3185900000000005e102 +3.2117060000000002e-236 +1.6058530000000001e-236 +2.385480597889567e194 +1.979511874601e-268 +4.943665657e-123 +1.2387007000000001e228 +2.4774014000000002e228 +1.110957382255e185 +2.22191476451e185 +2.4012386000000002e-39 +1.2006193000000001e-39 +1.0325985187701221e-175 +5.1629925938506104e-176 +7.3470000000000005e307 +6.8343741943770257e-199 +5.26529e-232 +4.4986453555921307e-135 +1e-296 +5e-297 +2.2717359299522488e-163 +4.9e-95 +2.2817925101963e-104 +1.4199999999999999e-164 +7.0999999999999995e-165 +1.9e282 +4.8113580187899997e-185 +4.0810000000000003e291 +3.8501689562004179e-184 +1.9250844781002089e-184 +9.6254223905010447e-185 +4.8127111952505223e-185 +2.4063555976252612e-185 +1.2031777988126306e-185 +5.72000425391e246 +1.24963e-151 +4.6108110194948821e-132 +1.2580465000000001e259 +2.5160930000000002e259 +5.0321860000000003e259 +1.0064372000000001e260 +2.0128744000000001e260 +2.44651782391e197 +6.8567698789999995e152 +1.3713539757999999e153 +8.9006058999999994e185 +9.9999999999999987e-151 +1e-150 +5e-151 +1.0325971998082053e-321 +2.6215907277708375e-145 +1.0973300000000001e154 +9.3643742181590006e-247 +1.0088399999999999e-32 +5.0441999999999997e-33 +2.5220999999999998e-33 +6.178015686384143e168 +8.8760599354809006e-20 +8.0296452332099455e55 +1.6059290466419891e56 +3.2118580932839782e56 +6.4237161865679564e56 +1.2847432373135913e57 +4.4337674255527e126 +1.0268060899999999e204 +2.4190743097e-126 +1.6200695877169497e174 +3.8003193999999997e-215 +1.9001596999999999e-215 +3.1e-270 +1.07111813e297 +3.4910000000000002e-255 +9.721436097679e-67 +1.5404894110539911e-37 +7.7024470552699554e-38 +7.338477769229e102 +5.6231327850409004e156 +1.3261216000024898e-319 +3.5029999999999998e-50 +6.7900000002142313e-317 +1.3698552539195111e-198 +0.00019999999999999998 +9.9999999999999991e-05 +2.1200000000000001e-172 +1.0600000000000001e-172 +5.3000000000000004e-173 +2.6500000000000002e-173 +9.1653905300374844e247 +1.8330781060074969e248 +3.6661562120149938e248 +7.3323124240299875e248 +1.4664624848059975e249 +2.932924969611995e249 +1.1999999999999999e-244 +5.9999999999999996e-245 +2.9999999999999998e-245 +7.3728601000000005e161 +1.7204730493334219e-140 +8.6023652466671094e-141 +1.3000000000000001e-117 +1.611e-236 +1.3099999999999999e147 +3.5394808400000002e-78 +1.7697404200000001e-78 +8.8487021000000006e-79 +4.4243510500000003e-79 +1.3978024881e-254 +1.6082615450000001e56 +3.2165230900000002e56 +6.4330461800000004e56 +1.2866092360000001e57 +2.5732184720000002e57 +1.3104935716347603e147 +1.027153443660862e-293 +2.404900310103547e253 +9.9999999999999992e141 +1.9999999999999998e142 +4.122827e-88 +1.5245e283 +3.049e283 +2.7883846326899998e184 +5.5767692653799996e184 +7.2619784830297e-221 +4.8166999081675081e107 +3.711e74 +1.079e210 +9.91068871175e169 +1.98213774235e170 +3.9642754847e170 +8.3970008029000006e148 +1.6794001605800001e149 +3.1076871107520998e-270 +1e288 +1.6016999999999999e143 +1.530703e-155 +5.125696329e144 +4.5530515725641503e129 +9.1061031451283006e129 +1.8212206290256601e130 +3.6424412580513202e130 +1.0130923809999999e-178 +1.573e53 +5.2781447116569996e60 +1.0556289423313999e61 +5.70410861e-164 +3.1632439000000002e-34 +1.3572899999999999e122 +2.1300000000000001e179 +4.2600000000000003e179 +8.5200000000000006e179 +4.0627000000000003e173 +1.115403473e-312 +5.577017365e-313 +1.1876108830000001e222 +1.6216049241e-177 +2.6600000306446873e-319 +2.121579275e120 +4.24315855e120 +8.4863171e120 +3.0773e-96 +5.3159567391300004e-173 +3.0551319300000002e283 +6.1102638600000004e283 +5.1257855834130003e290 +1.0587799999999999e-231 +5.2938999999999996e-232 +1e-209 +3e193 +3.0721700000000002e196 +6.1443400000000004e196 +8.703372741147379e-23 +1.2886582663000001e203 +1.40763e-195 +2.3825699999999998e-70 +1.1361111100000001e-76 +3.3099999999999998e-233 +1.5315951513505999e-09 +7.6579757567529995e-10 +1.3199652211505e206 +2.639930442301e206 +1.5700560383000001e-152 +5.9635039523796004e-217 +2.9817519761898002e-217 +1.4908759880949001e-217 +7.4543799404745005e-218 +1.008189632862171e55 +6.48721e-31 +4.44924497591325e272 +8.8984899518265e272 +1.7796979903653e273 +4.55057e-222 +2.275285e-222 +1.4347508140964001e-105 +7.1737540704820005e-106 +3.5868770352410002e-106 +3.4657057654229352e65 +6.9314115308458705e65 +1.3862823061691741e66 +2.7725646123383482e66 +5.5451292246766964e66 +3.1999999999999998e-62 +1.5999999999999999e-62 +7.9999999999999995e-63 +3.9999999999999997e-63 +1.9999999999999999e-63 +9.9999999999999993e-64 +4.9999999999999997e-64 +2.4999999999999998e-64 +7e37 +2.4899999999999998e-123 +5.0181001e141 +2.1997489139147003e-51 +3.5282041e301 +3.1e-183 +1.17e-14 +3.9472559516176343e-94 +2.3528824321e-101 +2.9729999999999998e-276 +2.5899899293399e-235 +4.8403099999999997e-39 +4.7572999999999997e-275 +9.999999999999999e82 +1e83 +3e-158 +1.5e-158 +3.4219947e34 +1.0914750194000001e-169 +5.4573750970000004e-170 +7.9e-94 +3.95e-94 +1.975e-94 +1.238639e110 +3.719159e-277 +4.33e-287 +4.5072977716847e98 +7.2658280000000005e-280 +3.6329140000000002e-280 +1.8164570000000001e-280 +9.9999999999999999e228 +1.5127689999999999e106 +3.0255379999999998e106 +4.2258061761655607e-144 +2.20149202773e95 +1.3999999999988396e-313 +2.1000000000000001e89 +2.7851198362187e-226 +8.011048300699117e83 +9.15654049301e-17 +4.578270246505e-17 +8.9999999999999994e-253 +1.8855215100000001e-100 +1.51e-245 +1.1e241 +1.71903965e239 +3.4380793e239 +3.1574557e199 +8.3395322691999994e-175 +4.1697661345999997e-175 +2.0848830672999999e-175 +2.01231518144181e142 +7.2031e-252 +6.651760900255937e264 +6.3231430000000004e53 +7.71071035899585e195 +1.54214207179917e196 +2.0811025903798388e117 +1.1269999999999999e244 +2.2539999999999998e244 +4.5079999999999997e244 +3.8099999999999997e-128 +1.9051e-128 +2.9419542999999998e190 +9.9999999999999996e-269 +1.0000000000000001e-268 +3e134 +6.3528543865000004e112 +1.2705708773000001e113 +2.5411417546000002e113 +5.0822835092000003e113 +3.6700000000000002e-162 +2.197e-110 +2.91776207e72 +3.22235043343e143 +1.9709485081378161e-153 +9.8547425406890807e-154 +4.9273712703445403e-154 +2.4636856351722702e-154 +1.2318428175861351e-154 +2.671181336953737e-173 +1.3355906684768685e-173 +6.6779533423843426e-174 +3.3389766711921713e-174 +3.0305598899999998e106 +8.4118070000000006e89 +5.1288229999999997e231 +1.02897574300651e-206 +1.7263776303e-199 +8.6318881515e-200 +1.97326729e-299 +2.9819496179091998e-276 +1.4909748089545999e-276 +7.4548740447729995e-277 +5.4657741494540004e-24 +2.7328870747270002e-24 +5.682131e-136 +2.50183e-269 +1.250915e-269 +1.1124874625202317e213 +2.156476451365943e-54 +9.37353457861429e278 +4.7680328830000003e-129 +4.1e-265 +8.8247847510330045e95 +1.7649569502066009e96 +3.9999999999999997e-122 +1.9999999999999998e-122 +9.9999999999999992e-123 +4.9999999999999996e-123 +1.0374002236909e58 +9.851e-08 +8.33603e117 +3.832071000771165e-69 +1.07045745024902e-318 +1.8532858000000001e-44 +9.2664290000000006e-45 +5.8855637e-307 +1.3014774143086999e262 +2.180986709e-228 +1.0904933545e-228 +8.12502894459049e-237 +9.770077e-126 +4.8850385e-126 +7.5999999999999995e-187 +3.7999999999999997e-187 +1.8999999999999999e-187 +9.4999999999999994e-188 +2.2799127108449e216 +1.65e292 +3.3e292 +1.229352343e284 +6.7503994765442123e-202 +3.05331e-127 +1.526655e-127 +3.2611603000000002e-31 +3.536086133e-50 +1.257610628364644e-210 +1.230909344411995e138 +2.46181868882399e138 +1.6899999999999999e295 +4.8393687780416256e-98 +5.3849e237 +1.65051857701e292 +2.9480080280199532e190 +5.8960160560399064e190 +9.9999999999999998e23 +4.55714837714719e-281 +9.0079189999999994e39 +1.8015837999999999e40 +1.2235976263380367e-272 +6.7647323824369995e295 +4.7801694308999341e-275 +1.131227426976635e98 +2.26245485395327e98 +2.3543905719999998e-160 +1.1771952859999999e-160 +5.8859764299999996e-161 +1.1e36 +9.41827645352843e-160 +3.1434123709e-65 +1.13627e157 +4.8483e-244 +5.101049e-33 +1.7226892796000001e-258 +8.6134463980000006e-259 +4.3067231990000003e-259 +2.1533615995000001e-259 +4.0769e114 +1.6644547037e-87 +1.5704886049999999e81 +3.1409772099999998e81 +6.2819544199999996e81 +3.97753364721e257 +1.2699999999999999e-92 +6.08269738203293e-40 +4.1939089000000003e176 +8.3878178000000006e176 +1.6775635600000001e177 +5.9861099999999996e221 +9.999999999999999e169 +1.4165873e-49 +4.2999999999999997e33 +2.215901545757777e-197 +1.1079507728788885e-197 +5.5397538643944425e-198 +6.814083704584409e62 +2.2693000000000002e-194 +9.95e256 +1.99e257 +2.4474076359999998e-126 +1.2237038179999999e-126 +6.1185190899999996e-127 +8.2310814274709831e232 +1.6462162854941966e233 +1.19e-188 +5.95e-189 +2.975e-189 +3.9463103e139 +3.6595714999999998e71 +7.3191429999999995e71 +1.4638285999999999e72 +2.9276571999999998e72 +5.8553143999999996e72 +1.327e-145 +6.635e-146 +3.0469526064979998e-186 +1.5234763032489999e-186 +2.5949726770000002e-294 +2.0739967004400001e-147 +1.0369983502200001e-147 +5.1849917511000003e-148 +6.67284113e-233 +2.3078999999999998e188 +3.11109114616403e255 +2.1173923548857331e294 +4.2347847097714663e294 +8.1300000000000005e55 +1.6260000000000001e56 +1.1066934415e95 +2.213386883e95 +5.871e-220 +4.50368146776e-312 +1.2104236498999999e194 +2.4208472997999998e194 +4.8416945995999997e194 +9.6833891991999994e194 +3e75 +5.1714025499999997e290 +1.0342805099999999e291 +2.0685610199999999e291 +1.2999999999999999e203 +2.5999999999999998e203 +5.4172530000000004e-201 +1.4310071663964261e69 +6.0218521319150009e280 +1.2043704263830002e281 +2.4087408527660004e281 +4.8174817055320007e281 +0.00040501000000000003 +3.4235034543877235e267 +6.8470069087754469e267 +1.3694013817550894e268 +1.207061e-11 +5.06877e-151 +1.1174329999999999e213 +2.2348659999999999e213 +4.0829147e260 +2.5163415710000002e228 +5.52709111973e-257 +1.9999999999999998e-181 +9.9999999999999991e-182 +1.81338313e245 +1.4273381982790001e-136 +1.4089999999999967e-313 +1.07279e-26 +2.19e-228 +2.7054938749e91 +4.9429427769999997e138 +9.8858855539999993e138 +1.9771771107999999e139 +6.8311239659230005e62 +6.0804169315066996e-245 +3.3718999999999998e-115 +4.7359339900989997e191 +7.2810093873657e-193 +3.2794000000000002e-177 +1.6397000000000001e-177 +2.0344917204333899e201 +4.0689834408667797e201 +8.1379668817335595e201 +1.6275933763467119e202 +3.2551867526934238e202 +6.5103735053868476e202 +1.5059999999999999e-217 +7.5299999999999995e-218 +1.3638199999999999e-288 +6.8190999999999995e-289 +7.4256023e-249 +2.7103300000000002e-55 +1.3092747613300001e116 +1.14417071607e-281 +5.72085358035e-282 +9.9999999999999987e-36 +1e-35 +5e-36 +1.1433e-135 +6.7561686789999995e-261 +3.6198574699999998e40 +7.2397149399999995e40 +1.4479429879999999e41 +1.51839200837161e47 +1.3057391510000001e-89 +4.8594558173e48 +1.4638716010937999e-133 +7.3193580054689995e-134 +6.8985865317742005e180 +1.3797173063548401e181 +9.782131416597e-185 +1.445139533456e-310 +9.9e138 +7.3054381090900005e158 +8.8032906579999994e-23 +4.4016453289999997e-23 +2.2008226644999999e-23 +9.6194032985289994e222 +1.9238806597057999e223 +1.747667e-286 +6.1832595699999996e283 +9.9999999999999996e110 +1.0000000000000001e111 +4.4363342117e241 +2.1729999999999999e-200 +5.8270600000000004e-46 +2.9135300000000002e-46 +2.7018796739e-114 +2.9138385963149e-46 +1.45691929815745e-46 +8.9999999999999994e272 +1.7999999999999999e273 +3.5999999999999998e273 +6.7488159e31 +2.46356281597e225 +8.95231e-284 +5.7984479000000004e41 +2.8161981381858973e125 +3.63993e99 +1.1083932591989083e-256 +6.9204709e-112 +3.46023545e-112 +1.0359043542628775e-60 +5.1795217713143875e-61 +2.5897608856571937e-61 +1.2948804428285969e-61 +5.0634778529e-210 +3.883973e-302 +1.5859782098563421e140 +1.6810000000000001e-28 +3.2585188000000002e-295 +1.6292594000000001e-295 +8.1462970000000005e-296 +4.0731485000000003e-296 +9.999999999999999e256 +1e257 +2.8269461514405644e-313 +3.84865004907e-274 +1.924325024535e-274 +9.621625122675e-275 +4.8108125613375e-275 +3.9713193099999997e-07 +1.4199999999999999e-254 +7.0999999999999995e-255 +2.6999999999999998e178 +2.42901889082717e-303 +1.214509445413585e-303 +2.4163e-216 +1.20815e-216 +9.697183891673e-11 +3.93e167 +5.627e-226 +2.7624106000000004e-316 +4.6999999999999997e-278 +4.003395053473877e257 +8.0067901069477539e257 +2.8323493408999998e184 +5.6646986817999996e184 +1.1329397363599999e185 +1.3190595096299999e175 +2.6381190192599998e175 +8.4970300000000006e-57 +1.5062725581899999e221 +9.9999999999999997e-241 +2.9999999999999998e162 +5.9999999999999996e162 +1.1999999999999999e163 +2.00256867e257 +5.5219171970171e-170 +3.3057350728075958e-118 +1.6528675364037979e-118 +8.2643376820189894e-119 +2.06837e-265 +1.1130087172578271e95 +6.3890478604332737e53 +1.6750000000000001e59 +3.3500000000000002e59 +6.7000000000000004e59 +1.3400000000000001e60 +2.6800000000000002e60 +5.3600000000000004e60 +1.0720000000000001e61 +2.1440000000000001e61 +1.01581567502557e288 +4.7197751870999997e-73 +2.57e-33 +2.966163e-161 +1.1699999999999999e-191 +2.1654789999999999e33 +1.9994799999999999e-94 +9.9973999999999993e-95 +4.9986999999999997e-95 +2.4993499999999998e-95 +8.13e288 +9.99938236367429e-95 +7.3706015068343e71 +9.9999999999999996e-95 +7.458762575177e-249 +2.555071e200 +1.9901191e-07 +2.2000000000000001e-82 +1.1000000000000001e-82 +3.6877806616079173e71 +9.7000000000000006e281 +6.6937900000000004e-292 +1.2456999999999999e-154 +4.7320562774232707e-219 +9.9999999999999999e51 +6.130031e106 +5.2610999999999997e262 +3e-189 +1.5e-189 +6.1175299999999996e-245 +8.7792902570000006e-287 +1.5083402401e-276 +7.84944533115121e108 +1.8081309999999999e273 +5.9e218 +8.5028081900000006e235 +1.7005616380000001e236 +2.8810699999999998e215 +5.7621399999999996e215 +2.214915889e-169 +1.1074579445e-169 +3.1139999999999998e-09 +1.5569999999999999e-09 +1.027e-237 +6.8194230000000005e-56 +1.386074341643048e-316 +1e198 +9.9999999999999988e197 +1.7290486000000001e-25 +8.6452430000000006e-26 +4.217e117 +5.1926733236753969e231 +9.777465e48 +1.955493e49 +3e-43 +2.124699552393e-262 +3.1799999999999998e-211 +1.5899999999999999e-211 +3.099327252691603e78 +1.863540877148699e189 +2.48790297e284 +3.364970088741e-87 +1.4470999999999999e-223 +1.0064200777e111 +3.8471899999999997e-187 +2.1869678193133899e-200 +9.9999999999999999e-300 +5e-300 +3.2632477e289 +3.8068709566000003e-13 +1.9034354783000001e-13 +3.71790617e-16 +4.0097788588567e52 +4.7290000000000003e219 +5.8727095970317747e-192 +2.7321289999999998e-55 +4.5742715937990364e244 +9.1485431875980728e244 +1.702061899637397e-261 +8.510309498186985e-262 +4.2551547490934925e-262 +9.089e-166 +1.5103352968831701e-130 +9.3901194275936368e-45 +4.6950597137968184e-45 +7.2809158111920684e-311 +1.5553807503046139e-214 +1.0573004821002676e-321 +2.5846588207959998e-179 +1.2923294103979999e-179 +6.4616470519899996e-180 +3.9699999999999997e226 +3.131983751e196 +1.7936599999999999e-196 +8.9682999999999994e-197 +9.9999999999999991e-154 +2.9999999999999998e249 +5.7151903e-254 +4.9687697094654697e79 +3.693810243019e-280 +5.71e-108 +2.855e-108 +8.01e-299 +2.3241723e129 +2.85880867811e-254 +6.3014649270265e109 +1.2602929854053e110 +3.8055069257690003e279 +1.9999999999999999e-07 +9.9999999999999995e-08 +9.4568306990000006e-132 +1.236979e166 +1.09290144232111e238 +2.943e-192 +9.348667458645e188 +1.869733491729e189 +2.1187e-29 +8.62307e207 +2.72121427e178 +5.2130000000000003e231 +1.0426000000000001e232 +2.0852000000000001e232 +3.5628873e-314 +1.78144365e-314 +8.1281799999999995e-122 +4.0640899999999997e-122 +5.0804421000000003e-123 +2.7752531371e122 +3.6851944899999998e304 +9.999999999999999e138 +1e139 +1.0532258366609e204 +8.39e145 +3e-102 +1.49200927561e-15 +5.4694295965852139e237 +1.0099999999999999e111 +1.0308977390390301e-91 +1.0545899000000001e58 +2.1091798000000001e58 +4.2183596000000003e58 +2.82187309e-139 +1.2291e-98 +5.401e60 +5.7813640606185996e-136 +2.8906820303092998e-136 +5.0041164984514256e138 +9.3e-222 +7.6440433620193363e-13 +3.8220216810096682e-13 +3.7202344513634002e-221 +1.8601172256817001e-221 +2.3429591539e42 +4.601e-48 +2.2610836911999999e-284 +1.1305418455999999e-284 +5.6527092279999996e-285 +2.8263546139999998e-285 +1.4131773069999999e-285 +7.0658865349999995e-286 +6.063369e-130 +3.0316845e-130 +1.51584225e-130 +9.9999999999999998e284 +7.63e279 +1.6069e-298 +2.2713240227474201e-225 +1.1356620113737101e-225 +1.30371067651301e-266 +2.0024990000000001e139 +7e-258 +3.2214961e53 +3.87419439143493e164 +1.5019072544448999e-102 +5.464120675301e-114 +3.5243988108650932e152 +3.2752004983e-208 +2.2900000000000002e39 +1.0291999999999999e-296 +5.1459999999999997e-297 +2.5729999999999998e-297 +2.4701034303972492e107 +3.6929164168801057e304 +3.8597035887889e105 +7.8203191000000005e282 +1.5640638200000001e283 +2.0700402999999999e260 +1.8523999999999999e-134 +9.2619999999999994e-135 +4.6309999999999997e-135 +2.4970724642105908e-67 +5.125785583413e287 +9.9999999999999995e-213 +2.0000000000000002e-212 +1.0000000000000001e-212 +8.7870000000000006e-54 +3.0000000000000002e190 +1.6997491730000001e-28 +1.50013192707e190 +1.1910606457629e-73 +5.9553032288145e-74 +6.09193e75 +1.0622411385586801e-321 +2.9050000000000002e69 +5.8100000000000004e69 +1.1620000000000001e70 +2.3240000000000002e70 +4.6480000000000003e70 +9.2960000000000006e70 +5.704654635343e-21 +1.3900000000000001e268 +2.7800000000000002e268 +1.449493290553072e-282 +1.5700000000000001e-155 +3.767967e248 +6.5728432750850004e143 +1.3145686550170001e144 +2.6291373100340002e144 +5.2582746200680003e144 +1.0516549240136001e145 +1.1136380020621001e123 +1.7933e-109 +8.9665e-110 +1.070094751955107e-262 +1.4180233731387278e212 +2.8360467462774556e212 +9.4033458879440006e-104 +4.7016729439720003e-104 +2.3508364719860002e-104 +1.1754182359930001e-104 +5.8770911799650004e-105 +1.2247140014768651e135 +2.4494280029537302e135 +4.8988560059074603e135 +9.7977120118149206e135 +1.9595424023629841e136 +3.9190848047259683e136 +9.9999999999999998e-67 +6.2641537320658377e283 +7e34 +1.00993856450227e-94 +3.1868666072169998e-124 +1.7203e-202 +8.6015e-203 +3.2288711962300002e53 +7.3891783e-193 +3.816189517e-72 +4.589e39 +8.1962116266827995e-63 +4.0981058133413997e-63 +2.0490529066706999e-63 +1.0245264533353499e-63 +6.273898922285e137 +1.254779784457e138 +1.1387130000000001e-225 +7.1025217333239e65 +5.7499e-254 +4.459606684033441e123 +2.2034805378298411e-200 +2.37132172557723e160 +9.9999999999999987e79 +1.25e79 +2.5e79 +5e79 +1e80 +6.1842400355699996e252 +1.2368480071139999e253 +2.4736960142279998e253 +3.6114369199999998e-196 +1.8057184599999999e-196 +9.0285922999999994e-197 +3.485505e121 +6.97101e121 +8.7701000000000006e-113 +3.35670058947e87 +1.0221240733758199e-268 +3.3819999999999998e-292 +1.6909999999999999e-292 +1.284570679187241e-322 +6.4228533959362051e-323 +1.57496176797e-301 +1.8817637058051001e43 +3.6283548852830002e-137 +1.3739299999999999e237 +1.18272070949e-45 +5.91360354745e-46 +3.3910000000000002e59 +6.7820000000000004e59 +1.3564000000000001e60 +2.7128000000000002e60 +5.4256000000000004e60 +2.2200490000000001e210 +7.72679e-246 +3.14834771e-155 +9.9999999999999996e225 +1.0000000000000001e226 +1.1043e297 +5.539246410791815e-142 +2.7696232053959075e-142 +6.7116299999999996e233 +1.4395901418214001e-254 +7.1979507091070005e-255 +1.5711197431000001e137 +3.1422394862000002e137 +6.2844789724000004e137 +1.2568957944800001e138 +9.8831768489350894e-98 +2.9999999999999998e-15 +3.4623920400000002e-143 +1.7311960200000001e-143 +8.6559801000000006e-144 +4.3279900500000003e-144 +6.2039879e-40 +3.10199395e-40 +1.01e198 +4.2961875006999997e235 +3.3670838982533e-205 +2.4739999999999998e-244 +1.2369999999999999e-244 +1.9000000000000001e161 +1.0501788344851858e86 +2.1003576689703715e86 +1.3257882592218265e57 +2.651576518443653e57 +8.6995819679999994e-85 +4.3497909839999997e-85 +2.1748954919999999e-85 +1.0874477459999999e-85 +5.4372387299999996e-86 +2.7186193649999998e-86 +1.9589999999999999e-69 +2.45432085596971e281 +2.5900952638282998e54 +8.7000000000000006e-85 +1.1728252594156261e-17 +3.7775215758349698e-249 +9.9999999999999996e-272 +1.0000000000000001e-271 +1.0521391999999999e-60 +5.2606959999999997e-61 +2.6303479999999998e-61 +1.3151739999999999e-61 +6.5758699999999996e-62 +3.2879349999999998e-62 +1.6439674999999999e-62 +1.1557547000000001e98 +1.7430400347887e-230 +3.0671e-217 +1.848225826149e245 +5.402557e293 +3.61e242 +6.79e205 +1.923531247783347e-13 +1.97826911479e49 +3.1044930000000002e106 +6.2089860000000004e106 +1.2417972000000001e107 +9.1533285891894736e272 +9.453e-250 +9.9999999999999988e-126 +1e-125 +7.0618100000000005e93 +1.4123620000000001e94 +2.8247240000000002e94 +5.6494480000000004e94 +2.53604638607e-95 +3.912154877e-274 +5.41249e147 +3.2329144630381e-152 +1.61645723151905e-152 +2.7209999999999998e60 +5.4419999999999996e60 +8.8965160030815994e-287 +4.4482580015407997e-287 +2.2241290007703999e-287 +1.1120645003851999e-287 +5.5603225019259996e-288 +2.7801612509629998e-288 +1.4639537e-223 +1.3300917000000001e-89 +3.5440433909999998e298 +5.3849e234 +5.363049e175 +1e21 +1.598359e168 +1.30945e172 +2.6189e172 +4.2999999999999997e-116 +3.1729327200000002e-96 +1.5864663600000001e-96 +7.9323318000000005e-97 +3.9661659000000003e-97 +8.9999999999999994e182 +1.7999999999999999e183 +3.5999999999999998e183 +7.3967899e-252 +1.3e-92 +1.87157163827103e71 +1.3809834410000001e91 +2.7619668820000002e91 +1.48779e305 +9.7825994728870006e-129 +1.5188605350000001e103 +3.0377210700000002e103 +6.0754421400000004e103 +1.2150884280000001e104 +2.4301768560000002e104 +9.7316836957840386e-42 +4.8658418478920193e-42 +1e167 +8.1569372909048951e111 +2.8086021739999998e-170 +1.4043010869999999e-170 +4.3e30 +2.767e-55 +2.3897004381644018e-132 +1.1948502190822009e-132 +1.0100000000000001e139 +2.0200000000000001e139 +4.0400000000000003e139 +4.5047855100000003e182 +9.0095710200000006e182 +7.565831e43 +1.7128897626920001e-28 +8.5644488134600006e-29 +4.2822244067300003e-29 +2.1411122033650001e-29 +2.9874783999999998e-133 +1.4937391999999999e-133 +7.4686959999999995e-134 +3.7343479999999998e-134 +1.8671739999999999e-134 +9.3358699999999994e-135 +4.6679349999999997e-135 +2.3339674999999998e-135 +5.2730363205700003e85 +1.0546072641140001e86 +2.2456808108497999e-23 +1.1228404054248999e-23 +2.8964509915000002e243 +5.7929019830000004e243 +1.1585803966000001e244 +2.3171607932000002e244 +4.6343215864000003e244 +3.1404084391e224 +3.9380954577e-215 +1.11933227e-228 +2.5320805472769e-154 +5.69e153 +7.7356318540000005e-305 +3.8678159270000003e-305 +6.725e28 +1.345e29 +2.69e29 +2.43364869527299e104 +1.373e-173 +6.865e-174 +3.4325e-174 +3e72 +1.4383e-21 +2.1e173 +1.01664483e52 +2.1457934978758999e-175 +3.4410970933e177 +1.546391661779e-158 +1.1965731978400001e-132 +5.9828659892000004e-133 +2.9914329946000002e-133 +1.4957164973000001e-133 +7.4785824865000005e-134 +1.1084374359822179e-54 +5.5421871799110896e-55 +9.782605173541e163 +3.7e40 +4.4685589031e210 +6.4126395290000004e168 +2.14424490295101e-321 +1.072122451475505e-321 +2.417289071e-160 +6.8341070000000004e-87 +1.5323853924599999e-130 +7.6619269622999995e-131 +1.5079479730600384e131 +4.0000000000000002e-184 +2.0000000000000001e-184 +1.0000000000000001e-184 +5.764658651450369e-167 +6.9091446334573295e-261 +2.3692095270000002e42 +5.1489343e-269 +1.237e-11 +9.5822318230300006e-132 +1.32160351552845e85 +2.6432070310569e85 +4.5312853482270927e-256 +4.9826393656610003e-244 +3.30470385e84 +6.6094077e84 +4.087153097939e257 +1.2285044911000001e-275 +9.9999999999999996e-39 +1.490263e-46 +7.451315e-47 +5.3e-207 +2.65e-207 +3e-279 +8.7979999999999994e-26 +4.3989999999999997e-26 +6.6616389999999996e-295 +4.3900000000000003e266 +2.377e-250 +2.8529e153 +5.7e299 +7.1326314909199e152 +4.808384222266737e219 +3.427468466344517e-233 +7.4491238999999995e99 +6.2621251400000004e-186 +3.1310625700000002e-186 +1.45024309327629e-108 +1e108 +4.5772600000000003e-138 +2.2886300000000001e-138 +2.3999999999999998e-132 +1.1999999999999999e-132 +5.9999999999999996e-133 +2.9999999999999998e-133 +5.493e265 +6.9556308270000005e-202 +1.398639588197673e-288 +6.993197940988365e-289 +3.4965989704941825e-289 +1.928619179891e-72 +3.5308100000000721e-317 +2.7e29 +3.03e-161 +7.7e220 +2.1141845090763326e-265 +9.6142074591189464e-278 +2.3021678481e-225 +1.15108392405e-225 +9.429733287e-222 +4.1029924180519997e-35 +2.0514962090259999e-35 +1.0257481045129999e-35 +9.9e281 +1.888317e276 +4.1748498301489997e201 +8.3496996602979995e201 +1.603e-37 +2.938219e215 +2.4999999999999998e253 +4.9999999999999997e253 +9.9999999999999994e253 +1.9999999999999999e254 +3.9999999999999997e254 +7.9999999999999995e254 +1.5999999999999999e255 +1.6561849386429999e84 +3.9577527e-215 +1.0255878277300731e111 +5.4117427e-117 +2.6513e85 +8.394493e260 +9.6671342927e-219 +6.73e-31 +4.66026776787283e244 +1.0745883680170001e263 +2.214971807e33 +2.757e-27 +3.680750633081635e68 +7.36150126616327e68 +7.9820500349000005e49 +2.4649460396929198e-275 +1.2324730198464599e-275 +6.1623650992322996e-276 +4.1049850000000003e111 +8.2099700000000005e111 +1.6419940000000001e112 +3.2839880000000002e112 +4.47e151 +4.3e263 +1e-243 +5e-244 +3.0000000000000002e159 +6.99991e-143 +9.4366130000000006e-76 +5.6736677300000004e35 +1.5917807e-155 +1.6458845150946521e-180 +7.0015135819929e-143 +5.1941000000000003e-210 +7.6000000000000005e-308 +5.06955039618593e-67 +4.411964484805e120 +8.82392896961e120 +2.1450000000000001e58 +4.2900000000000003e58 +8.5800000000000006e58 +1.7160000000000001e59 +2.63e113 +9.9999999999999991e-98 +3.0000000000000002e305 +6.0000000000000004e305 +2.4949300000000002e194 +4.9898600000000003e194 +9.9797200000000006e194 +1.9959440000000001e195 +3.770677483333e217 +5.2556722445223e259 +1.7000000000000001e87 +5.6249200289999996e63 +3.8242995299999998e248 +7.6485990599999995e248 +1.5297198119999999e249 +1.6855765160000001e-31 +8.4278825800000005e-32 +4.2139412900000003e-32 +1.1299999999999999e123 +2.2599999999999999e123 +5.25676843902959e259 +1.1e-85 +6.02765921e-279 +1.3945026131e-55 +6.9725130655e-56 +3.88361e133 +3.482974734743573e90 +6.5723307919211e258 +2.6064999999999998e141 +5.2129999999999997e141 +1.0425999999999999e142 +2.0851999999999999e142 +6.7817280930489786e-118 +9.9999999999999995e48 +1.0000000000000001e49 +2.0000000000000002e49 +4.37029e294 +9.0473183532797923e123 +1.1530604149999999e67 +2.3061208299999999e67 +4.6122416599999997e67 +5.4926805190000004e206 +1.0985361038000001e207 +2.1970722076000001e207 +4.3941444152000003e207 +8.398720782239689e-91 +4.208922573647e260 +3.221224408446314e-183 +1.610612204223157e-183 +8.053061021115785e-184 +8.4999999999999994e232 +1.6999999999999999e233 +3.3999999999999998e233 +6.7999999999999996e233 +3.3854390000000002e174 +2.3466965e303 +4.693393e303 +1.1239452380000001e-287 +5.6197261900000004e-288 +2.8162144764793898e63 +4.6096636979e213 +4.6999999999999997e157 +9.3999999999999994e157 +1.910525169715181e-103 +7.7999999999999995e-305 +3.8999999999999997e-305 +2.8690637195000002e153 +5.7381274390000004e153 +1.1476254878000001e154 +2.2952509756000001e154 +4.5905019512000003e154 +3.7000000000000002e-224 +9.015e64 +1.803e65 +9.9999999999999998e194 +3.291646368497e258 +1.5849999999999999e224 +3.1699999999999998e224 +6.3399999999999996e224 +1.2679999999999999e225 +2.5359999999999998e225 +3.70643179e273 +2.49e135 +1.81549e-168 +4.9e-247 +1.2999999999999999e82 +1.14236192370029e241 +4.457384236351825e-259 +9.15e95 +1.83e96 +2.2147346285289999e-26 +5.4542490915872996e88 +8.6339300000000006e263 +1.3418455713710322e-294 +6.7092278568551608e-295 +3.3546139284275804e-295 +1.6773069642137902e-295 +8.386534821068951e-296 +2.2199999884278483e-318 +1.39957863054689e-201 +6.99789315273445e-202 +1.0351e170 +1.687e261 +9.9999999999999996e-303 +3.4481928239260002e-87 +1.7240964119630001e-87 +9.5000000000000006e275 +1.9000000000000001e276 +3.8000000000000002e276 +7.6000000000000005e276 +1.5200000000000001e277 +3.27465004741598e-152 +1.63732502370799e-152 +3.7429905199627508e-252 +2.4217665647e219 +1.3460566693810001e57 +7.1568997729030995e93 +1.4959999999999999e-105 +7.4799999999999995e-106 +3.7399999999999998e-106 +1.8699999999999999e-106 +9.3499999999999994e-107 +3.0538730000000002e-307 +4.7669026595300003e-163 +3.57891140197e93 +2.2081785767000001e-85 +4.2300797719360003e-32 +2.1150398859680001e-32 +1.0575199429840001e-32 +5.2875997149200003e-33 +2.6437998574600002e-33 +1.3218999287300001e-33 +6.6094996436500004e-34 +3.3047498218250002e-34 +1.1971445079912816e-104 +6.21e75 +9.9999999999999991e-157 +3e246 +5.0169968124185e48 +1.0033993624837e49 +1.5147396963063222e218 +1.7e28 +1.524652532496583e-15 +7.6232626624829151e-16 +3.8116313312414576e-16 +1.9058156656207288e-16 +9.5290783281036439e-17 +2.977852753e-18 +4.969942607e76 +1.8099999999999999e-81 +5.28561e113 +1.02010537641e-212 +2.58391e-36 +1.2522074860047521e-303 +6.2610374300237604e-304 +3.1305187150118802e-304 +1.5652593575059401e-304 +7.8262967875297005e-305 +3.9131483937648503e-305 +1.9565741968824251e-305 +4.1792631309999997e-209 +4.0904974569289003e139 +8.1809949138578005e139 +3.5900000000000002e-199 +2.4092469999999998e-191 +3.0184519439188232e159 +1.4536578478700191e125 +1.13077513e64 +9.9999999999999991e-11 +8.2999999999999995e170 +1.829e-109 +1.833154489e242 +1.833455010598301e242 +3.2290000000000002e109 +6.4580000000000004e109 +1.2916000000000001e110 +2.9271768034118998e-108 +7.3359628999999995e242 +1.4671925799999999e243 +4.7000000000000003e98 +2.6065e228 +5.213e228 +2.2753663863839e-23 +1.13768319319195e-23 +3.5144076773792998e295 +3.91e-13 +5.934367e69 +4.095868441e139 +4.9999999999999996e135 +9.9999999999999993e135 +1.9999999999999999e136 +3.9999999999999997e136 +3.2346941408384527e-37 +1.6173470704192264e-37 +7.0000000000000005e236 +6.9541965696739996e-174 +3.4770982848369998e-174 +1.5068094409836911e-46 +6.1000000000000004e277 +2.48479262603431e-275 +8.2400505332787781e52 +1.1362411472699999e269 +2.2724822945399999e269 +2.5284618745999998e-39 +1.2642309372999999e-39 +1.6340308945627727e-65 +3.9e-218 +7.833839e-159 +7.303565884e-314 +5.7000000000000004e-170 +2.6980477661e203 +1.1526293597e300 +1.45307849e-226 +4.913e45 +4.463716408475e179 +8.92743281695e179 +1.78548656339e180 +1.5791e106 +1.9911000000000001e223 +1.9911997570000001e223 +9.999999999999999e281 +8.8527164899999994e61 +8.5798099999999994e-206 +5.5150250832369977e-145 +6.1431979389999996e44 +6.1167533492399996e-15 +3.0583766746199998e-15 +1.5291883373099999e-15 +7.6459416865499995e-16 +9.2934375449360006e-79 +4.6467187724680003e-79 +2.3233593862340001e-79 +1.1616796931170001e-79 +5.8083984655850004e-80 +1.3094900677112001e-210 +6.5474503385560004e-211 +3.2737251692780002e-211 +1.6368625846390001e-211 +2.2399999999999999e-259 +1.1199999999999999e-259 +5.5999999999999996e-260 +2.7999999999999998e-260 +1.3999999999999999e-260 +6.9999999999999995e-261 +3.4999999999999998e-261 +1.7499999999999999e-261 +8.1589999999999995e226 +6.9692900002366238e-320 +6.4022467000000004e283 +1.3e169 +1.0201451125412743e226 +2.717361052126856e-322 +7.0950103755143995e-84 +3.5475051877571998e-84 +1.7737525938785999e-84 +8.8687629693929994e-85 +4.4343814846964997e-85 +9.804138622583063e-160 +1.2230000000000001e132 +9.6378027806730006e247 +3.9050270537318187e-218 +9.7536019999999994e-73 +4.8768009999999997e-73 +1.5190192104000001e-279 +7.5950960520000005e-280 +3.7975480260000002e-280 +1.8987740130000001e-280 +9.4938700650000006e-281 +1.399803664749e-114 +9.9999999999999991e-216 +6.09193e72 +1.763883090815e149 +3.52776618163e149 +4.38127604272817e-262 +1.8981116973263001e-134 +1.7100471450087999e-118 +8.5502357250439994e-119 +4.2751178625219997e-119 +2.1375589312609999e-119 +1.0687794656304999e-119 +9.40189e-107 +4.700945e-107 +6.447691e196 +5.8572092384763e-313 +5.4729999999999996e-117 +8.8514769999999994e-290 +1.6579000000000001e258 +2.23e-26 +9.9999999999999996e-70 +4.7284634938219003e-194 +3.485381419e-28 +4.593347e-110 +1.7638059129976901e295 +3.5276118259953802e295 +4.59354857107739e-110 +1.5053e-105 +6.7e230 +2.4695014899999998e-247 +1.8865287150501286e245 +3.7730574301002572e245 +7.5461148602005145e245 +1.5092229720401029e246 +3.0184459440802058e246 +6.0368918881604116e246 +4.610604843090533e95 +4.6206399999999997e-197 +2.3103199999999999e-197 +1.1551599999999999e-197 +5.7757999999999996e-198 +2.8878999999999998e-198 +1.15400071e-51 +7.7527e-190 +9.9999999999999998e76 +4.81e188 +5.4800000000000004e-117 +2.7400000000000002e-117 +1.3700000000000001e-117 +5.0170000000000003e281 +4.1099999999999997e285 +2.4738272096427098e250 +4.9476544192854197e250 +9.8953088385708394e250 +8.855301144911417e-144 +2.468676788523417e-101 +3.5273912934356928e-202 +1.57e134 +1.5955333487651707e-127 +1.5854020093000001e106 +3.1708040186000002e106 +3.2997e-152 +3.6717e183 +2.33462379e-225 +8.0747812999999995e195 +1.8400000000000001e-109 +9.2000000000000006e-110 +4.6000000000000003e-110 +2.3000000000000001e-110 +9.3000000000000006e-284 +4.4496402381e-85 +4.0169472794003966e282 +8.0338945588007931e282 +1.6067789117601586e283 +9.9999999999999992e222 +1.9999999999999998e223 +7.3792275038159e242 +3.0000000000000002e-18 +1.1545e95 +2.309e95 +1.2329999999999999e191 +1.3e110 +1.1e235 +1.1094858315225573e-290 +2.2920048184880001e-169 +1.1460024092440001e-169 +5.7300120462200004e-170 +2.8650060231100002e-170 +1.4325030115550001e-170 +2.11e142 +7.9110957e-100 +2.0077999999999999e-215 +1.0038999999999999e-215 +4.934219e191 +1.0415176357174667e-35 +5.2075881785873335e-36 +1.4055524146000001e-114 +7.0277620730000005e-115 +1.53888820057e-161 +1.785926199930045e267 +3.57185239986009e267 +9.9999999999999997e-275 +1.0000000000000001e-274 +2.2039738095510001e89 +2.9999999999999998e128 +7.41111169e-196 +3.705555845e-196 +2.1973942613650793e-116 +1.0986971306825397e-116 +5.4934856534126984e-117 +2.7467428267063492e-117 +1.3733714133531746e-117 +2.915e212 +5.83e212 +2.297107825643e-315 +1.168633994259741e-79 +3.2402369146794528e50 +2.5864965114061238e-300 +1.2932482557030619e-300 +6.4662412785153096e-301 +4.6800000000000003e-225 +2.3400000000000001e-225 +1.1700000000000001e-225 +1.96096891e-72 +9.80484455e-73 +2.3335095700000001e213 +4.6670191400000003e213 +9.3340382800000006e213 +1.9999999999999999e-128 +9.9999999999999993e-129 +1.0044208998980471e-69 +1.7e56 +3.530905e90 +7.06181e90 +7.3730000000000005e37 +1.823701e211 +3.7030000000000002e96 +6.1726010918087323e-307 +1.04352332526013e-35 +2.5560501416882998e166 +1.6446999999999999e81 +2.7655027e-204 +1.38275135e-204 +4.17931e-181 +2.089655e-181 +1.0018556849502801e-274 +5.0092784247514003e-275 +2.5046392123757002e-275 +3.3189667899999998e199 +1.1867619999999999e-48 +5.9338099999999996e-49 +2.1542652198798101e232 +1e18 +8.939549e-231 +3.9793099999999997e105 +7.9586199999999995e105 +9.0000000000000005e179 +1.1153093000000001e61 +1.3e-95 +4.98588818795661e-188 +2.492944093978305e-188 +6.4938012909370004e50 +1.0324175950773e285 +7.094836097839e295 +1.3797907374899999e234 +1.6521e286 +4.10343749e-125 +2.44871e-278 +6.9226735318118004e-205 +3.4613367659059002e-205 +2.5e163 +5e163 +1e164 +1.36547123e-235 +5.2998100000000003e-05 +2.9999999999999998e-77 +2.029e195 +1.9184639837191752e71 +3.4150169899602702e-236 +3.675123298379e124 +7.51e-224 +9.93945244056201e-247 +4.969726220281005e-247 +2.81e-173 +3.3001412325920002e-65 +1.6500706162960001e-65 +8.2503530814800005e-66 +4.1251765407400003e-66 +2.0625882703700001e-66 +1.0312941351850001e-66 +6.3226123031280186e-12 +4.1e167 +4.6109999999999542e-315 +1.8687e-137 +3.2038458064999998e165 +6.4076916129999996e165 +1.2815383225999999e166 +2.5630766451999998e166 +5.1261532903999997e166 +3.0000000000000002e69 +1.5264003181000001e305 +1.5832126484678999e-158 +3.023e-310 +3.3678715952311798e-121 +1.6839357976155899e-121 +5.0299250951432871e222 +4.8588239960000003e-250 +2.4294119980000002e-250 +1.2147059990000001e-250 +2.0847373962059999e-94 +1.0423686981029999e-94 +6.8834814100000004e174 +7.4476200000000005e-196 +3.7238100000000002e-196 +1.2402818961267429e191 +5.0199999999999997e-129 +2.5099999999999998e-129 +1.5521582359555398e44 +8.37e111 +4.7220000000000003e-166 +2.3610000000000002e-166 +2.4337404938891e247 +1e-187 +5.6974654846618896e150 +1.1394930969323779e151 +1.5626740463e-189 +2.8924754832999998e35 +1.2653927866100001e135 +2.5307855732200002e135 +3.31e-211 +1.655e-211 +8.275e-212 +1.9e-252 +9.5e-253 +4.75e-253 +9.0506231831232005e-113 +8.1000000000000005e136 +1.9626687286278599e-131 +9.8133436431392994e-132 +2.191e-234 +2.02749209e-10 +1.013746045e-10 +9.2202078476720006e-23 +4.6101039238360003e-23 +2.3050519619180001e-23 +1.1525259809590001e-23 +5.7626299047950004e-24 +2.2414616613999999e-85 +1.1207308306999999e-85 +9.721e-104 +1.4222358534233999e-201 +7.1111792671169995e-202 +3.555836010504161e-202 +1.7779180052520805e-202 +4.1e-184 +1.26631081e135 +9.9999999999999988e-42 +1e-41 +5e-42 +1.6472371967e-124 +9.6820778319679e-163 +2.7637686214497277e-117 +1.1308900000000001e33 +4.5729785377846147e-141 +2.4184654983441002e-17 +4.713898551e272 +6.7560948075171704e-267 +1.1886195200000001e-253 +5.9430976000000004e-254 +2.9715488000000002e-254 +1.4857744000000001e-254 +7.4288720000000005e-255 +3.7144360000000002e-255 +1.8572180000000001e-255 +9.2860900000000006e-256 +4.6430450000000003e-256 +2.3215225000000001e-256 +1.1607612500000001e-256 +4.3386873330000003e-60 +1.3e-154 +4.5494898651310003e-54 +3.4746153538999998e-205 +7.807881841e102 +5.11167e253 +1.945691429e-103 +9.728457145e-104 +3.1369999999999998e162 +9.4501776000000006e-20 +4.7250888000000003e-20 +2.3625444000000002e-20 +1.1812722000000001e-20 +5.9063610000000004e-21 +2.9531805000000002e-21 +9.9207502800000006e-160 +4.9603751400000003e-160 +2.4801875700000002e-160 +9.7e-309 +1.5946999999999999e-99 +7.0515191497e-174 +9.9999999999999994e104 +1.9999999999999999e105 +3.9999999999999998e105 +7.9999999999999995e105 +1.5999999999999999e106 +1.411792582991362e-319 +5.19827e-08 +2.599135e-08 +3.4999999999999998e205 +6.9999999999999996e205 +1.3999999999999999e206 +2.7999999999999998e206 +5.5999999999999996e206 +1.7292356014100001e-118 +2.01326638529997e-128 +1.660192005173e286 +9e266 +1.8410000000000001e-227 +9.789447410524831e-191 +4.8947237052624155e-191 +2.4473618526312077e-191 +1.2236809263156039e-191 +7.10080259e236 +5.3191507369409e141 +8.2927099999999995e-212 +5.4999999999999996e116 +1.0999999999999999e117 +2.1999999999999999e117 +4.3999999999999997e117 +8.7999999999999994e117 +2.3320000000000001e-51 +1.1660000000000001e-51 +5.8300000000000004e-52 +1.7733423083e-261 +1.3900000000000001e-58 +2.3934638219e303 +1.111e89 +1.888317e273 +1.9993497331510231e251 +3.9986994663020463e251 +3.1513463000000002e-276 +9.0835039e-259 +1e251 +2.0000000000000001e251 +2.3482197901e-284 +7.23601973826e-317 +1.449e181 +7.2844871414247902e93 +1.456897428284958e94 +1.7689613814909999e177 +6.24373777953753e-248 +6.2311359073827e44 +7.3650979106613e-81 +3.68254895533065e-81 +3.109343e-307 +1.334086505845487e-151 +6.670432529227435e-152 +9.9088779079000006e278 +3.81790064590225e245 +7.6358012918045e245 +1.5271602583609e246 +1.13164253983e-318 +1.776209e-261 +9.9999999999999996e-247 +2.0000000000000002e-246 +1.0000000000000001e-246 +4.7478650832159e-312 +2.37393254160795e-312 +1.74998078512937e-146 +1.0419999999999999e-07 +5.2099999999999997e-08 +2.0999999999999999e257 +1.6458845150946521e-183 +1.55814745255489e190 +1.8795434135969e-137 +9.3977170679845e-138 +1.8299999999999999e298 +5.7000000000000004e91 +1.1400000000000001e92 +9.4913555019999994e-166 +4.7456777509999997e-166 +1.81819263447e-112 +1.4438627972043551e268 +3.25482258452063e137 +2.93224160345e153 +5.8644832069e153 +1.5639454056225999e-248 +7.8197270281129995e-249 +4.318076063610996e-178 +1e-100 +1.1320050705337381e-172 +5.6600253526686904e-173 +2.6756713732167849e-297 +1.3339772437713657e-322 +1.004457e-41 +1.178281170492483e213 +1.74823e146 +6.4846278999999996e78 +1.9043283e186 +1.4512000000021286e-316 +1.7414873673717865e87 +3.482974734743573e87 +7.2181154167509e-230 +1.5203498805349712e-164 +7.6017494026748561e-165 +3.8008747013374281e-165 +6.7024937632999996e199 +5e45 +9.9999999999999999e45 +5.0980203373e-11 +2.54901016865e-11 +1.274505084325e-11 +4.3e-91 +2.15e-91 +1.075e-91 +5.375e-92 +2.80589339e-145 +1.402946695e-145 +1.36420013e-207 +8.6198535899999995e260 +1.7239707179999999e261 +3.4479414359999998e261 +1.37618747613701e-89 +2.93e-198 +1.9e-19 +3.7511079999999998e-196 +1.8755539999999999e-196 +9.3777699999999994e-197 +2.94647060261759e-285 +4.448041422663e-116 +4.75549444231e-166 +3.71913073397e-314 +1.3372189417999999e-05 +6.6860947089999996e-06 +2.47497918407e219 +1.26991737091e-70 +6.6799479109e140 +6.9519860404827656e-118 +3.4759930202413828e-118 +4.1e49 +9.9999999999999991e191 +1.50791161e-136 +2.8390000141329709e-319 +1.5592160000000001e-161 +7.7960800000000005e-162 +3.8980400000000002e-162 +1.9490200000000001e-162 +9.7451000000000006e-163 +4.8725500000000003e-163 +3e-49 +1.5e-49 +7.5e-50 +6.49177e224 +2.6737890000000002e141 +4.018987431738901e251 +2.437e-163 +1.3810000000000001e262 +7.3983670060394843e-81 +3.6991835030197422e-81 +1.8495917515098711e-81 +9.2479587575493554e-82 +4.6239793787746777e-82 +2.3119896893873389e-82 +1.1559948446936694e-82 +5.7799742234683471e-83 +4.1565242430000003e226 +6.2608999999999996e44 +1.806482563e-84 +9.032412815e-85 +5.229646999e-08 +3.401801546253797e-267 +6.3786329999999996e134 +1.572577e103 +5.39817753047e259 +1.97e-190 +1e-305 +5e-306 +6.08464055377817e128 +2.9999999999999998e97 +5.9607053925344e-313 +1.5096591872000001e-136 +7.5482959360000005e-137 +3.7741479680000002e-137 +1.8870739840000001e-137 +9.4353699200000006e-138 +4.7176849600000003e-138 +2.3588424800000001e-138 +1.1794212400000001e-138 +5.8971062000000004e-139 +2.9485531000000002e-139 +1.4742765500000001e-139 +7.3713827500000005e-140 +3.6856913750000002e-140 +1.8428456875000001e-140 +0.00085745700000000005 +6.67e-65 +5.3019586947674933e169 +1.1e-293 +2.496043e-14 +7.5045571e96 +3.32183133e-124 +7.8099999999999995e-162 +7.42522891517e270 +1.1906295942352541e-20 +5.9531479711762704e-21 +1.1185387045175729e89 +2.2370774090351459e89 +3.2982852999999998e255 +6.5965705999999996e255 +1.3193141199999999e256 +9.9999999999999999e-160 +3.0000000000000002e243 +2.8365461299999998e119 +1.8449074805299999e-140 +1.0070000000000001e251 +6.7948999999999996e171 +5.5129999999999997e203 +1.8718812150007869e-109 +1.8843616686552999e301 +6.9e56 +3.764757e-196 +2.82954317713643e-86 +1.414771588568215e-86 +3.63761766066083e-25 +2.727775675001761e-266 +1.3638878375008805e-266 +6.8194391875044024e-267 +3.4097195937522012e-267 +1.7048597968761006e-267 +1e-13 +4.2397459999999997e-181 +2.1198729999999999e-181 +2.0792705732900001e-125 +2.6878337139999998e-151 +1.3439168569999999e-151 +1.7150063277506396e289 +3.4300126555012792e289 +6.8600253110025584e289 +1.3720050622005117e290 +1.3e-126 +3.8911200000000002e-75 +1.9455600000000001e-75 +9.7278000000000006e-76 +4.8639000000000003e-76 +2.4319500000000002e-76 +2.1509066976048779e-150 +1.0754533488024389e-150 +8.17e-215 +3.6441748536977e-171 +1.82208742684885e-171 +1.4297310000000001e-114 +6.6867042175411e-65 +1.4299999999999999e-114 +2.399158747115963e-107 +1.1995793735579815e-107 +5.9978968677899076e-108 +2.9989484338949538e-108 +1.4994742169474769e-108 +7.4973710847373845e-109 +4.1666526974779e-271 +1e133 +5.7899999999999996e209 +1.1579999999999999e210 +2.3159999999999999e210 +1.22207e-17 +6.17e-46 +3.085e-46 +6.9999999999999996e233 +5.193069301e166 +3.60380911e149 +7.7974497421209995e-221 +4.3285113192193069e-237 +2.1642556596096534e-237 +1.47e94 +3.1804154813230998e-276 +8.2486200000000005e-97 +4.1243100000000003e-97 +7.51e-255 +2.6169537660399998e-213 +1.3084768830199999e-213 +6.5423844150999996e-214 +1.2642309373e-42 +3.9466567537e102 +7.7105930000000005e99 +8.7574814749000006e232 +1.7514962949800001e233 +7.1585571441798866e-115 +4.9999999999999997e278 +9.9999999999999993e278 +1.9999999999999999e279 +3.9999999999999997e279 +1.0098188492939389e251 +1.173002704604941e-110 +5.865013523024705e-111 +6.83527528250121e-267 +2.5606087423300002e281 +2.0999999999999999e139 +1.1532999999999999e297 +2.3065999999999999e297 +4.6131999999999997e297 +9.2263999999999994e297 +5.53e203 +3.361067023e140 +1.687877e199 +9.51186510655e67 +1.90237302131e68 +2.3149065285204701e-141 +1.2361603961e-45 +2.2292022799999999e-175 +1.1146011399999999e-175 +5.5730056999999996e-176 +1.3709999999999999e85 +1.1943583029999999e126 +2.3887166059999998e126 +1.43e178 +5.219e-272 +2.4809899999999998e160 +5.28244862643e51 +1.8869257000000001e-50 +1e-218 +2.2987101160550001e238 +4.5974202321100003e238 +9.1948404642200006e238 +1.8389680928440001e239 +2.63311e-154 +9.6314643229e-253 +8.4004735299999995e285 +2.8770000000000002e91 +7.824537704634593e276 +1.8632721600000001e-227 +9.3163608000000006e-228 +4.6581804000000003e-228 +2.3290902000000001e-228 +1.1645451000000001e-228 +5.8227255000000004e-229 +4.5887169999999997e-113 +1.0999999999999999e-206 +1.7095703652100001e-121 +2.5179801877565e191 +5.035960375513e191 +1.700879663e-34 +9.2109e92 +8.172858675491274e223 +1.6345717350982548e224 +3.2691434701965096e224 +6.5382869403930192e224 +1.3076573880786038e225 +1.008441440481113e46 +2.9283749084555857e-316 +1.4641874542277928e-316 +1.6522999999999999e50 +3.3045999999999998e50 +3.487538640234651e-177 +1.7437693201173255e-177 +4.1799999999999997e-271 +2.0899999999999999e-271 +4.1178239299010003e-156 +1.5079457970586296e243 +9.9999999999999997e-73 +2.9999999999904554e-313 +5.3235424869999997e-182 +4.916e-309 +6.105783601393e-77 +5.553274272288559e-89 +2.7766371361442795e-89 +2.28930257657e-318 +3.3139999999999998e-242 +1.6569999999999999e-242 +1.032432358925e195 +2.06486471785e195 +4.1297294357e195 +4.812803938347e39 +5.0033456933e-73 +4.7975488618422821e-166 +8.1720304450352775e-274 +1.7856322459999999e-28 +8.9281612299999994e-29 +1.870475267e124 +4.0644482259506321e-187 +2.0322241129753161e-187 +1.016112056487658e-187 +5.0805602824382902e-188 +9.9999999999999995e73 +1.0000000000000001e74 +2.0000000000000002e74 +4.9893896646453614e-278 +7.3956218999999995e-199 +1.0110079e-100 +1.1128441026453999e-234 +5.5642205132269997e-235 +1.39276427e262 +1.7899998348828362e-320 +4.6091987714620631e238 +2.7621e144 +1.2426593336908999e306 +1.3899999999999999e-89 +1.98187154349e102 +1.6968949033841769e-93 +2.79e116 +5.16276248891e-303 +5e219 +1e220 +1.4332350320208721e-319 +1.5241274282369257e-282 +7.6206371411846283e-283 +3.8103185705923141e-283 +4.057593087371e251 +2.2965587454427001e179 +7.67313521875e127 +1.53462704375e128 +3.0692540875e128 +6.138508175e128 +1.227701635e129 +2.45540327e129 +1.7e-239 +8.5e-240 +9e-262 +7.58411e-196 +1.9840073351500001e102 +3.9680146703000002e102 +7.9360293406000005e102 +1.5872058681200001e103 +3.1744117362400002e103 +3.917e-75 +1.0596100000000001e198 +8.0068877000000005e220 +1.872485085187566e270 +4.1e223 +1.886650552102143e-109 +9.9999999999999997e-278 +1.9342977715843301e-252 +1.9406917e-47 +9.7034585e-48 +2.9999999999999998e125 +4.31955197927293e288 +2.111393e139 +6.299e-15 +6.019999999999951e-313 +1.6460744000000001e-214 +8.2303720000000005e-215 +4.1151860000000003e-215 +2.0575930000000001e-215 +1.0287965000000001e-215 +2.76531e290 +8.33099114291e108 +2.7622642863580998e-207 +6.4316221399999996e-217 +3.2158110699999998e-217 +1.8381159000000235e-317 +9.142411051514033e-231 +9.9999999999999999e-132 +2.4153563033e39 +3.3340896090000002e109 +6.6681792180000004e109 +3.6267699999999998e295 +3e271 +6.205800228327e246 +1.2016279761784445e126 +3.7996747700000002e-196 +1.9859546999999999e248 +8.8103100000000006e-265 +5.39545497529e-64 +2.697727487645e-64 +3.144069598066423e-220 +5.9523692325994117e153 +1.1040999999999999e86 +3.8721e-106 +1.502974418081711e125 +3.548822798913e146 +2.0369668325759501e105 +4.0739336651519003e105 +8.1478673303038005e105 +1.6295734660607601e106 +5.43877939703e200 +1.1732364424758669e269 +6.5197187499450004e106 +1.3039437499890001e107 +2.6078874999780002e107 +5.2157749999560003e107 +8.9523610586444531e263 +3.803338491107e-196 +1.2356e-309 +1.0999999999999999e27 +2.1999999999999999e27 +4.3999999999999997e27 +6.5921419599999996e-68 +3.2960709799999998e-68 +1.6480354899999999e-68 +8.2401774499999995e-69 +3.001260605081e-226 +8.8401e86 +9.2092453001e-318 +2.9e-55 +5.9017686099999996e181 +2.9100000000000002e150 +4.7571299999999997e-197 +1e161 +2.0769999999999999e195 +4.1539999999999997e195 +7.959e248 +1.485731481520359e-52 +7.428657407601795e-53 +2.4291859907258027e244 +1.7e-298 +8.5e-299 +1.3211493439212009e-213 +1.012521021973e-159 +1.04929463e167 +3.99e-44 +1.2455849999999999e101 +2.4911699999999998e101 +4.9823399999999997e101 +9.9646799999999994e101 +1.9929359999999999e102 +1.3623e200 +7.8018299999999995e-193 +3.49492477e-90 +1.4900000000000001e299 +2.9800000000000002e299 +9.9999999999999999e306 +1.4552494999999999e296 +2.9104989999999998e296 +5.8209979999999996e296 +1.1641995999999999e297 +2.3283991999999999e297 +1.9829999999999999e189 +4.056492728413e-305 +2.0282463642065e-305 +8.0527976643809005e74 +1.6105595328761801e75 +3.2211190657523602e75 +6.4422381315047204e75 +1.2884476263009441e76 +1.403e116 +8.5353000000000005e-94 +3e66 +1.8470000000000001e180 +8.131755775e46 +1.626351155e47 +3.25270231e47 +4.8006550108487e67 +8.7134837e-296 +9.31723e297 +7.32661e62 +3.94169e-221 +1.6588000000000001e-09 +8.2940000000000005e-10 +4.1470000000000003e-10 +3.1606999999999998e131 +6.3213999999999996e131 +1.0978572927111e-32 +8.9364737e204 +2.21e-265 +4.63e-113 +2.315e-113 +8.3236910571019005e195 +4.7321829215877464e182 +4.5767977781699997e207 +1.5776179571464842e-220 +1e-190 +3.3699999999999998e-124 +4.3283016798864633e83 +1.2053549000000001e272 +1.6109073807516569e221 +3.2218147615033139e221 +3.8160879712600002e-196 +1.9080439856300001e-196 +8.6965881247e142 +7.93501023296701e-308 +3.967505116483505e-308 +3.285824367459e165 +2.84381e-204 +9.3000000000000006e92 +1.8600000000000001e93 +3.3869698951946342e-65 +1.6934849475973171e-65 +2.2126258423952799e-265 +1.1063129211976399e-265 +5.5315646059881997e-266 +2.7657823029940998e-266 +1.3828911514970499e-266 +7.111179267117e-205 +3.7810370612103198e-168 +1.8905185306051599e-168 +9.4525926530257994e-169 +4.7262963265128997e-169 +2.3631481632564499e-169 +4.37831e-91 +2.2440435810000001e-234 +1.6224811533373319e-12 +1.5207900000000001e-254 +9.9999999999999995e-45 +2.0000000000000002e-44 +1.0000000000000001e-44 +1.7365547000000001e-208 +4.4126905156455697e173 +7e56 +4.3e-181 +3e-285 +7.5421e270 +4.119300928909661e-128 +2.0596504644548305e-128 +4.1956767245693e-38 +1.975013423993787e-221 +1.2695177633273437e-160 +8.1000000000000005e279 +2.8192065230809998e-176 +5.567e290 +5.1677000000000003e76 +1.0335400000000001e77 +2.0670800000000001e77 +4.6999999999999997e64 +9.3999999999999994e64 +1.0826486009999999e229 +1.215e39 +2.43e39 +1.132748720169297e-116 +2.3e-231 +1.4069999999999999e116 +2.8139999999999998e116 +2.6776554513869136e-241 +1.3388277256934568e-241 +1.31896297e-126 +2.74555e259 +5.4911e259 +1.6811568259661473e-183 +8.4057841298307363e-184 +4.2028920649153682e-184 +1.0923e-296 +9.9999999999999998e101 +1.3408200157000001e256 +5.999e-139 +5.363582516829649e256 +2.425680618637e-312 +1.2128403093185e-312 +2.6189999999999998e253 +1.0924513555835601e-296 +5.4622567779178003e-297 +2.7311283889589002e-297 +1.3655641944794501e-297 +1.01e74 +2.965155012616129e181 +6.9413289999999996e84 +7.8655355731413995e-134 +3.9327677865706998e-134 +3.8493e214 +3.62756101980889e-115 +7.3426999999999995e208 +2.307e120 +1.4939999999999999e-198 +7.4699999999999995e-199 +3.479e-208 +1.7395e-208 +1.7929999999999999e205 +1.4977097436999999e153 +4.243e-66 +1.0505373967420691e-38 +4.8970427639155297e-194 +1.15766003674e-318 +2.0106790487100001e161 +4.0213580974200002e161 +1.4210570000000001e234 +9.9999999999999992e247 +1.9999999999999998e248 +2.3482197901e-287 +1.23e-135 +6.15e-136 +3.3630105156000002e-37 +1.6815052578000001e-37 +8.4075262890000005e-38 +1.5410549310956758e215 +3.0821098621913516e215 +1.4474641226211e-319 +2.6475756700000002e225 +5.2951513400000003e225 +4.413e-178 +2.225709e-60 +2.939683225e209 +5.87936645e209 +1.17587329e210 +6.49268085848367e280 +3.7630349291000002e211 +9.2366917360940004e120 +1.3e135 +6.2389e-105 +1.223908693364976e-48 +6.1e-254 +2.2578800014944967e-321 +4.09e-100 +1.7643188407681327e-31 +3.4874068209e289 +2.570736267e-188 +8.21e105 +3.9999999999999997e-249 +1.9999999999999999e-249 +9.9999999999999993e-250 +4.9999999999999996e-250 +7.2999999999999995e-56 +1.6706519999999999e-301 +8.3532599999999995e-302 +4.1766299999999997e-302 +3.1602397543e218 +1.5989e-102 +7.9945e-103 +8.7524398207600005e-150 +4.3762199103800003e-150 +2.1881099551900001e-150 +1.0940549775950001e-150 +7.5352051e211 +1.297265187347e-70 +8.0214610069999995e102 +1.59218762369339e-161 +7.96093811846695e-162 +6.1007900000000004e-108 +4.907e-194 +2.4535e-194 +3.8299999999999998e-50 +3.3189495376769128e78 +6.6378990753538256e78 +2.049827e-246 +2.1015593325958569e254 +6.18906687e-77 +2.89767e-173 +1.448835e-173 +7.244175e-174 +9.9999999999999996e-104 +2.0000000000000002e-103 +1.0000000000000001e-103 +2.3842490910899999e-110 +3.0000000000000002e299 +6.40702561e-248 +2.021877169e-277 +3.1154631403e-310 +9.4989805599999994e-169 +4.7494902799999997e-169 +2.3747451399999999e-169 +1.1873725699999999e-169 +5.9368628499999996e-170 +3.8200589993427e-255 +5.1e-160 +1.5102751467000001e66 +3.0205502934000002e66 +6.0411005868000004e66 +2.0651373889999999e164 +7.369e208 +1.0653433845748884e-212 +5.13e-247 +3.8104999999999998e183 +7.6209999999999995e183 +1.5241999999999999e184 +3.0483999999999998e184 +6.0967999999999996e184 +1.2193599999999999e185 +9.9999999999999989e42 +1e43 +3.6299002999956384e-320 +9e204 +1.259865190569e306 +1.701997811e81 +5.33e-213 +1.2999999689907e-70 +3.7999999999999998e-22 +1.8999999999999999e-22 +4.938077031710813e-135 +4.40500427111e-91 +2.202502135555e-91 +1.627e-217 +8.135e-218 +8.98356667379477e-147 +3.8299999999999998e242 +5.213167e281 +3.12407640896347e187 +2.3e-144 +1.15e-144 +5.75e-145 +3.6604000000000002e-56 +1.8302000000000001e-56 +9.1510000000000006e-57 +4.0343413702758998e307 +8.0686827405517995e307 +1.6137365481103599e308 +4.1e46 +8.01627e-103 +1e189 +2.8300000000000002e116 +2.431e126 +3.6896291e208 +1.7499999999999999e289 +3.4999999999999998e289 +6.9999999999999996e289 +1.3999999999999999e290 +2.7999999999999998e290 +5.5999999999999997e290 +1.1199999999999999e291 +2.2399999999999999e291 +4.4799999999999997e291 +6.2303169290247215e-18 +6.21e-223 +6.49177e221 +5.2160099999999997e281 +1.1e201 +5.01289e-104 +4.688940126441e-54 +3.11e274 +7.65765469e-255 +6.973315969654567e230 +8.0228010000000005e-103 +4.5072812455233133e204 +2.0058091e-103 +6.121259775417e-108 +5.015067e-104 +7.57090229441e65 +1.160297e120 +5.0373919047359e-45 +4.5182978678699997e-88 +2.8638816370999998e-58 +9.9999999999999991e-309 +4.9999999999999995e-309 +6.6398313885010004e-127 +8.1589000000000005e279 +1.6317800000000001e280 +5.840659969e-114 +5.41057999830197e-36 +1.254311e-104 +7.0469474989999996e202 +1.4093894997999999e203 +2.8187789995999998e203 +5.6375579991999997e203 +1.8000000000000001e-146 +9.0000000000000006e-147 +1.7468756490541955e84 +3.0013102321868155e94 +3.7237707377971711e-171 +2.73954573877e287 +8.9285769802757e-265 +2.83299e262 +4.8202729999999997e300 +1.2378855819600001e-135 +6.1894279098000004e-136 +3.0947139549000002e-136 +1.9302252275610001e155 +9.9999999999999995e-163 +2.0000000000000002e-162 +1.0000000000000001e-162 +1.2289256910418671e244 +3.444537357e199 +6.4226899999999996e44 +1.2845379999999999e45 +8.3462537053200005e-69 +4.1731268526600003e-69 +2.0865634263300001e-69 +1.4842729022229999e-229 +2.00951e-103 +4.69e238 +1.3503037652884799e-241 +6.7515188264423996e-242 +3.3757594132211998e-242 +1.6878797066105999e-242 +8.4393985330529995e-243 +9.0433954210730006e58 +2.2655660662870001e-234 +5.5200070000000003e54 +1.1040014000000001e55 +1.57061e-105 +5.0805326321883049e-278 +3.5407592365788687e-236 +8.0341375308088235e43 +1.6068275061617647e44 +1.6996277906157099e168 +3.3992555812314198e168 +9.9999999999999998e-17 +8.1921e-13 +2.1312530000000001e-271 +8.8439532113775841e-91 +4.2355118244611541e-38 +2.117755912230577e-38 +8.723e-122 +1.165789907896808e-172 +5.1e-73 +2.55e-73 +1.275e-73 +6.375e-74 +2.0401273221462511e-72 +3.92511284211e40 +1.4390000000000001e293 +1.660923991728991e165 +1.180231373881593e151 +1.9006367e-81 +4.43e-237 +1.4362360799103999e-58 +7.1811803995519996e-59 +3.5905901997759998e-59 +1.7952950998879999e-59 +8.9764754994399994e-60 +4.4882377497199997e-60 +2.2441188748599999e-60 +1.1220594374299999e-60 +5.6102971871499997e-61 +2.8051485935749998e-61 +2.86661296745e234 +5.7332259349e234 +1.0000000000000001e130 +2.0000000000000001e130 +4.0000000000000002e130 +8.0000000000000005e130 +1.6000000000000001e131 +6.1631505849999996e97 +1.2326301169999999e98 +2.4652602339999998e98 +4.9305204679999997e98 +9.6620603900999994e300 +3.0882399999999998e-195 +1.5441199999999999e-195 +7.7205999999999995e-196 +3.8602999999999998e-196 +1.9301499999999999e-196 +1.3366108590991502e79 +3.73e-25 +1.865e-25 +5.3869276856694003e-300 +2.6934638428347002e-300 +3.91957609750457e-311 +1.959788048752285e-311 +9.798940243761425e-312 +4.1863600646113103e-215 +5.3299999999999997e-126 +1.2002326461000001e-110 +1.1000000000000001e142 +2.2000000000000001e142 +4.515149611712177e-147 +5.559740461e-33 +2.7798702305e-33 +5.96381266151e122 +1.9395013000000001e-137 +4.33e-240 +2.9e60 +1.0448640001794299e77 +3.7001099999999998e-143 +4.5517946931553697e117 +9.1035893863107394e117 +1.0000000000000001e276 +2.0000000000000001e276 +4.0000000000000002e276 +2.0199451e248 +4.1056733e-13 +1.4018038218500001e231 +2.8036076437000002e231 +5.6072152874000003e231 +1.1214430574800001e232 +2.2428861149600001e232 +1.8873669800000001e-199 +9.4368349000000006e-200 +1.1226269999999999e86 +1.3000000000000001e163 +2.6000000000000002e163 +5.2000000000000003e163 +4.53476843e58 +2.0402970000000001e220 +4.0805940000000003e220 +9.50107866770267e210 +3.703595974996685e-143 +1.8517979874983425e-143 +9.2589899374917126e-144 +4.6294949687458563e-144 +2.3147474843729281e-144 +1.1573737421864641e-144 +5.7868687109323204e-145 +2.8934343554661602e-145 +1.4467171777330801e-145 +7.2335858886654004e-146 +3.6167929443327002e-146 +1.8083964721663501e-146 +9.0419823608317506e-147 +4.5209911804158753e-147 +2.2604955902079376e-147 +4.1254433243235e46 +8.250886648647e46 +1.3118221073043328e281 +1.3403360000000001e-67 +6.7016800000000004e-68 +3.3508400000000002e-68 +1.6754200000000001e-68 +8.3771000000000005e-69 +2.4512434000000002e-166 +1.2256217000000001e-166 +2.0498644041299999e279 +5.36728818211e-213 +1.8483660210499999e149 +3.6967320420999998e149 +7.3934640841999995e149 +1.4786928168399999e150 +5.98506105036593e-170 +2.8387e-89 +4.4694811564889997e173 +8.9389623129779995e173 +1.7877924625955999e174 +3.5755849251911998e174 +7.1511698503823996e174 +9.2717421122999994e-290 +9.9999999999999989e-222 +1e-221 +1.28155099e278 +5.929e-142 +1.04649551e77 +7.8739299999999995e40 +7.8999999999999995e245 +1.5799999999999999e246 +9e-60 +2.4957057384170002e70 +9.4074481877199994e-259 +4.7037240938599997e-259 +2.3518620469299999e-259 +1.5052631852253507e-257 +9.8980439871403045e-48 +5.3845000000000003e138 +1.0769000000000001e139 +2.1538000000000001e139 +4.3076000000000003e139 +8.6152000000000005e139 +4.27947022109301e-271 +1.7930761999999999e-118 +8.9653809999999994e-119 +1.4406859999999999e-58 +7.2034299999999996e-59 +3.4130249e168 +2.1889900000000001e-122 +3.2869330709849698e134 +6.5738661419699396e134 +4.0255049e-308 +1.005332053259e-162 +2.579527061e191 +4.7584148393547676e210 +3.9483893713481e-252 +1.97419468567405e-252 +9.87097342837025e-253 +1.9999999999999999e-75 +9.9999999999999996e-76 +2.0438384905000001e220 +4.0876769810000003e220 +8.1753539620000005e220 +1.6350707924000001e221 +3.2701415848000002e221 +7e25 +8.6000000000000005e-212 +4.3000000000000003e-212 +4.0881132518497273e220 +3.8399999999996404e-314 +3.0000000003857079e-316 +1.5000000001928539e-316 +7.5000000009642697e-317 +8.4181144369598055e136 +1.6836228873919611e137 +3.3672457747839222e137 +6.7344915495678444e137 +1.609e-161 +9.9389999999999994e157 +1.9877999999999999e158 +3.9755999999999998e158 +8.257e192 +1.251704843e-222 +1.8915428484200001e-199 +9.4577142421000006e-200 +4.6429000000000003e-290 +1.012359875509e248 +9.2366402121902776e-203 +4.6183201060951388e-203 +9.889941e244 +2.2805783182123e263 +7.464070694347e-230 +9.7414235560000006e-284 +4.8707117780000003e-284 +2.4353558890000001e-284 +1.4100000000000001e-207 +2.8942588485044312e147 +5.7885176970088624e147 +6.9450705950929535e-93 +8.22631237e133 +7.31429513e-28 +5.2760065699999997e-157 +3.7899999999999998e298 +7.5799999999999995e298 +1.5159999999999999e299 +1e71 +2.0000000000000001e71 +2.6699999999999998e166 +1.1529999999999999e89 +5.6299999999999997e85 +8.6667731013520583e198 +1.0099999999999999e43 +6.662388903179e-186 +3.9459009e40 +1.3e-42 +3.076266769e-313 +3.5356999999999998e143 +8.1355060000000005e-190 +4.0677530000000002e-190 +4.5067214989181894e86 +9.0134429978363788e86 +6.9169190417774516e-323 +3.4584595208887258e-323 +1.1086630000000001e-296 +2.7840000000000002e-238 +1.3920000000000001e-238 +6.9600000000000004e-239 +3.4800000000000002e-239 +1.7400000000000001e-239 +8.7000000000000005e-240 +4.3500000000000003e-240 +2.1750000000000001e-240 +1.0531040860997631e282 +9.9999999999999996e216 +1.0000000000000001e217 +1.9321378641502699e-255 +2.63e-216 +1.2595715471663801e-163 +6.2978577358319004e-164 +2.56617e-73 +1.1520000000000001e-262 +5.7600000000000004e-263 +2.8800000000000002e-263 +1.4400000000000001e-263 +7.2000000000000004e-264 +3.6000000000000002e-264 +1.8000000000000001e-264 +9.0000000000000006e-265 +4.5000000000000003e-265 +2.2500000000000001e-265 +1.1250000000000001e-265 +2.1740000000000001e-94 +1.0870000000000001e-94 +8.2139e-72 +4.10695e-72 +2.053475e-72 +1.5500000000000001e97 +3.1000000000000002e97 +6.2000000000000004e97 +1.2400000000000001e98 +2.4800000000000002e98 +1.7454081413602999e112 +3.4908162827205998e112 +5.9521858700000004e-142 +1.6099999999999999e131 +1.6558663962110101e193 +1.2728199332248528e-191 +6.364099666124264e-192 +3.182049833062132e-192 +1.591024916531066e-192 +7.95512458265533e-193 +2.4465189999999999e67 +6.31e-310 +3.6457437281000002e59 +7.2914874562000004e59 +1.9999999999999999e-280 +9.9999999999999996e-281 +1.46479e119 +4.5676800539000003e-234 +1.2052968171590001e182 +9.0000000000000005e-119 +2.3064700000000001e-262 +1.37936334231e-64 +2.561063e-278 +5.1561876676911879e132 +2.7622642863581e-210 +3.51700400903939e-121 +1.758502004519695e-121 +8.792510022598475e-122 +1.1425269999999999e-234 +3.6211301447181099e-205 +1.7990000000000001e28 +3.5980000000000002e28 +3.6100240824300002e233 +5.42548879991e-300 +1.65421767e-158 +9.9999999999999992e-135 +2.1523242582023e226 +1.6004159930119e-133 +8.0020799650595e-134 +2.4057090000000001e-23 +3.2289750791238232e-15 +1.5448007791734984e184 +3.0896015583469968e184 +6.1792031166939936e184 +1.2358406233387987e185 +2.4716812466775974e185 +4.325e285 +8.65e285 +1.73e286 +1.1e-122 +2.955975767e-260 +5.7e203 +3.8048031956008998e298 +7.6096063912017995e298 +3.7884099999999998e239 +1.975312471861e-311 +2.74495e169 +5.4899e169 +1.3844629e287 +9.2398236698169994e-262 +1.93588167577333e-109 +1.030385940451e-218 +2.8724821953200002e-176 +1.4362410976600001e-176 +7.1812054883000004e-177 +8.7011947e198 +1.2757e-191 +6.9915677955797921e258 +5.9539987636773799e150 +1.190799752735476e151 +5.5452999999999997e141 +4.6469999999999997e294 +9.2939999999999994e294 +1.8587999999999999e295 +3.7175999999999998e295 +6.64648232303e47 +3.3342765100000002e252 +3e-229 +4.25e195 +8.5e195 +1.7e196 +4.3946287000000003e170 +8.7892574000000005e170 +3.0855386365039998e-167 +1.5427693182519999e-167 +7.7138465912599995e-168 +3.8569232956299998e-168 +1.9284616478149999e-168 +2.5391e-104 +7.5999999999999995e-53 +3.7999999999999998e-53 +1.8999999999999999e-53 +9.4999999999999994e-54 +5.97e-142 +5.5544957e-05 +3.0505299999999998e153 +6.1010599999999996e153 +2.7895128048111e54 +2.7068900999999998e284 +7.4092615332395005e236 +1.4818523066479001e237 +2.9637046132958002e237 +5.9274092265916004e237 +6.8555920000000004e-183 +3.4277960000000002e-183 +1.7138980000000001e-183 +8.5694900000000005e-184 +4.2847450000000003e-184 +1.97403521e-19 +9.87017605e-20 +9.9999999999999995e157 +1.0000000000000001e158 +2.0000000000000001e158 +2.3612592866479e179 +1.1678599999999999e-290 +5.8392999999999996e-291 +1.523e-198 +7.615e-199 +2.5940000000000002e-306 +1.2970000000000001e-306 +4.5390000000000003e-206 +4.1199029508542995e74 +8.239805901708599e74 +5.6995024000000003e-148 +2.8497512000000002e-148 +1.4248756000000001e-148 +7.1243780000000004e-149 +3.5621890000000002e-149 +1.2600942358999999e-222 +1.630717067e249 +7.9285496191000005e186 +1.5857099238200001e187 +3.1714198476400002e187 +1.1207690000000001e260 +2.2415380000000001e260 +4.175226131e251 +9.8790999999999994e-20 +1.81866695425121e292 +1.4224620406094131e144 +7.678291e65 +9.9999999999999994e303 +1.9999999999999999e304 +3.9999999999999998e304 +7.9999999999999995e304 +1.5999999999999999e305 +3.1999999999999998e305 +6.3999999999999996e305 +1.2799999999999999e306 +1.3321453954090377e48 +3e63 +7.3880299999999996e177 +2.081933063e46 +1.85340745199901e-261 +1.71689911356299e-183 +2.6426943389906988e-70 +4.4385731743299997e-209 +5.9389999999999996e237 +7.1642090549296463e-90 +7.1575535831000004e56 +1.5336920000000001e-285 +7.6684600000000005e-286 +3.8342300000000002e-286 +2.0521087e161 +8.3063455009320095e-159 +2.4199999999817606e-315 +2.2178528299999999e-63 +9.8716830630490551e272 +5.999567e209 +2.0000000000000001e-193 +1e-193 +1.2446493943e-253 +2.0305200811e-308 +4.0220328511833602e-280 +2.0110164255916801e-280 +1.0055082127958401e-280 +5.0275410639792003e-281 +2.5137705319896002e-281 +1.2568852659948001e-281 +6.2844263299740004e-282 +3.1422131649870002e-282 +1.5711065824935001e-282 +7.8555329124675005e-283 +3.9277664562337502e-283 +5.47472922089e-241 +1.5734549021206901e215 +3.1469098042413802e215 +1.75629e112 +4.2375493733163997e-215 +2.1187746866581999e-215 +1.0593873433290999e-215 +1.2988513869969844e-160 +1.48799007683563e91 +1.529e299 +6.2632969000000004e302 +3.1793767e187 +9.9999999999999997e-48 +6.6461566917e-12 +2.83e-120 +1.552589e184 +1.9428217075296999e37 +3.8856434150593998e37 +1.50633e-229 +3.108813e38 +3e-288 +1.5e-288 +3.8084510989000002e239 +8.529e-302 +2.3673550673000001e-318 +1.4529999999999999e234 +2.9059999999999998e234 +1.3647780372595876e-300 +9.97422852243e-253 +2.0473655000000001e102 +4.0947310000000002e102 +8.1894620000000005e102 +1.6378924000000001e103 +3.2794132225246002e-43 +1.6397066112623001e-43 +3.0311000000010414e-316 +8.033287416447e158 +3.91e-50 +2.3737e33 +1.0994700629138078e111 +2.1989401258276155e111 +4.3978802516552311e111 +9.9999999999999997e98 +1.93e-227 +1.08649687794403e-212 +1.16043e-116 +2.4897349386223002e39 +1.21181056891e-169 +8.037138564461909e158 +8.3999999999999995e-41 +4.1999999999999997e-41 +2.0999999999999999e-41 +1.0499999999999999e-41 +4.102115041035441e-44 +2.0510575205177205e-44 +1.4418244157e116 +3.3000000000000002e-130 +1.1014123368605261e-35 +5.5070616843026303e-36 +1.33154371e-11 +1.4499299999999999e29 +2.8998599999999998e29 +9.2000000000000006e-88 +4.6000000000000003e-88 +2.3000000000000001e-88 +7.6929999999999995e-286 +1.2323873282500001e213 +2.4647746565000001e213 +4.9295493130000003e213 +9.8590986260000006e213 +1.9718197252000001e214 +3.9436394504000002e214 +7.8872789008000005e214 +1.5774557801600001e215 +8.1557e189 +9.9999999999999992e244 +1.9999999999999998e245 +3.8063e-112 +1.4491e175 +3.72585046759e236 +2.8859829999999998e116 +1.6476141758109549e162 +3.2952283516219098e162 +6.5904567032438196e162 +1.3180913406487639e163 +1.4000000000000001e-297 +7.0000000000000004e-298 +7.1605636132000004e-149 +3.5802818066000002e-149 +1.7901409033000001e-149 +8.9507045165000005e-150 +7.2858301539000004e87 +1.5148714150340001e-24 +7.5743570751700005e-25 +7.9e68 +1.3e132 +2.9529000000000002e265 +5.9058000000000004e265 +7.3980000000000004e-28 +3.6990000000000002e-28 +3.2574807099999998e-161 +1.1193444000000001e-150 +5.5967220000000003e-151 +2.7983610000000002e-151 +8.8782798099999995e-268 +1.87e-202 +1.0280837479617321e-190 +1.015e276 +2.03e276 +3.1719144883253317e274 +3.362084235203407e106 +1.11e-268 +2.554350485213e42 +9.9999999999999994e-253 +8.0000000000000005e-252 +4.0000000000000003e-252 +2.0000000000000001e-252 +1.0000000000000001e-252 +5.0000000000000003e-253 +1.9034699999999999e34 +3.8069399999999998e34 +7.129707747e-62 +1.2530000000000001e98 +2.5060000000000002e98 +3.0134758069999998e209 +5.4815725102029646e197 +1.0963145020405929e198 +1.82729e-205 +9.13645e-206 +5.37e-244 +1.07873545483e-184 +5.39367727415e-185 +3.562022274945e84 +7.12404454989e84 +1.6094909939e305 +3.7631521540000002e-289 +1.8815760770000001e-289 +4.0854882071000002e189 +8.7828366417e52 +1.95424622862919e-255 +1.8321300000000001e146 +3.6642600000000002e146 +1.98200567e-224 +9.91002835e-225 +2.5839999999999998e-132 +1.2919999999999999e-132 +6.4599999999999996e-133 +3.2299999999999998e-133 +1.6149999999999999e-133 +2.236615722252901e142 +1.601101e-251 +2.2322024900000001e-209 +4.2487477134843939e77 +9.9999999999999994e-107 +1.6000000000000001e-105 +8.0000000000000005e-106 +4.0000000000000002e-106 +2.0000000000000001e-106 +1.0000000000000001e-106 +6.8793382206464551e-242 +6.8952786209990004e109 +1.2693212074035232e-222 +2.5007130037370002e-107 +7.69e152 +1.0591330000000001e-128 +1.8098387883099999e-31 +5.577e-64 +1.6498515284655807e308 +1.2960353210092999e219 +2.5920706420185998e219 +5.1841412840371997e219 +4.1078710000000002e248 +8.2157420000000005e248 +1.76250213284427e-239 +4.983370802524269e-166 +9.9999999999999991e39 +5.4738340022279997e-08 +2.7369170011139998e-08 +1.3684585005569999e-08 +6.8422925027849996e-09 +4.16781763081e279 +2.749e51 +3e-201 +3.8194807133629e-112 +1.90974035668145e-112 +7.3021125e233 +1.4604225e234 +2.920845e234 +5.84169e234 +5.86056347173e-204 +2.668448087105347e281 +1.8857e-289 +1.8181442991756067e174 +6.6500925692499996e75 +1.3300185138499999e76 +2.6600370276999998e76 +5.3200740553999997e76 +1.0640148110799999e77 +2.1280296221599999e77 +4.6999999999999997e148 +8.1e-280 +2.43e123 +3.7157062420200002e-174 +1.8578531210100001e-174 +1.363561347e-67 +6.817806735e-68 +1.6151149e159 +3.195267931929e-310 +1.5976339659645e-310 +1.3831e-36 +9.9999999999999998e185 +1.9178247649021301e93 +7e286 +1.4585003870700679e-117 +7.2925019353503396e-118 +3.6462509676751698e-118 +1.0034893729999999e-252 +1.077527627303e-243 +1.7204812900000001e50 +6.65592809339e75 +2.94023258653e147 +6.5287242469910004e131 +2.81e-151 +3.0999999999999998e66 +6.1999999999999996e66 +1.2399999999999999e67 +4.8802354957e-315 +1.7456728259286474e81 +1.7741728942723637e-180 +8.8708644713618183e-181 +4.4354322356809092e-181 +7.4485336767026329e-320 +3.1452085155600365e97 +1.2155640631e269 +9.9999999999994754e-312 +3.31966902386193e-130 +4.0223638999999998e245 +8.0447277999999995e245 +1.6089455599999999e246 +9.0467735444557298e-237 +3.42193e283 +7e-211 +2.339073899065074e-262 +4.5685491727780451e-265 +2.467031838607e300 +2.3e145 +1.89439403e62 +2.9004699999999998e262 +5.8009399999999997e262 +1.1601879999999999e263 +2.3203759999999999e263 +5.0965191134470003e-222 +1.18663643e-231 +8.9e170 +1e-165 +6.8209999999999996e224 +1.3641999999999999e225 +7.5e236 +1.5e237 +3e237 +1.5178999999999999e-83 +6.131e-111 +3.8903875949e-227 +1.5850547677000001e-136 +1.6782794309107597e-158 +1.064888443653303e-274 +7.3270796573299996e233 +1.4654159314659999e234 +8.631e-97 +1.1e-153 +3.033837e63 +3.2610904341789998e-74 +1.4497348857e-235 +1.3074043397197701e278 +2.6148086794395402e278 +5.2296173588790803e278 +7.4881000000000005e-115 +3.834133e-112 +9.9999999999999998e-20 +2.676199082828933e-216 +1.817623e115 +2.2623754306999999e55 +4.1152999999999998e43 +4.2973212859000003e-10 +1.71e78 +2.5952950537e160 +1.917e34 +1.9006367e-84 +7.173e84 +4.5026999999999997e142 +9.0053999999999995e142 +2.832339919e-92 +1.4161699595e-92 +6.49e159 +9.9999999999999995e126 +1.0000000000000001e127 +2.0000000000000002e127 +3.525933783e-152 +3.545008633602317e-239 +4.733e-144 +2.9999999999999998e-114 +1.2461553e-79 +5.9879047349000004e178 +2.25951352713e-296 +1.2410000000000001e-138 +4.5789731e-119 +1.1671703e-175 +5.8299746209267092e-322 +1.4563653997000001e116 +2.9127307994000002e116 +4.640323e58 +4.004052358583e127 +9.9999999999999995e272 +5.0000000000000003e272 +1.0000000000000001e273 +2.0000000000000001e273 +4.0000000000000003e273 +2.0346560892444001e-134 +1.0173280446222001e-134 +5.0866402231110003e-135 +2.5433201115555002e-135 +1.2595749e-107 +3e32 +9.7559e-228 +4.87795e-228 +4.6071078997e-206 +4.5928037223900003e232 +9.1856074447800006e232 +1.8371214889560001e233 +3.8735693349827002e152 +7.7471386699654005e152 +2.1e133 +6.171411e94 +1.1045129811334299e-299 +1.0421454730000001e-131 +3.8369999999999998e180 +7.6739999999999995e180 +2.1718031421000001e108 +6.2733477e-167 +1.2346811110000001e95 +2.741588795773e79 +1.0050402244062e-311 +2.7096125069999998e-244 +2.2830797418524519e-178 +1.1415398709262259e-178 +5.7076993546311297e-179 +2.8538496773155648e-179 +4.7929999994963505e-318 +1.0958706316289099e226 +2.1917412632578199e226 +4.3834825265156397e226 +8.7669650530312795e226 +1.7533930106062559e227 +1.2364751211307664e-51 +6.1823756056538318e-52 +3.0911878028269159e-52 +1.5455939014134579e-52 +1.5472310608973001e-198 +1.0970943000000001e80 +9.587665000219186e-318 +1e-224 +2.2016910017729999e285 +1.6313452999999999e-279 +2.9999999999999998e178 +5.9999999999999996e178 +9.245719471640309e145 +1.7984227370000001e84 +2.8345662780999998e200 +5.86181943e175 +9.793e123 +1.1001337664280001e-212 +5.5006688321400003e-213 +2.7503344160700002e-213 +6.390935023893e69 +2.3027292499999999e86 +4.6054584999999997e86 +9.2109169999999994e86 +1.8421833999999999e87 +3.6843667999999998e87 +7.3687335999999996e87 +1.4737467199999999e88 +2.9474934399999998e88 +5.8949868799999996e88 +8.5324361489e164 +7.5299999999999995e-261 +3.9700000000000002e301 +6.2498732411941e-80 +1e-78 +4.4266420000000003e-299 +2.2133210000000001e-299 +4.0093000000000002e273 +8.3000000000000005e102 +1.1287474193300001e288 +3.4343655278029998e78 +6.8099999999999996e-40 +3.3792699999999998e-304 +5.2012999999999997e-191 +3.5482384336947002e199 +7.1499e-180 +3.6849461271589998e233 +7.3698922543179996e233 +7.8284810199999995e-227 +3.9142405099999998e-227 +9.9999999999999995e67 +1.0000000000000001e68 +2.0000000000000001e68 +4.3e-69 +4.24480691e-246 +6.619300097e44 +1.5445473044099999e-257 +0.00011323999999999999 +5.6619999999999997e-05 +2.8309999999999998e-05 +1.4154999999999999e-05 +1.7298305559999999e-155 +8.6491527799999995e-156 +4.3245763899999997e-156 +1.0025752612238168e-224 +6.3010217868159259e-313 +3.8800000000000002e-199 +1.9400000000000001e-199 +9.7000000000000006e-200 +4.8500000000000003e-200 +1.09807193617703e-271 +4.3454208645190997e-97 +6.6663836605359004e-189 +9.9999999999999995e213 +1.9999999999999999e214 +6.5196600376577e305 +6.0583071020000004e-55 +3.0291535510000002e-55 +3.2105825400187e-223 +1.60529127000935e-223 +5.4570000000000003e-39 +3.6902977017825e233 +7.380595403565e233 +1.476119080713e234 +4.77e207 +1.3e101 +4.3337187482481149e-302 +3.11e299 +3.1536869767e-313 +3.1511977699999998e-167 +2.7869147e-241 +1.39345735e-241 +6.96728675e-242 +3.483643375e-242 +1.7418216875e-242 +2.0902046299999999e161 +3.19e156 +9.9999999999999995e-284 +4.0000000000000003e-283 +2.0000000000000001e-283 +1.0000000000000001e-283 +5.0000000000000003e-284 +3e119 +5.822576681e-294 +6.3e-21 +4.137769283470793e-308 +2.0688846417353965e-308 +1.8478246382030001e233 +1.6446224299999999e-74 +5.6999999999999997e54 +5.3142849047089997e-101 +1.0687590790000001e-187 +2.6464382783e-160 +1.32321913915e-160 +4.4353831370000003e-07 +3.0024891963773902e119 +6.0049783927547804e119 +6.0639700000000004e91 +5.2770000000000003e278 +1.0554000000000001e279 +9.9999999999999998e-138 +2.7847000000000002e51 +5.5694000000000003e51 +1.607e-77 +8.035e-78 +3e265 +5.1881e42 +1.404780261763e169 +7.3884317431000296e-264 +3.8411586999999998e267 +1.4341000000000001e-33 +2.5123e-79 +9.2299999999999994e-119 +6.6800000000000004e-43 +3.3400000000000002e-43 +1.6700000000000001e-43 +1.0723370000000001e164 +3.0281700000000002e-260 +3.6183000000000002e84 +7.2366000000000004e84 +1.6560000000000001e-161 +8.2800000000000005e-162 +4.1400000000000002e-162 +2.0700000000000001e-162 +1.0350000000000001e-162 +4.3800000000000003e-38 +2.1900000000000001e-38 +7.68945847303e267 +1.5100000000000001e178 +3.0200000000000002e178 +6.0400000000000004e178 +1.2080000000000001e179 +2.4160000000000001e179 +4.8320000000000003e179 +9.6640000000000006e179 +1.9328000000000001e180 +3.8656000000000002e180 +7.7312000000000005e180 +2.5943095339450723e188 +5.1886190678901447e188 +1.0377238135780289e189 +2.0754476271560579e189 +4.1508952543121158e189 +8.3017905086242315e189 +1.6603581017248463e190 +3.3207162034496926e190 +2.7770228667000002e-08 +3.23325937729e-18 +2.4992967366435177e154 +3.0179999976212545e-319 +2.6350000000000002e73 +5.2700000000000003e73 +1.0540000000000001e74 +2.1080000000000001e74 +4.2160000000000003e74 +3.74095e205 +7.4819e205 +3.5947187e-180 +1.6506395551e-220 +9.9999999999999989e154 +5e154 +1e155 +3.2836763e-133 +1.6190000000000001e-164 +3.2456024100000002e187 +7.704981796061511e121 +1.5262120635385101e150 +3.0524241270770202e150 +1.0809046790482052e-69 +1.2329142552923e123 +1.8274100000000001e202 +3.6548200000000002e202 +1.311139885e160 +2.62227977e160 +1.6729181334669552e-43 +1.118005747e-94 +2.52601e126 +9.70811e-259 +4.854055e-259 +2.105127426909677e-277 +1.0525637134548385e-277 +7.4082390000000004e-264 +3.04774059e-201 +1.0563062879243233e-72 +5.2815314396216163e-73 +2.6407657198108082e-73 +1.3203828599054041e-73 +6.6019142995270204e-74 +3.3009571497635102e-74 +1.7382914399581984e-09 +1.9999999999999999e301 +3.9999999999999997e301 +4.9999999999999997e300 +9.9999999999999993e300 +1.8405606291e-31 +9.0357176549550681e-122 +3.16572169e-167 +1.582860845e-167 +5.1091836539008973e-48 +1.3237207666750001e278 +2.6474415333500002e278 +5.2948830667000003e278 +1.0589766133400001e279 +2.1179532266800001e279 +4.2359064533600003e279 +8.4718129067200005e279 +1.4134994627999999e-269 +7.0674973139999996e-270 +3.5337486569999998e-270 +2.9999999999999998e60 +1.3969839781694999e51 +2.7939679563389998e51 +5.5879359126779997e51 +1.1175871825355999e52 +2.920784351849e-148 +5.82405209e290 +1.9394840991000001e34 +3.8789681982000002e34 +8.2416038004700005e217 +4.0459235458850002e127 +8.0918470917700005e127 +1.6183694183540001e128 +3.2367388367080002e128 +6.4734776734160004e128 +4.9279949055983e-228 +7.7e-230 +5.275e219 +1.055e220 +2.11e220 +1.1713e204 +5.3322999999999997e45 +4.8189376372787476e266 +2.14230076363e105 +1.90678155137e-202 +9.53390775685e-203 +2.1147664798000001e-72 +1.0573832399000001e-72 +2.9763093922883002e-58 +6.7386372307e-130 +2.704599e76 +3.6458753178479691e143 +7.2917506356959382e143 +2.0000000000000001e-196 +1e-196 +1.1591463009257803e-265 +5.7957315046289016e-266 +9.36419e-293 +1.63e-105 +2.0092040392337199e-137 +1.0046020196168599e-137 +5.0230100980842997e-138 +1.3383534320056299e250 +1.8732992697e-292 +3.87e-171 +6.9277673202999996e78 +1.3855534640599999e79 +2.7711069281199998e79 +1.0503745438333595e307 +2.100749087666719e307 +1.0942087516000001e-97 +5.4710437580000003e-98 +2.7355218790000002e-98 +1.577e-80 +9.2999999999999994e86 +7.5859e31 +6.3703038658432175e-108 +5.6093e-241 +4.4302929999999997e226 +1.8585277874500001e233 +3.7170555749000002e233 +7.4341111498000004e233 +1.4868222299600001e234 +2.9736444599200002e234 +5.9472889198400004e234 +1.6865885557369999e-130 +9.9999999999999989e-51 +1e-50 +1.2037169452670051e-85 +1.563e-52 +7.108275001266323e-65 +3.4227000000000002e-99 +6.7577626894739996e-276 +3.3788813447369998e-276 +4.7000000000000003e58 +9.4000000000000006e58 +1.8800000000000001e59 +2.23615340626641e-299 +2.0671604300000001e71 +1.7416173701427478e137 +2.3425369999999999e-147 +1.99075e37 +3.9815e37 +7.963e37 +1.98685904e-314 +6.9387899e78 +9.9999999999999993e95 +1.9999999999999999e96 +4.8999999999999997e297 +9.7999999999999994e297 +1.9599999999999999e298 +2.1045879e307 +1.0454580938400001e-103 +5.2272904692000003e-104 +2.6136452346000002e-104 +1.3068226173000001e-104 +6.5341130865000004e-105 +1.5133e-27 +1.1422899999999999e142 +1.1000000000000001e108 +2.2000000000000001e108 +5.7925506100728173e172 +6.9199999999999996e-127 +3.4599999999999998e-127 +1.7299999999999999e-127 +8.6499999999999995e-128 +6.7e-248 +9.3194491588138263e86 +4.2243358873513097e-131 +6.4324547236936325e156 +1.2864909447387265e157 +2.572981889477453e157 +1.1052014163223001e167 +1.5221930706861639e-114 +7.6109653534308195e-115 +3.8054826767154098e-115 +1.9027413383577049e-115 +5.287258477e-278 +4.9999999999999997e241 +9.9999999999999993e241 +1.9999999999999999e242 +3.9999999999999997e242 +5.7099999999999997e287 +2.86558074587923e-322 +2.7765e225 +5.553e225 +1.4700061249259e203 +5.754828951633e-92 +2.8774144758165e-92 +7.3999999999999996e-31 +3.6999999999999998e-31 +1.066713929947e-13 +1.16660261107e86 +2.187e-156 +1.7515087400000001e-301 +8.7575437000000005e-302 +2.2419311872000001e-299 +1.1209655936000001e-299 +5.6048279680000003e-300 +2.8024139840000002e-300 +1.4012069920000001e-300 +7.0060349600000004e-301 +3.5030174800000002e-301 +2.1017949999999999e102 +4.2035899999999998e102 +8.4071799999999995e102 +1.6814359999999999e103 +1e-255 +5e-256 +3.3700100000000002e-189 +7.3646870477329996e56 +1.4729374095465999e57 +2.39e89 +1.58022831691285e212 +3.1604566338257e212 +1.0965257979300001e195 +1.0423999999999999e-16 +5.2119999999999997e-17 +2.6059999999999998e-17 +1.3029999999999999e-17 +6.5149999999999996e-18 +1.6573018705711e218 +1.12656929291989e-240 +1.366560557070134e-11 +2.1399999999999999e-305 +1.0699999999999999e-305 +1.499647655692289e293 +3.69748959e261 +9.9999999999999999e-110 +5e-110 +3.2700000000000002e187 +1.3010893328377e275 +5.3e-278 +1.185966302527338e-29 +7.7887290000000191e-317 +1.9078432910679999e-115 +9.5392164553399994e-116 +4.7696082276699997e-116 +8.151e-19 +9.3170779756782199e-119 +2.5067e241 +5.1999999999999997e-222 +2.5999999999999998e-222 +1.2999999999999999e-222 +2.1600130735400001e-187 +1.0800065367700001e-187 +9.9302751100000006e269 +1.9860550220000001e270 +6.3899999999999996e184 +1.9315433672949299e208 +1.834152685964539e143 +9.3004999999999995e173 +1.8600999999999999e174 +3.7201999999999998e174 +7.4403999999999996e174 +4.139e-134 +2.0695e-134 +1.8343099999999999e143 +2.739328785091e-157 +2.5569605675149e185 +1.8483297994928578e-236 +3.5220014604400002e-96 +1.7610007302200001e-96 +8.8050036511000005e-97 +4.4025018255500003e-97 +9.9999999999999995e36 +1.0000000000000001e37 +2.0000000000000001e37 +9.7235760300000006e-26 +9.4247150560191694e-293 +8.6464196895932619e-187 +9e198 +1.4339301743251099e141 +9.138184497e83 +5.54775639705e166 +1.10955127941e167 +1.1990422179999999e-57 +5.9952110899999996e-58 +2.563875505912067e-107 +3.20821e-254 +1.604105e-254 +7.033e196 +1.5600641042299847e-316 +5.5074760119111e-98 +3.777e205 +1.7397990000000001e-273 +2.7904044190000002e79 +9.9999999999999995e182 +5.0000000000000003e182 +1.0000000000000001e183 +2.0000000000000001e183 +4.0000000000000003e183 +1.31640975273e247 +5.5334026554839e-39 +1.0648026068389e74 +3.98847478083e-22 +3.6987000000000002e-90 +1.1597000000000001e114 +2.3194000000000001e114 +4.6388000000000003e114 +4.7e291 +1.952411564312e-317 +1.6309999999999999e274 +3.27602507e-310 +1.2592696399999999e-51 +6.2963481999999996e-52 +3.1481740999999998e-52 +1.5740870499999999e-52 +4.0648030339495308e68 +2.0367000000000001e-224 +9.9999999996388075e-315 +6.13e-260 +5.9359e262 +7e-214 +4.67248696657e-119 +4.2636699999999997e74 +8.5273399999999995e74 +1.8332347076591e-62 +2.0533705563e40 +5.59e79 +2.8404714417243068e-182 +5.09e-79 +4.09e-19 +3.7494699999999998e233 +7.4989399999999996e233 +1.4997879999999999e234 +4.0000000000000002e-168 +2.0000000000000001e-168 +1e-168 +4.07889e-224 +2.1622739000000001e251 +2.1e-308 +9.058961e-240 +6.093068368759e119 +1.8939009999999999e205 +3.7878019999999998e205 +1.5384880418536501e91 +3.0769760837073002e91 +6.1539521674146004e91 +1.2307904334829201e92 +2.4615808669658401e92 +2.4699884856275699e297 +4.9399769712551397e297 +9.8799539425102794e297 +1.9759907885020559e298 +1.45001044210297e-238 +4.1665000000000002e217 +8.3330000000000005e217 +1.6666000000000001e218 +3.3332000000000002e218 +6.6664000000000004e218 +3.8806222581e208 +6.07663e-86 +4.0000000000000002e-22 +2.0000000000000001e-22 +1e-22 +1.9767941461700001e298 +6.526125902769521e-77 +1.9833773962993299e-140 +1.4572270000000001e-179 +3.771476185376383e292 +3.3099999999999998e-46 +1.9e-87 +9.5e-88 +4.75e-88 +2.375e-88 +3.83724412111e-115 +2.2750550828599999e-35 +1.1375275414299999e-35 +2.1188533e-44 +9.6679741651533e148 +2.3300000000000001e-32 +2.5730679080711e39 +1.7741020810000001e255 +2.0766824815000001e158 +4.1533649630000002e158 +8.3067299260000005e158 +1.6613459852000001e159 +3.3226919704000002e159 +9.9999999999999995e123 +5.0000000000000003e123 +1.0000000000000001e124 +2.0000000000000001e124 +4.0000000000000003e124 +9.4651166000000006e-147 +4.7325583000000003e-147 +3.5e224 +7e224 +8.9399999999999995e-125 +4.4699999999999997e-125 +4.71264338263e-206 +1.4352153974062101e82 +2.8704307948124202e82 +8.29253e-193 +2.306902266691e142 +6.5218108795672496e215 +1.3043621759134499e216 +2.6087243518268998e216 +5.2174487036537997e216 +1.0434897407307599e217 +2.0869794814615199e217 +4.1739589629230398e217 +2.3499176074300001e232 +3.5359073959469998e196 +4.8130000000000003e235 +1.1611482050644349e-91 +2.6603757e160 +1.1267668543221101e139 +1.1739109994299999e-265 +4.5172572617e-153 +2.25862863085e-153 +5.4971459542109997e281 +1.584472090336725e299 +3.20321511701019e125 +1e270 +2.0000000000000001e270 +4.15453379e304 +4.1189999999999998e186 +2.585568880231053e244 +1.4664545691390401e-120 +7.3322728456952004e-121 +3.6661364228476002e-121 +1.8330682114238001e-121 +9.1653410571190005e-122 +4.5826705285595003e-122 +3.7140637089079e56 +3.4074999999999998e162 +6.8149999999999996e162 +1.3629999999999999e163 +2.7259999999999998e163 +5.4519999999999997e163 +1.0903999999999999e164 +2.1807999999999999e164 +4.3615999999999997e164 +9.5499999999999994e117 +1.9099999999999999e118 +3.8199999999999998e118 +7.6399999999999996e118 +1.5279999999999999e119 +1.6549999999999999e246 +3.3099999999999998e246 +6.6199999999999996e246 +1.3239999999999999e247 +2.6479999999999998e247 +4.9959999999999997e-228 +2.4979999999999999e-228 +1.2489999999999999e-228 +6.2449999999999996e-229 +4.6740445248961e-178 +1.1400050112607899e-35 +2.112095686646353e43 +6.0420767461502269e-204 +5.831446072237e113 +3.6059441333299998e286 +1.3519648477300001e45 +1.1316404251329801e-299 +5.6582021256649003e-300 +2.8291010628324502e-300 +5.56821e-39 +6.3990000000000004e-226 +1.7761356999999999e-242 +7.5471203e-59 +1.06227e-44 +5.31135e-45 +9.9999999999999994e-228 +8.0000000000000005e-227 +4.0000000000000002e-227 +2.0000000000000001e-227 +1.0000000000000001e-227 +5.0000000000000003e-228 +3.08846823e91 +3.0000000000000002e175 +6.0000000000000003e175 +1.3454918900000001e132 +8.9999999999999995e-66 +4.80102308213e176 +9.307155767711e-91 +1.7546247920142411e224 +3.5092495840284822e224 +7.9965197117090153e-81 +2.9032418246290002e200 +5.8064836492580003e200 +5.2747891e-309 +4.4590864363820003e-38 +2.2295432181910001e-38 +2.1962228498531e77 +4.6403351999999997e-296 +2.3201675999999999e-296 +1.1600837999999999e-296 +5.8004189999999997e-297 +2.9002094999999998e-297 +1.04170937019e158 +4.63577397e-150 +2.317886985e-150 +2.20592275e136 +4.4118455e136 +8.823691e136 +1.5257251059999999e-86 +7.6286255299999996e-87 +5.4860287e222 +9.9999999999999996e-82 +5.6730000000000003e197 +3.7018500000000002e143 +7.4037000000000004e143 +1.4807400000000001e144 +2.9614800000000002e144 +1.73881e252 +1.871e-31 +5.1707244922852363e-107 +4.612673620071931e-63 +8.1e242 +8.2321395999999995e-19 +4.1160697999999998e-19 +2.0580348999999999e-19 +1.0290174499999999e-19 +4.0679063150480998e301 +7.147895034322529e-183 +1.573505851817e-316 +6.5999999999999996e-310 +1.6827728148385381e277 +4.68044900893063e-32 +7.0434715100000004e-68 +4.503289976831e80 +8.01617721e-227 +8.8999999999999995e-243 +5e64 +9.9999999999999999e64 +1.0714056286700001e-277 +1.0971605600000001e-274 +5.4858028000000003e-275 +2.7429014000000002e-275 +1.3714507000000001e-275 +6.8572535000000004e-276 +1.8875744489999999e233 +1.287322871e-20 +8.8566950479999995e-156 +4.4283475239999997e-156 +2.2141737619999999e-156 +1.1070868809999999e-156 +5.5354344049999997e-157 +1.72239446214047e-217 +2.3146178192654367e288 +1.0412074928117777e-193 +4.4580499999999997e254 +8.9160999999999995e254 +1.7832199999999999e255 +3.5664399999999998e255 +7.1328799999999996e255 +2.1324162024403001e-190 +4.3673989282920097e-187 +5.09091566247397e300 +1.0967200000000001e-128 +5.4836000000000003e-129 +2.7418000000000002e-129 +1.3709000000000001e-129 +3.9899443807087e-140 +4.3259609282000003e-159 +2.1629804641000001e-159 +2.3178099999999999e142 +4.6356199999999997e142 +9.2712399999999995e142 +6.0564560170441e-58 +9.555513697755563e-88 +1.4287e110 +9.9999999999999996e210 +1.9999999999999999e211 +5.7210600000000003e-36 +2.8605300000000002e-36 +1.048615e217 +2.09723e217 +1.2501000000000001e210 +2.2472789970189e-125 +1.12363949850945e-125 +1.7164439388388704e-276 +9.7578742487809994e-290 +1.2146991569999999e294 +2.4293983139999999e294 +7.92672851199e239 +2.53377e-256 +6.2809751e268 +6.6426628930582213e-251 +4.368252805107777e-41 +2.1145671492239999e-162 +1.0572835746119999e-162 +5.2864178730599997e-163 +2.6432089365299998e-163 +1.3216044682649999e-163 +9.7e-57 +8.2795703e186 +2.0699999999999999e186 +4.1399999999999998e186 +8.2799999999999995e186 +1.7706146115181413e137 +3.5412292230362827e137 +3.7012449934190657e-62 +1.2011749552263851e-29 +8.077767961e-314 +3.9999999999999997e-286 +1.9999999999999999e-286 +9.9999999999999993e-287 +4.9999999999999997e-287 +1.923970333024999e-174 +9.9039823151914957e-259 +5.7728278662999997e228 +1.1545655732599999e229 +1.8999999999999999e292 +1.5851109260431612e-257 +1.8575710000000001e143 +3.7151420000000002e143 +2.40620761e-175 +9.9999999999999998e-141 +9.0951183765060105e-153 +3.3488719098811e159 +7.39641136609e230 +3.718465e143 +7.43693e143 +9.612179717857e117 +7.9775523447098295e298 +1.5798999999989128e-316 +1.01782209e96 +4.4241e-215 +3.13703e63 +4.4867479311000003e-184 +4.0023913999999998e-140 +2.0011956999999999e-140 +5.8500396416460197e-92 +2.9250198208230098e-92 +1.0517747100000001e217 +7.6609836105870996e59 +1.06789583e102 +2.6698728470270772e101 +1.3450711747e-278 +9.3044699999999995e142 +7.0000000000000004e106 +8.22029102455e214 +1.64405820491e215 +7.0615000000000004e224 +1.4123000000000001e225 +2.8246000000000002e225 +5.6492000000000003e225 +1.1298400000000001e226 +2.2596800000000001e226 +2.35940909e173 +1.2694373551e-110 +6.2591393459e-142 +3.12956967295e-142 +2.2700000000000001e285 +4.5400000000000003e285 +4.98612508040717e-200 +1.286326361e67 +6.02883e-176 +3.45e221 +6.9e221 +1.5589e-201 +8.654159e-218 +1e152 +2.0000000000000001e152 +3.7457838939493002e56 +1.769e78 +2.7700000000000002e-216 +7.85651970453e62 +2.4819e-113 +1.8332720000000001e-239 +9.1663600000000005e-240 +4.5831800000000003e-240 +2.2915900000000001e-240 +1.1457950000000001e-240 +5.949468929279641e-207 +3.0138004396316039e-322 +1.0765122000000001e-131 +5.3825610000000003e-132 +1.9687599999999999e-230 +9.8437999999999994e-231 +4.9218999999999997e-231 +2.4609499999999999e-231 +2.43214189e89 +1.4527742186468999e-210 +6.8534383859999996e-43 +3.4267191929999998e-43 +8.1e-168 +7.8179259957184001e149 +1.781716123e-155 +8.908580615e-156 +1.7083311867970001e-248 +2.210640905e223 +4.42128181e223 +9.9999999999999996e297 +1.9999999999999999e298 +8.4602000000000005e-221 +4.2301000000000002e-221 +9.2842553089999995e83 +1.8568510617999999e84 +3e57 +2.2617e-271 +2.827173e-272 +5.0064589984699997e151 +1.0012917996939999e152 +1.5461085486455555e-173 +7.7305427432277775e-174 +4.77023784708463e291 +4.53e226 +1.565e150 +3.13e150 +1.6749e-46 +7.2400000000000004e-270 +3.6200000000000002e-270 +1.8100000000000001e-270 +9.0500000000000005e-271 +6.831e-102 +2.27e-66 +6.1263e-145 +2.149e307 +2.5398079429869001e182 +4.2566041746822e-308 +1.8384589000000001e258 +1.1040891817959999e-128 +5.5204459089799997e-129 +2.7602229544899998e-129 +6.35806667e35 +5.7953356022539811e-269 +4.2718853245264458e-103 +2.1359426622632229e-103 +9.9999999999999998e-200 +4.4795022830000003e-97 +2.2789747000000001e139 +1.091413829e192 +3.4214237770711318e-248 +1.7107118885355659e-248 +8.5535594426778295e-249 +2.2913089710000001e52 +4.5826179420000003e52 +6.5900000000000004e-282 +8.36449525343e245 +9.3376999999999995e142 +1.8675399999999999e143 +1.9835376999999985e-317 +2.5999999999999624e-312 +1.14988383995937e257 +1.489382875256843e-61 +2.3e257 +1.1086223000000001e77 +1.0573176829999999e71 +1.310261e-48 +2.0541670000000001e155 +2.4751999999999999e-26 +1.2375999999999999e-26 +6.1879999999999996e-27 +3.0939999999999998e-27 +1.5469999999999999e-27 +7.7349999999999996e-28 +8.27903729119e-224 +1.860431683769347e84 +9.9999999999999991e-54 +2.3140260879385e170 +4.628052175877e170 +2.6795054816999998e247 +5.82860511e-210 +1.928699e-233 +2.8100451277473341e253 +2.3933552789000001e145 +4.7867105578000003e145 +2.3197313218279153e-122 +6.1809999999999996e265 +2.0188432999999999e65 +5.9851316525740997e144 +4.4832999999999997e49 +9.9999999999999993e92 +1.9999999999999999e93 +2.4944000000000001e-259 +1.2472000000000001e-259 +6.2360000000000004e-260 +3.1180000000000002e-260 +1.5590000000000001e-260 +7.7950000000000005e-261 +1.4211e79 +5.3e-76 +3e-148 +1.8312466315156999e-152 +9.9500000000000006e179 +1.9900000000000001e180 +3.9800000000000002e180 +7.9600000000000005e180 +1.5920000000000001e181 +3.1840000000000002e181 +1.1069999999999999e-128 +5.5534950210000003e76 +5.54125889e-275 +5.0082145746204633e-54 +2.8412612112980409e225 +1.3768210472368987e-42 +1.6649095515999999e-18 +8.3245477579999995e-19 +4.1622738789999998e-19 +2.0811369394999999e-19 +8.1919e242 +5e238 +9.9999999999999999e238 +5.3e70 +4.7948925099999997e145 +9.5897850199999994e145 +1.9179570039999999e146 +7e-304 +3.5e-304 +1.75e-304 +6.77e-279 +3.385e-279 +1.0985252291000001e-246 +9.4365244504728479e-237 +4.718262225236424e-237 +1.9813838809999999e267 +3.9627677619999998e267 +1.0254970000000001e96 +2.0509940000000001e96 +2.7e160 +9.5000000000000005e173 +1.9000000000000001e174 +3.8000000000000002e174 +7.6000000000000004e174 +1.361776451e278 +1.19e-119 +3.7478020908807e143 +2.72692013699849e132 +1.390271655081531e76 +4.7e-296 +2.35e-296 +3.0345174685799782e-176 +1.5172587342899891e-176 +4.1084176778204002e-50 +2.0542088389102001e-50 +1.0271044194551001e-50 +1.4629353369999999e287 +9.1926063057e198 +2.3687859999999999e-32 +1.1843929999999999e-32 +9.9999999999999995e-259 +2.0000000000000001e-258 +1.0000000000000001e-258 +3.0097000000000002e-294 +5.975601e85 +1.7300000000000001e162 +2.23371985883e282 +1.810331973586513e-183 +1.5268003803959e-263 +7.6340019019795e-264 +1.2752809999999981e-315 +5.489703018207131e45 +1.0979406036414262e46 +3.4910000000000002e280 +1.77217022688401e165 +9.2213380000000005e-94 +4.6106690000000003e-94 +5.3103258830000003e70 +1.1931643163883182e-265 +5.2422276292821e-107 +2.820745080257e253 +3.9999999999999998e-112 +1.9999999999999999e-112 +9.9999999999999995e-113 +4.9999999999999997e-113 +3e290 +4.3234988826009998e307 +9.0080366815302925e-97 +4.5040183407651463e-97 +2.2520091703825731e-97 +6.705e41 +1.341e42 +1.4029996483694201e-303 +7.0149982418471004e-304 +2.5997520226523644e-225 +1.4370000000000001e-300 +1.3113014729739746e-107 +5.4469661613899997e-73 +3.6517703e81 +1.327161303021899e216 +3.4229699999999998e-161 +3.2719964229999998e184 +6.5439928459999996e184 +1.3087985691999999e185 +1.21095621e-234 +1.2007607187046182e291 +1.2508511e-113 +2.4146246700000001e204 +4.8292493400000003e204 +1.6099999999999999e-198 +1.427e79 +1.4786000000000001e-238 +7.3930000000000004e-239 +4.66091918057e-122 +5.3564197831e-309 +2.67820989155e-309 +9.9999999999999995e33 +5.0000000000000003e33 +1.0000000000000001e34 +2.0000000000000001e34 +4.0000000000000002e34 +8.0000000000000005e34 +1.1418663325382417e80 +2.2837326650764833e80 +8.4544999999999995e304 +1.6908999999999999e305 +3.3817999999999998e305 +6.7635999999999996e305 +6.1254660589890696e234 +5.0995861371e-23 +8.1947200999999995e37 +3.38237536651013e305 +3.0962683e60 +9.9406996999999994e266 +1.9881399399999999e267 +3.9762798799999998e267 +6.0999999999999997e175 +4.5898275553e139 +1.7453729e-71 +4.2118356098529002e245 +2.6610973085e70 +5.322194617e70 +1.5208652699047e-30 +1e180 +9.016653671e49 +1.8367499999999999e140 +3.6734999999999998e140 +7.3469999999999996e140 +1.4693999999999999e141 +2.9387999999999998e141 +5.8775999999999997e141 +1.1755199999999999e142 +3.6740070900000002e140 +4.3700000000000003e-218 +1.5196479901664999e116 +3.0392959803329998e116 +6.0785919606659997e116 +1.2157183921331999e117 +1.3629416500000001e73 +2.7258833000000002e73 +5.4517666000000003e73 +1.0903533200000001e74 +7.9851170535999995e-171 +3.9925585267999998e-171 +1.9962792633999999e-171 +9.9813963169999994e-172 +1.7431279527229999e221 +6.3e-201 +1.4387104000000001e-154 +7.1935520000000004e-155 +3.5967760000000002e-155 +1.7983880000000001e-155 +8.9919400000000005e-156 +4.4959700000000003e-156 +2.2479850000000001e-156 +1.1239925000000001e-156 +8.438579e99 +1.77e106 +2.3910146123000001e-119 +1.2672017027579564e-287 +1.026047e37 +9.3224820208717e170 +2.486244140481e-231 +1.0251052147007106e183 +2.0502104294014213e183 +1.9999999673194289e-317 +9.9999973662689151e-318 +1.0000002306925374e-317 +7.3e-124 +7e-217 +1.5245025493533001e-176 +3.46632391e-189 +3.410980787733e72 +5.4230000000000003e306 +2.541785222737042e64 +5.0835704454740839e64 +1.0167140890948168e65 +5.4881841798813697e-14 +1.3057847e272 +6.8378653227e-220 +5.1665999999999997e-197 +2.5832999999999999e-197 +2.9700000000000002e259 +5.9400000000000003e259 +2.3533107208210001e288 +1.9402670000000001e59 +3.8805340000000002e59 +3.90565290919e-174 +2.6640969899999998e216 +5.3281939799999997e216 +1.0656387959999999e217 +2.1312775919999999e217 +4.2625551839999998e217 +1.319227e244 +9.9999999999999998e-172 +9.2845e257 +1.8569e258 +1.5000000000000001e231 +3.0000000000000002e231 +6.0000000000000003e231 +1.2000000000000001e232 +2.4000000000000001e232 +1.9960308990231001e121 +3.9920617980462002e121 +1.6672143004160402e69 +1.8076197977006875e50 +3.615239595401375e50 +7.23047919080275e50 +1.44609583816055e51 +2.8921916763211e51 +1.7333259503299999e-43 +2.3389595753e-122 +2.0935593651e127 +3.87e-146 +1.0951999999999999e-218 +5.4759999999999997e-219 +2.7379999999999998e-219 +1.3689999999999999e-219 +6.8449999999999996e-220 +3.635703e-37 +1.3e-284 +2.000909e-171 +3.7356305752604502e171 +7.4712611505209004e171 +1.4942522301041801e172 +2.9885044602083602e172 +2.73e219 +3.154070143749939e-55 +1.5770350718749695e-55 +7.8851753593748475e-56 +3.9425876796874238e-56 +1.9712938398437119e-56 +9.8564691992185594e-57 +4.9282345996092797e-57 +2.4641172998046399e-57 +1.2320586499023199e-57 +6.1602932495115996e-58 +3.0801466247557998e-58 +1.5400733123778999e-58 +3.6999999999999998e199 +7.3999999999999996e199 +1.2415196829999999e207 +1.09547e-218 +2.6978293385503754e-104 +1.3489146692751877e-104 +6.7445733463759384e-105 +3.3722866731879692e-105 +1.6861433365939846e-105 +1.20454471639e-206 +3.468648536043e-43 +2.97e-238 +1.2620000000000001e-54 +6.3100000000000004e-55 +1.9999999999999998e-25 +9.9999999999999992e-26 +6.6601414963899996e-282 +4.4990296322338373e136 +8.9980592644676745e136 +1.7996118528935349e137 +2.4867515596729999e61 +1.54436174798361e293 +1.41232835e194 +2.8246567e194 +3.0855086600000002e-204 +1.5427543300000001e-204 +1.6749421436809308e274 +3.3498842873618615e274 +6.699768574723723e274 +1.3399537149447446e275 +6.8015e159 +1.3603e160 +2.6999999999999998e-104 +1.1534703999999999e-07 +5.7673519999999997e-08 +2.8836759999999998e-08 +1.4418379999999999e-08 +7.2091899999999996e-09 +3.6045949999999998e-09 +1.8022974999999999e-09 +8.0999999999999995e298 +7.0787e-99 +2.4063638299478184e86 +3.1e-145 +4.521250464066077e195 +2.9502647000000002e141 +5.9005294000000003e141 +4.501758227e136 +3.1441e-114 +1.57205e-114 +5.4136647639568389e247 +3.5825366200999998e224 +7.1650732401999996e224 +1.774102081e252 +3.9779219869333632e208 +7.9558439738667265e208 +1.5911687947733453e209 +3.1823375895466906e209 +1.8444839629513301e140 +9.9999999999999992e120 +1.069186417e71 +1.3553953828483381e101 +2.7107907656966761e101 +4.9485635019000003e294 +9.8971270038000006e294 +1.9794254007600001e295 +1.4369939825239999e-67 +7.1849699126199996e-68 +3.5924849563099998e-68 +1.7962424781549999e-68 +2.3715151000379834e-321 +7.4109846876186982e-323 +3.3000000000000002e-108 +3.7157814572869e-93 +1.1193429959999999e-274 +5.5967149799999997e-275 +2.7983574899999998e-275 +2.570000000001046e-315 +1.7009999999999999e305 +1.12319423e-69 +1.198317e173 +9.67e291 +4.0601637789999998e152 +2.0301e152 +1.6576154580537422e-49 +2.9036781000000002e-95 +9.9999999999999997e266 +2.69002173843e-17 +2.1752908400000001e-190 +1.0876454200000001e-190 +5.4382271000000003e-191 +9.36427e170 +2.4467479899999999e-29 +2.3157166326941953e-299 +4.0305149291999998e-112 +2.0152574645999999e-112 +1.0076287322999999e-112 +3.9663e149 +3e26 +5.1266453099999997e123 +1.0253290619999999e124 +1.3395156379999999e-76 +6.6975781899999996e-77 +1.849e-06 +3.5341e-304 +7.7299999999999996e-205 +1.918188391741e174 +1.0320399999999999e-109 +5.1601999999999997e-110 +2.5800999999999999e-110 +1.2900499999999999e-110 +2.7766473100000002e250 +1.35e188 +2.7e188 +1.9879553660000001e-143 +9.9397768300000006e-144 +3.0965924750999998e293 +6.1931849501999996e293 +2.877587e-67 +7.61e56 +4.7000000000000003e-268 +3.272407e-80 +1.4069953199000852e-216 +7.546317061769e-62 +7.913e-56 +3.9565e-56 +8.7476702047982105e-131 +1.2564287000001236e-318 +6.2821435000006181e-319 +1.9999999999999999e-230 +9.9999999999999993e-231 +5.6849146211108897e-244 +1.2900000000000001e36 +2.5800000000000001e36 +1.27083e151 +2.2212603728780001e-246 +1.1106301864390001e-246 +1.7040920796774241e305 +1.271099e151 +1.1534860264399999e-212 +5.7674301321999997e-213 +2.8837150660999998e-213 +9.2281061948013e-212 +5.0846649999999997e151 +1.0169329999999999e152 +2.0338659999999999e152 +4.0677319999999998e152 +9.3093779000000005e-94 +1.4453069e138 +7.94605e149 +1.58921e150 +2.989e113 +6.2414899999999996e60 +1.2482979999999999e61 +3.5442163873891935e193 +7.088432774778387e193 +1.33197051e303 +4.81413e-119 +7.49e-180 +3.745e-180 +6.80558755583973e-46 +1e-84 +9.8412063700000006e176 +1.6761649141700001e69 +1.96588720480232e-320 +8.9999999999999995e77 +5.0887e151 +2.36186729684357e-63 +1.9580884008500001e264 +3.9161768017000002e264 +7.8323536034000004e264 +1.5664707206800001e265 +3.1329414413600002e265 +6.2658828827200004e265 +6.6416653e97 +3.2815493600000002e-226 +1.6407746800000001e-226 +8.2038734000000005e-227 +4.1019367000000002e-227 +2.0509683500000001e-227 +1.3000000000000001e-197 +1.5300000000000001e262 +4.9114317170000003e-175 +9.3181818900000005e-94 +2.2702999999999999e195 +9.2385919392743187e-212 +4.6192959696371594e-212 +1.7679980376489343e-12 +6.8260234068609004e305 +1.3652046813721801e306 +1.3666601526128999e160 +2.7333203052257998e160 +5.4666406104515997e160 +1.0700000000000001e-134 +5.57419e104 +8.87181520937e192 +1.32775e244 +2.6555e244 +5.311e244 +8.5243908732389005e-193 +1.09e-44 +9.9999999999999992e61 +2.5519924000000001e-141 +1.2759962000000001e-141 +6.3799810000000004e-142 +3.1488285806400166e-319 +1.5919e150 +2.87670714961e-272 +1.438353574805e-272 +4.0933393326155812e211 +1.1000000000000001e74 +4.9064714099999997e117 +4.7146805272000003e-268 +2.3573402636000001e-268 +1.1786701318000001e-268 +5.8933506590000003e-269 +2.9466753295000002e-269 +1.8458957509e81 +3.4906927120304298e-43 +4.5361121342700003e-156 +3.6999999999999998e-211 +9.9999999999999998e207 +3.3409999999999998e156 +3.3047999999999994e-313 +9.026591e-69 +1.39547431e104 +2.4000000000000001e-32 +1.2000000000000001e-32 +6.0000000000000003e-33 +3.0000000000000002e-33 +2.2965059000000001e167 +4.5930118000000003e167 +5.679631e-303 +2.8398155e-303 +1.744767223060589e103 +5.7922228449365166e284 +1.9e143 +4.0277543e-25 +2.01387715e-25 +1.006938575e-25 +9.0890000000000005e-302 +3.9125572029999998e59 +2.93390430174783e-182 +1.2668983972055601e-259 +6.3344919860278004e-260 +3.1672459930139002e-260 +6.5645179969330963e66 +1.0908836655834999e102 +2.1817673311669999e102 +4.3635346623339998e102 +8.7270693246679995e102 +1.7454138649335999e103 +1.2335699999999999e176 +2.4671399999999999e176 +9.2209000000000005e-271 +7.40980583e-211 +1.1381498070000001e195 +1e-289 +1.04549851581e155 +1.1923573474000001e-296 +5.9617867370000003e-297 +1.3499999999999999e275 +2.6999999999999998e275 +5.3999999999999997e275 +3.4634499227367e-15 +5.388425589271e-76 +1.8178230923408571e-155 +6.6927099999999996e156 +1.3385419999999999e157 +1.9187369231634097e261 +4.38176449e307 +2.4586390000000001e117 +1.5169100000000001e-61 +1.034961540581e-314 +3.9999999999999998e-143 +1.9999999999999999e-143 +9.9999999999999995e-144 +4.9999999999999998e-144 +5.5641e191 +2.88589111e-272 +5.2159136747185597e-51 +2.6079568373592799e-51 +1.3039784186796399e-51 +6.5198920933981996e-52 +3.2599460466990998e-52 +1.6299730233495499e-52 +1.4953749000000001e54 +2.9907498000000002e54 +5.9814996000000003e54 +1.8333629657774101e109 +3.6667259315548202e109 +7.3334518631096404e109 +9.983e148 +3.4408703e-279 +1.5218300000000001e290 +8.180143063272721e152 +1.5239725099999999e144 +3.337e97 +1.06789583e99 +8.1648520000000005e-199 +4.0824260000000002e-199 +2.0412130000000001e-199 +6.6751224159732389e97 +1.3350244831946478e98 +2.6700489663892956e98 +5.3400979327785911e98 +2.7758158057e-14 +1.2789e151 +3.2285300000000002e122 +3.3241550381302302e38 +6.6483100762604604e38 +6.001e-238 +3.0005e-238 +5.5596547629821e-160 +1.7059017747989999e-251 +2.1510034831317981e-134 +1.0755017415658991e-134 +2.2265205369999999e-305 +8.8704611764104085e279 +1.7740922352820817e280 +3.5481844705641634e280 +7.0963689411283268e280 +1.4192737882256654e281 +6.0037602273e-238 +3.00188011365e-238 +7.3142999999999996e50 +1.0958076900999999e-44 +3.0416000000000002e-61 +1.5208000000000001e-61 +7.6040000000000004e-62 +3.8020000000000002e-62 +1.9010000000000001e-62 +9.5050000000000005e-63 +8.9480335968407104e-246 +4.9999999999999997e148 +9.9999999999999994e148 +1.9999999999999999e149 +3.9999999999999997e149 +9.1740743936389995e254 +5.8644778680449803e-241 +2.9322389340224902e-241 +2.7163903670143298e-163 +2.2275848463947367e-305 +1.4137044278633407e222 +3.6386497739229998e137 +6.6189e125 +7.27e283 +1.9019589e-62 +1.5700000000000001e206 +1.8079446411026293e-273 +5.0200000000000003e-290 +2.5100000000000001e-290 +2.063e-81 +4.28509433e-47 +6.3030116400000004e-232 +3.1515058200000002e-232 +1.5757529100000001e-232 +2.237e-100 +9.9999999999999998e294 +2.7161881943000002e-17 +7.3469999999999996e255 +3.5566533287563002e134 +3.57225651e193 +6.9776999999999996e190 +1.3955399999999999e191 +2.7910799999999998e191 +2.1e155 +3.3749010753258702e215 +6.7498021506517404e215 +1.3499604301303481e216 +2.7000000000000001e216 +1.9540717289999999e292 +3.9081434579999998e292 +2.8249910167e-129 +5.1226598999999997e297 +7.88363e-233 +4.16059459493e183 +1.263083495949e266 +1.0413829999999999e37 +2.0827659999999999e37 +2.4377208623219e-60 +5.3962140644000003e-281 +2.6981070322000002e-281 +1.3490535161000001e-281 +3.2799871173e299 +5.20831059055e36 +1.04166211811e37 +1.233828647337e263 +1.7011025185677435e-164 +1.1908176339429404e-63 +5.9540881697147021e-64 +2.977044084857351e-64 +1.4885220424286755e-64 +7.4426102121433776e-65 +3.7213051060716888e-65 +1.8606525530358444e-65 +9.303262765179222e-66 +1e-202 +1.7163162589460999e-46 +7.4115903516999996e-124 +9.3049e-66 +4.65245e-66 +6.82239441475e187 +1.36447888295e188 +2.7289577659e188 +2.0620099999999999e211 +4.1240199999999998e211 +2.4527573400000001e-147 +1.2263786700000001e-147 +1.5734065259169382e206 +1.2874331381591531e-287 +1.0846621951642192e-221 +1.316993065518308e-138 +2.1650000000000001e71 +4.3300000000000002e71 +8.6600000000000005e71 +1.7320000000000001e72 +1.9436714933373e-118 +9.7183574666865e-119 +1.2616834798711701e-85 +1.135405e77 +2.27081e77 +5.9910775534659e-151 +2.0000000000000001e-56 +1e-56 +1.0543299999999999e-137 +8.9400000000000005e-305 +4.4700000000000003e-305 +1.0035367187e149 +9.5291866815100005e83 +1.9058373363020001e84 +3.8116746726040002e84 +7.6233493452080004e84 +4.0928491731569698e93 +2.1000000000000001e-196 +1.7637569999999999e308 +6.1590000000000003e57 +1.2318000000000001e58 +1.2999999999999999e-169 +2.1999999999999999e-44 +1.0999999999999999e-44 +2.1050809e155 +5.26322520242395e154 +1.05264504048479e155 +1.222771391e-206 +1.77e-130 +2.3e-243 +6.411882705734877e-201 +9.9999999999999997e89 +1.0000000000000001e90 +8.2805051580599595e-81 +4.1402525790299798e-81 +2.0701262895149899e-81 +1.0350631447574949e-81 +2.057e152 +7.19037e-245 +3.595185e-245 +5.462454370781e-309 +2.7312271853905e-309 +0.000959 +6.0000000000000003e-151 +3.0000000000000002e-151 +1.29e-287 +1.4431662529414643e-39 +2.107e155 +6.84512485e41 +1.36902497e42 +3.78027923987e112 +7.725751e-236 +7.314436377075713e137 +4.9782296876210003e176 +9.9564593752420006e176 +4.9999999999999997e235 +9.9999999999999994e235 +1.9999999999999999e236 +3.9999999999999998e236 +7.9999999999999995e236 +8.5990896386446095e99 +1.7198179277289219e100 +5.414711e-281 +3.0226692573046965e259 +6.045338514609393e259 +1.556220174831099e175 +1.981383881e264 +1.4461745186724001e-185 +7.2308725933620004e-186 +3.6154362966810002e-186 +1.8077181483405001e-186 +6.5000000000000004e122 +1.3000000000000001e123 +2.6000000000000001e123 +5.2000000000000003e123 +1.0400000000000001e124 +4.709e52 +1.9000000000000001e171 +3.8000000000000002e171 +7.3344067600000004e-155 +3.6672033800000002e-155 +1.8336016900000001e-155 +4.6999999999999997e-299 +8.5154999999999995e273 +1.7030999999999999e274 +3.4061999999999998e274 +6.8123999999999996e274 +1.3624799999999999e275 +2.7249599999999998e275 +3.5070702911645627e190 +1.3969e132 +4.2174978039168498e301 +8.4349956078336995e301 +1.6869991215667399e302 +3.3739982431334798e302 +9.9999999999999998e-262 +3.1456695372999998e147 +4.6623773100548075e226 +9.324754620109615e226 +1.864950924021923e227 +4.4799999999999997e-159 +2.2399999999999999e-159 +1.1199999999999999e-159 +5.5999999999999997e-160 +2.7999999999999998e-160 +1.3999999999999999e-160 +6.9999999999999996e-161 +3.4999999999999998e-161 +1.7499999999999999e-161 +7.412001e-183 +4.0706000000000002e-25 +2.0353000000000001e-25 +4.5539e223 +9.7372930000000005e173 +1.9474586000000001e174 +1.3e269 +1.431071e135 +1.1e-249 +3.089970709e57 +1.6147551703211799e-142 +8.0737758516058995e-143 +2.4666314016059e-293 +2.1443171000000001e40 +8.503447119e-78 +6.2408999999999996e29 +1.0447310000000003e-314 +3.3184810000000002e66 +3.521275406171921e-248 +1.7606377030859605e-248 +8.8031885154298025e-249 +4.3457397e217 +5.97909125666259e82 +1.57923727e-291 +4.7732115288781609e-268 +2.3866057644390805e-268 +1.1933028822195402e-268 +6.6528999999999996e-226 +3.5183937795734581e-102 +2.601977402419903e269 +8.0000000000000004e-115 +4.0000000000000002e-115 +2.0000000000000001e-115 +1.0000000000000001e-115 +3.1835705460130002e-27 +1.3237975700735559e-138 +6.6189878503677796e-139 +3.3094939251838898e-139 +1.3e-228 +2.4662800000000001e-147 +1.2331400000000001e-147 +6.1657000000000003e-148 +4.7e-07 +2.35e-07 +1.0283225377178079e93 +6.6101989999999996e153 +1.3220397999999999e154 +2.5216648519000001e148 +5.0433297038000003e148 +9.9999999999999996e30 +1.5677652657399696e234 +2.9392222339e-08 +3.0000000000000001e-210 +4.707931e-153 +5.5582732317760003e-132 +2.7791366158880002e-132 +1.3895683079440001e-132 +6.9478415397200004e-133 +3.4739207698600002e-133 +1.7369603849300001e-133 +8.6848019246500005e-134 +4.3424009623250002e-134 +3.1126135687998532e-322 +6.9708880748700004e72 +3.6509999999999998e224 +2.7409e-163 +1.1e43 +5.2057700000000003e-228 +6.1869721579031497e203 +1.2373944315806299e204 +2.4747888631612599e204 +4.9495777263225197e204 +9.8991554526450394e204 +4.57e77 +8.3575582139730005e-22 +1.739480357e-279 +3.6599999999999998e-68 +1.8299999999999999e-68 +1.779433883969201e-130 +2.0059275390000001e-261 +2.433e-32 +7.8451019754227266e233 +1.5690203950845453e234 +3.1824760383849998e265 +6.3649520767699996e265 +1.2729904153539999e266 +2.5459808307079999e266 +5.0919616614159997e266 +1.7743e308 +1e177 +7.0290648543227604e-307 +3.5145324271613802e-307 +1.7572662135806901e-307 +1.3968437169088919e-73 +1.0487073000000001e183 +2.0974146000000001e183 +4.3000000000000002e40 +1.67877665903493e184 +2.6774369999999998e-20 +1.161205449851747e-38 +1.723e-105 +9.25997960895853e-243 +3.148547951e-58 +2.8762113999999998e-11 +1.4381056999999999e-11 +1.6140000000000001e-201 +8.0700000000000005e-202 +8.8258212799999995e-103 +4.4129106399999998e-103 +2.2064553199999999e-103 +1.1032276599999999e-103 +5.5161382999999997e-104 +2.7580691499999998e-104 +1.3790345749999999e-104 +7.7810257887105e261 +1.5562051577421e262 +7.2154999999999996e193 +1.4430999999999999e194 +2.8861999999999998e194 +5.7723999999999997e194 +1.1544799999999999e195 +1.276424950027075e120 +2.55284990005415e120 +5.1056998001083e120 +6.6632973e66 +2.0004718000112073e-320 +7.2400000000000004e-245 +3.6200000000000002e-245 +1.8100000000000001e-245 +9.0500000000000005e-246 +1.97950151e-146 +1.9375000000000001e202 +3.8750000000000002e202 +7.7500000000000004e202 +1.5500000000000001e203 +3.1000000000000002e203 +6.2000000000000003e203 +1.2400000000000001e204 +2.4800000000000001e204 +4.9600000000000003e204 +9.9200000000000006e204 +1.9840000000000001e205 +3.9680000000000002e205 +7.9360000000000004e205 +1.5872000000000001e206 +1.4450999999999999e48 +2.8901999999999998e48 +5.7803999999999997e48 +1.1560799999999999e49 +1.3635489999999999e216 +9.29e108 +4.047e149 +2.4569490999000001e232 +4.9138981998000003e232 +1.1689999999999999e-125 +4.9087293274034251e-265 +2.4543646637017125e-265 +1.2271823318508563e-265 +6.1359116592542813e-266 +3.0679558296271407e-266 +1.9826716176332201e-292 +9.9133580881661006e-293 +1e-174 +8.6274699999999995e-106 +4.18193673496713e270 +9e-13 +2.3342109929999999e167 +1.0144520051982854e-143 +6.5489678734000004e-24 +3.2744839367000002e-24 +1.6874199999999999e-254 +8.4370999999999995e-255 +1.7299999999999999e246 +2.18584777e71 +1.3485421727793055e-107 +6.7427108638965274e-108 +3.3713554319482637e-108 +1.6856777159741319e-108 +1.819747673e-186 +2.674061e-225 +3.11e-89 +8.0132507098991777e-320 +4.63e49 +6.1610000000000003e-61 +1.2646170000000001e294 +2.5292340000000001e294 +2.9035969999999998e253 +5.8071939999999997e253 +4.6203532187219997e-302 +2.3101766093609999e-302 +1.1403975471792899e164 +1.898882616284631e-93 +9.494413081423155e-94 +9.9998886718268301e-321 +4.999944335913415e-321 +2.4999721679567075e-321 +1.2499860839783538e-321 +9.9999999999999997e-29 +1.0000000000000001e-28 +2.9999999999999999e-269 +2.2669600000000001e-246 +1.1334800000000001e-246 +5.6674000000000003e-247 +2.8337000000000002e-247 +7.279e-40 +3.6395e-40 +1.1e-16 +3.3e-257 +6.0875999999999997e-238 +3.0437999999999998e-238 +1.5218999999999999e-238 +1.6954470799999999e-49 +8.4772353999999995e-50 +4.2386176999999998e-50 +3.9993350000000002e118 +7.9986700000000004e118 +1.5997340000000001e119 +3.1994680000000002e119 +2.4174999999999999e142 +4.8349999999999997e142 +9.6699999999999995e142 +1.9339999999999999e143 +3.8679999999999998e143 +7.7359999999999996e143 +1.5471999999999999e144 +3.0943999999999998e144 +9.7230000000000005e55 +9.9999999999999997e117 +1.0000000000000001e118 +8.0599999999999995e-261 +4.0299999999999998e-261 +7.6789999999999996e-121 +1.37e-76 +6.9999999999999996e218 +1.3999999999999999e219 +2.7999999999999998e219 +2.52731e-57 +2.57150499883061e179 +6.0000000000000004e-123 +3.0000000000000002e-123 +2.524898250901e89 +1.5527199999999999e-294 +7.7635999999999996e-295 +3.8817999999999998e-295 +1.9408999999999999e-295 +9.7044999999999995e-296 +2.2844033000000001e164 +4.5688066000000003e164 +2.780113944395892e-45 +1.390056972197946e-45 +9.1990722800543295e-69 +1.0182267381333383e-289 +1.4850505093e51 +1.1330641586287669e46 +2.2661283172575339e46 +4.5322566345150677e46 +3.835197078937e171 +1.5407320999999999e231 +9.9999999999999993e263 +1.9999999999999999e264 +6.23e57 +1.113847e-190 +1.8329999999999999e-127 +1.879e-270 +9.395e-271 +2.9015657200769998e48 +6.0130270629e-269 +3.00651353145e-269 +1.4823691414151001e-300 +1.48582213e51 +9.078555839e-100 +4.5392779195e-100 +2.26963895975e-100 +1.134819479875e-100 +5.674097399375e-101 +4.0584041184716972e295 +8.34735494917063e-286 +4.173677474585315e-286 +2.0868387372926575e-286 +1.5500577614374144e144 +6.87744035565e274 +1.37548807113e275 +1.2020000000000001e-122 +6.0100000000000003e-123 +3.3947830269437702e97 +6.7895660538875404e97 +2.6610606429999999e300 +5.3221212859999997e300 +5.1803613772843903e92 +3.3916079729729648e243 +6.7832159459459296e243 +1.3566431891891859e244 +2.7132863783783718e244 +5.4265727567567437e244 +9.9999999999999996e-234 +2.0000000000000001e-233 +1.0000000000000001e-233 +3e169 +3.78721e140 +5.398873e-312 +8.89555e248 +1.77911e249 +1.7411000000000001e-46 +1.6391e-229 +9.0411529209999995e-13 +7.0329883466686996e-74 +3.6999999999999998e137 +1.4190804510000001e45 +2.8381609020000002e45 +2.903629292791e194 +5.7948622399999997e-157 +2.8974311199999998e-157 +1.4487155599999999e-157 +7.2435777999999996e-158 +3.6217888999999998e-158 +1.8108944499999999e-158 +8.076999e-115 +4.0384995e-115 +1.21937455e55 +2.4387491e55 +1e-87 +9.9999999999999991e-88 +2.18961e-134 +2.463e27 +1.491927e-241 +6.9475132120677e-251 +4.0224129999999998e-174 +2.1116615043364364e-314 +1.15867349917149e-10 +4.9388367151e-265 +4.9503099999999997e86 +1.7970091719480619e-276 +8.9850458597403095e-277 +2.6610100000000001e-51 +8.147655389843e149 +9.9999999999999997e58 +1.0000000000000001e59 +6.5760999999999996e268 +1.3152199999999999e269 +6.4566890999999996e178 +1.2913378199999999e179 +2.5826756399999999e179 +1.00019054211361e59 +3.0000000000000001e-182 +1.3571189693057799e-107 +6.7855948465288996e-108 +2.5524790000000001e-144 +2.437e-296 +1.9901730000000001e146 +1.6339979e-142 +2.1626925045081e-165 +2.9e-11 +1.5721999999999999e-30 +7.8609999999999996e-31 +3.9304999999999998e-31 +1.9652499999999999e-31 +5.0310399999999997e-29 +2.5155199999999999e-29 +1.2577599999999999e-29 +6.2887999999999996e-30 +3.1443999999999998e-30 +7.0427299999999996e72 +2.39407e257 +2.5182182091949171e-175 +5.9858007460624547e256 +1.1971601492124909e257 +2.3943202984249819e257 +4.7886405968499637e257 +9.5772811936999275e257 +9.9999999999999991e204 +1e205 +4.140611e34 +2.30331543940218e-274 +7.3311543418282076e-186 +3.6655771709141038e-186 +1.8327885854570519e-186 +9.1639429272852595e-187 +4.5819714636426298e-187 +8.39e211 +6.0000000000000003e-36 +3.0000000000000002e-36 +1.6300611e296 +3.2779270967000002e209 +6.5558541934000004e209 +2.3593494977819109e-271 +1.0047760899999999e264 +5.547e-309 +2.7735e-309 +1.38675e-309 +1.9019899999999999e-06 +2.88374688217e222 +9.9839857399999994e-147 +4.9919928699999997e-147 +5.69477385e45 +1.13895477e46 +4.1928999999999998e-286 +2.3052333e-274 +3.40607462933e243 +3.22708639e-173 +2.2587146999999999e-72 +1.524132274314275e-151 +7.6206613715713751e-152 +1.61751353013e178 +8.0000000000000004e-292 +4.0000000000000002e-292 +2.0000000000000001e-292 +1.0000000000000001e-292 +5.0000000000000003e-293 +1.3850900000000001e-17 +2.21847019193e-162 +9.684806421e229 +2.1206789802617101e183 +1.4556223300000001e-303 +2.776523e-309 +1.3882615e-309 +6.1e-151 +3.5700000000000002e-248 +4.69473e-38 +2.9917180000000002e-95 +1.4958590000000001e-95 +1.91277545517121e53 +1.27e235 +2.82926897e-219 +1.414634485e-219 +7.073172425e-220 +1.109e-16 +2.9900000000000002e51 +9.9999999999999991e-147 +1e-146 +1.7422905778456259e-105 +2.48670699e-60 +7.0000000000000004e-46 +1.8690096226895001e50 +3.7380192453790002e50 +7.4760384907580004e50 +1.4952076981516001e51 +3.58059e103 +2.0180000000000001e-28 +1.0090000000000001e-28 +8.2756133871859995e-171 +4.1378066935929998e-171 +9.88805e173 +1.97761e174 +1.60085785211e-145 +5.8495999999999997e-98 +2.9247999999999998e-98 +1.4623999999999999e-98 +7.3119999999999996e-99 +3.6559999999999998e-99 +1.8279999999999999e-99 +9.1399999999999995e-100 +4.5699999999999997e-100 +2.2849999999999999e-100 +1.1424999999999999e-100 +5.7124999999999997e-101 +2.2099999999999999e-75 +6.48203e178 +1.9652550712979928e-236 +2.3280000000000001e-10 +1.1640000000000001e-10 +5.8200000000000003e-11 +2.9100000000000002e-11 +1.4550000000000001e-11 +3.0632070042157286e-322 +1.5810100666919889e-322 +7.9050503334599447e-323 +3.9525251667299724e-323 +1.9762625833649862e-323 +0.0009765625 +0.00048828125 +0.000244140625 +0.0001220703125 +6.103515625e-05 +0.5 +3.0517578125e-05 +1.52587890625e-05 +7.62939453125e-06 +3.814697265625e-06 +1.9073486328125e-06 +9.5367431640625e-07 +4.76837158203125e-07 +2.384185791015625e-07 +0.25 +1.1920928955078125e-07 +5.9604644775390625e-08 +0.125 +0.0625 +0.03125 +0.015625 +0.0078125 +0.00390625 +0.001953125 diff --git a/lib/yyjson-0.12.0/test/test_allocator.c b/lib/yyjson-0.12.0/test/test_allocator.c new file mode 100644 index 00000000000..1cb822fba92 --- /dev/null +++ b/lib/yyjson-0.12.0/test/test_allocator.c @@ -0,0 +1,350 @@ +// This file is used to test the built-in pool memory allocator. + +#include "yyjson.h" +#include "yy_test_utils.h" + +#define NUM_PTR 16 +#define BUF_SIZE 1024 + +static void test_alc_pool_init(void) { + yyjson_alc alc; + usize size; + void *buf; + + yy_assert(!yyjson_alc_pool_init(NULL, NULL, 0)); + + memset(&alc, 0, sizeof(alc)); + yy_assert(!yyjson_alc_pool_init(&alc, NULL, 0)); + yy_assert(!alc.malloc(NULL, 1)); + yy_assert(!alc.realloc(NULL, NULL, 0, 1)); + alc.free(NULL, NULL); + + memset(&alc, 0, sizeof(alc)); + yy_assert(!yyjson_alc_pool_init(&alc, NULL, 1024)); + yy_assert(!alc.malloc(NULL, 1)); + yy_assert(!alc.realloc(NULL, NULL, 0, 1)); + alc.free(NULL, NULL); + + char small_buf[10]; + memset(&alc, 0, sizeof(alc)); + yy_assert(!yyjson_alc_pool_init(&alc, small_buf, sizeof(small_buf))); + yy_assert(!alc.malloc(NULL, 1)); + yy_assert(!alc.realloc(NULL, NULL, 0, 1)); + alc.free(NULL, NULL); + + size = 8 * sizeof(void *) - 1; + buf = malloc(size); + yy_assert(!yyjson_alc_pool_init(&alc, buf, size)); + free(buf); +} + +static void test_alc_pool_func(void) { + yyjson_alc alc; + void *ptr[NUM_PTR]; + usize ptr_size[NUM_PTR]; + void *buf = malloc(BUF_SIZE); + yy_assert(yyjson_alc_pool_init(&alc, buf, BUF_SIZE)); + + + // suc and fail + ptr[0] = alc.malloc(alc.ctx, BUF_SIZE / 2); + yy_assert(ptr[0]); + memset(ptr[0], 0, BUF_SIZE / 2); + ptr[1] = alc.malloc(alc.ctx, BUF_SIZE / 2); + yy_assert(!ptr[1]); + alc.free(alc.ctx, ptr[0]); + + + // alc large, free, alc again + for (int i = 0; i < NUM_PTR; i++) { + ptr[i] = alc.malloc(alc.ctx, 32); + yy_assert(ptr[i]); + memset(ptr[i], 0, 32); + } + for (int i = 0; i < NUM_PTR; i += 2) { + alc.free(alc.ctx, ptr[i]); + } + for (int i = 0; i < NUM_PTR; i += 2) { + ptr[i] = alc.malloc(alc.ctx, 16); + yy_assert(ptr[i]); + memset(ptr[i], 0, 16); + } + for (int i = NUM_PTR - 1; i >= 0; i--) { + alc.free(alc.ctx, ptr[i]); + } + + + // alc large, free, alc small + for (int i = 0; i < NUM_PTR; i++) { + ptr[i] = alc.malloc(alc.ctx, 32); + yy_assert(ptr[i]); + memset(ptr[i], 0, 32); + } + for (int i = 0; i < NUM_PTR; i += 2) { + alc.free(alc.ctx, ptr[i]); + } + for (int i = 0; i < NUM_PTR; i += 2) { + ptr[i] = alc.malloc(alc.ctx, 1); + yy_assert(ptr[i]); + memset(ptr[i], 0, 1); + } + for (int i = NUM_PTR - 1; i >= 0; i--) { + alc.free(alc.ctx, ptr[i]); + } + + + // alc small, free, alc large + for (int i = 0; i < NUM_PTR; i++) { + ptr[i] = alc.malloc(alc.ctx, 16); + yy_assert(ptr[i]); + memset(ptr[i], 0, 16); + } + for (int i = 0; i < NUM_PTR; i += 2) { + alc.free(alc.ctx, ptr[i]); + } + for (int i = 0; i < NUM_PTR; i += 2) { + ptr[i] = alc.malloc(alc.ctx, 32); + yy_assert(ptr[i]); + memset(ptr[i], 0, 32); + } + for (int i = 0; i < NUM_PTR; i++) { + alc.free(alc.ctx, ptr[i]); + } + + + // alc small, realloc large + for (int i = 0; i < NUM_PTR / 2; i++) { + ptr[i] = alc.malloc(alc.ctx, 8); + yy_assert(ptr[i]); + memset(ptr[i], 0, 8); + } + for (int i = 0; i < NUM_PTR / 2; i += 2) { + alc.free(alc.ctx, ptr[i]); + } + for (int i = 1; i < NUM_PTR / 2; i += 2) { + ptr[i] = alc.realloc(alc.ctx, ptr[i], 8, 32); + yy_assert(ptr[i]); + memset(ptr[i], 0, 32); + } + for (int i = 0; i < NUM_PTR / 2; i += 2) { + ptr[i] = alc.malloc(alc.ctx, 16); + yy_assert(ptr[i]); + memset(ptr[i], 0, 16); + } + for (int i = 0; i < NUM_PTR / 2; i++) { + alc.free(alc.ctx, ptr[i]); + } + + + // same space realloc + ptr[0] = alc.malloc(alc.ctx, 64); + ptr[0] = alc.realloc(alc.ctx, ptr[0], 64, 128); + yy_assert(ptr[0]); + alc.free(alc.ctx, ptr[0]); + + + // random + memset(ptr, 0, sizeof(ptr)); + memset(ptr_size, 0, sizeof(ptr_size)); + yy_rand_reset(0); + for (int p = 0; p < 10000; p++) { + int i = yy_rand_u32_uniform(NUM_PTR); + usize inc = yy_rand_u32_uniform(127) + 1; + void *tmp = ptr[i]; + usize tmp_size = ptr_size[i]; + if (tmp) { + bool is_realloc = (yy_rand_u32_uniform(4) == 0); + if (is_realloc) { + tmp = alc.realloc(alc.ctx, tmp, tmp_size, tmp_size + inc); + if (tmp) { + ptr[i] = tmp; + ptr_size[i] += inc; + } + } else { + alc.free(alc.ctx, tmp); + ptr[i] = NULL; + ptr_size[i] = 0; + } + } else { + tmp = alc.malloc(alc.ctx, inc); + if (tmp) memset(tmp, 0xFF, inc); + ptr[i] = tmp; + ptr_size[i] = tmp ? inc : 0; + } + } + for (int i = 0; i < NUM_PTR; i++) { + if (ptr[i]) alc.free(alc.ctx, ptr[i]); + } + + + // cleanup + free(buf); +} + +// test allocator for different length json +static void test_alc_pool_read(void) { +#if !YYJSON_DISABLE_READER + yyjson_read_flag flg; + size_t buf_len; + void *buf; + yyjson_alc alc; + yyjson_doc *doc; + + for (size_t n = 1; n <= 1000; n++) { + // e.g. n = 3: [1,1,1] + size_t len = 1 + n * 2; + char *str = malloc(len); + str[0] = '['; + for (size_t i = 0; i < n; i++) { + str[i * 2 + 1] = '1'; + str[i * 2 + 2] = ','; + } + str[len - 1] = ']'; + + + // default flag + flg = 0; + buf_len = yyjson_read_max_memory_usage(len, flg); + buf = malloc(buf_len); + yyjson_alc_pool_init(&alc, buf, buf_len); + + doc = yyjson_read_opts(str, len, flg, &alc, NULL); + yy_assert(doc); + yy_assert(doc->val_read == n + 1); + yyjson_doc_free(doc); + + free(buf); + + + // instu flag + str = realloc(str, len + YYJSON_PADDING_SIZE); + memset(str + len, 0, YYJSON_PADDING_SIZE); + + flg = YYJSON_READ_INSITU; + buf_len = yyjson_read_max_memory_usage(len, flg); + buf = malloc(buf_len); + yyjson_alc_pool_init(&alc, buf, buf_len); + + doc = yyjson_read_opts(str, len, flg, &alc, NULL); + yy_assert(doc); + yy_assert(doc->val_read == n + 1); + yyjson_doc_free(doc); + + free(buf); + + + // cleanup + free(str); + } +#endif +} + +static void test_alc_dyn(void) { + yyjson_alc *alc; + void *ptr[NUM_PTR]; + usize ptr_size[NUM_PTR]; + + + // new and destroy + alc = yyjson_alc_dyn_new(); + yy_assert(alc); + yy_assert(!alc->malloc(alc->ctx, SIZE_MAX)); + yy_assert(!alc->malloc(alc->ctx, SIZE_MAX - 16)); + yyjson_alc_dyn_free(alc); + yyjson_alc_dyn_free(NULL); + + + // new, alloc, destroy + alc = yyjson_alc_dyn_new(); + ptr[0] = alc->malloc(alc->ctx, 0x100); + yy_assert(ptr[0]); + memset(ptr[0], 0xFF, 0x100); + alc->free(alc->ctx, ptr[0]); + yyjson_alc_dyn_free(alc); + + + // new, alloc-free, destroy + alc = yyjson_alc_dyn_new(); + yy_rand_reset(0); + for (int p = 0; p < 1000; p++) { + usize len = yy_rand_u32_uniform(0x4000) + 1; + ptr[0] = alc->malloc(alc->ctx, len); + yy_assert(ptr[0]); + memset(ptr[0], 0xFF, len); + alc->free(alc->ctx, ptr[0]); + } + yyjson_alc_dyn_free(alc); + + + // new, alloc-free, destroy + alc = yyjson_alc_dyn_new(); + yy_rand_reset(0); + for (int p = 0; p < 1000; p++) { + usize len = yy_rand_u32_uniform(0x4000) + 1; + ptr[0] = alc->malloc(alc->ctx, len); + yy_assert(ptr[0]); + memset(ptr[0], 0xFF, len); + alc->free(alc->ctx, ptr[0]); + } + yyjson_alc_dyn_free(alc); + + + // new, alloc-realloc-free, destroy + alc = yyjson_alc_dyn_new(); + yy_rand_reset(0); + for (int p = 0; p < 1000; p++) { + usize len = yy_rand_u32_uniform(0x4000) + 1; + usize inc = yy_rand_u32_uniform(0x4000) + 1; + ptr[0] = alc->malloc(alc->ctx, len); + yy_assert(ptr[0]); + memset(ptr[0], 0xFF, len); + ptr[0] = alc->realloc(alc->ctx, ptr[0], len, len + inc); + yy_assert(ptr[0]); + memset(ptr[0], 0xFF, len + inc); + alc->free(alc->ctx, ptr[0]); + } + yyjson_alc_dyn_free(alc); + + + // random + alc = yyjson_alc_dyn_new(); + yy_rand_reset(0); + memset(ptr, 0, sizeof(ptr)); + memset(ptr_size, 0, sizeof(ptr_size)); + for (int p = 0; p < 10000; p++) { + int i = yy_rand_u32_uniform(NUM_PTR); + usize inc = yy_rand_u32_uniform(0x4000) + 1; + void *tmp = ptr[i]; + usize tmp_size = ptr_size[i]; + if (tmp) { + bool is_realloc = (yy_rand_u32_uniform(4) == 0); + if (is_realloc) { + tmp = alc->realloc(alc->ctx, tmp, tmp_size, tmp_size + inc); + if (tmp) { + memset(tmp, 0xFF, tmp_size + inc); + ptr[i] = tmp; + ptr_size[i] += inc; + } + } else { + alc->free(alc->ctx, tmp); + ptr[i] = NULL; + ptr_size[i] = 0; + } + } else { + tmp = alc->malloc(alc->ctx, inc); + if (tmp) memset(tmp, 0xFF, inc); + ptr[i] = tmp; + ptr_size[i] = tmp ? inc : 0; + } + } + yyjson_alc_dyn_free(alc); +} + + + +yy_test_case(test_allocator) { + test_alc_pool_init(); + test_alc_pool_func(); + test_alc_pool_read(); + test_alc_dyn(); +} diff --git a/lib/yyjson-0.12.0/test/test_err_code.c b/lib/yyjson-0.12.0/test/test_err_code.c new file mode 100644 index 00000000000..21f94149c4f --- /dev/null +++ b/lib/yyjson-0.12.0/test/test_err_code.c @@ -0,0 +1,783 @@ +// This file is used to test the accuracy of the error codes of +// json_read and json_write. + +#include "yyjson.h" +#include "yy_test_utils.h" + + + +#define is_json_space(x) \ + (((u8)x) == ' ' || ((u8)x) == '\r' || ((u8)x) == '\n' || ((u8)x) == '\t') + +#define is_alphabet(x) \ + (('a' <= ((u8)x) && ((u8)x) <= 'z') || ('A' <= ((u8)x) && ((u8)x) <= 'Z')) + + + +static void test_read_err_code(void) { +#if !YYJSON_DISABLE_READER + yyjson_read_err err; + const char *str; + yyjson_alc alc; + char buf[1024]; + usize len; + + + + // ------------------------------------------------------------------------- + // Success, no error. + str = "[]"; + // ^ + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, strlen(str), 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_SUCCESS); + yy_assert(err.pos == 0); + + + + // ------------------------------------------------------------------------- + // Invalid parameter, such as NULL input string or 0 input length. + str = ""; + // ^ input length is 0 + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, 0, 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_INVALID_PARAMETER); + yy_assert(err.pos == 0); + + str = NULL; + // ^ input data is NULL + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, 0, 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_INVALID_PARAMETER); + yy_assert(err.pos == 0); + + str = NULL; + // ^ input path is NULL + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_file(str, 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_INVALID_PARAMETER); + yy_assert(err.pos == 0); + + + + // ------------------------------------------------------------------------- + // Memory allocation failure occurs. + str = "[]"; + // ^ memory allocation failed + yyjson_alc_pool_init(&alc, NULL, 0); + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, strlen(str), 0, &alc, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_MEMORY_ALLOCATION); + yy_assert(err.pos == 0); + + + + // ------------------------------------------------------------------------- + // Input JSON string is empty. + str = " "; + // ^ input data is empty + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, strlen(str), 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_EMPTY_CONTENT); + yy_assert(err.pos == 0); + + str = "\n\n\r\n"; + // ^ input data is empty + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, strlen(str), 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_EMPTY_CONTENT); + yy_assert(err.pos == 0); + + + + // ------------------------------------------------------------------------- + // Unexpected content after document, such as `[1]abc`. + str = "[1]abc"; + // ^ unexpected content after document + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, strlen(str), 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_UNEXPECTED_CONTENT); + yy_assert(err.pos == strlen(str) - 3); + + str = "[1],"; + // ^ unexpected content after document + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, strlen(str), 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_UNEXPECTED_CONTENT); + yy_assert(err.pos == strlen(str) - 1); + +#if !YYJSON_DISABLE_NON_STANDARD + str = "[1],"; + // ^ unexpected content after document + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, strlen(str), + YYJSON_READ_ALLOW_TRAILING_COMMAS, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_UNEXPECTED_CONTENT); + yy_assert(err.pos == strlen(str) - 1); +#endif + + + + // ------------------------------------------------------------------------- + // Unexpected ending, such as `[123`. + + // test truncated single value + const char *truncated_single_values[] = { + "-", + "-1.", + "123.", + "123e", + "123e-", + "123.1e", + "123.1e-", + "t", + "tr", + "tru", + "f", + "fa", + "fal", + "fals", + "n", + "nu", + "nul", + }; + for (usize i = 0; i < yy_nelems(truncated_single_values); i++) { + // check unexpected end + str = truncated_single_values[i]; + len = strlen(str); + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, len, 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_UNEXPECTED_END); + yy_assert(err.pos == len); + + // add a space after invalid json + memcpy(buf, str, len); + memcpy(buf + len, " ", 2); + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)buf, len + 1, 0, NULL, &err)); + if (is_alphabet(*buf)) { + yy_assert(err.code == YYJSON_READ_ERROR_LITERAL); + yy_assert(err.pos == 0); + } else { + yy_assert(err.code == YYJSON_READ_ERROR_INVALID_NUMBER); + yy_assert(err.pos == len); + } + } + + // test truncated nan/inf value + const char *truncated_nan_inf_values[] = { + "na", + "-na", + "in", + "-in", + "In", + "-In", + "infi", + "-infi", + "Infi", + "-Infi", + "Infinit", + "-Infinit", + }; + for (usize i = 0; i < yy_nelems(truncated_nan_inf_values); i++) { + // check unexpected end + str = truncated_nan_inf_values[i]; + len = strlen(str); + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, len, 0, NULL, &err)); + yy_assert(err.code); + yy_assert(err.code != YYJSON_READ_ERROR_UNEXPECTED_END); + +#if !YYJSON_DISABLE_NON_STANDARD + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, strlen(str), + YYJSON_READ_ALLOW_INF_AND_NAN, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_UNEXPECTED_END); + yy_assert(err.pos == len); +#endif + } + + // test truncated JSON + const char *valid_jsons[] = { + "[0]", + "[\n 0\n]", + "[123]", + "[\n 123\n]", + "[123e4]", + "[\n 123e4\n]", + "[-123.4e-56]", + "[\n -123.4e-56\n]", + "\"Check✅©\\t2020®Ñблоко////à¹à¸­à¸›à¹€à¸›à¸´à¹‰à¸¥\\\\\\\\リンゴ|ØªÙØ§Ø­Ø©|蘋果|사과|\"", + "\"Check\\u2705\\u00A9\\t2020\\u00AE\\u044F\\u0431\\u043B\\u043E\\u043A\\u043E\\/\\/\\/\\/\\u0E41\\u0E2D\\u0E1B\\u0E40\\u0E1B\\u0E34\\u0E49\\u0E25\\\\\\\\\\u30EA\\u30F3\\u30B4|\\u062A\\u0641\\u0627\\u062D\\u0629|\\u860B\\u679C|\\uC0AC\\uACFC|\\uF8FF\"", + "[[[{}]]]", + "[\n [\n [\n {}\n ]\n ]\n]", + "{\"name\":\"Harry\",\"id\":123,\"star\":[1,2,3]}", + "{\n \"name\": \"Harry\",\n \"id\": 123,\n \"star\": [\n 1,\n 2,\n 3\n ]\n}", + }; + for (usize i = 0; i < yy_nelems(valid_jsons); i++) { + str = valid_jsons[i]; + len = strlen(str); + for (usize l = 1; l <= len; l++) { + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, l, 0, NULL, &err)); + if (l == len) { + yy_assert(err.code == YYJSON_READ_SUCCESS); + yy_assert(err.pos == 0); + } else { + yy_assert(err.code == YYJSON_READ_ERROR_UNEXPECTED_END); + yy_assert(err.pos == l); + } + } + } + + // test with `JSONTestSuite` files + char dir[YY_MAX_PATH]; + yy_path_combine(dir, YYJSON_TEST_DATA_PATH, "data", "json", "test_parsing", NULL); + int count; + char **names = yy_dir_read(dir, &count); + for (int i = 0; i < count; i++) { + char *name = names[i]; + char path[YY_MAX_PATH]; + yy_path_combine(path, dir, name, NULL); + if (!yy_str_has_prefix(name, "y_")) continue; + + // read files, trim spaces, ignore too large files + u8 *dat; + if (!yy_file_read(path, &dat, &len)) continue; + str = (char *)dat; + while (len && is_json_space(str[0])) { str++; len--; } + while (len && is_json_space(str[len - 1])) { len--; } + if (len > 256) len = 0; + + // some numbers are still valid after being truncated + // but other truncated JSON should report `unexpected end` errors + for (usize l = 1; l < len; l++) { + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, l, 0, NULL, &err)); + if (err.code == YYJSON_READ_SUCCESS) { + yy_assert(*str == '-' || ('0' <= *str && *str <= '9')); + } else { + yy_assert(err.code == YYJSON_READ_ERROR_UNEXPECTED_END); + yy_assert(err.pos == l); + } + } + free(dat); + } + yy_dir_free(names); + + // Both 'Infinity' and 'Inf' are valid literals here. +#if !YYJSON_DISABLE_NON_STANDARD + str = "-Infini"; + // ^ unexpected end of data + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, strlen(str), + YYJSON_READ_ALLOW_INF_AND_NAN, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_UNEXPECTED_END); + yy_assert(err.pos == strlen(str)); +#endif + + + + // ------------------------------------------------------------------------- + // Unexpected character inside the document, such as `[abc]`. + str = "[abc]"; + // ^ unexpected character + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, strlen(str), 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_UNEXPECTED_CHARACTER); + yy_assert(err.pos == 1); + + str = "inf"; + // ^ unexpected character + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, strlen(str), 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_UNEXPECTED_CHARACTER); + yy_assert(err.pos == 0); + + + + // ------------------------------------------------------------------------- + // Invalid JSON structure, such as `[1,]`. + str = "[1,]"; + // ^ trailing comma is not allowed + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, strlen(str), 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_JSON_STRUCTURE); + yy_assert(err.pos == strlen(str) - 2); + + + + // ------------------------------------------------------------------------- + // Invalid comment, such as unclosed multi-line comment. +#if !YYJSON_DISABLE_NON_STANDARD + str = "[123]/*"; + // ^ unclosed multiline comment + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, strlen(str), + YYJSON_READ_ALLOW_COMMENTS, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_UNEXPECTED_END); + yy_assert(err.pos == strlen(str)); + + str = "[123/*"; + // ^ unclosed multiline comment + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, strlen(str), + YYJSON_READ_ALLOW_COMMENTS, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_UNEXPECTED_END); + yy_assert(err.pos == strlen(str)); +#endif + + + + // ------------------------------------------------------------------------- + // Invalid number, such as `123.e12`, `000`. + str = "123.e12"; + // ^ no digit after decimal point + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, strlen(str), 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_INVALID_NUMBER); + yy_assert(err.pos == 4); + + str = "000"; + // ^ number with leading zero is not allowed + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, strlen(str), 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_INVALID_NUMBER); + yy_assert(err.pos == 0); + + str = "[01"; + // ^ number with leading zero is not allowed + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, strlen(str), 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_INVALID_NUMBER); + yy_assert(err.pos == 1); + + str = "[123.]"; + // ^ no digit after decimal point + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, strlen(str), 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_INVALID_NUMBER); + yy_assert(err.pos == 5); + + + + // ------------------------------------------------------------------------- + // Invalid string, such as invalid escaped character inside a string. +#if !YYJSON_DISABLE_UTF8_VALIDATION + + str = "\"\\uD800\""; + // ^ no low surrogate in string + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, strlen(str), 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_INVALID_STRING); + yy_assert(err.pos == 1); + + // invalid 1-byte UTF-8 + memcpy(buf, "\"abcdefgh\"", 10); + buf[1] = 0x01; + for (len = 2; len < 10; len++) { + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)buf, len, 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_INVALID_STRING); + yy_assert(err.pos == 1); + } + buf[1] = 0xA0; + for (len = 2; len < 10; len++) { + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)buf, len, 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_INVALID_STRING); + yy_assert(err.pos == 1); + } + buf[1] = 0xFF; + for (len = 2; len < 10; len++) { + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)buf, len, 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_INVALID_STRING); + yy_assert(err.pos == 1); + } + + // invalid 2-bytes UTF-8 + memcpy(buf, "\"abcdefgh\"", 10); + buf[1] = 0xC0; + buf[2] = 0x80; + for (len = 2; len < 10; len++) { + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)buf, len, 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_INVALID_STRING); + yy_assert(err.pos == 1); + } + + // invalid 3-bytes UTF-8 + memcpy(buf, "\"abcdefgh\"", 10); + buf[1] = 0xE0; + buf[2] = 0x80; + buf[3] = 0x80; + for (len = 2; len < 10; len++) { + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)buf, len, 0, NULL, &err)); + if (len == 2) { + yy_assert(err.code == YYJSON_READ_ERROR_UNEXPECTED_END); + yy_assert(err.pos == 2); + } else { + yy_assert(err.code == YYJSON_READ_ERROR_INVALID_STRING); + yy_assert(err.pos == 1); + } + } + memcpy(buf, "\"abcdefgh\"", 10); + buf[1] = 0xED; + buf[2] = 0xA0; + buf[3] = 0x80; + for (len = 2; len < 10; len++) { + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)buf, len, 0, NULL, &err)); + if (len == 2) { + yy_assert(err.code == YYJSON_READ_ERROR_UNEXPECTED_END); + yy_assert(err.pos == 2); + } else { + yy_assert(err.code == YYJSON_READ_ERROR_INVALID_STRING); + yy_assert(err.pos == 1); + } + } + + // invalid 4-bytes UTF-8 + memcpy(buf, "\"abcdefgh\"", 10); + buf[1] = 0xF0; + buf[2] = 0x80; + buf[3] = 0x80; + buf[3] = 0x80; + for (len = 2; len < 10; len++) { + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)buf, len, 0, NULL, &err)); + if (len == 2) { + yy_assert(err.code == YYJSON_READ_ERROR_UNEXPECTED_END); + yy_assert(err.pos == len); + } else { + yy_assert(err.code == YYJSON_READ_ERROR_INVALID_STRING); + yy_assert(err.pos == 1); + } + } + memcpy(buf, "\"abcdefgh\"", 10); + buf[1] = 0xF4; + buf[2] = 0xA0; + buf[3] = 0x80; + buf[3] = 0x80; + for (len = 2; len < 10; len++) { + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)buf, len, 0, NULL, &err)); + if (len == 2) { + yy_assert(err.code == YYJSON_READ_ERROR_UNEXPECTED_END); + yy_assert(err.pos == len); + } else { + yy_assert(err.code == YYJSON_READ_ERROR_INVALID_STRING); + yy_assert(err.pos == 1); + } + } + memcpy(buf, "\"abcdefgh\"", 10); + buf[1] = 0xF5; + buf[2] = 0x80; + buf[3] = 0x80; + buf[3] = 0x80; + for (len = 2; len < 10; len++) { + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)buf, len, 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_INVALID_STRING); + yy_assert(err.pos == 1); + } + memcpy(buf, "\"abcdefgh\"", 10); + buf[1] = 0xF8; + buf[2] = 0x80; + buf[3] = 0x80; + buf[3] = 0x80; + for (len = 2; len < 10; len++) { + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)buf, len, 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_INVALID_STRING); + yy_assert(err.pos == 1); + } + memcpy(buf, "\"abcdefgh\"", 10); + buf[1] = 0xF9; + buf[2] = 0x80; + buf[3] = 0xC0; + buf[3] = 0x80; + for (len = 2; len < 10; len++) { + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)buf, len, 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_INVALID_STRING); + yy_assert(err.pos == 1); + } +#endif + + + + // ------------------------------------------------------------------------- + // UTF-8 BOM + buf[0] = 0xEF; + buf[1] = 0xBB; + buf[2] = 0xBF; + memcpy(buf + 3, "abcde", 6); + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)buf, strlen(buf), 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_UNEXPECTED_CHARACTER); + yy_assert(err.pos == 0); + +#if !YYJSON_DISABLE_NON_STANDARD + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)buf, strlen(buf), YYJSON_READ_ALLOW_BOM, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_UNEXPECTED_CHARACTER); + yy_assert(err.pos == 3); +#endif + + + // ------------------------------------------------------------------------- + // Invalid JSON literal, such as `truu`. + str = "[truu]"; + // ^ invalid literal + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, strlen(str), 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_LITERAL); + yy_assert(err.pos == 1); + + str = "truu"; + // ^ invalid literal + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, strlen(str), 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_LITERAL); + yy_assert(err.pos == 0); + + str = "nan"; + // ^ invalid literal + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_opts((char *)str, strlen(str), 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_LITERAL); + yy_assert(err.pos == 0); + + + + // ------------------------------------------------------------------------- + // Failed to open a file. + str = "/yyjson/no_such_file.test"; + // ^ file opening failed + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_file(str, 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_FILE_OPEN); + yy_assert(err.pos == 0); + + // Failed to parse a file. + yy_path_combine(dir, YYJSON_TEST_DATA_PATH, "data", "json", "test_yyjson", "comment_multiline_empty(fail).json", NULL); + memset(&err, -1, sizeof(err)); + yyjson_doc_free(yyjson_read_file(dir, 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_UNEXPECTED_CHARACTER); + yy_assert(err.pos == 0); + +#endif +} + + + +static void test_write_err_code(void) { +#if !YYJSON_DISABLE_WRITER + yyjson_mut_doc *doc; + yyjson_mut_val *val; + yyjson_write_err err; + char *json; + yyjson_alc alc; + + + + // ------------------------------------------------------------------------- + // Success, no error. + memset(&err, -1, sizeof(err)); + doc = yyjson_mut_doc_new(NULL); + val = yyjson_mut_int(doc, 123); + yyjson_mut_doc_set_root(doc, val); + json = yyjson_mut_write_opts(doc, 0, NULL, NULL, &err); + yy_assert(strcmp(json, "123") == 0); + yyjson_mut_doc_free(doc); + free(json); + yy_assert(err.code == YYJSON_WRITE_SUCCESS); + + + + // ------------------------------------------------------------------------- + // Invalid parameter, such as NULL document. + memset(&err, -1, sizeof(err)); + json = yyjson_mut_write_opts(NULL, 0, NULL, NULL, &err); + yy_assert(json == NULL); + yy_assert(err.code == YYJSON_WRITE_ERROR_INVALID_PARAMETER); + + + + // ------------------------------------------------------------------------- + // Memory allocation failure occurs. + yyjson_alc_pool_init(&alc, NULL, 0); + memset(&err, -1, sizeof(err)); + doc = yyjson_mut_doc_new(NULL); + val = yyjson_mut_int(doc, 123); + yyjson_mut_doc_set_root(doc, val); + json = yyjson_mut_write_opts(doc, 0, &alc, NULL, &err); + yy_assert(json == NULL); + yyjson_mut_doc_free(doc); + yy_assert(err.code == YYJSON_WRITE_ERROR_MEMORY_ALLOCATION); + + + + // ------------------------------------------------------------------------- + // Invalid value type in JSON document. + memset(&err, -1, sizeof(err)); + doc = yyjson_mut_doc_new(NULL); + val = yyjson_mut_int(doc, 123); + unsafe_yyjson_set_type(val, YYJSON_TYPE_NONE, YYJSON_SUBTYPE_NONE); + yyjson_mut_doc_set_root(doc, val); + json = yyjson_mut_write_opts(doc, 0, NULL, NULL, &err); + yy_assert(json == NULL); + yyjson_mut_doc_free(doc); + yy_assert(err.code == YYJSON_WRITE_ERROR_INVALID_VALUE_TYPE); + + + + // ------------------------------------------------------------------------- + // NaN or Infinity number occurs. + memset(&err, -1, sizeof(err)); + doc = yyjson_mut_doc_new(NULL); + val = yyjson_mut_real(doc, INFINITY); + yyjson_mut_doc_set_root(doc, val); + json = yyjson_mut_write_opts(doc, 0, NULL, NULL, &err); + yy_assert(json == NULL); + yyjson_mut_doc_free(doc); + yy_assert(err.code == YYJSON_WRITE_ERROR_NAN_OR_INF); + + + + // ------------------------------------------------------------------------- + // Invalid unicode in string. + memset(&err, -1, sizeof(err)); + doc = yyjson_mut_doc_new(NULL); + val = yyjson_mut_strn(doc, "abc\x80", 4); + yyjson_mut_doc_set_root(doc, val); + json = yyjson_mut_write_opts(doc, 0, NULL, NULL, &err); + yy_assert(json == NULL); + yyjson_mut_doc_free(doc); + yy_assert(err.code == YYJSON_WRITE_ERROR_INVALID_STRING); + +#endif +} + + + +static void test_locate_pos(void) { + const char *str; + size_t len, pos, line, col, chr; + + // ------------------------------------------------------------------------- + // Invalid input. + yy_assert(!yyjson_locate_pos(NULL, 0, 0, NULL, NULL, NULL)); + + line = col = chr = SIZE_MAX; + yy_assert(!yyjson_locate_pos(NULL, 0, 0, &line, &col, &chr)); + yy_assert(line == 0 && col == 0 && chr == 0); + + yy_assert(!yyjson_locate_pos("abc", 3, 4, NULL, NULL, NULL)); + + line = col = chr = SIZE_MAX; + yy_assert(!yyjson_locate_pos("abc", 3, 4, &line, &col, &chr)); + yy_assert(line == 0 && col == 0 && chr == 0); + + // ------------------------------------------------------------------------- + // Empty. + yy_assert(yyjson_locate_pos("", 0, 0, &line, &col, &chr)); + yy_assert(line == 1 && col == 1 && chr == 0); + + // ------------------------------------------------------------------------- + // Empty new line. + yy_assert(yyjson_locate_pos("\n", 1, 0, &line, &col, &chr)); + yy_assert(line == 1 && col == 1 && chr == 0); + yy_assert(yyjson_locate_pos("\n", 1, 1, &line, &col, &chr)); + yy_assert(line == 2 && col == 1 && chr == 1); + yy_assert(yyjson_locate_pos("\n\n", 2, 1, &line, &col, &chr)); + yy_assert(line == 2 && col == 1 && chr == 1); + yy_assert(yyjson_locate_pos("\n\n", 2, 2, &line, &col, &chr)); + yy_assert(line == 3 && col == 1 && chr == 2); + + // ------------------------------------------------------------------------- + // 1 line. + str = "abc"; + len = strlen(str); + for (pos = 0; pos <= len; pos++) { + yy_assert(yyjson_locate_pos(str, len, pos, &line, &col, &chr)); + yy_assert(line == 1 && col == pos + 1 && chr == pos); + } + + // ------------------------------------------------------------------------- + // 2 lines. + str = "abc\ndef"; + len = strlen(str); + for (pos = 0; pos <= len; pos++) { + yy_assert(yyjson_locate_pos(str, len, pos, &line, &col, &chr)); + if (pos <= 3) { + yy_assert(line == 1 && col == pos + 1 && chr == pos); + } else { + yy_assert(line == 2 && col == pos - 4 + 1 && chr == pos); + } + } + + // ------------------------------------------------------------------------- + // 3 lines. + str = "abc\ndef\nghijklmn"; + len = strlen(str); + for (pos = 0; pos <= len; pos++) { + yy_assert(yyjson_locate_pos(str, len, pos, &line, &col, &chr)); + if (pos <= 3) { + yy_assert(line == 1 && col == pos + 1 && chr == pos); + } else if (pos <= 7) { + yy_assert(line == 2 && col == pos - 4 + 1 && chr == pos); + } else { + yy_assert(line == 3 && col == pos - 8 + 1 && chr == pos); + } + } + + // ------------------------------------------------------------------------- + // Unicode. + str = "abcé果😀"; // 1-4 byte UTF-8 + len = strlen(str); + for (pos = 0; pos <= len; pos++) { + size_t pos_uni = pos; + if (4 <= pos && pos <= 5) pos_uni = 4; + if (6 <= pos && pos <= 8) pos_uni = 5; + if (9 <= pos && pos <= 12) pos_uni = 6; + yy_assert(yyjson_locate_pos(str, len, pos, &line, &col, &chr)); + yy_assert(line == 1 && col == pos_uni + 1 && chr == pos_uni); + } + str = "abcdef"; // invalid UTF-8 + len = strlen(str); + char buf[7] = { 0 }; + memcpy(buf, str, len + 1); + buf[1] = 0x80; + buf[2] = 0xF8; + for (pos = 0; pos <= len; pos++) { + yy_assert(yyjson_locate_pos(buf, len, pos, &line, &col, &chr)); + yy_assert(line == 1 && col == pos + 1 && chr == pos); + } + // UTF-8 BOM. + buf[0] = 0xEF; + buf[1] = 0xBB; + buf[2] = 0xBF; + for (pos = 0; pos <= len; pos++) { + yy_assert(yyjson_locate_pos(buf, len, pos, &line, &col, &chr)); + if (pos < 3) { + // Don't allow BOM, pos should always be 0. + yy_assert(line == 1 && col == (pos ? 2 : 1) && chr == (pos ? 1 : 0)); + } else { + // Allow BOM, don't count BOM as a character. + size_t pos_uni = pos - 3; + yy_assert(line == 1 && col == pos_uni + 1 && chr == pos_uni); + } + } +} + + + +yy_test_case(test_err_code) { + test_read_err_code(); + test_write_err_code(); + test_locate_pos(); +} diff --git a/lib/yyjson-0.12.0/test/test_json_merge_patch.c b/lib/yyjson-0.12.0/test/test_json_merge_patch.c new file mode 100644 index 00000000000..25492eae463 --- /dev/null +++ b/lib/yyjson-0.12.0/test/test_json_merge_patch.c @@ -0,0 +1,82 @@ +// This file is used to test the `JSON Merge Patch` functions. + +#include "yyjson.h" +#include "yy_test_utils.h" + +#if !YYJSON_DISABLE_UTILS + +static void test_one(const char *orig_json, + const char *patch_json, + const char *expt_json) { +#if !YYJSON_DISABLE_READER + yyjson_doc *i_orig_doc = yyjson_read(orig_json, strlen(orig_json), 0); + yyjson_doc *i_patch_doc = yyjson_read(patch_json, strlen(patch_json), 0); + yyjson_doc *i_expe_doc = yyjson_read(expt_json, strlen(expt_json), 0); + yyjson_mut_doc *m_orig_doc = yyjson_doc_mut_copy(i_orig_doc, NULL); + yyjson_mut_doc *m_patch_doc = yyjson_doc_mut_copy(i_patch_doc, NULL); + yyjson_mut_doc *m_expe_doc = yyjson_doc_mut_copy(i_expe_doc, NULL); + + yyjson_mut_doc *doc = yyjson_mut_doc_new(NULL); + yyjson_mut_val *ret1 = yyjson_merge_patch(doc, i_orig_doc->root, i_patch_doc->root); + yyjson_mut_val *ret2 = yyjson_mut_merge_patch(doc, m_orig_doc->root, m_patch_doc->root); + +#if !YYJSON_DISABLE_WRITER + char *str1 = yyjson_mut_val_write(ret1, 0, NULL); + char *str2 = yyjson_mut_val_write(ret2, 0, NULL); + yy_assert(strcmp(expt_json, str1) == 0); + yy_assert(strcmp(expt_json, str2) == 0); + free(str1); + free(str2); +#endif + + yy_assert(yyjson_mut_equals(m_expe_doc->root, ret1)); + yy_assert(yyjson_mut_equals(m_expe_doc->root, ret2)); + + yy_assert(yyjson_merge_patch(NULL, NULL, NULL) == NULL); + yy_assert(yyjson_merge_patch(NULL, i_orig_doc->root, NULL) == NULL); + yy_assert(yyjson_merge_patch(NULL, NULL, i_patch_doc->root) == NULL); + yy_assert(yyjson_merge_patch(NULL, i_orig_doc->root, i_patch_doc->root) == NULL); + yy_assert(yyjson_merge_patch(doc, i_orig_doc->root, NULL) == NULL); + yy_assert(yyjson_merge_patch(doc, NULL, i_patch_doc->root) != NULL); + + yy_assert(yyjson_mut_merge_patch(NULL, NULL, NULL) == NULL); + yy_assert(yyjson_mut_merge_patch(NULL, m_orig_doc->root, NULL) == NULL); + yy_assert(yyjson_mut_merge_patch(NULL, NULL, m_patch_doc->root) == NULL); + yy_assert(yyjson_mut_merge_patch(NULL, m_orig_doc->root, m_patch_doc->root) == NULL); + yy_assert(yyjson_mut_merge_patch(doc, m_orig_doc->root, NULL) == NULL); + yy_assert(yyjson_mut_merge_patch(doc, NULL, m_patch_doc->root) != NULL); + + yyjson_mut_doc_free(doc); + yyjson_mut_doc_free(m_expe_doc); + yyjson_mut_doc_free(m_patch_doc); + yyjson_mut_doc_free(m_orig_doc); + yyjson_doc_free(i_expe_doc); + yyjson_doc_free(i_patch_doc); + yyjson_doc_free(i_orig_doc); + +#endif +} + +yy_test_case(test_json_merge_patch) { + // test cases from spec: https://tools.ietf.org/html/rfc7386 + test_one("{\"a\":\"b\"}", "{\"a\":\"c\"}", "{\"a\":\"c\"}"); + test_one("{\"a\":\"b\"}", "{\"b\":\"c\"}", "{\"a\":\"b\",\"b\":\"c\"}"); + test_one("{\"a\":\"b\"}", "{\"a\":null }", "{}"); + test_one("{\"a\":\"b\"}", "{\"a\":null }", "{}"); + test_one("{\"a\":\"b\", \"b\":\"c\"}", "{\"a\":null }", "{\"b\":\"c\"}"); + test_one("{\"a\":[\"b\"] }", "{\"a\":\"c\"}", "{\"a\":\"c\"}"); + test_one("{\"a\":\"c\"}", "{\"a\":[\"b\"]}", "{\"a\":[\"b\"]}"); + test_one("{\"a\":{\"b\":\"c\"}}", "{\"a\":{\"b\":\"d\",\"c\":null}}", "{\"a\":{\"b\":\"d\"}}"); + test_one("{\"a\":{\"b\":\"c\"}}", "{\"a\":[1]}", "{\"a\":[1]}"); + test_one("[\"a\",\"b\"]", "[\"c\",\"d\"]", "[\"c\",\"d\"]"); + test_one("{\"a\":\"b\"}", "[\"c\"]", "[\"c\"]"); + test_one("{\"a\":\"foo\"}", "null", "null"); + test_one("{\"a\":\"foo\"}", "\"bar\"", "\"bar\""); + test_one("{\"e\":null}", "{\"a\":1}", "{\"e\":null,\"a\":1}"); + test_one("[1,2]", "{\"a\":\"b\",\"c\":null}", "{\"a\":\"b\"}"); + test_one("{}", "{\"a\":{\"bb\":{\"ccc\":null}}}", "{\"a\":{\"bb\":{}}}"); +} + +#else +yy_test_case(test_json_merge_patch) {} +#endif diff --git a/lib/yyjson-0.12.0/test/test_json_mut_val.c b/lib/yyjson-0.12.0/test/test_json_mut_val.c new file mode 100644 index 00000000000..d81060754c6 --- /dev/null +++ b/lib/yyjson-0.12.0/test/test_json_mut_val.c @@ -0,0 +1,2351 @@ +// This file is used to test the functions related to `yyjson_mut_val`. + +#include "yyjson.h" +#include "yy_test_utils.h" + + + +/*============================================================================== + * MARK: - Val + *============================================================================*/ + +/// Validate value type +static bool validate_mut_val_type(yyjson_mut_val *val, + yyjson_type type, + yyjson_subtype subtype) { + + if (yyjson_mut_is_raw(val) != (type == YYJSON_TYPE_RAW && + subtype == YYJSON_SUBTYPE_NONE)) return false; + if (yyjson_mut_is_null(val) != (type == YYJSON_TYPE_NULL && + subtype == YYJSON_SUBTYPE_NONE)) return false; + if (yyjson_mut_is_true(val) != (type == YYJSON_TYPE_BOOL && + subtype == YYJSON_SUBTYPE_TRUE)) return false; + if (yyjson_mut_is_false(val) != (type == YYJSON_TYPE_BOOL && + subtype == YYJSON_SUBTYPE_FALSE)) return false; + if (yyjson_mut_is_bool(val) != (type == YYJSON_TYPE_BOOL && + (subtype == YYJSON_SUBTYPE_TRUE || + subtype == YYJSON_SUBTYPE_FALSE))) return false; + if (yyjson_mut_is_uint(val) != (type == YYJSON_TYPE_NUM && + subtype == YYJSON_SUBTYPE_UINT)) return false; + if (yyjson_mut_is_sint(val) != (type == YYJSON_TYPE_NUM && + subtype == YYJSON_SUBTYPE_SINT)) return false; + if (yyjson_mut_is_int(val) != (type == YYJSON_TYPE_NUM && + (subtype == YYJSON_SUBTYPE_UINT || + subtype == YYJSON_SUBTYPE_SINT))) return false; + if (yyjson_mut_is_real(val) != (type == YYJSON_TYPE_NUM && + subtype == YYJSON_SUBTYPE_REAL)) return false; + if (yyjson_mut_is_num(val) != (type == YYJSON_TYPE_NUM && + (subtype == YYJSON_SUBTYPE_UINT || + subtype == YYJSON_SUBTYPE_SINT || + subtype == YYJSON_SUBTYPE_REAL))) return false; + if (yyjson_mut_is_str(val) != (type == YYJSON_TYPE_STR && + subtype == YYJSON_SUBTYPE_NONE)) return false; + if (yyjson_mut_is_arr(val) != (type == YYJSON_TYPE_ARR && + subtype == YYJSON_SUBTYPE_NONE)) return false; + if (yyjson_mut_is_obj(val) != (type == YYJSON_TYPE_OBJ && + subtype == YYJSON_SUBTYPE_NONE)) return false; + if (yyjson_mut_is_ctn(val) != ((type == YYJSON_TYPE_ARR || + type == YYJSON_TYPE_OBJ) && + subtype == YYJSON_SUBTYPE_NONE)) return false; + + if (yyjson_mut_get_type(val) != type) return false; + if (yyjson_mut_get_subtype(val) != subtype) return false; + if (yyjson_mut_get_tag(val) != (type | subtype)) return false; + + return true; +} + +/// Validate creation of mutable string value +static void validate_mut_str(yyjson_mut_doc *doc, + const char *str, usize len, bool suc) { + yyjson_mut_val *val; + + val = yyjson_mut_str(doc, str); + if (suc) { + yy_assert(validate_mut_val_type(val, YYJSON_TYPE_STR, YYJSON_SUBTYPE_NONE)); + yy_assert(strcmp(yyjson_mut_get_type_desc(val), "string") == 0); + yy_assert(strcmp(yyjson_mut_get_str(val), str) == 0); + yy_assert(yyjson_mut_get_len(val) == strlen(str)); + yy_assert(yyjson_mut_equals_str(val, str)); + yy_assert(yyjson_mut_get_str(val) == str); + } else { + yy_assert(val == NULL); + } + + val = yyjson_mut_strn(doc, str, len); + if (suc) { + yy_assert(validate_mut_val_type(val, YYJSON_TYPE_STR, YYJSON_SUBTYPE_NONE)); + yy_assert(strcmp(yyjson_mut_get_type_desc(val), "string") == 0); + yy_assert(strcmp(yyjson_mut_get_str(val), str) == 0); + yy_assert(yyjson_mut_get_len(val) == len); + yy_assert(yyjson_mut_equals_str(val, str) == (strlen(str) == len)); + yy_assert(yyjson_mut_get_str(val) == str); + } else { + yy_assert(val == NULL); + } + + val = yyjson_mut_strcpy(doc, str); + if (suc) { + yy_assert(validate_mut_val_type(val, YYJSON_TYPE_STR, YYJSON_SUBTYPE_NONE)); + yy_assert(strcmp(yyjson_mut_get_type_desc(val), "string") == 0); + yy_assert(strcmp(yyjson_mut_get_str(val), str) == 0); + yy_assert(yyjson_mut_get_len(val) == strlen(str)); + yy_assert(yyjson_mut_equals_str(val, str)); + yy_assert(yyjson_mut_get_str(val) != str); + } else { + yy_assert(val == NULL); + } + + val = yyjson_mut_strncpy(doc, str, len); + if (suc) { + yy_assert(validate_mut_val_type(val, YYJSON_TYPE_STR, YYJSON_SUBTYPE_NONE)); + yy_assert(strcmp(yyjson_mut_get_type_desc(val), "string") == 0); + yy_assert(strcmp(yyjson_mut_get_str(val), str) == 0); + yy_assert(yyjson_mut_get_len(val) == len); + yy_assert(yyjson_mut_equals_str(val, str) == (strlen(str) == len)); + yy_assert(yyjson_mut_get_str(val) != str); + } else { + yy_assert(val == NULL); + } +} + +static void test_json_mut_val_api(void) { + yyjson_mut_doc *doc = yyjson_mut_doc_new(NULL); + yyjson_mut_val *val; + + yy_assert(yyjson_mut_raw(NULL, NULL) == NULL); + yy_assert(yyjson_mut_raw(NULL, "abc") == NULL); + yy_assert(yyjson_mut_raw(doc, NULL) == NULL); + val = yyjson_mut_raw(doc, "abc"); + yy_assert(validate_mut_val_type(val, YYJSON_TYPE_RAW, YYJSON_SUBTYPE_NONE)); + yy_assert(strcmp(yyjson_mut_get_type_desc(val), "raw") == 0); + yy_assert(strcmp(yyjson_mut_get_raw(val), "abc") == 0); + yy_assert(yyjson_mut_get_len(val) == 3); + + yy_assert(yyjson_mut_rawcpy(NULL, NULL) == NULL); + yy_assert(yyjson_mut_rawcpy(NULL, "abc") == NULL); + yy_assert(yyjson_mut_rawcpy(doc, NULL) == NULL); + val = yyjson_mut_rawcpy(doc, "abc"); + yy_assert(validate_mut_val_type(val, YYJSON_TYPE_RAW, YYJSON_SUBTYPE_NONE)); + yy_assert(strcmp(yyjson_mut_get_type_desc(val), "raw") == 0); + yy_assert(strcmp(yyjson_mut_get_raw(val), "abc") == 0); + yy_assert(yyjson_mut_get_len(val) == 3); + + yy_assert(yyjson_mut_rawn(NULL, NULL, 0) == NULL); + yy_assert(yyjson_mut_rawn(NULL, "abc", 3) == NULL); + yy_assert(yyjson_mut_rawn(doc, NULL, 0) == NULL); + val = yyjson_mut_rawn(doc, "abc(garbage)", 3); + yy_assert(validate_mut_val_type(val, YYJSON_TYPE_RAW, YYJSON_SUBTYPE_NONE)); + yy_assert(strcmp(yyjson_mut_get_type_desc(val), "raw") == 0); + yy_assert(strncmp(yyjson_mut_get_raw(val), "abc", 3) == 0); + yy_assert(yyjson_mut_get_len(val) == 3); + + yy_assert(yyjson_mut_rawncpy(NULL, NULL, 0) == NULL); + yy_assert(yyjson_mut_rawncpy(NULL, "abc", 3) == NULL); + yy_assert(yyjson_mut_rawncpy(doc, NULL, 3) == NULL); + val = yyjson_mut_rawncpy(doc, "abc(garbage)", 3); + yy_assert(validate_mut_val_type(val, YYJSON_TYPE_RAW, YYJSON_SUBTYPE_NONE)); + yy_assert(strcmp(yyjson_mut_get_type_desc(val), "raw") == 0); + yy_assert(strncmp(yyjson_mut_get_raw(val), "abc", 3) == 0); + yy_assert(yyjson_mut_get_len(val) == 3); + + yy_assert(yyjson_mut_null(NULL) == NULL); + val = yyjson_mut_null(doc); + yy_assert(validate_mut_val_type(val, YYJSON_TYPE_NULL, YYJSON_SUBTYPE_NONE)); + yy_assert(strcmp(yyjson_mut_get_type_desc(val), "null") == 0); + + yy_assert(yyjson_mut_true(NULL) == NULL); + val = yyjson_mut_true(doc); + yy_assert(validate_mut_val_type(val, YYJSON_TYPE_BOOL, YYJSON_SUBTYPE_TRUE)); + yy_assert(strcmp(yyjson_mut_get_type_desc(val), "true") == 0); + yy_assert(yyjson_mut_get_bool(val) == true); + + yy_assert(yyjson_mut_bool(NULL, true) == NULL); + val = yyjson_mut_bool(doc, true); + yy_assert(validate_mut_val_type(val, YYJSON_TYPE_BOOL, YYJSON_SUBTYPE_TRUE)); + yy_assert(strcmp(yyjson_mut_get_type_desc(val), "true") == 0); + yy_assert(yyjson_mut_get_bool(val) == true); + + yy_assert(yyjson_mut_false(NULL) == NULL); + val = yyjson_mut_false(doc); + yy_assert(validate_mut_val_type(val, YYJSON_TYPE_BOOL, YYJSON_SUBTYPE_FALSE)); + yy_assert(strcmp(yyjson_mut_get_type_desc(val), "false") == 0); + yy_assert(yyjson_mut_get_bool(val) == false); + + yy_assert(yyjson_mut_bool(NULL, false) == NULL); + val = yyjson_mut_bool(doc, false); + yy_assert(validate_mut_val_type(val, YYJSON_TYPE_BOOL, YYJSON_SUBTYPE_FALSE)); + yy_assert(strcmp(yyjson_mut_get_type_desc(val), "false") == 0); + yy_assert(yyjson_mut_get_bool(val) == false); + + yy_assert(yyjson_mut_uint(NULL, 123) == NULL); + val = yyjson_mut_uint(doc, 123); + yy_assert(validate_mut_val_type(val, YYJSON_TYPE_NUM, YYJSON_SUBTYPE_UINT)); + yy_assert(strcmp(yyjson_mut_get_type_desc(val), "uint") == 0); + yy_assert(yyjson_mut_get_uint(val) == (u64)123); + yy_assert(yyjson_mut_get_sint(val) == (i64)123); + yy_assert(yyjson_mut_get_int(val) == (i64)123); + yy_assert(yyjson_mut_get_real(val) == (f64)0); + yy_assert(yyjson_mut_get_num(val) == (f64)123); + yy_assert(yyjson_mut_get_bool(val) == false); + + yy_assert(yyjson_mut_sint(NULL, -123) == NULL); + val = yyjson_mut_sint(doc, -123); + yy_assert(validate_mut_val_type(val, YYJSON_TYPE_NUM, YYJSON_SUBTYPE_SINT)); + yy_assert(strcmp(yyjson_mut_get_type_desc(val), "sint") == 0); + yy_assert(yyjson_mut_get_uint(val) == (u64)-123); + yy_assert(yyjson_mut_get_sint(val) == (i64)-123); + yy_assert(yyjson_mut_get_int(val) == (i64)-123); + yy_assert(yyjson_mut_get_real(val) == (f64)0); + yy_assert(yyjson_mut_get_num(val) == (f64)-123); + + yy_assert(yyjson_mut_float(NULL, (f32)123.0) == NULL); + val = yyjson_mut_float(doc, (f32)123.0); + yy_assert(validate_mut_val_type(val, YYJSON_TYPE_NUM, YYJSON_SUBTYPE_REAL)); + yy_assert((val->tag >> 32) == YYJSON_WRITE_FP_TO_FLOAT); + yy_assert(strcmp(yyjson_mut_get_type_desc(val), "real") == 0); + yy_assert(yyjson_mut_get_uint(val) == (u64)0); + yy_assert(yyjson_mut_get_sint(val) == (i64)0); + yy_assert(yyjson_mut_get_int(val) == (i64)0); + yy_assert((f32)yyjson_mut_get_real(val) == (f32)123.0); + yy_assert((f32)yyjson_mut_get_num(val) == (f32)123.0); + + yy_assert(yyjson_mut_double(NULL, 123.0) == NULL); + val = yyjson_mut_double(doc, 123.0); + yy_assert(validate_mut_val_type(val, YYJSON_TYPE_NUM, YYJSON_SUBTYPE_REAL)); + yy_assert((val->tag >> 32) == 0); + yy_assert(strcmp(yyjson_mut_get_type_desc(val), "real") == 0); + yy_assert(yyjson_mut_get_uint(val) == (u64)0); + yy_assert(yyjson_mut_get_sint(val) == (i64)0); + yy_assert(yyjson_mut_get_int(val) == (i64)0); + yy_assert(yyjson_mut_get_real(val) == (f64)123.0); + yy_assert(yyjson_mut_get_num(val) == (f64)123.0); + + yy_assert(yyjson_mut_real(NULL, 123.0) == NULL); + val = yyjson_mut_real(doc, 123.0); + yy_assert(validate_mut_val_type(val, YYJSON_TYPE_NUM, YYJSON_SUBTYPE_REAL)); + yy_assert(strcmp(yyjson_mut_get_type_desc(val), "real") == 0); + yy_assert(yyjson_mut_get_uint(val) == (u64)0); + yy_assert(yyjson_mut_get_sint(val) == (i64)0); + yy_assert(yyjson_mut_get_int(val) == (i64)0); + yy_assert(yyjson_mut_get_real(val) == (f64)123.0); + yy_assert(yyjson_mut_get_num(val) == (f64)123.0); + + yy_assert(yyjson_mut_arr(NULL) == NULL); + val = yyjson_mut_arr(doc); + yy_assert(validate_mut_val_type(val, YYJSON_TYPE_ARR, YYJSON_SUBTYPE_NONE)); + yy_assert(strcmp(yyjson_mut_get_type_desc(val), "array") == 0); + + yy_assert(yyjson_mut_obj(NULL) == NULL); + val = yyjson_mut_obj(doc); + yy_assert(validate_mut_val_type(val, YYJSON_TYPE_OBJ, YYJSON_SUBTYPE_NONE)); + yy_assert(strcmp(yyjson_mut_get_type_desc(val), "object") == 0); + + val = NULL; + yy_assert(validate_mut_val_type(val, YYJSON_TYPE_NONE, YYJSON_SUBTYPE_NONE)); + + yy_assert(yyjson_mut_str(NULL, "abc") == NULL); + yy_assert(yyjson_mut_strn(NULL, "abc", 3) == NULL); + yy_assert(yyjson_mut_strcpy(NULL, "abc") == NULL); + yy_assert(yyjson_mut_strncpy(NULL, "abc", 3) == NULL); + validate_mut_str(doc, NULL, 0, false); + validate_mut_str(doc, NULL, 1, false); + validate_mut_str(doc, "", 0, true); + validate_mut_str(doc, "abc", 3, true); + validate_mut_str(doc, "abc\0def", 7, true); + validate_mut_str(doc, "\0abc", 4, true); + validate_mut_str(doc, "abc\0", 4, true); + validate_mut_str(doc, "\0", 1, true); + validate_mut_str(doc, "\0\0\0", 3, true); + + yyjson_mut_doc_free(doc); +} + + + +/*============================================================================== + * MARK: - Arr + *============================================================================*/ + +/// Validate array with int +static void validate_mut_arr(yyjson_mut_val *arr, i64 *cmp, usize len) { + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + yy_assert(yyjson_mut_is_arr(NULL) == false); + yy_assert(yyjson_mut_arr_size(NULL) == 0); + + yyjson_mut_arr_iter iter; + yyjson_mut_val *val; + usize idx, max, count; + int tmp[8]; + + if (len == 0) { + val = yyjson_mut_arr_get(arr, 0); + yy_assert(val == NULL); + val = yyjson_mut_arr_get_first(arr); + yy_assert(val == NULL); + val = yyjson_mut_arr_get_last(arr); + yy_assert(val == NULL); + + iter = yyjson_mut_arr_iter_with(arr); + yy_assert(yyjson_mut_arr_iter_has_next(&iter) == false); + while ((val = yyjson_mut_arr_iter_next(&iter))) { + yy_assert(false); + } + yy_assert(yyjson_mut_arr_iter_has_next(&iter) == false); + + yyjson_mut_arr_foreach(arr, idx, max, val) { + yy_assert(false); + } + + } else { + for (usize i = 0; i < len; i++) { + val = yyjson_mut_arr_get(arr, i); + yy_assert(yyjson_mut_get_int(val) == cmp[i]); + } + val = yyjson_mut_arr_get(arr, len); + yy_assert(val == NULL); + val = yyjson_mut_arr_get_first(arr); + yy_assert(yyjson_mut_get_int(val) == cmp[0]); + val = yyjson_mut_arr_get_last(arr); + yy_assert(yyjson_mut_get_int(val) == cmp[len - 1]); + + count = 0; + memset(tmp, 0, sizeof(tmp)); + yyjson_mut_arr_iter_init(arr, &iter); + yy_assert(yyjson_mut_arr_iter_has_next(&iter) == true); + while ((val = yyjson_mut_arr_iter_next(&iter))) { + yy_assert(yyjson_mut_get_int(val) == cmp[count]); + yy_assert(tmp[count] == 0); + tmp[count] = 1; + count++; + yy_assert(yyjson_mut_arr_iter_has_next(&iter) == count < len); + } + yy_assert(yyjson_mut_arr_iter_has_next(&iter) == false); + yy_assert(count == len); + + count = 0; + memset(tmp, 0, sizeof(tmp)); + yyjson_mut_arr_foreach(arr, idx, max, val) { + yy_assert(yyjson_mut_get_int(val) == cmp[count]); + yy_assert(tmp[count] == 0); + yy_assert(count == idx); + yy_assert(max == len); + tmp[count] = 1; + count++; + } + yy_assert(count == len); + } +} + +static void test_json_mut_arr_api(void) { + yyjson_mut_doc *doc = yyjson_mut_doc_new(NULL); + yyjson_mut_val *arr, *val, *num1, *num2, *num3, *num4, *num5, *num6; + yyjson_mut_arr_iter iter; + i64 cmp[8]; + i32 idx; + + num1 = yyjson_mut_int(doc, 1); + num2 = yyjson_mut_int(doc, 2); + num3 = yyjson_mut_int(doc, 3); + num4 = yyjson_mut_int(doc, 4); + num5 = yyjson_mut_int(doc, 5); + num6 = yyjson_mut_int(doc, 6); + arr = yyjson_mut_arr(doc); + + + //--------------------------------------------- + // append() + + yy_assert(yyjson_mut_arr_append(NULL, num1) == false); + + cmp[0] = 1; + cmp[1] = 2; + cmp[2] = 3; + + validate_mut_arr(arr, cmp, 0); + + yy_assert(yyjson_mut_arr_append(arr, num1)); + validate_mut_arr(arr, cmp, 1); + + yy_assert(yyjson_mut_arr_append(arr, num2)); + validate_mut_arr(arr, cmp, 2); + + yy_assert(yyjson_mut_arr_append(arr, num3)); + validate_mut_arr(arr, cmp, 3); + + yyjson_mut_arr_clear(arr); + validate_mut_arr(arr, cmp, 0); + + + //--------------------------------------------- + // prepend() + + yy_assert(yyjson_mut_arr_prepend(NULL, num1) == false); + + cmp[0] = 1; + yy_assert(yyjson_mut_arr_prepend(arr, num1)); + validate_mut_arr(arr, cmp, 1); + + cmp[0] = 2; + cmp[1] = 1; + yy_assert(yyjson_mut_arr_prepend(arr, num2)); + validate_mut_arr(arr, cmp, 2); + + cmp[0] = 3; + cmp[1] = 2; + cmp[2] = 1; + yy_assert(yyjson_mut_arr_prepend(arr, num3)); + validate_mut_arr(arr, cmp, 3); + + yyjson_mut_arr_clear(arr); + + + //--------------------------------------------- + // rotate(idx) + + yy_assert(!yyjson_mut_arr_rotate(arr, 0)); + + cmp[0] = 2; + cmp[1] = 1; + + yy_assert(yyjson_mut_arr_append(arr, num1)); + yy_assert(yyjson_mut_arr_append(arr, num2)); + + yy_assert(yyjson_mut_arr_rotate(arr, 1)); + validate_mut_arr(arr, cmp, 2); + + yy_assert(yyjson_mut_arr_rotate(arr, 0)); + yy_assert(!yyjson_mut_arr_rotate(arr, 2)); + + validate_mut_arr(arr, cmp, 2); + yyjson_mut_arr_clear(arr); + + cmp[0] = 3; + cmp[1] = 4; + cmp[2] = 1; + cmp[3] = 2; + + yy_assert(yyjson_mut_arr_append(arr, num1)); + yy_assert(yyjson_mut_arr_append(arr, num2)); + yy_assert(yyjson_mut_arr_append(arr, num3)); + yy_assert(yyjson_mut_arr_append(arr, num4)); + + yy_assert(yyjson_mut_arr_rotate(arr, 2)); + validate_mut_arr(arr, cmp, 4); + + yy_assert(yyjson_mut_arr_rotate(arr, 0)); + yy_assert(yyjson_mut_arr_rotate(arr, 1)); + yy_assert(yyjson_mut_arr_rotate(arr, 3)); + yy_assert(!yyjson_mut_arr_rotate(arr, 4)); + + validate_mut_arr(arr, cmp, 4); + yyjson_mut_arr_clear(arr); + + + //--------------------------------------------- + // insert(idx) + + yy_assert(yyjson_mut_arr_insert(NULL, num1, 0) == false); + + cmp[0] = 1; + yy_assert(yyjson_mut_arr_insert(arr, num1, 0)); + validate_mut_arr(arr, cmp, 1); + + cmp[0] = 1; + cmp[1] = 2; + yy_assert(yyjson_mut_arr_insert(arr, num2, 1)); + validate_mut_arr(arr, cmp, 2); + + cmp[0] = 1; + cmp[1] = 3; + cmp[2] = 2; + yy_assert(yyjson_mut_arr_insert(arr, num3, 1)); + validate_mut_arr(arr, cmp, 3); + + yyjson_mut_arr_clear(arr); + + + //--------------------------------------------- + // replace(first) + + yy_assert(yyjson_mut_arr_replace(NULL, 0, num1) == NULL); + + val = yyjson_mut_arr_replace(arr, 0, num1); + yy_assert(val == NULL); + validate_mut_arr(arr, cmp, 0); + + cmp[0] = 4; + yyjson_mut_arr_append(arr, num1); + val = yyjson_mut_arr_replace(arr, 0, num4); + yy_assert(val == num1); + validate_mut_arr(arr, cmp, 1); + yyjson_mut_arr_clear(arr); + + cmp[0] = 4; + cmp[1] = 2; + yyjson_mut_arr_append(arr, num1); + yyjson_mut_arr_append(arr, num2); + val = yyjson_mut_arr_replace(arr, 0, num4); + yy_assert(val == num1); + validate_mut_arr(arr, cmp, 2); + yyjson_mut_arr_clear(arr); + + cmp[0] = 4; + cmp[1] = 2; + cmp[2] = 3; + yyjson_mut_arr_append(arr, num1); + yyjson_mut_arr_append(arr, num2); + yyjson_mut_arr_append(arr, num3); + val = yyjson_mut_arr_replace(arr, 0, num4); + yy_assert(val == num1); + validate_mut_arr(arr, cmp, 3); + val = yyjson_mut_arr_replace(arr, 0, NULL); + yy_assert(val == NULL); + validate_mut_arr(arr, cmp, 3); + val = yyjson_mut_arr_replace(arr, 3, num5); + yy_assert(val == NULL); + validate_mut_arr(arr, cmp, 3); + yyjson_mut_arr_clear(arr); + + + //--------------------------------------------- + // replace(last) + + cmp[0] = 1; + cmp[1] = 4; + yyjson_mut_arr_append(arr, num1); + yyjson_mut_arr_append(arr, num2); + val = yyjson_mut_arr_replace(arr, 1, num4); + yy_assert(val == num2); + validate_mut_arr(arr, cmp, 2); + yyjson_mut_arr_clear(arr); + + cmp[0] = 1; + cmp[1] = 2; + cmp[2] = 4; + yyjson_mut_arr_append(arr, num1); + yyjson_mut_arr_append(arr, num2); + yyjson_mut_arr_append(arr, num3); + val = yyjson_mut_arr_replace(arr, 2, num4); + yy_assert(val == num3); + validate_mut_arr(arr, cmp, 3); + yyjson_mut_arr_clear(arr); + + + //--------------------------------------------- + // replace(mid) + + cmp[0] = 1; + cmp[1] = 4; + cmp[2] = 3; + yyjson_mut_arr_append(arr, num1); + yyjson_mut_arr_append(arr, num2); + yyjson_mut_arr_append(arr, num3); + val = yyjson_mut_arr_replace(arr, 1, num4); + yy_assert(val == num2); + validate_mut_arr(arr, cmp, 3); + yyjson_mut_arr_clear(arr); + + + //--------------------------------------------- + // remove_last() + + cmp[0] = 1; + cmp[1] = 2; + cmp[2] = 3; + yyjson_mut_arr_append(arr, num1); + yyjson_mut_arr_append(arr, num2); + yyjson_mut_arr_append(arr, num3); + + yy_assert(yyjson_mut_arr_remove_last(arr) == num3); + validate_mut_arr(arr, cmp, 2); + + yy_assert(yyjson_mut_arr_remove_last(arr) == num2); + validate_mut_arr(arr, cmp, 1); + + yy_assert(yyjson_mut_arr_remove_last(arr) == num1); + validate_mut_arr(arr, cmp, 0); + + yy_assert(yyjson_mut_arr_remove_last(arr) == NULL); + validate_mut_arr(arr, cmp, 0); + + yyjson_mut_arr_clear(arr); + + + //--------------------------------------------- + // remove_first() + + yyjson_mut_arr_append(arr, num1); + yyjson_mut_arr_append(arr, num2); + yyjson_mut_arr_append(arr, num3); + + cmp[0] = 2; + cmp[1] = 3; + yy_assert(yyjson_mut_arr_remove_first(arr) == num1); + validate_mut_arr(arr, cmp, 2); + + cmp[0] = 3; + yy_assert(yyjson_mut_arr_remove_first(arr) == num2); + validate_mut_arr(arr, cmp, 1); + + yy_assert(yyjson_mut_arr_remove_first(arr) == num3); + validate_mut_arr(arr, cmp, 0); + + yy_assert(yyjson_mut_arr_remove_first(arr) == NULL); + validate_mut_arr(arr, cmp, 0); + + yyjson_mut_arr_clear(arr); + + + //--------------------------------------------- + // remove(first) + + cmp[0] = 2; + cmp[1] = 3; + yyjson_mut_arr_append(arr, num1); + yyjson_mut_arr_append(arr, num2); + yyjson_mut_arr_append(arr, num3); + + yy_assert(yyjson_mut_arr_remove(arr, 0) == num1); + validate_mut_arr(arr, cmp, 2); + yyjson_mut_arr_clear(arr); + + + //--------------------------------------------- + // remove(mid) + + cmp[0] = 1; + cmp[1] = 3; + yyjson_mut_arr_append(arr, num1); + yyjson_mut_arr_append(arr, num2); + yyjson_mut_arr_append(arr, num3); + + yy_assert(yyjson_mut_arr_remove(arr, 1) == num2); + validate_mut_arr(arr, cmp, 2); + yyjson_mut_arr_clear(arr); + + + //--------------------------------------------- + // remove(last) + + cmp[0] = 1; + cmp[1] = 2; + yyjson_mut_arr_append(arr, num1); + yyjson_mut_arr_append(arr, num2); + yyjson_mut_arr_append(arr, num3); + + yy_assert(yyjson_mut_arr_remove(arr, 2) == num3); + validate_mut_arr(arr, cmp, 2); + + yy_assert(yyjson_mut_arr_remove(arr, 2) == NULL); + validate_mut_arr(arr, cmp, 2); + + yy_assert(yyjson_mut_arr_remove(arr, 1) == num2); + validate_mut_arr(arr, cmp, 1); + + yy_assert(yyjson_mut_arr_remove(arr, 0) == num1); + validate_mut_arr(arr, cmp, 0); + + yy_assert(yyjson_mut_arr_remove(arr, 0) == NULL); + validate_mut_arr(arr, cmp, 0); + + yyjson_mut_arr_clear(arr); + + + //--------------------------------------------- + // remove_range + + yy_assert(!yyjson_mut_arr_remove_range(NULL, 0, 0)); + yy_assert(yyjson_mut_arr_remove_range(arr, 0, 0)); + yy_assert(!yyjson_mut_arr_remove_range(arr, 1, 0)); + yy_assert(!yyjson_mut_arr_remove_range(arr, 0, 1)); + validate_mut_arr(arr, cmp, 0); + + cmp[0] = 1; + cmp[1] = 2; + cmp[2] = 3; + cmp[3] = 4; + yyjson_mut_arr_append(arr, num1); + yyjson_mut_arr_append(arr, num2); + yyjson_mut_arr_append(arr, num3); + yyjson_mut_arr_append(arr, num4); + validate_mut_arr(arr, cmp, 4); + + cmp[0] = 1; + cmp[1] = 4; + yy_assert(yyjson_mut_arr_remove_range(arr, 1, 2)); + validate_mut_arr(arr, cmp, 2); + + yy_assert(!yyjson_mut_arr_remove_range(arr, 1, 2)); + validate_mut_arr(arr, cmp, 2); + + yy_assert(yyjson_mut_arr_remove_range(arr, 0, 2)); + validate_mut_arr(arr, cmp, 0); + + yyjson_mut_arr_clear(arr); + + + //--------------------------------------------- + // iterator + yy_assert(yyjson_mut_arr_iter_init(arr, NULL) == false); + yy_assert(yyjson_mut_arr_iter_init(NULL, &iter) == false); + yy_assert(yyjson_mut_arr_iter_init(NULL, NULL) == false); + yy_assert(yyjson_mut_arr_iter_remove(NULL) == NULL); + + + //--------------------------------------------- + // iterator with remove(last) + + yyjson_mut_arr_append(arr, num1); + yyjson_mut_arr_append(arr, num2); + yyjson_mut_arr_append(arr, num3); + + idx = 1; + cmp[0] = 1; + cmp[1] = 2; + cmp[2] = 3; + yyjson_mut_arr_iter_init(arr, &iter); + while ((val = yyjson_mut_arr_iter_next(&iter))) { + yy_assert(yyjson_mut_get_int(val) == (idx++)); + if (yyjson_mut_get_int(val) == 3) { + yyjson_mut_arr_iter_remove(&iter); + } + } + validate_mut_arr(arr, cmp, 2); + + idx = 1; + yyjson_mut_arr_iter_init(arr, &iter); + while ((val = yyjson_mut_arr_iter_next(&iter))) { + yy_assert(yyjson_mut_get_int(val) == (idx++)); + if (yyjson_mut_get_int(val) == 2) { + yyjson_mut_arr_iter_remove(&iter); + } + } + validate_mut_arr(arr, cmp, 1); + + idx = 1; + yyjson_mut_arr_iter_init(arr, &iter); + while ((val = yyjson_mut_arr_iter_next(&iter))) { + yy_assert(yyjson_mut_get_int(val) == (idx++)); + if (yyjson_mut_get_int(val) == 1) { + yyjson_mut_arr_iter_remove(&iter); + } + } + validate_mut_arr(arr, cmp, 0); + + yyjson_mut_arr_iter_init(arr, &iter); + while ((val = yyjson_mut_arr_iter_next(&iter))) { + yy_assert(false); + } + + yyjson_mut_arr_clear(arr); + + + //--------------------------------------------- + // iterator with remove(first) + + yyjson_mut_arr_append(arr, num1); + yyjson_mut_arr_append(arr, num2); + yyjson_mut_arr_append(arr, num3); + + idx = 1; + cmp[0] = 2; + cmp[1] = 3; + yyjson_mut_arr_iter_init(arr, &iter); + while ((val = yyjson_mut_arr_iter_next(&iter))) { + yy_assert(yyjson_mut_get_int(val) == (idx++)); + if (yyjson_mut_get_int(val) == 1) { + yyjson_mut_val *ret = yyjson_mut_arr_iter_remove(&iter); + yy_assert(ret == val); + } + } + validate_mut_arr(arr, cmp, 2); + + idx = 2; + cmp[0] = 3; + yyjson_mut_arr_iter_init(arr, &iter); + while ((val = yyjson_mut_arr_iter_next(&iter))) { + yy_assert(yyjson_mut_get_int(val) == (idx++)); + if (yyjson_mut_get_int(val) == 2) { + yyjson_mut_val *ret = yyjson_mut_arr_iter_remove(&iter); + yy_assert(ret == val); + } + } + validate_mut_arr(arr, cmp, 1); + + idx = 3; + yyjson_mut_arr_iter_init(arr, &iter); + while ((val = yyjson_mut_arr_iter_next(&iter))) { + yy_assert(yyjson_mut_get_int(val) == (idx++)); + if (yyjson_mut_get_int(val) == 3) { + yyjson_mut_val *ret = yyjson_mut_arr_iter_remove(&iter); + yy_assert(ret == val); + } + } + validate_mut_arr(arr, cmp, 0); + + yyjson_mut_arr_iter_init(arr, &iter); + while ((val = yyjson_mut_arr_iter_next(&iter))) { + yy_assert(false); + } + + yyjson_mut_arr_clear(arr); + + + //--------------------------------------------- + // iterator with remove(mid) + + yyjson_mut_arr_append(arr, num1); + yyjson_mut_arr_append(arr, num2); + yyjson_mut_arr_append(arr, num3); + + idx = 1; + cmp[0] = 1; + cmp[1] = 3; + yyjson_mut_arr_iter_init(arr, &iter); + while ((val = yyjson_mut_arr_iter_next(&iter))) { + yy_assert(yyjson_mut_get_int(val) == (idx++)); + if (yyjson_mut_get_int(val) == 2) { + yyjson_mut_val *ret = yyjson_mut_arr_iter_remove(&iter); + yy_assert(ret == val); + } + } + validate_mut_arr(arr, cmp, 2); + + yyjson_mut_arr_clear(arr); + + + //--------------------------------------------- + // iterator with remove(all) + + yyjson_mut_arr_append(arr, num1); + yyjson_mut_arr_append(arr, num2); + yyjson_mut_arr_append(arr, num3); + + idx = 1; + yyjson_mut_arr_iter_init(arr, &iter); + while ((val = yyjson_mut_arr_iter_next(&iter))) { + yy_assert(yyjson_mut_get_int(val) == (idx++)); + yyjson_mut_val *ret = yyjson_mut_arr_iter_remove(&iter); + yy_assert(ret == val); + } + validate_mut_arr(arr, cmp, 0); + + yyjson_mut_arr_clear(arr); + + + //--------------------------------------------- + // array add() + val = yyjson_mut_str(doc, "abc"); + yy_assert(!yyjson_mut_arr_add_val(NULL, NULL)); + yy_assert(!yyjson_mut_arr_add_val(arr, NULL)); + yy_assert(!yyjson_mut_arr_add_val(NULL, val)); + yy_assert(yyjson_mut_arr_add_val(arr, val)); + yy_assert(yyjson_mut_arr_get_last(arr) == val); + + yy_assert(!yyjson_mut_arr_add_null(NULL, arr)); + yy_assert(!yyjson_mut_arr_add_null(doc, NULL)); + yy_assert(yyjson_mut_arr_add_null(doc, arr)); + val = yyjson_mut_arr_get_last(arr); + yy_assert(yyjson_mut_is_null(val)); + + yy_assert(!yyjson_mut_arr_add_true(NULL, arr)); + yy_assert(!yyjson_mut_arr_add_true(doc, NULL)); + yy_assert(yyjson_mut_arr_add_true(doc, arr)); + val = yyjson_mut_arr_get_last(arr); + yy_assert(yyjson_mut_is_true(val)); + + yy_assert(!yyjson_mut_arr_add_false(NULL, arr)); + yy_assert(!yyjson_mut_arr_add_false(doc, NULL)); + yy_assert(yyjson_mut_arr_add_false(doc, arr)); + val = yyjson_mut_arr_get_last(arr); + yy_assert(yyjson_mut_is_false(val)); + + yy_assert(!yyjson_mut_arr_add_bool(NULL, arr, true)); + yy_assert(!yyjson_mut_arr_add_bool(doc, NULL, true)); + yy_assert(yyjson_mut_arr_add_bool(doc, arr, true)); + val = yyjson_mut_arr_get_last(arr); + yy_assert(yyjson_mut_is_true(val)); + + yy_assert(!yyjson_mut_arr_add_uint(NULL, arr, 12)); + yy_assert(!yyjson_mut_arr_add_uint(doc, NULL, 12)); + yy_assert(yyjson_mut_arr_add_uint(doc, arr, 12)); + val = yyjson_mut_arr_get_last(arr); + yy_assert(yyjson_mut_get_uint(val) == 12); + + yy_assert(!yyjson_mut_arr_add_sint(NULL, arr, -12)); + yy_assert(!yyjson_mut_arr_add_sint(doc, NULL, -12)); + yy_assert(yyjson_mut_arr_add_sint(doc, arr, -12)); + val = yyjson_mut_arr_get_last(arr); + yy_assert(yyjson_mut_get_sint(val) == -12); + + yy_assert(!yyjson_mut_arr_add_int(NULL, arr, -12)); + yy_assert(!yyjson_mut_arr_add_int(doc, NULL, -12)); + yy_assert(yyjson_mut_arr_add_int(doc, arr, -12)); + val = yyjson_mut_arr_get_last(arr); + yy_assert(yyjson_mut_get_int(val) == -12); + + yy_assert(!yyjson_mut_arr_add_float(NULL, arr, (float)-20.0)); + yy_assert(!yyjson_mut_arr_add_float(doc, NULL, (float)-20.0)); + yy_assert(yyjson_mut_arr_add_float(doc, arr, (float)-20.0)); + val = yyjson_mut_arr_get_last(arr); + yy_assert((float)yyjson_mut_get_real(val) == (float)-20.0); + + yy_assert(!yyjson_mut_arr_add_double(NULL, arr, -20.0)); + yy_assert(!yyjson_mut_arr_add_double(doc, NULL, -20.0)); + yy_assert(yyjson_mut_arr_add_double(doc, arr, -20.0)); + val = yyjson_mut_arr_get_last(arr); + yy_assert(yyjson_mut_get_real(val) == -20.0); + + yy_assert(!yyjson_mut_arr_add_real(NULL, arr, -20.0)); + yy_assert(!yyjson_mut_arr_add_real(doc, NULL, -20.0)); + yy_assert(yyjson_mut_arr_add_real(doc, arr, -20.0)); + val = yyjson_mut_arr_get_last(arr); + yy_assert(yyjson_mut_get_real(val) == -20.0); + + yy_assert(!yyjson_mut_arr_add_str(NULL, arr, "abc")); + yy_assert(!yyjson_mut_arr_add_str(doc, NULL, "abc")); + yy_assert(!yyjson_mut_arr_add_str(doc, arr, NULL)); + yy_assert(yyjson_mut_arr_add_str(doc, arr, "abc")); + val = yyjson_mut_arr_get_last(arr); + yy_assert(yyjson_mut_equals_str(val, "abc")); + + yy_assert(!yyjson_mut_arr_add_strn(NULL, arr, "abc\0def", 7)); + yy_assert(!yyjson_mut_arr_add_strn(doc, NULL, "abc\0def", 7)); + yy_assert(yyjson_mut_arr_add_strn(doc, arr, "abc\0def", 7)); + val = yyjson_mut_arr_get_last(arr); + yy_assert(yyjson_mut_equals_strn(val, "abc\0def", 7)); + + yy_assert(!yyjson_mut_arr_add_strcpy(NULL, arr, "abc")); + yy_assert(!yyjson_mut_arr_add_strcpy(doc, NULL, "abc")); + yy_assert(!yyjson_mut_arr_add_strcpy(doc, arr, NULL)); + yy_assert(yyjson_mut_arr_add_strcpy(doc, arr, "abc")); + val = yyjson_mut_arr_get_last(arr); + yy_assert(yyjson_mut_equals_str(val, "abc")); + + yy_assert(!yyjson_mut_arr_add_strncpy(NULL, arr, "abc\0def", 7)); + yy_assert(!yyjson_mut_arr_add_strncpy(doc, NULL, "abc\0def", 7)); + yy_assert(yyjson_mut_arr_add_strncpy(doc, arr, "abc\0def", 7)); + val = yyjson_mut_arr_get_last(arr); + yy_assert(yyjson_mut_equals_strn(val, "abc\0def", 7)); + + yyjson_mut_arr_clear(arr); + yy_assert(!yyjson_mut_arr_add_arr(NULL, NULL)); + yy_assert(!yyjson_mut_arr_add_arr(NULL, arr)); + yy_assert(!yyjson_mut_arr_add_arr(doc, NULL)); + val = yyjson_mut_arr_add_arr(doc, arr); + yy_assert(yyjson_mut_is_arr(val)); + yy_assert(yyjson_mut_arr_get_first(arr) == val); + yy_assert(yyjson_mut_arr_get_last(arr) == val); + + yyjson_mut_arr_clear(arr); + yy_assert(!yyjson_mut_arr_add_obj(NULL, NULL)); + yy_assert(!yyjson_mut_arr_add_obj(NULL, arr)); + yy_assert(!yyjson_mut_arr_add_obj(doc, NULL)); + val = yyjson_mut_arr_add_obj(doc, arr); + yy_assert(yyjson_mut_is_obj(val)); + yy_assert(yyjson_mut_arr_get_first(arr) == val); + yy_assert(yyjson_mut_arr_get_last(arr) == val); + + + //--------------------------------------------- + // array with bool + { + usize len = 0; + yy_assert(yyjson_mut_arr_with_bool(NULL, NULL, 0) == NULL); + arr = yyjson_mut_arr_with_bool(doc, NULL, len); + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + } + { + bool vals[] = {true}; + usize len = 0; + yy_assert(yyjson_mut_arr_with_bool(doc, vals, SIZE_MAX / 2) == NULL); + arr = yyjson_mut_arr_with_bool(doc, vals, len); + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + } + { + bool vals[] = {true}; + usize len = sizeof(vals) / sizeof(vals[0]); + arr = yyjson_mut_arr_with_bool(doc, vals, len); + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + val = yyjson_mut_arr_get(arr, 0); + yy_assert(yyjson_mut_is_true(val)); + } + { + bool vals[] = {true, false}; + usize len = sizeof(vals) / sizeof(vals[0]); + arr = yyjson_mut_arr_with_bool(doc, vals, len); + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + val = yyjson_mut_arr_get(arr, 0); + yy_assert(yyjson_mut_is_true(val)); + val = yyjson_mut_arr_get(arr, 1); + yy_assert(yyjson_mut_is_false(val)); + } + { + bool vals[] = {true, false, true}; + usize len = sizeof(vals) / sizeof(vals[0]); + arr = yyjson_mut_arr_with_bool(doc, vals, len); + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + val = yyjson_mut_arr_get(arr, 0); + yy_assert(yyjson_mut_is_true(val)); + val = yyjson_mut_arr_get(arr, 1); + yy_assert(yyjson_mut_is_false(val)); + val = yyjson_mut_arr_get(arr, 2); + yy_assert(yyjson_mut_is_true(val)); + } + + //--------------------------------------------- + // array with sint + { + i64 vals[] = {1, -2, 3}; + usize len = sizeof(vals) / sizeof(vals[0]); + arr = yyjson_mut_arr_with_sint(doc, vals, len); + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + val = yyjson_mut_arr_get(arr, 0); + yy_assert(yyjson_mut_get_sint(val) == 1); + val = yyjson_mut_arr_get(arr, 1); + yy_assert(yyjson_mut_get_sint(val) == -2); + val = yyjson_mut_arr_get(arr, 2); + yy_assert(yyjson_mut_get_sint(val) == 3); + } + { + i8 vals[] = {1, -2, 3}; + usize len = sizeof(vals) / sizeof(vals[0]); + arr = yyjson_mut_arr_with_sint8(doc, vals, len); + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + val = yyjson_mut_arr_get(arr, 0); + yy_assert(yyjson_mut_get_sint(val) == 1); + val = yyjson_mut_arr_get(arr, 1); + yy_assert(yyjson_mut_get_sint(val) == -2); + val = yyjson_mut_arr_get(arr, 2); + yy_assert(yyjson_mut_get_sint(val) == 3); + } + { + i16 vals[] = {1, -2, 3}; + usize len = sizeof(vals) / sizeof(vals[0]); + arr = yyjson_mut_arr_with_sint16(doc, vals, len); + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + val = yyjson_mut_arr_get(arr, 0); + yy_assert(yyjson_mut_get_sint(val) == 1); + val = yyjson_mut_arr_get(arr, 1); + yy_assert(yyjson_mut_get_sint(val) == -2); + val = yyjson_mut_arr_get(arr, 2); + yy_assert(yyjson_mut_get_sint(val) == 3); + } + { + i32 vals[] = {1, -2, 3}; + usize len = sizeof(vals) / sizeof(vals[0]); + arr = yyjson_mut_arr_with_sint32(doc, vals, len); + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + val = yyjson_mut_arr_get(arr, 0); + yy_assert(yyjson_mut_get_sint(val) == 1); + val = yyjson_mut_arr_get(arr, 1); + yy_assert(yyjson_mut_get_sint(val) == -2); + val = yyjson_mut_arr_get(arr, 2); + yy_assert(yyjson_mut_get_sint(val) == 3); + } + { + i64 vals[] = {1, -2, 3}; + usize len = sizeof(vals) / sizeof(vals[0]); + arr = yyjson_mut_arr_with_sint64(doc, vals, len); + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + val = yyjson_mut_arr_get(arr, 0); + yy_assert(yyjson_mut_get_sint(val) == 1); + val = yyjson_mut_arr_get(arr, 1); + yy_assert(yyjson_mut_get_sint(val) == -2); + val = yyjson_mut_arr_get(arr, 2); + yy_assert(yyjson_mut_get_sint(val) == 3); + } + + + //--------------------------------------------- + // array with uint + { + u64 vals[] = {1, 2, 3}; + usize len = sizeof(vals) / sizeof(vals[0]); + arr = yyjson_mut_arr_with_uint(doc, vals, len); + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + val = yyjson_mut_arr_get(arr, 0); + yy_assert(yyjson_mut_get_uint(val) == 1); + val = yyjson_mut_arr_get(arr, 1); + yy_assert(yyjson_mut_get_uint(val) == 2); + val = yyjson_mut_arr_get(arr, 2); + yy_assert(yyjson_mut_get_uint(val) == 3); + } + { + u8 vals[] = {1, 2, 3}; + usize len = sizeof(vals) / sizeof(vals[0]); + arr = yyjson_mut_arr_with_uint8(doc, vals, len); + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + val = yyjson_mut_arr_get(arr, 0); + yy_assert(yyjson_mut_get_uint(val) == 1); + val = yyjson_mut_arr_get(arr, 1); + yy_assert(yyjson_mut_get_uint(val) == 2); + val = yyjson_mut_arr_get(arr, 2); + yy_assert(yyjson_mut_get_uint(val) == 3); + } + { + u16 vals[] = {1, 2, 3}; + usize len = sizeof(vals) / sizeof(vals[0]); + arr = yyjson_mut_arr_with_uint16(doc, vals, len); + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + val = yyjson_mut_arr_get(arr, 0); + yy_assert(yyjson_mut_get_uint(val) == 1); + val = yyjson_mut_arr_get(arr, 1); + yy_assert(yyjson_mut_get_uint(val) == 2); + val = yyjson_mut_arr_get(arr, 2); + yy_assert(yyjson_mut_get_uint(val) == 3); + } + { + u32 vals[] = {1, 2, 3}; + usize len = sizeof(vals) / sizeof(vals[0]); + arr = yyjson_mut_arr_with_uint32(doc, vals, len); + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + val = yyjson_mut_arr_get(arr, 0); + yy_assert(yyjson_mut_get_uint(val) == 1); + val = yyjson_mut_arr_get(arr, 1); + yy_assert(yyjson_mut_get_uint(val) == 2); + val = yyjson_mut_arr_get(arr, 2); + yy_assert(yyjson_mut_get_uint(val) == 3); + } + { + u64 vals[] = {1, 2, 3}; + usize len = sizeof(vals) / sizeof(vals[0]); + arr = yyjson_mut_arr_with_uint64(doc, vals, len); + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + val = yyjson_mut_arr_get(arr, 0); + yy_assert(yyjson_mut_get_uint(val) == 1); + val = yyjson_mut_arr_get(arr, 1); + yy_assert(yyjson_mut_get_uint(val) == 2); + val = yyjson_mut_arr_get(arr, 2); + yy_assert(yyjson_mut_get_uint(val) == 3); + } + + + //--------------------------------------------- + // array with real + { + f64 vals[] = {1.0, 2.0, 3.0}; + usize len = sizeof(vals) / sizeof(vals[0]); + arr = yyjson_mut_arr_with_real(doc, vals, len); + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + val = yyjson_mut_arr_get(arr, 0); + yy_assert(yyjson_mut_get_real(val) == 1.0); + val = yyjson_mut_arr_get(arr, 1); + yy_assert(yyjson_mut_get_real(val) == 2.0); + val = yyjson_mut_arr_get(arr, 2); + yy_assert(yyjson_mut_get_real(val) == 3.0); + } + { + f32 vals[] = {1.0f, 2.0f, 3.0f}; + usize len = sizeof(vals) / sizeof(vals[0]); + arr = yyjson_mut_arr_with_float(doc, vals, len); + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + val = yyjson_mut_arr_get(arr, 0); + yy_assert(yyjson_mut_get_real(val) == 1.0); + val = yyjson_mut_arr_get(arr, 1); + yy_assert(yyjson_mut_get_real(val) == 2.0); + val = yyjson_mut_arr_get(arr, 2); + yy_assert(yyjson_mut_get_real(val) == 3.0); + } + { + f64 vals[] = {1.0, 2.0, 3.0}; + usize len = sizeof(vals) / sizeof(vals[0]); + arr = yyjson_mut_arr_with_double(doc, vals, len); + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + val = yyjson_mut_arr_get(arr, 0); + yy_assert(yyjson_mut_get_real(val) == 1.0); + val = yyjson_mut_arr_get(arr, 1); + yy_assert(yyjson_mut_get_real(val) == 2.0); + val = yyjson_mut_arr_get(arr, 2); + yy_assert(yyjson_mut_get_real(val) == 3.0); + } + + + //--------------------------------------------- + // array with str + { + const char *vals[] = {"", "a", "bc", "abc\0def"}; + usize lens[] = {0, 1, 2, 7}; + usize len = sizeof(vals) / sizeof(vals[0]); + + arr = yyjson_mut_arr_with_str(doc, vals, len); + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + val = yyjson_mut_arr_get(arr, 0); + yy_assert(yyjson_mut_equals_str(val, "")); + val = yyjson_mut_arr_get(arr, 1); + yy_assert(yyjson_mut_equals_str(val, "a")); + val = yyjson_mut_arr_get(arr, 2); + yy_assert(yyjson_mut_equals_str(val, "bc")); + val = yyjson_mut_arr_get(arr, 3); + yy_assert(yyjson_mut_equals_str(val, "abc")); + yy_assert(yyjson_mut_get_str(val) == vals[3]); + + arr = yyjson_mut_arr_with_strn(doc, vals, lens, len); + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + val = yyjson_mut_arr_get(arr, 0); + yy_assert(yyjson_mut_equals_str(val, "")); + val = yyjson_mut_arr_get(arr, 1); + yy_assert(yyjson_mut_equals_str(val, "a")); + val = yyjson_mut_arr_get(arr, 2); + yy_assert(yyjson_mut_equals_str(val, "bc")); + val = yyjson_mut_arr_get(arr, 3); + yy_assert(yyjson_mut_equals_strn(val, "abc\0def", 7)); + yy_assert(yyjson_mut_get_str(val) == vals[3]); + + arr = yyjson_mut_arr_with_strcpy(doc, vals, len); + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + val = yyjson_mut_arr_get(arr, 0); + yy_assert(yyjson_mut_equals_str(val, "")); + val = yyjson_mut_arr_get(arr, 1); + yy_assert(yyjson_mut_equals_str(val, "a")); + val = yyjson_mut_arr_get(arr, 2); + yy_assert(yyjson_mut_equals_str(val, "bc")); + val = yyjson_mut_arr_get(arr, 3); + yy_assert(yyjson_mut_equals_str(val, "abc")); + yy_assert(yyjson_mut_get_str(val) != vals[3]); + + arr = yyjson_mut_arr_with_strncpy(doc, vals, lens, len); + yy_assert(yyjson_mut_is_arr(arr)); + yy_assert(yyjson_mut_arr_size(arr) == len); + val = yyjson_mut_arr_get(arr, 0); + yy_assert(yyjson_mut_equals_str(val, "")); + val = yyjson_mut_arr_get(arr, 1); + yy_assert(yyjson_mut_equals_str(val, "a")); + val = yyjson_mut_arr_get(arr, 2); + yy_assert(yyjson_mut_equals_str(val, "bc")); + val = yyjson_mut_arr_get(arr, 3); + yy_assert(yyjson_mut_equals_strn(val, "abc\0def", 7)); + yy_assert(yyjson_mut_get_str(val) != vals[3]); + } + + yy_assert(yyjson_mut_arr_clear(arr)); + yy_assert(!yyjson_mut_arr_clear(NULL)); + + //--------------------------------------------- + yyjson_mut_doc_free(doc); +} + + + +/*============================================================================== + * MARK: - Obj + *============================================================================*/ + +/// Validate object with int +static void validate_mut_obj(yyjson_mut_val *obj, + const char **keys, usize *key_lens, + i64 *vals, usize len) { + yy_assert(yyjson_mut_is_obj(obj)); + yy_assert(yyjson_mut_obj_size(obj) == len); + yy_assert(yyjson_mut_is_obj(NULL) == false); + yy_assert(yyjson_mut_obj_size(NULL) == 0); + + yyjson_mut_obj_iter iter; + yyjson_mut_val *key, *val, *first_key; + usize idx, max, count; + int tmp[8]; + + if (len == 0) { + val = yyjson_mut_obj_get(obj, NULL); + yy_assert(val == NULL); + val = yyjson_mut_obj_getn(obj, NULL, 0); + yy_assert(val == NULL); + val = yyjson_mut_obj_get(obj, ""); + yy_assert(val == NULL); + val = yyjson_mut_obj_getn(obj, "", 0); + yy_assert(val == NULL); + val = yyjson_mut_obj_get(obj, "a"); + yy_assert(val == NULL); + val = yyjson_mut_obj_getn(obj, "a", 1); + yy_assert(val == NULL); + + iter = yyjson_mut_obj_iter_with(obj); + yy_assert(yyjson_mut_obj_iter_has_next(&iter) == false); + while ((key = yyjson_mut_obj_iter_next(&iter))) { + yy_assert(false); + } + yy_assert(yyjson_mut_obj_iter_has_next(&iter) == false); + + yyjson_mut_obj_foreach(obj, idx, max, key, val) { + yy_assert(false); + } + + } else { + val = yyjson_mut_obj_get(obj, NULL); + yy_assert(val == NULL); + val = yyjson_mut_obj_getn(obj, NULL, 0); + yy_assert(val == NULL); + val = yyjson_mut_obj_get(obj, "not_exist"); + yy_assert(val == NULL); + val = yyjson_mut_obj_getn(obj, "not_exist", 9); + + // test get() api + for (usize i = 0; i < len; i++) { + const char *str = keys[i]; + usize str_len = key_lens[i]; + + i64 first_val = -9999; + for (usize t = 0; t < len; t++) { + if (str_len == key_lens[t] && memcmp(str, keys[t], str_len) == 0) { + first_val = vals[t]; + break; + } + } + + if (strlen(str) == str_len) { // no '\0' inside string + val = yyjson_mut_obj_get(obj, str); + yy_assert(yyjson_mut_get_int(val) == first_val); + } + val = yyjson_mut_obj_getn(obj, str, str_len); + yy_assert(yyjson_mut_get_int(val) == first_val); + } + + // test all key-val pairs + first_key = ((yyjson_mut_val *)obj->uni.ptr)->next->next; + key = first_key; + val = key->next; + for (usize i = 0; i < len; i++) { + const char *str = keys[i]; + usize str_len = key_lens[i]; + yy_assert(yyjson_mut_equals_strn(key, str, str_len)); + yy_assert(yyjson_mut_get_int(val) == vals[i]); + key = val->next; + val = key->next; + } + yy_assert(key == first_key); + + // test iterator api + count = 0; + memset(tmp, 0, sizeof(tmp)); + yyjson_mut_obj_iter_init(obj, &iter); + yy_assert(yyjson_mut_obj_iter_has_next(&iter) == true); + while ((key = yyjson_mut_obj_iter_next(&iter))) { + val = yyjson_mut_obj_iter_get_val(key); + yy_assert(yyjson_mut_equals_strn(key, keys[count], key_lens[count])); + yy_assert(yyjson_mut_get_int(val) == vals[count]); + yy_assert(tmp[count] == 0); + tmp[count] = 1; + count++; + yy_assert(yyjson_mut_obj_iter_has_next(&iter) == count < len); + } + yy_assert(yyjson_mut_obj_iter_has_next(&iter) == false); + yy_assert(count == len); + + // test foreach api + count = 0; + memset(tmp, 0, sizeof(tmp)); + yyjson_mut_obj_foreach(obj, idx, max, key, val) { + yy_assert(yyjson_mut_equals_strn(key, keys[count], key_lens[count])); + yy_assert(yyjson_mut_get_int(val) == vals[count]); + yy_assert(tmp[count] == 0); + yy_assert(count == idx); + yy_assert(max == len); + tmp[count] = 1; + count++; + } + yy_assert(count == len); + } +} + +static void test_json_mut_obj_api(void) { + yyjson_mut_doc *doc; + yyjson_mut_val *obj, *key, *val; + const char *keys[64]; + usize key_lens[64], idx; + i64 vals[64]; + const char *str; + yyjson_mut_obj_iter iter; + + +#define set_validate(idx, str, len, val) \ + keys[idx] = str; \ + key_lens[idx] = len; \ + vals[idx] = val; + +#define new_key_val(idx) \ + key = yyjson_mut_strn(doc, keys[idx], key_lens[idx]); \ + val = yyjson_mut_int(doc, vals[idx]); + + + //--------------------------------------------- + // memory pool + doc = yyjson_mut_doc_new(NULL); + + yy_assert(!yyjson_mut_doc_set_str_pool_size(NULL, 0)); + yy_assert(!yyjson_mut_doc_set_str_pool_size(doc, 0)); + yy_assert(!yyjson_mut_doc_set_str_pool_size(doc, ~(size_t)0)); + + yy_assert(yyjson_mut_doc_set_str_pool_size(doc, 100)); + yy_assert(doc->str_pool.chunk_size == 100 * sizeof(char) + sizeof(yyjson_str_chunk)); + + yy_assert(!yyjson_mut_doc_set_val_pool_size(NULL, 0)); + yy_assert(!yyjson_mut_doc_set_val_pool_size(doc, 0)); + yy_assert(!yyjson_mut_doc_set_val_pool_size(doc, ~(size_t)0)); + + yy_assert(yyjson_mut_doc_set_val_pool_size(doc, 100)); + yy_assert(doc->val_pool.chunk_size == 100 * sizeof(yyjson_mut_val) + sizeof(yyjson_mut_val)); + + yyjson_mut_doc_free(doc); + + + //--------------------------------------------- + // create + doc = yyjson_mut_doc_new(NULL); + obj = yyjson_mut_obj(doc); + yy_assert(yyjson_mut_is_obj(obj)); + + + //--------------------------------------------- + // add() + + validate_mut_obj(obj, keys, key_lens, vals, 0); + + set_validate(0, "a", 1, 10); + new_key_val(0); + + yy_assert(!yyjson_mut_obj_add(NULL, key, val)); + yy_assert(!yyjson_mut_obj_add(obj, NULL, val)); + yy_assert(!yyjson_mut_obj_add(obj, key, NULL)); + + yy_assert(yyjson_mut_obj_add(obj, key, val)); + validate_mut_obj(obj, keys, key_lens, vals, 1); + + set_validate(1, "xxx", 3, 11); + new_key_val(1); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + validate_mut_obj(obj, keys, key_lens, vals, 2); + + set_validate(2, "b", 1, 12); + new_key_val(2); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + validate_mut_obj(obj, keys, key_lens, vals, 3); + + set_validate(3, "xxx", 3, 13); + new_key_val(3); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + validate_mut_obj(obj, keys, key_lens, vals, 4); + + set_validate(4, "xxx\0xxx", 7, 20); + new_key_val(4); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + validate_mut_obj(obj, keys, key_lens, vals, 5); + + yy_assert(!yyjson_mut_obj_remove(NULL, key)); + yy_assert(!yyjson_mut_obj_remove(obj, NULL)); + // validate the return val + yy_assert(yyjson_mut_equals(yyjson_mut_obj_remove(obj, key), val)); + yy_assert(yyjson_mut_obj_remove(yyjson_mut_obj(doc), key) == NULL); + + validate_mut_obj(obj, keys, key_lens, vals, 4); + yyjson_mut_obj_clear(obj); + validate_mut_obj(obj, keys, key_lens, vals, 0); + + //--------------------------------------------- + // put() + + // add(a) -> {a:10} + set_validate(0, "a", 1, 10); + new_key_val(0); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + validate_mut_obj(obj, keys, key_lens, vals, 1); + + // replace(a) -> {a:11} + set_validate(0, "a", 1, 11); + new_key_val(0); + yy_assert(!yyjson_mut_obj_put(NULL, key, val)); + yy_assert(!yyjson_mut_obj_put(obj, NULL, val)); + yy_assert(yyjson_mut_obj_put(obj, key, val)); + validate_mut_obj(obj, keys, key_lens, vals, 1); + + // add(b) -> {a:11,b:20} + set_validate(1, "b", 1, 20); + new_key_val(1); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + validate_mut_obj(obj, keys, key_lens, vals, 2); + + // replace(b) -> {a:11,b:21} + set_validate(1, "b", 1, 21); + new_key_val(1); + yy_assert(yyjson_mut_obj_put(obj, key, val)); + validate_mut_obj(obj, keys, key_lens, vals, 2); + + // replace(a) -> {a:30,b:21} + set_validate(0, "a", 1, 30); + set_validate(1, "b", 1, 21); + new_key_val(0); + yy_assert(yyjson_mut_obj_put(obj, key, val)); + validate_mut_obj(obj, keys, key_lens, vals, 2); + + // add(c) -> {a:30,b:21,c:40} + set_validate(2, "c", 1, 40); + new_key_val(2); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + validate_mut_obj(obj, keys, key_lens, vals, 3); + + // add(c) -> {a:30,b:21,c:40,c:41} + set_validate(3, "c", 1, 41); + new_key_val(3); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + validate_mut_obj(obj, keys, key_lens, vals, 4); + + // replace(duplicated) -> {a:30,b:21,c:42} + set_validate(2, "c", 1, 42); + new_key_val(2); + yy_assert(yyjson_mut_obj_put(obj, key, val)); + validate_mut_obj(obj, keys, key_lens, vals, 3); + + // replace -> {a:30,b:21,c:43} + set_validate(2, "c", 1, 43); + new_key_val(2); + yy_assert(!yyjson_mut_obj_replace(obj, key, NULL)); + yy_assert(!yyjson_mut_obj_replace(yyjson_mut_obj(doc), key, val)); + yy_assert(yyjson_mut_obj_replace(obj, key, val)); + validate_mut_obj(obj, keys, key_lens, vals, 3); + + // remove {a:30,b:21,c:43,c44} -> {a:30,b:21} + set_validate(3, "c", 1, 44); + new_key_val(3); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + yy_assert(yyjson_mut_obj_remove_key(obj, "c")); + validate_mut_obj(obj, keys, key_lens, vals, 2); + yy_assert(!yyjson_mut_obj_remove_key(obj, "c")); + validate_mut_obj(obj, keys, key_lens, vals, 2); + yy_assert(!yyjson_mut_obj_remove_key(NULL, "c")); + + // remove with len {a:30,b:21,c:43,c44} -> {a:30,b:21} + set_validate(3, "c", 1, 44); + new_key_val(3); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + yy_assert(yyjson_mut_obj_remove_keyn(obj, "cc", 1)); + validate_mut_obj(obj, keys, key_lens, vals, 2); + yy_assert(!yyjson_mut_obj_remove_keyn(obj, "cc", 1)); + validate_mut_obj(obj, keys, key_lens, vals, 2); + yy_assert(!yyjson_mut_obj_remove_keyn(NULL, "cc", 1)); + + // replace(NULL) + new_key_val(2); + yy_assert(yyjson_mut_obj_put(obj, key, NULL)); + validate_mut_obj(obj, keys, key_lens, vals, 2); + new_key_val(1); + yy_assert(yyjson_mut_obj_put(obj, key, NULL)); + validate_mut_obj(obj, keys, key_lens, vals, 1); + new_key_val(0); + yy_assert(yyjson_mut_obj_put(obj, key, NULL)); + validate_mut_obj(obj, keys, key_lens, vals, 0); + + yyjson_mut_obj_clear(obj); + + + //--------------------------------------------- + // rotate(idx) + + yy_assert(!yyjson_mut_obj_rotate(obj, 0)); + + set_validate(0, "c", 1, 30); + set_validate(1, "d", 1, 40); + set_validate(2, "a", 1, 10); + set_validate(3, "b", 1, 20); + + new_key_val(1); // d + yy_assert(yyjson_mut_obj_add(obj, key, val)); + new_key_val(0); // c + yy_assert(yyjson_mut_obj_add(obj, key, val)); + // {"d":40,"c":30} + + yy_assert(yyjson_mut_obj_rotate(obj, 1)); + // {"c":30,"d":40} + + validate_mut_obj(obj, keys, key_lens, vals, 2); + + yy_assert(yyjson_mut_obj_rotate(obj, 0)); + yy_assert(!yyjson_mut_obj_rotate(obj, 2)); + + validate_mut_obj(obj, keys, key_lens, vals, 2); + yyjson_mut_obj_clear(obj); + + new_key_val(2); // a + yy_assert(yyjson_mut_obj_add(obj, key, val)); + new_key_val(3); // b + yy_assert(yyjson_mut_obj_add(obj, key, val)); + new_key_val(0); // c + yy_assert(yyjson_mut_obj_add(obj, key, val)); + new_key_val(1); // d + yy_assert(yyjson_mut_obj_add(obj, key, val)); + // {"a":10,"b":20,"c":30,"d":40} + + yy_assert(yyjson_mut_obj_rotate(obj, 2)); + // {"c":30,"d":40,"a":10,"b":20} + + validate_mut_obj(obj, keys, key_lens, vals, 4); + + yy_assert(yyjson_mut_obj_rotate(obj, 0)); + yy_assert(yyjson_mut_obj_rotate(obj, 1)); + yy_assert(yyjson_mut_obj_rotate(obj, 3)); + yy_assert(!yyjson_mut_obj_rotate(obj, 4)); + + validate_mut_obj(obj, keys, key_lens, vals, 4); + yyjson_mut_obj_clear(obj); + + + //--------------------------------------------- + // insert(idx) + + set_validate(0, "b", 1, 20); // insert at 0 + set_validate(1, "d", 1, 40); // insert at 1 + set_validate(2, "a", 1, 10); // insert at 0 + set_validate(3, "e", 1, 50); // insert at 3 + set_validate(4, "c", 1, 30); // insert at 2 + set_validate(5, "g", 1, 70); // insert at 5 + set_validate(6, "f", 1, 60); // insert at 5 + + new_key_val(2); // a + yy_assert(!yyjson_mut_obj_insert(obj, key, val, 1)); + yy_assert(yyjson_mut_obj_insert(obj, key, val, 0)); + yy_assert(yyjson_mut_obj_size(obj) == 1); + val = yyjson_mut_obj_get(obj, "a"); + yy_assert(yyjson_mut_get_int(val) == 10); + // {"a":10} + + new_key_val(0); // b + yy_assert(!yyjson_mut_obj_insert(obj, key, val, 2)); + yy_assert(yyjson_mut_obj_insert(obj, key, val, 0)); + yy_assert(yyjson_mut_obj_size(obj) == 2); + val = yyjson_mut_obj_get(obj, "b"); + yy_assert(yyjson_mut_get_int(val) == 20); + // {"b":20,"a":10} + + new_key_val(4); // c + yy_assert(!yyjson_mut_obj_insert(obj, key, val, 3)); + yy_assert(yyjson_mut_obj_insert(obj, key, val, 2)); + yy_assert(yyjson_mut_obj_size(obj) == 3); + val = yyjson_mut_obj_get(obj, "c"); + yy_assert(yyjson_mut_get_int(val) == 30); + // {"b":20,"a":10,"c":30} + + new_key_val(1); // d + yy_assert(!yyjson_mut_obj_insert(obj, key, val, 4)); + yy_assert(yyjson_mut_obj_insert(obj, key, val, 1)); + yy_assert(yyjson_mut_obj_size(obj) == 4); + val = yyjson_mut_obj_get(obj, "d"); + yy_assert(yyjson_mut_get_int(val) == 40); + // {"b":20,"d":40,"a":10,"c":30} + + new_key_val(3); // e + yy_assert(!yyjson_mut_obj_insert(obj, key, val, 5)); + yy_assert(yyjson_mut_obj_insert(obj, key, val, 3)); + yy_assert(yyjson_mut_obj_size(obj) == 5); + val = yyjson_mut_obj_get(obj, "e"); + yy_assert(yyjson_mut_get_int(val) == 50); + // {"b":20,"d":40,"a":10,"e":50,"c":30} + + new_key_val(6); // f + yy_assert(!yyjson_mut_obj_insert(obj, key, val, 6)); + yy_assert(yyjson_mut_obj_insert(obj, key, val, 5)); + yy_assert(yyjson_mut_obj_size(obj) == 6); + val = yyjson_mut_obj_get(obj, "f"); + yy_assert(yyjson_mut_get_int(val) == 60); + // {"b":20,"d":40,"a":10,"e":50,"c":30,"f":60} + + new_key_val(5); // g + yy_assert(!yyjson_mut_obj_insert(obj, key, val, 7)); + yy_assert(yyjson_mut_obj_insert(obj, key, val, 5)); + yy_assert(yyjson_mut_obj_size(obj) == 7); + val = yyjson_mut_obj_get(obj, "g"); + yy_assert(yyjson_mut_get_int(val) == 70); + // {"b":20,"d":40,"a":10,"e":50,"c":30,"g":70,"f":60} + + validate_mut_obj(obj, keys, key_lens, vals, 7); + yyjson_mut_obj_clear(obj); + + yy_assert(!yyjson_mut_obj_insert(NULL, key, val, 0)); + yy_assert(!yyjson_mut_obj_insert(obj, NULL, val, 0)); + yy_assert(!yyjson_mut_obj_insert(obj, key, NULL, 0)); + yy_assert(!yyjson_mut_obj_insert(obj, NULL, NULL, 0)); + yy_assert(!yyjson_mut_obj_insert(NULL, NULL, NULL, 0)); + yy_assert(!yyjson_mut_obj_insert(obj, key, val, 1)); + yy_assert(yyjson_mut_obj_size(obj) == 0); + + + //--------------------------------------------- + // add (convenience) + + yy_assert(!yyjson_mut_obj_add_null(NULL, obj, "a")); + yy_assert(!yyjson_mut_obj_add_null(doc, NULL, "a")); + yy_assert(!yyjson_mut_obj_add_null(doc, obj, NULL)); + yy_assert(yyjson_mut_obj_add_null(doc, obj, "a")); + val = yyjson_mut_obj_get(obj, "a"); + yy_assert(yyjson_mut_is_null(val)); + + yy_assert(yyjson_mut_obj_add_true(doc, obj, "b")); + val = yyjson_mut_obj_get(obj, "b"); + yy_assert(yyjson_mut_is_true(val)); + + yy_assert(yyjson_mut_obj_add_false(doc, obj, "c")); + val = yyjson_mut_obj_get(obj, "c"); + yy_assert(yyjson_mut_is_false(val)); + + yy_assert(yyjson_mut_obj_add_bool(doc, obj, "d", true)); + val = yyjson_mut_obj_get(obj, "d"); + yy_assert(yyjson_mut_is_true(val)); + + yy_assert(yyjson_mut_obj_add_uint(doc, obj, "e", 123)); + val = yyjson_mut_obj_get(obj, "e"); + yy_assert(yyjson_mut_get_uint(val) == 123); + + yy_assert(yyjson_mut_obj_add_sint(doc, obj, "f", -123)); + val = yyjson_mut_obj_get(obj, "f"); + yy_assert(yyjson_mut_get_sint(val) == -123); + + yy_assert(yyjson_mut_obj_add_int(doc, obj, "g", -456)); + val = yyjson_mut_obj_get(obj, "g"); + yy_assert(yyjson_mut_get_int(val) == -456); + + yy_assert(yyjson_mut_obj_add_float(doc, obj, "h", (float)789.0)); + val = yyjson_mut_obj_get(obj, "h"); + yy_assert((float)yyjson_mut_get_real(val) == (float)789.0); + + yy_assert(yyjson_mut_obj_add_double(doc, obj, "h", 789.0)); + val = yyjson_mut_obj_get(obj, "h"); + yy_assert(yyjson_mut_get_real(val) == 789.0); + + yy_assert(yyjson_mut_obj_add_real(doc, obj, "h", 789.0)); + val = yyjson_mut_obj_get(obj, "h"); + yy_assert(yyjson_mut_get_real(val) == 789.0); + + str = "xxx"; + yy_assert(yyjson_mut_obj_add_str(doc, obj, "aa", str)); + val = yyjson_mut_obj_get(obj, "aa"); + yy_assert(yyjson_mut_get_str(val) == str); + yy_assert(yyjson_mut_get_len(val) == 3); + + str = "xxx\0xxx"; + yy_assert(yyjson_mut_obj_add_strn(doc, obj, "bb", str, 7)); + val = yyjson_mut_obj_get(obj, "bb"); + yy_assert(yyjson_mut_get_str(val) == str); + yy_assert(yyjson_mut_get_len(val) == 7); + + str = "xxx"; + yy_assert(yyjson_mut_obj_add_strcpy(doc, obj, "cc", str)); + val = yyjson_mut_obj_get(obj, "cc"); + yy_assert(yyjson_mut_get_str(val) != str); + yy_assert(yyjson_mut_get_len(val) == 3); + yy_assert(yyjson_mut_equals_strn(val, str, 3)); + + str = "xxx\0xxx"; + yy_assert(yyjson_mut_obj_add_strncpy(doc, obj, "dd", str, 7)); + val = yyjson_mut_obj_get(obj, "dd"); + yy_assert(yyjson_mut_get_str(val) != str); + yy_assert(yyjson_mut_get_len(val) == 7); + yy_assert(yyjson_mut_equals_strn(val, str, 7)); + + val = yyjson_mut_obj_add_arr(doc, obj, "ee"); + yy_assert(yyjson_mut_is_arr(val)); + yy_assert(yyjson_mut_obj_get(obj, "ee") == val); + yy_assert(yyjson_mut_obj_add_arr(doc, obj, NULL) == NULL); + + val = yyjson_mut_obj_add_obj(doc, obj, "ff"); + yy_assert(yyjson_mut_is_obj(val)); + yy_assert(yyjson_mut_obj_get(obj, "ff") == val); + yy_assert(yyjson_mut_obj_add_obj(doc, obj, NULL) == NULL); + + val = yyjson_mut_str(doc, "zzz"); + yy_assert(yyjson_mut_obj_add_val(doc, obj, "yyy", val)); + val = yyjson_mut_obj_get(obj, "yyy"); + yy_assert(yyjson_mut_equals_str(val, "zzz")); + + yyjson_mut_obj_clear(obj); + + + //--------------------------------------------- + // remove (convenience) + + set_validate(0, "a", 1, 10); + new_key_val(0); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + set_validate(1, "b", 1, 11); + new_key_val(1); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + set_validate(2, "c", 1, 12); + new_key_val(2); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + yy_assert(!yyjson_mut_obj_remove_str(NULL, "b")); + yy_assert(!yyjson_mut_obj_remove_str(obj, NULL)); + yy_assert(yyjson_mut_obj_remove_str(obj, "b")); + set_validate(1, "c", 1, 12); + validate_mut_obj(obj, keys, key_lens, vals, 2); + yyjson_mut_obj_clear(obj); + + set_validate(0, "a", 1, 10); + new_key_val(0); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + set_validate(1, "xxx\0xxx", 7, 11); + new_key_val(1); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + set_validate(2, "xxx", 3, 12); + new_key_val(2); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + yyjson_mut_obj_remove_strn(obj, "xxx\0xxx", 7); + set_validate(1, "xxx", 3, 12); + validate_mut_obj(obj, keys, key_lens, vals, 2); + yyjson_mut_obj_clear(obj); + + + //--------------------------------------------- + // create (convenience) + { + const char *keys_str[3] = {"a", "b", "c"}; + const char *vals_str[3] = {"x", "y", "z"}; + obj = yyjson_mut_obj_with_str(NULL, keys_str, vals_str, 3); + yy_assert(!obj); + obj = yyjson_mut_obj_with_str(doc, keys_str, vals_str, 3); + yy_assert(yyjson_mut_is_obj(obj)); + yy_assert(yyjson_mut_obj_size(obj) == 3); + val = yyjson_mut_obj_get(obj, "a"); + yy_assert(yyjson_mut_equals_str(val, "x")); + val = yyjson_mut_obj_get(obj, "b"); + yy_assert(yyjson_mut_equals_str(val, "y")); + val = yyjson_mut_obj_get(obj, "c"); + yy_assert(yyjson_mut_equals_str(val, "z")); + yyjson_mut_obj_clear(obj); + } + { + const char *pairs[6] = {"a", "x", "b", "y", "c", "z"}; + obj = yyjson_mut_obj_with_kv(NULL, pairs, 3); + yy_assert(!obj); + obj = yyjson_mut_obj_with_kv(doc, pairs, 3); + yy_assert(yyjson_mut_is_obj(obj)); + yy_assert(yyjson_mut_obj_size(obj) == 3); + val = yyjson_mut_obj_get(obj, "a"); + yy_assert(yyjson_mut_equals_str(val, "x")); + val = yyjson_mut_obj_get(obj, "b"); + yy_assert(yyjson_mut_equals_str(val, "y")); + val = yyjson_mut_obj_get(obj, "c"); + yy_assert(yyjson_mut_equals_str(val, "z")); + yyjson_mut_obj_clear(obj); + } + + + //--------------------------------------------- + // iterator + yy_assert(yyjson_mut_obj_iter_init(obj, NULL) == false); + yy_assert(yyjson_mut_obj_iter_init(NULL, &iter) == false); + yy_assert(yyjson_mut_obj_iter_init(NULL, NULL) == false); + + + //--------------------------------------------- + // iterator + + // obj(1) + set_validate(0, "a", 1, 10); + new_key_val(0); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + validate_mut_obj(obj, keys, key_lens, vals, 1); + yyjson_mut_obj_iter_init(obj, &iter); + idx = 0; + while ((key = yyjson_mut_obj_iter_next(&iter))) { + val = yyjson_mut_obj_iter_get_val(key); + if (idx == 0) yy_assert(yyjson_mut_equals_str(key, "a")); + if (idx == 0) yy_assert(yyjson_mut_get_int(val) == 10); + idx++; + } + yy_assert(idx == 1); + validate_mut_obj(obj, keys, key_lens, vals, 1); + + yy_assert(yyjson_mut_obj_iter_init(obj, &iter)); + yy_assert(yyjson_mut_get_int(yyjson_mut_obj_iter_get(&iter, "a")) == 10); + yy_assert(!yyjson_mut_obj_iter_get(&iter, "x")); + yy_assert(yyjson_mut_get_int(yyjson_mut_obj_iter_get(&iter, "a")) == 10); + yy_assert(!yyjson_mut_obj_iter_get(&iter, "x")); + + + // obj(2) + set_validate(1, "b", 1, 11); + new_key_val(1); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + yyjson_mut_obj_iter_init(obj, &iter); + idx = 0; + while ((key = yyjson_mut_obj_iter_next(&iter))) { + val = yyjson_mut_obj_iter_get_val(key); + if (idx == 0) yy_assert(yyjson_mut_equals_str(key, "a")); + if (idx == 0) yy_assert(yyjson_mut_get_int(val) == 10); + if (idx == 1) yy_assert(yyjson_mut_equals_str(key, "b")); + if (idx == 1) yy_assert(yyjson_mut_get_int(val) == 11); + idx++; + } + yy_assert(idx == 2); + validate_mut_obj(obj, keys, key_lens, vals, 2); + + yy_assert(yyjson_mut_obj_iter_init(obj, &iter)); + yy_assert(yyjson_mut_get_int(yyjson_mut_obj_iter_get(&iter, "a")) == 10); + yy_assert(yyjson_mut_get_int(yyjson_mut_obj_iter_get(&iter, "b")) == 11); + yy_assert(!yyjson_mut_obj_iter_get(&iter, "x")); + yy_assert(yyjson_mut_obj_iter_init(obj, &iter)); + yy_assert(yyjson_mut_get_int(yyjson_mut_obj_iter_get(&iter, "b")) == 11); + yy_assert(yyjson_mut_get_int(yyjson_mut_obj_iter_get(&iter, "a")) == 10); + yy_assert(!yyjson_mut_obj_iter_get(&iter, "x")); + + // obj(3) + set_validate(2, "c", 1, 12); + new_key_val(2); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + yyjson_mut_obj_iter_init(obj, &iter); + idx = 0; + while ((key = yyjson_mut_obj_iter_next(&iter))) { + val = yyjson_mut_obj_iter_get_val(key); + if (idx == 0) yy_assert(yyjson_mut_equals_str(key, "a")); + if (idx == 0) yy_assert(yyjson_mut_get_int(val) == 10); + if (idx == 1) yy_assert(yyjson_mut_equals_str(key, "b")); + if (idx == 1) yy_assert(yyjson_mut_get_int(val) == 11); + if (idx == 2) yy_assert(yyjson_mut_equals_str(key, "c")); + if (idx == 2) yy_assert(yyjson_mut_get_int(val) == 12); + idx++; + } + yy_assert(idx == 3); + validate_mut_obj(obj, keys, key_lens, vals, 3); + + yy_assert(yyjson_mut_obj_iter_init(obj, &iter)); + yy_assert(yyjson_mut_get_int(yyjson_mut_obj_iter_get(&iter, "a")) == 10); + yy_assert(yyjson_mut_get_int(yyjson_mut_obj_iter_get(&iter, "b")) == 11); + yy_assert(yyjson_mut_get_int(yyjson_mut_obj_iter_get(&iter, "c")) == 12); + yy_assert(!yyjson_mut_obj_iter_get(&iter, "x")); + yy_assert(yyjson_mut_obj_iter_init(obj, &iter)); + yy_assert(yyjson_mut_get_int(yyjson_mut_obj_iter_get(&iter, "c")) == 12); + yy_assert(yyjson_mut_get_int(yyjson_mut_obj_iter_get(&iter, "b")) == 11); + yy_assert(yyjson_mut_get_int(yyjson_mut_obj_iter_get(&iter, "a")) == 10); + yy_assert(!yyjson_mut_obj_iter_get(&iter, "x")); + + + yyjson_mut_obj_clear(obj); + + + + //--------------------------------------------- + // iterator remove, size:1, remove:0 + + set_validate(0, "a", 1, 10); + new_key_val(0); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + validate_mut_obj(obj, keys, key_lens, vals, 1); + + yyjson_mut_obj_iter_init(obj, &iter); + idx = 0; + while ((key = yyjson_mut_obj_iter_next(&iter))) { + val = yyjson_mut_obj_iter_get_val(key); + if (idx == 0) { + yy_assert(yyjson_mut_equals_str(key, "a")); + yy_assert(yyjson_mut_get_int(val) == 10); + } + if (yyjson_mut_equals_str(key, "a")) { + yyjson_mut_val *ret = yyjson_mut_obj_iter_remove(&iter); + yy_assert(ret == val); + } + idx++; + } + yy_assert(idx == 1); + validate_mut_obj(obj, keys, key_lens, vals, 0); + yyjson_mut_obj_clear(obj); + + + //--------------------------------------------- + // iterator remove, size:2, remove:0 + + set_validate(0, "a", 1, 10); + new_key_val(0); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + set_validate(1, "b", 1, 11); + new_key_val(1); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + validate_mut_obj(obj, keys, key_lens, vals, 2); + + yyjson_mut_obj_iter_init(obj, &iter); + idx = 0; + while ((key = yyjson_mut_obj_iter_next(&iter))) { + val = yyjson_mut_obj_iter_get_val(key); + if (idx == 0) { + yy_assert(yyjson_mut_equals_str(key, "a")); + yy_assert(yyjson_mut_get_int(val) == 10); + } + if (idx == 1) { + yy_assert(yyjson_mut_equals_str(key, "b")); + yy_assert(yyjson_mut_get_int(val) == 11); + } + if (yyjson_mut_equals_str(key, "a")) { + yyjson_mut_val *ret = yyjson_mut_obj_iter_remove(&iter); + yy_assert(ret == val); + } + idx++; + } + yy_assert(idx == 2); + set_validate(0, "b", 1, 11); + validate_mut_obj(obj, keys, key_lens, vals, 1); + yyjson_mut_obj_clear(obj); + + + //--------------------------------------------- + // iterator remove, size:2, remove:1 + + set_validate(0, "a", 1, 10); + new_key_val(0); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + set_validate(1, "b", 1, 11); + new_key_val(1); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + validate_mut_obj(obj, keys, key_lens, vals, 2); + yyjson_mut_obj_iter_init(obj, &iter); + idx = 0; + while ((key = yyjson_mut_obj_iter_next(&iter))) { + val = yyjson_mut_obj_iter_get_val(key); + if (idx == 0) { + yy_assert(yyjson_mut_equals_str(key, "a")); + yy_assert(yyjson_mut_get_int(val) == 10); + } + if (idx == 1) { + yy_assert(yyjson_mut_equals_str(key, "b")); + yy_assert(yyjson_mut_get_int(val) == 11); + } + if (yyjson_mut_equals_str(key, "b")) { + yyjson_mut_val *ret = yyjson_mut_obj_iter_remove(&iter); + yy_assert(ret == val); + } + idx++; + } + yy_assert(idx == 2); + validate_mut_obj(obj, keys, key_lens, vals, 1); + yyjson_mut_obj_clear(obj); + + + //--------------------------------------------- + // iterator remove, size:3, remove:1 + + set_validate(0, "a", 1, 10); + new_key_val(0); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + set_validate(1, "b", 1, 11); + new_key_val(1); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + set_validate(2, "c", 1, 12); + new_key_val(2); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + validate_mut_obj(obj, keys, key_lens, vals, 3); + yyjson_mut_obj_iter_init(obj, &iter); + idx = 0; + while ((key = yyjson_mut_obj_iter_next(&iter))) { + val = yyjson_mut_obj_iter_get_val(key); + if (idx == 0) { + yy_assert(yyjson_mut_equals_str(key, "a")); + yy_assert(yyjson_mut_get_int(val) == 10); + } + if (idx == 1) { + yy_assert(yyjson_mut_equals_str(key, "b")); + yy_assert(yyjson_mut_get_int(val) == 11); + } + if (idx == 2) { + yy_assert(yyjson_mut_equals_str(key, "c")); + yy_assert(yyjson_mut_get_int(val) == 12); + } + if (yyjson_mut_equals_str(key, "b")) { + yyjson_mut_val *ret = yyjson_mut_obj_iter_remove(&iter); + yy_assert(ret == val); + } + idx++; + } + yy_assert(idx == 3); + set_validate(1, "c", 1, 12); + validate_mut_obj(obj, keys, key_lens, vals, 2); + yyjson_mut_obj_clear(obj); + + + //--------------------------------------------- + // iterator remove all + + set_validate(0, "a", 1, 10); + new_key_val(0); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + set_validate(1, "b", 1, 11); + new_key_val(1); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + set_validate(2, "c", 1, 12); + new_key_val(2); + yy_assert(yyjson_mut_obj_add(obj, key, val)); + validate_mut_obj(obj, keys, key_lens, vals, 3); + yyjson_mut_obj_iter_init(obj, &iter); + idx = 0; + while ((key = yyjson_mut_obj_iter_next(&iter))) { + val = yyjson_mut_obj_iter_get_val(key); + if (idx == 0) { + yy_assert(yyjson_mut_equals_str(key, "a")); + yy_assert(yyjson_mut_get_int(val) == 10); + } + if (idx == 1) { + yy_assert(yyjson_mut_equals_str(key, "b")); + yy_assert(yyjson_mut_get_int(val) == 11); + } + if (idx == 2) { + yy_assert(yyjson_mut_equals_str(key, "c")); + yy_assert(yyjson_mut_get_int(val) == 12); + } + yyjson_mut_val *ret = yyjson_mut_obj_iter_remove(&iter); + yy_assert(ret == val); + idx++; + } + yy_assert(idx == 3); + validate_mut_obj(obj, keys, key_lens, vals, 0); + yyjson_mut_obj_clear(obj); + + yy_assert(!yyjson_mut_obj_iter_remove(NULL)); + + + yyjson_mut_obj_clear(NULL); + yyjson_mut_obj_clear(obj); + //--------------------------------------------- + + yyjson_mut_doc_free(doc); +} + + +/*============================================================================== + * MARK: - Doc + *============================================================================*/ + +#if !YYJSON_DISABLE_READER +static void test_json_mut_doc_api_one(const char *json_str) { + yyjson_doc *json = yyjson_read(json_str, strlen(json_str), 0); + yyjson_mut_doc *json_cp = yyjson_doc_mut_copy(json, NULL); + yyjson_mut_doc *json_mut_cp = yyjson_mut_doc_mut_copy(json_cp, NULL); + yy_assert(yyjson_mut_equals(json_cp->root, json_mut_cp->root) == true); + yy_assert(!yyjson_mut_doc_imut_copy(NULL, NULL)); + yyjson_doc *idoc_cp = yyjson_mut_doc_imut_copy(json_cp, NULL); + yy_assert(yyjson_equals(json->root, idoc_cp->root) == true); + yy_assert(!yyjson_mut_val_imut_copy(NULL, NULL)); + yyjson_doc *ival_cp = yyjson_mut_val_imut_copy(json_cp->root, NULL); + yy_assert(yyjson_equals(json->root, idoc_cp->root) == true); + yyjson_doc_free(json); + yyjson_mut_doc_free(json_cp); + yyjson_mut_doc_free(json_mut_cp); + yyjson_doc_free(idoc_cp); + yyjson_doc_free(ival_cp); +} +#endif + +static void test_json_mut_doc_api(void) { + { + yyjson_mut_doc_set_root(NULL, NULL); + yy_assert(yyjson_mut_doc_get_root(NULL) == NULL); + } + { + yyjson_mut_doc *doc = yyjson_mut_doc_new(NULL); + yy_assert(yyjson_mut_doc_get_root(doc) == NULL); + yyjson_mut_doc *doc2 = yyjson_mut_doc_mut_copy(doc, NULL); + yy_assert(doc2 != NULL && doc2->root == NULL); + + yyjson_mut_val *val = yyjson_mut_str(doc, "abc"); + yy_assert(yyjson_mut_is_str(val)); + yyjson_mut_doc_set_root(doc, val); + yy_assert(yyjson_mut_doc_get_root(doc) == val); + + yyjson_mut_val *v1 = yyjson_mut_int(doc, 0); + yyjson_mut_val *v2 = yyjson_mut_int(doc, 0); + v1->tag = 0; + v2->tag = 0; + yy_assert(yyjson_mut_equals(v1, v2) == false); + + yyjson_mut_doc_free(doc); + yyjson_mut_doc_free(doc2); + } + +#if !YYJSON_DISABLE_READER + { + yyjson_doc *idoc = yyjson_read("1", 1, 0); + idoc->root = NULL; + yy_assert(!yyjson_doc_mut_copy(idoc, NULL)); + yyjson_doc_free(idoc); + } + test_json_mut_doc_api_one("\"\""); + test_json_mut_doc_api_one("\"abc\""); + test_json_mut_doc_api_one("123"); + test_json_mut_doc_api_one("[1,2,3]"); + test_json_mut_doc_api_one("{\"a\":1}"); + test_json_mut_doc_api_one("{\"a\":{\"b\":[-1,2,1.0,2.0,true,false,null]}}"); +#endif +#if !YYJSON_DISABLE_READER && !YYJSON_DISABLE_WRITER + { + const char *json_src = "{\"a\":1,\"b\":2}"; + const char *json_dst = "{\"c\":1,\"b\":2}"; + yyjson_doc *idoc = yyjson_read(json_src, strlen(json_src), 0); + yyjson_mut_doc *mdoc = yyjson_doc_mut_copy(idoc, NULL); + yyjson_mut_val *root = yyjson_mut_doc_get_root(mdoc); + yyjson_mut_obj_rename_key(mdoc, root, "a", "c"); + char *new_json = yyjson_mut_write(mdoc, 0, NULL); + yy_assert(strcmp(new_json, json_dst) == 0); + yyjson_doc_free(idoc); + yyjson_mut_doc_free(mdoc); + free(new_json); + } +#endif +} + + + +/*============================================================================== + * MARK: - Equals + *============================================================================*/ + +static void validate_equals(const char *lhs_json, const char *rhs_json, bool equals) { +#if !YYJSON_DISABLE_READER + yyjson_doc *lhs_doc = yyjson_read(lhs_json, strlen(lhs_json), 0); + yyjson_doc *rhs_doc = yyjson_read(rhs_json, strlen(rhs_json), 0); + + yyjson_mut_doc *mut_lhs_doc = yyjson_doc_mut_copy(lhs_doc, NULL); + yyjson_mut_doc *mut_rhs_doc = yyjson_doc_mut_copy(rhs_doc, NULL); + + yyjson_mut_val *mut_lhs_val = yyjson_mut_doc_get_root(mut_lhs_doc); + yyjson_mut_val *mut_rhs_val = yyjson_mut_doc_get_root(mut_rhs_doc); + + yy_assert(yyjson_mut_equals(mut_lhs_val, mut_rhs_val) == equals); + yy_assert(yyjson_mut_equals(mut_rhs_val, mut_lhs_val) == equals); + + yyjson_mut_doc_free(mut_rhs_doc); + yyjson_mut_doc_free(mut_lhs_doc); + + yyjson_doc_free(rhs_doc); + yyjson_doc_free(lhs_doc); + + // RAW type + lhs_doc = yyjson_read(lhs_json, strlen(lhs_json), YYJSON_READ_NUMBER_AS_RAW); + rhs_doc = yyjson_read(rhs_json, strlen(rhs_json), YYJSON_READ_NUMBER_AS_RAW); + + mut_lhs_doc = yyjson_doc_mut_copy(lhs_doc, NULL); + mut_rhs_doc = yyjson_doc_mut_copy(rhs_doc, NULL); + + mut_lhs_val = yyjson_mut_doc_get_root(mut_lhs_doc); + mut_rhs_val = yyjson_mut_doc_get_root(mut_rhs_doc); + + yy_assert(yyjson_mut_equals(mut_lhs_val, mut_rhs_val) == equals); + yy_assert(yyjson_mut_equals(mut_rhs_val, mut_lhs_val) == equals); + + yyjson_mut_doc_free(mut_rhs_doc); + yyjson_mut_doc_free(mut_lhs_doc); + + yyjson_doc_free(rhs_doc); + yyjson_doc_free(lhs_doc); +#endif +} + +static void test_json_mut_equals_api(void) { + yy_assert(!yyjson_mut_equals(NULL, NULL)); + validate_equals("", "", false); + validate_equals("", "true", false); + validate_equals("true", "", false); + validate_equals("true", "false", false); + validate_equals("null", "null", true); + validate_equals("true", "true", true); + validate_equals("false", "false", true); + validate_equals("1", "1", true); + validate_equals("1", "2", false); + validate_equals("-1", "-1", true); + validate_equals("-1", "1", false); + validate_equals("1", "\"hello\"", false); + validate_equals("\"hello\"", "\"hello\"", true); + validate_equals("\"hello\"", "\"world\"", false); + validate_equals("\"\"", "\"\"", true); + validate_equals("123.456", "123.456", true); + validate_equals("-123.456", "-123.456", true); + validate_equals("-123.456", "123.456", false); + validate_equals("{}", "{}", true); + validate_equals("[]", "[]", true); + validate_equals("[]", "{}", false); + validate_equals("{}", "[]", false); + validate_equals("[]", "[1]", false); + validate_equals("[1]", "[1]", true); + validate_equals("[1]", "[2]", false); + validate_equals("[1]", "[1, 2]", false); + validate_equals("{}", "{\"a\":0}", false); + validate_equals("{\"a\":0}", "{\"a\":0}", true); + validate_equals("{\"a\":0}", "{\"a\":1}", false); + validate_equals("{\"a\":0}", "{\"b\":0}", false); + validate_equals("{\"a\":0}", "{\"a\":0,\"b\":0}", false); + validate_equals("{\"a\":{\"b\":[1.0, 2.0]}}", + "{\"a\":{\"b\":[1.0, 2.0]}}", + true); + validate_equals("{\"a\":{\"b\":[1.0, 2.0]}}", + "{\"a\":{\"b\":[1.0, 2]}}", + false); + validate_equals("[1,2,3,4,5,\"test\",123.456,true,false,null]", + "[1,2,3,4,5,\"test\",123.456,true,false,null]", + true); + validate_equals("[null,1,2,3,4,5,\"test\",123.456,true,false]", + "[1,2,3,4,5,\"test\",123.456,true,false,null]", + false); + validate_equals("{}", + "{\"a\":1,\"b\":2,\"c\":3}", + false); + validate_equals("{\"a\":1,\"b\":2,\"c\":3}", + "{\"b\":2,\"a\":1,\"c\":3}", + true); + validate_equals("{\"a\":1,\"b\":2,\"c\":3}", + "{\"a\":1,\"b\":2,\"c\":3,\"d\":4}", + false); + validate_equals("\ +[{\ + \"array\": [1,2,3,4,5,\"test\",123.456,true,false,null,{\"a\":1,\"b\":2,\"c\":3}],\ + \"object\": {\ + \"key1\": 1,\ + \"key2\": 2,\ + \"key3\": true,\ + \"key4\": false,\ + \"key5\": null,\ + \"key6\": [1,2,3,4,5,\"test\",123.456,true,false,null],\ + \"key7\": {\"a\":1,\"b\":2,\"c\":3}\ + }\ +}]", +"\ +[{\ + \"object\": {\ + \"key5\": null,\ + \"key6\": [1,2,3,4,5,\"test\",123.456,true,false,null],\ + \"key1\": 1,\ + \"key7\": {\"c\":3,\"a\":1,\"b\":2},\ + \"key2\": 2,\ + \"key3\": true,\ + \"key4\": false\ + },\ + \"array\": [1,2,3,4,5,\"test\",123.456,true,false,null,{\"a\":1,\"b\":2,\"c\":3}]\ +}]", true); +} + + + +/*============================================================================== + * MARK: - Entry + *============================================================================*/ + +yy_test_case(test_json_mut_val) { + test_json_mut_val_api(); + test_json_mut_arr_api(); + test_json_mut_obj_api(); + test_json_mut_doc_api(); + test_json_mut_equals_api(); +} diff --git a/lib/yyjson-0.12.0/test/test_json_patch.c b/lib/yyjson-0.12.0/test/test_json_patch.c new file mode 100644 index 00000000000..6774b03712a --- /dev/null +++ b/lib/yyjson-0.12.0/test/test_json_patch.c @@ -0,0 +1,639 @@ +// This file is used to test the `JSON Patch` functions. + +#include "yyjson.h" +#include "yy_test_utils.h" + +#if !YYJSON_DISABLE_READER && !YYJSON_DISABLE_WRITER && !YYJSON_DISABLE_UTILS + +typedef struct { + const char *src; + const char *patch; + const char *dst; + yyjson_patch_err err; +} patch_data; + +// ----------------------------------------------------------------------------- +// assert (str == expected) +static void assert_str_eq(const char *str, const char *exp) { + if (!str && !exp) return; + if (str && !exp) yy_assertf(false, "expected NULL, but <%s>", str); + if (!str && exp) yy_assertf(false, "expected <%s>, but NULL", exp); + yy_assertf(strcmp(str, exp) == 0, "expected <%s>, but <%s>", exp, str); +} + +// assert (str(val) == json) +static void assert_mut_val_eq(yyjson_mut_val *val, const char *json) { + char *str = yyjson_mut_val_write(val, 0, NULL); + assert_str_eq(str, json); + if (str) free(str); +} + +// assert (str(val) == json) +static void assert_err_eq(yyjson_patch_err *err, patch_data *data) { + yy_assert(err->code == data->err.code); + yy_assert(err->idx == data->err.idx); + yy_assert(err->ptr.code == data->err.ptr.code); + if (err->code) { + yy_assert(err->msg != NULL); + } else { + yy_assert(err->msg == NULL); + } + if (err->code == YYJSON_PATCH_ERROR_POINTER) { + yy_assert(err->ptr.code != 0); + yy_assert(err->ptr.msg != NULL); + } else { + yy_assert(err->ptr.code == 0); + yy_assert(err->ptr.msg == NULL); + } +} + +// ----------------------------------------------------------------------------- +// test JSON patch +static void test_patch(patch_data data) { + yyjson_mut_doc *doc = yyjson_mut_doc_new(NULL); + yyjson_doc *src_doc = yyjson_read(data.src, data.src ? strlen(data.src) : 0, 0); + yyjson_doc *pat_doc = yyjson_read(data.patch, data.patch ? strlen(data.patch) : 0, 0); + yyjson_val *src = yyjson_doc_get_root(src_doc); + yyjson_val *pat = yyjson_doc_get_root(pat_doc); + yyjson_mut_val *msrc = yyjson_val_mut_copy(doc, src); + yyjson_mut_val *mpat = yyjson_val_mut_copy(doc, pat); + yyjson_mut_val *ret; + yyjson_patch_err err; + + ret = yyjson_patch(doc, src, pat, NULL); + assert_mut_val_eq(ret, data.dst); + + memset(&err, -1, sizeof(err)); + ret = yyjson_patch(doc, src, pat, &err); + assert_mut_val_eq(ret, data.dst); + assert_err_eq(&err, &data); + + ret = yyjson_mut_patch(doc, msrc, mpat, NULL); + assert_mut_val_eq(ret, data.dst); + + memset(&err, -1, sizeof(err)); + ret = yyjson_mut_patch(doc, msrc, mpat, &err); + assert_mut_val_eq(ret, data.dst); + assert_err_eq(&err, &data); + + yyjson_mut_doc_free(doc); + yyjson_doc_free(src_doc); + yyjson_doc_free(pat_doc); +} + +// ----------------------------------------------------------------------------- +// test cases from https://www.rfc-editor.org/rfc/rfc6902 +static void test_spec(void) { + // A.1. Adding an Object Member + test_patch((patch_data){ + .src = "{\"foo\":\"bar\"}", + .patch = "[" + "{\"op\":\"add\",\"path\":\"/baz\",\"value\":\"qux\"}" + "]", + .dst = "{\"foo\":\"bar\",\"baz\":\"qux\"}", + }); + + // A.2. Adding an Array Element + test_patch((patch_data){ + .src = "{\"foo\":[\"bar\",\"baz\"]}", + .patch = "[" + "{\"op\":\"add\",\"path\":\"/foo/1\",\"value\":\"qux\"}" + "]", + .dst = "{\"foo\":[\"bar\",\"qux\",\"baz\"]}", + }); + + // A.3. Removing an Object Member + test_patch((patch_data){ + .src = "{\"foo\":\"bar\",\"baz\":\"qux\"}", + .patch = "[" + "{\"op\":\"remove\",\"path\":\"/baz\"}" + "]", + .dst = "{\"foo\":\"bar\"}", + }); + + // A.4. Removing an Array Element + test_patch((patch_data){ + .src = "{\"foo\":[\"bar\",\"qux\",\"baz\"]}", + .patch = "[" + "{\"op\":\"remove\",\"path\":\"/foo/1\"}" + "]", + .dst = "{\"foo\":[\"bar\",\"baz\"]}", + }); + + // A.5. Replacing a Value + test_patch((patch_data){ + .src = "{\"foo\":\"bar\",\"baz\":\"qux\"}", + .patch = "[" + "{\"op\":\"replace\",\"path\":\"/baz\",\"value\":\"boo\"}" + "]", + .dst = "{\"foo\":\"bar\",\"baz\":\"boo\"}", + }); + + // A.6. Moving a Value + test_patch((patch_data){ + .src = "{\"foo\":{\"bar\":\"baz\",\"waldo\":\"fred\"},\"qux\":{\"corge\":\"grault\"}}", + .patch = "[" + "{\"op\":\"move\",\"from\":\"/foo/waldo\",\"path\":\"/qux/thud\"}" + "]", + .dst = "{\"foo\":{\"bar\":\"baz\"},\"qux\":{\"corge\":\"grault\",\"thud\":\"fred\"}}", + }); + + // A.7. Moving an Array Element + test_patch((patch_data){ + .src = "{\"foo\":[\"all\",\"grass\",\"cows\",\"eat\"]}", + .patch = "[" + "{\"op\":\"move\",\"from\":\"/foo/1\",\"path\":\"/foo/3\"}" + "]", + .dst = "{\"foo\":[\"all\",\"cows\",\"eat\",\"grass\"]}", + }); + + // A.8. Testing a Value: Success + test_patch((patch_data){ + .src = "{\"baz\":\"qux\",\"foo\":[\"a\",2,\"c\"]}", + .patch = "[" + "{\"op\":\"test\",\"path\":\"/baz\",\"value\":\"qux\"}," + "{\"op\":\"test\",\"path\":\"/foo/1\",\"value\":2}" + "]", + .dst = "{\"baz\":\"qux\",\"foo\":[\"a\",2,\"c\"]}", + }); + + // A.9. Testing a Value: Error + test_patch((patch_data){ + .src = "{\"baz\":\"qux\"}", + .patch = "[" + "{\"op\":\"test\",\"path\":\"/baz\",\"value\":\"bar\"}" + "]", + .err = { + .code = YYJSON_PATCH_ERROR_EQUAL, + .idx = 0, + }, + }); + + // A.10. Adding a Nested Member Object + test_patch((patch_data){ + .src = "{\"foo\":\"bar\"}", + .patch = "[" + "{\"op\":\"add\",\"path\":\"/child\",\"value\":{\"grandchild\":{}}}" + "]", + .dst = "{\"foo\":\"bar\",\"child\":{\"grandchild\":{}}}", + }); + + // A.11. Ignoring Unrecognized Elements + test_patch((patch_data){ + .src = "{\"foo\":\"bar\"}", + .patch = "[" + "{\"op\":\"add\",\"path\":\"/baz\",\"value\":\"qux\",\"xyz\":123}" + "]", + .dst = "{\"foo\":\"bar\",\"baz\":\"qux\"}", + }); + + // A.12. Adding to a Nonexistent Target + test_patch((patch_data){ + .src = "{\"foo\":\"bar\"}", + .patch = "[" + "{\"op\":\"add\",\"path\":\"/baz/bat\",\"value\":\"qux\"}" + "]", + .err = { + .code = YYJSON_PATCH_ERROR_POINTER, + .idx = 0, + .ptr = YYJSON_PTR_ERR_RESOLVE, + }, + }); + + // A.13. Invalid JSON Patch Document + // Note: yyjson allows duplicate keys, here only the first "op" is taken + test_patch((patch_data){ + .src = "{\"foo\":\"bar\"}", + .patch = "[" + "{\"op\":\"add\",\"path\":\"/baz\",\"value\":\"qux\",\"op\":\"remove\"}" + "]", + .dst = "{\"foo\":\"bar\",\"baz\":\"qux\"}", + }); + + // A.14. ~ Escape Ordering + test_patch((patch_data){ + .src = "{\"/\":9,\"~1\":10}", + .patch = "[" + "{\"op\":\"test\",\"path\":\"/~01\",\"value\":10}" + "]", + .dst = "{\"/\":9,\"~1\":10}", + }); + + // A.15. Comparing Strings and Numbers + test_patch((patch_data){ + .src = "{\"/\":9,\"~1\":10}", + .patch = "[" + "{\"op\":\"test\",\"path\":\"/~01\",\"value\":\"10\"}" + "]", + .err = { + .code = YYJSON_PATCH_ERROR_EQUAL, + .idx = 0, + }, + }); + + // A.16. Adding an Array Value + test_patch((patch_data){ + .src = "{\"foo\":[\"bar\"]}", + .patch = "[" + "{\"op\":\"add\",\"path\":\"/foo/-\",\"value\":[\"abc\",\"def\"]}" + "]", + .dst = "{\"foo\":[\"bar\",[\"abc\",\"def\"]]}", + }); +} + +static void test_more(void) { + // --------------------------------- + // invalid parameter + test_patch((patch_data){ + .src = "", + .patch = "[]", + .err = { + .code = YYJSON_PATCH_ERROR_INVALID_PARAMETER, + } + }); + test_patch((patch_data){ + .src = "[]", + .patch = "", + .err = { + .code = YYJSON_PATCH_ERROR_INVALID_PARAMETER, + } + }); + test_patch((patch_data){ + .src = "", + .patch = "", + .err = { + .code = YYJSON_PATCH_ERROR_INVALID_PARAMETER, + } + }); + test_patch((patch_data){ + .src = "[]", + .patch = "{}", + .err = { + .code = YYJSON_PATCH_ERROR_INVALID_PARAMETER, + } + }); + + // --------------------------------- + // error with index + test_patch((patch_data){ + .src = "[]", + .patch = "[" + "{\"op\":\"add\",\"path\":\"/-\",\"value\":0}," + "{\"op\":\"add\",\"path\":\"/-\",\"value\":1}," + "123" + "]", + .err = { + .code = YYJSON_PATCH_ERROR_INVALID_OPERATION, + .idx = 2, + } + }); + test_patch((patch_data){ + .src = "[]", + .patch = "[" + "{\"op\":\"add\",\"path\":\"/-\",\"value\":0}," + "{\"op\":\"add\",\"path\":\"/-\",\"value\":1}," + "{\"op\":\"err\",\"path\":\"/-\",\"value\":1}" + "]", + .err = { + .code = YYJSON_PATCH_ERROR_INVALID_MEMBER, + .idx = 2, + } + }); + test_patch((patch_data){ + .src = "[]", + .patch = "[" + "{\"op\":\"add\",\"path\":\"/-\",\"value\":0}," + "{\"op\":\"add\",\"path\":\"/-\",\"value\":1}," + "{\"path\":\"/-\",\"value\":1}" + "]", + .err = { + .code = YYJSON_PATCH_ERROR_MISSING_KEY, + .idx = 2, + } + }); + test_patch((patch_data){ + .src = "[]", + .patch = "[" + "{\"op\":\"add\",\"path\":\"/-\",\"value\":0}," + "{\"op\":\"add\",\"path\":\"/-\",\"value\":1}," + "{\"op\":\"add\",\"value\":2}" + "]", + .err = { + .code = YYJSON_PATCH_ERROR_MISSING_KEY, + .idx = 2, + } + }); + test_patch((patch_data){ + .src = "[]", + .patch = "[" + "{\"op\":\"add\",\"path\":\"/-\",\"value\":0}," + "{\"op\":\"add\",\"path\":\"/-\",\"value\":1}," + "{\"op\":\"add\",\"path\":null,\"value\":2}" + "]", + .err = { + .code = YYJSON_PATCH_ERROR_INVALID_MEMBER, + .idx = 2, + } + }); + + // --------------------------------- + // error op + test_patch((patch_data){ + .src = "[1]", + .patch = "[{\"op\":0,\"path\":\"/0\",\"value\":0}]", + .err = { .code = YYJSON_PATCH_ERROR_INVALID_MEMBER, } + }); + test_patch((patch_data){ + .src = "[1]", + .patch = "[{\"op\":\"\",\"path\":\"/0\",\"value\":0}]", + .err = { .code = YYJSON_PATCH_ERROR_INVALID_MEMBER, } + }); + test_patch((patch_data){ + .src = "[1]", + .patch = "[{\"op\":\"at\",\"path\":\"/0\",\"value\":0}]", + .err = { .code = YYJSON_PATCH_ERROR_INVALID_MEMBER, } + }); + test_patch((patch_data){ + .src = "[1]", + .patch = "[{\"op\":\"set\",\"path\":\"/0\",\"value\":0}]", + .err = { .code = YYJSON_PATCH_ERROR_INVALID_MEMBER, } + }); + test_patch((patch_data){ + .src = "[1]", + .patch = "[{\"op\":\"puts\",\"path\":\"/0\",\"value\":0}]", + .err = { .code = YYJSON_PATCH_ERROR_INVALID_MEMBER, } + }); + test_patch((patch_data){ + .src = "[1]", + .patch = "[{\"op\":\"delete\",\"path\":\"/0\",\"value\":0}]", + .err = { .code = YYJSON_PATCH_ERROR_INVALID_MEMBER, } + }); + test_patch((patch_data){ + .src = "[1]", + .patch = "[{\"op\":\"unknown\",\"path\":\"/0\",\"value\":0}]", + .err = { .code = YYJSON_PATCH_ERROR_INVALID_MEMBER, } + }); + + // --------------------------------- + // add + test_patch((patch_data){ + .src = "[1]", + .patch = "[{\"op\":\"add\",\"value\":0}]", + .err = { .code = YYJSON_PATCH_ERROR_MISSING_KEY, } + }); + test_patch((patch_data){ + .src = "[0]", + .patch = "[{\"op\":\"add\",\"path\":\"/1\"}]", + .err = { .code = YYJSON_PATCH_ERROR_MISSING_KEY, } + }); + test_patch((patch_data){ + .src = "[0]", + .patch = "[{\"op\":\"add\",\"path\":\"/1\",\"value\":1}]", + .dst = "[0,1]", + }); + test_patch((patch_data){ + .src = "[0]", + .patch = "[{\"op\":\"add\",\"path\":\"/2\",\"value\":1}]", + .err = { .code = YYJSON_PATCH_ERROR_POINTER, + .ptr = { .code = YYJSON_PTR_ERR_RESOLVE } } + }); + test_patch((patch_data){ + .src = "[0]", + .patch = "[{\"op\":\"add\",\"path\":\"/~2\",\"value\":1}]", + .err = { .code = YYJSON_PATCH_ERROR_POINTER, + .ptr = { .code = YYJSON_PTR_ERR_SYNTAX } } + }); + test_patch((patch_data){ + .src = "[0]", + .patch = "[{\"op\":\"add\",\"path\":\"\",\"value\":1}]", + .dst = "1", + }); + + // --------------------------------- + // remove + test_patch((patch_data){ + .src = "[1]", + .patch = "[{\"op\":\"remove\"}]", + .err = { .code = YYJSON_PATCH_ERROR_MISSING_KEY, } + }); + test_patch((patch_data){ + .src = "[1]", + .patch = "[{\"op\":\"remove\",\"path\":0}]", + .err = { .code = YYJSON_PATCH_ERROR_INVALID_MEMBER, } + }); + test_patch((patch_data){ + .src = "[1]", + .patch = "[{\"op\":\"remove\",\"path\":\"\"}]", + .err = { .code = YYJSON_PATCH_ERROR_POINTER, + .ptr = { .code = YYJSON_PTR_ERR_SET_ROOT } + } + }); + test_patch((patch_data){ + .src = "[1]", + .patch = "[{\"op\":\"remove\",\"path\":\"/-\"}]", + .err = { .code = YYJSON_PATCH_ERROR_POINTER, + .ptr = { .code = YYJSON_PTR_ERR_RESOLVE, } + } + }); + test_patch((patch_data){ + .src = "[1]", + .patch = "[{\"op\":\"remove\",\"path\":\"/0\"}]", + .dst = "[]", + }); + + // --------------------------------- + // replace + test_patch((patch_data){ + .src = "[1]", + .patch = "[{\"op\":\"replace\",\"value\":0}]", + .err = { .code = YYJSON_PATCH_ERROR_MISSING_KEY, } + }); + test_patch((patch_data){ + .src = "[0]", + .patch = "[{\"op\":\"replace\",\"path\":\"/1\"}]", + .err = { .code = YYJSON_PATCH_ERROR_MISSING_KEY, } + }); + test_patch((patch_data){ + .src = "[0]", + .patch = "[{\"op\":\"replace\",\"path\":\"/0\",\"value\":1}]", + .dst = "[1]", + }); + test_patch((patch_data){ + .src = "[0]", + .patch = "[{\"op\":\"replace\",\"path\":\"/1\",\"value\":1}]", + .err = { .code = YYJSON_PATCH_ERROR_POINTER, + .ptr = { .code = YYJSON_PTR_ERR_RESOLVE } } + }); + test_patch((patch_data){ + .src = "[0]", + .patch = "[{\"op\":\"replace\",\"path\":\"/~2\",\"value\":1}]", + .err = { .code = YYJSON_PATCH_ERROR_POINTER, + .ptr = { .code = YYJSON_PTR_ERR_SYNTAX } } + }); + test_patch((patch_data){ + .src = "[0]", + .patch = "[{\"op\":\"replace\",\"path\":\"\",\"value\":1}]", + .dst = "1", + }); + + // --------------------------------- + // move + test_patch((patch_data){ + .src = "[[1,2],[3,4]]", + .patch = "[{\"op\":\"move\",\"from\":\"/0/0\"}]", + .err = { .code = YYJSON_PATCH_ERROR_MISSING_KEY, } + }); + test_patch((patch_data){ + .src = "[[1,2],[3,4]]", + .patch = "[{\"op\":\"move\",\"path\":\"/1/0\"}]", + .err = { .code = YYJSON_PATCH_ERROR_MISSING_KEY, } + }); + test_patch((patch_data){ + .src = "[[1,2],[3,4]]", + .patch = "[{\"op\":\"move\",\"from\":\"/0/0\",\"path\":\"/1/0\"}]", + .dst = "[[2],[1,3,4]]", + }); + test_patch((patch_data){ + .src = "[[1,2],[3,4]]", + .patch = "[{\"op\":\"move\",\"from\":0,\"path\":\"/1/0\"}]", + .err = { .code = YYJSON_PATCH_ERROR_INVALID_MEMBER } + }); + test_patch((patch_data){ + .src = "[[1,2],[3,4]]", + .patch = "[{\"op\":\"move\",\"from\":\"/0/a\",\"path\":\"/1/0\"}]", + .err = { .code = YYJSON_PATCH_ERROR_POINTER, + .ptr = { .code = YYJSON_PTR_ERR_RESOLVE } } + }); + test_patch((patch_data){ + .src = "[[1,2],[3,4]]", + .patch = "[{\"op\":\"move\",\"from\":\"/0/0\",\"path\":\"/1/a\"}]", + .err = { .code = YYJSON_PATCH_ERROR_POINTER, + .ptr = { .code = YYJSON_PTR_ERR_RESOLVE } } + }); + test_patch((patch_data){ + .src = "[[1,2],[3,4]]", + .patch = "[{\"op\":\"move\",\"from\":\"/0/~\",\"path\":\"/1/0\"}]", + .err = { .code = YYJSON_PATCH_ERROR_POINTER, + .ptr = { .code = YYJSON_PTR_ERR_SYNTAX } } + }); + test_patch((patch_data){ + .src = "[[1,2],[3,4]]", + .patch = "[{\"op\":\"move\",\"from\":\"\",\"path\":\"\"}]", + .dst = "[[1,2],[3,4]]", + }); + test_patch((patch_data){ + .src = "[[1,2],[3,4]]", + .patch = "[{\"op\":\"move\",\"from\":\"/0/0\",\"path\":\"\"}]", + .dst = "1", + }); + + // --------------------------------- + // copy + test_patch((patch_data){ + .src = "[[1,2],[3,4]]", + .patch = "[{\"op\":\"copy\",\"from\":\"/0/0\"}]", + .err = { .code = YYJSON_PATCH_ERROR_MISSING_KEY, } + }); + test_patch((patch_data){ + .src = "[[1,2],[3,4]]", + .patch = "[{\"op\":\"copy\",\"path\":\"/1/0\"}]", + .err = { .code = YYJSON_PATCH_ERROR_MISSING_KEY, } + }); + test_patch((patch_data){ + .src = "[[1,2],[3,4]]", + .patch = "[{\"op\":\"copy\",\"from\":\"/0/0\",\"path\":\"/1/0\"}]", + .dst = "[[1,2],[1,3,4]]", + }); + test_patch((patch_data){ + .src = "[[1,2],[3,4]]", + .patch = "[{\"op\":\"copy\",\"from\":0,\"path\":\"/1/0\"}]", + .err = { .code = YYJSON_PATCH_ERROR_INVALID_MEMBER } + }); + test_patch((patch_data){ + .src = "[[1,2],[3,4]]", + .patch = "[{\"op\":\"copy\",\"from\":\"/0/a\",\"path\":\"/1/0\"}]", + .err = { .code = YYJSON_PATCH_ERROR_POINTER, + .ptr = { .code = YYJSON_PTR_ERR_RESOLVE } } + }); + test_patch((patch_data){ + .src = "[[1,2],[3,4]]", + .patch = "[{\"op\":\"copy\",\"from\":\"/0/0\",\"path\":\"/1/a\"}]", + .err = { .code = YYJSON_PATCH_ERROR_POINTER, + .ptr = { .code = YYJSON_PTR_ERR_RESOLVE } } + }); + test_patch((patch_data){ + .src = "[[1,2],[3,4]]", + .patch = "[{\"op\":\"copy\",\"from\":\"/0/~\",\"path\":\"/1/0\"}]", + .err = { .code = YYJSON_PATCH_ERROR_POINTER, + .ptr = { .code = YYJSON_PTR_ERR_SYNTAX } } + }); + test_patch((patch_data){ + .src = "[[1,2],[3,4]]", + .patch = "[{\"op\":\"copy\",\"from\":\"\",\"path\":\"\"}]", + .dst = "[[1,2],[3,4]]", + }); + test_patch((patch_data){ + .src = "[[1,2],[3,4]]", + .patch = "[{\"op\":\"copy\",\"from\":\"/0/0\",\"path\":\"\"}]", + .dst = "1", + }); + + // --------------------------------- + // test + test_patch((patch_data){ + .src = "[1]", + .patch = "[{\"op\":\"test\",\"value\":1}]", + .err = { .code = YYJSON_PATCH_ERROR_MISSING_KEY, } + }); + test_patch((patch_data){ + .src = "[1]", + .patch = "[{\"op\":\"test\",\"path\":\"/0\"}]", + .err = { .code = YYJSON_PATCH_ERROR_MISSING_KEY, } + }); + test_patch((patch_data){ + .src = "[1]", + .patch = "[{\"op\":\"test\",\"path\":\"/0\",\"value\":1}]", + .dst = "[1]", + }); + test_patch((patch_data){ + .src = "[1]", + .patch = "[{\"op\":\"test\",\"path\":\"/1\",\"value\":1}]", + .err = { .code = YYJSON_PATCH_ERROR_POINTER, + .ptr = { .code = YYJSON_PTR_ERR_RESOLVE } } + }); + test_patch((patch_data){ + .src = "[1]", + .patch = "[{\"op\":\"test\",\"path\":\"/~2\",\"value\":1}]", + .err = { .code = YYJSON_PATCH_ERROR_POINTER, + .ptr = { .code = YYJSON_PTR_ERR_SYNTAX } } + }); + test_patch((patch_data){ + .src = "[1]", + .patch = "[{\"op\":\"test\",\"path\":\"\",\"value\":2}]", + .err = { .code = YYJSON_PATCH_ERROR_EQUAL } + }); + + // --------------------------------- + // multiple ops + test_patch((patch_data){ + .src = "[1,2,3]", + .patch = "[" + "{\"op\":\"add\",\"path\":\"/3\",\"value\":4}," // [1,2,3,4] + "{\"op\":\"remove\",\"path\":\"/1\"}," // [1,3,4] + "{\"op\":\"replace\",\"path\":\"/0\",\"value\":{\"a\":0}}," // [{"a":0},3,4] + "{\"op\":\"move\",\"from\":\"/0/a\",\"path\":\"/1\"}," // [{},0,3,4] + "{\"op\":\"copy\",\"from\":\"/3\",\"path\":\"/0/b\"}," // [{"b":4},0,3,4] + "{\"op\":\"test\",\"path\":\"/0\",\"value\":{\"b\":4}}" // [{"b":4},0,3,4] + "]", + .dst = "[{\"b\":4},0,3,4]" + }); +} + +yy_test_case(test_json_patch) { + test_spec(); + test_more(); +} + +#else +yy_test_case(test_json_patch) {} +#endif diff --git a/lib/yyjson-0.12.0/test/test_json_pointer.c b/lib/yyjson-0.12.0/test/test_json_pointer.c new file mode 100644 index 00000000000..84b2c332a90 --- /dev/null +++ b/lib/yyjson-0.12.0/test/test_json_pointer.c @@ -0,0 +1,3328 @@ +// This file is used to test the `JSON Pointer` functions. + +#include "yyjson.h" +#include "yy_test_utils.h" + +#if !YYJSON_DISABLE_READER && !YYJSON_DISABLE_WRITER && !YYJSON_DISABLE_UTILS + +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +#elif defined(__GNUC__) +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#elif defined(_MSC_VER) +#pragma warning(disable:4996) +#endif + +// JSON pointer operation +typedef enum { + PTR_OP_GET, + PTR_OP_ADD, + PTR_OP_SET, + PTR_OP_REPLACE, + PTR_OP_REMOVE, +} ptr_op; + +// JSON pointer data, expected: +// val = src.get(ptr) +// suc = src.add(ptr, val), src->dst +// suc = src.set(ptr, val), src->dst +// old = src.replace(ptr, val), src->dst +// old = src.remove(ptr), src->dst +typedef struct { + ptr_op op; // operation + + bool create_parent; // param + const char *src; // source document, `empty_root` for empty root + const char *ptr; // pointer + size_t ptr_len; // pointer length, 0 to use strlen() + const char *val; // json value + const char *dst; // destination document, `empty_root` for empty root + + const char *key; // used for ctx_append + const char *ctn; // expected ctx.ctn (target value's parent) + const char *pre; // expected ctx.pre (target value's previous) + const char *old; // expected ctx.old (removed value) + yyjson_ptr_code err;// expected error code + size_t pos; // expected error pos +} ptr_data; + +static const char *empty_root = "empty"; + +// ----------------------------------------------------------------------------- +// assert (str == expected) +static void assert_str_eq(const char *str, const char *exp) { + if (!str && !exp) return; + if (str && !exp) yy_assertf(false, "expected NULL, but <%s>", str); + if (!str && exp) yy_assertf(false, "expected <%s>, but NULL", exp); + yy_assertf(strcmp(str, exp) == 0, "expected <%s>, but <%s>", exp, str); +} + +// assert (str(val) == json) +static void assert_val_eq(yyjson_val *val, const char *json) { + char *str = yyjson_val_write(val, 0, NULL); + assert_str_eq(str, json); + if (str) free(str); +} + +// assert (str(val) == json) +static void assert_mut_val_eq(yyjson_mut_val *val, const char *json) { + char *str = yyjson_mut_val_write(val, 0, NULL); + assert_str_eq(str, json); + if (str) free(str); +} + +// assert (str(doc) == json) +static void assert_mut_doc_eq(yyjson_mut_doc *doc, const char *json) { + if (doc && !doc->root) { + assert_str_eq(empty_root, json); + } else { + char *str = yyjson_mut_write(doc, 0, NULL); + assert_str_eq(str, json); + if (str) free(str); + } +} + +// assert (ctx == expected) +static void assert_ctx_eq(yyjson_ptr_ctx *ctx, ptr_data *data) { + if (data) { + size_t invalid = SIZE_MAX; + yy_assert(ctx->ctn != (void *)invalid); + yy_assert(ctx->pre != (void *)invalid); + yy_assert(ctx->old != (void *)invalid); + assert_mut_val_eq(ctx->ctn, data->ctn); + assert_mut_val_eq(ctx->pre, data->pre); + assert_mut_val_eq(ctx->old, data->old); + } else { + yy_assert(ctx->ctn == NULL); + yy_assert(ctx->pre == NULL); + yy_assert(ctx->old == NULL); + } +} + +static void assert_err(yyjson_ptr_err *err, ptr_data *data) { + yy_assert(err->code == data->err); + yy_assert(err->pos == data->pos); + if (err->code) yy_assert(err->msg != NULL); + else yy_assert(err->msg == NULL); +} + +static void assert_err_param(yyjson_ptr_err *err) { + yy_assert(err->code == YYJSON_PTR_ERR_PARAMETER); + yy_assert(err->pos == 0); + yy_assert(err->msg != NULL); +} + +// ----------------------------------------------------------------------------- +// test single operation +static void test_ptr_op(ptr_data data) { + // source + yyjson_doc *idoc = yyjson_read(data.src, data.src ? strlen(data.src) : 0, 0); + yyjson_val *iroot = yyjson_doc_get_root(idoc); + yyjson_mut_doc *mdoc = yyjson_doc_mut_copy(idoc, NULL); + yyjson_mut_val *mroot = yyjson_mut_doc_get_root(mdoc); + if (data.src == empty_root) { + idoc = yyjson_read("1", 1, 0); + idoc->root = NULL; + mdoc = yyjson_mut_doc_new(NULL); + } + + // input value + yyjson_doc *ival_doc = yyjson_read(data.val, data.val ? strlen(data.val) : 0, 0); + yyjson_mut_doc *mval_doc = yyjson_doc_mut_copy(ival_doc, NULL); + yyjson_mut_val *mval = yyjson_mut_doc_get_root(mval_doc); + + // pointer + const char *ptr = data.ptr; + size_t ptr_len = data.ptr_len; + if (ptr && !ptr_len) ptr_len = strlen(ptr); + + // temp value + yyjson_val *iret; + yyjson_mut_doc *doc; + yyjson_mut_val *ret, *val, *root; + yyjson_ptr_err err; + yyjson_ptr_ctx ctx; + bool suc; + +#define mut_before() do { \ + memset(&err, -1, sizeof(err)); \ + memset(&ctx, -1, sizeof(ctx)); \ + doc = yyjson_mut_doc_mut_copy(mdoc, NULL); \ + val = yyjson_mut_val_mut_copy(doc, mval); \ + root = doc? doc->root : NULL;\ +} while(false) + +#define mut_after() do { \ + yyjson_mut_doc_free(doc); \ +} while (false) + + // val = src.get(ptr) + if (data.op == PTR_OP_GET) { + // ----------------------------- + // doc.get + iret = yyjson_doc_ptr_get(NULL, NULL); + yy_assert(iret == NULL); + if (data.ptr_len == 0) { + iret = yyjson_doc_ptr_get(idoc, ptr); + assert_val_eq(iret, data.val); + iret = yyjson_doc_get_pointer(idoc, ptr); // deprecated + assert_val_eq(iret, data.val); + } + + iret = yyjson_doc_ptr_getn(NULL, NULL, ptr_len); + yy_assert(iret == NULL); + iret = yyjson_doc_ptr_getn(idoc, ptr, ptr_len); + assert_val_eq(iret, data.val); + iret = yyjson_doc_get_pointern(idoc, ptr, ptr_len); // deprecated + assert_val_eq(iret, data.val); + + iret = yyjson_doc_ptr_getx(NULL, NULL, ptr_len, NULL); + yy_assert(iret == NULL); + iret = yyjson_doc_ptr_getx(idoc, ptr, ptr_len, NULL); + assert_val_eq(iret, data.val); + + memset(&err, -1, sizeof(err)); + iret = yyjson_doc_ptr_getx(NULL, NULL, ptr_len, &err); + yy_assert(iret == NULL); + assert_err_param(&err); + + memset(&err, -1, sizeof(err)); + iret = yyjson_doc_ptr_getx(idoc, ptr, ptr_len, &err); + assert_val_eq(iret, data.val); + assert_err(&err, &data); + + // ----------------------------- + // val.get + iret = yyjson_ptr_get(NULL, NULL); + yy_assert(iret == NULL); + if (data.ptr_len == 0) { + iret = yyjson_ptr_get(iroot, ptr); + assert_val_eq(iret, data.val); + iret = yyjson_get_pointer(iroot, ptr); // deprecated + assert_val_eq(iret, data.val); + } + + iret = yyjson_ptr_getn(NULL, NULL, ptr_len); + assert_val_eq(iret, NULL); + iret = yyjson_ptr_getn(iroot, ptr, ptr_len); + assert_val_eq(iret, data.val); + iret = yyjson_get_pointern(iroot, ptr, ptr_len); // deprecated + assert_val_eq(iret, data.val); + if (iroot && ptr && ptr_len && *ptr == '/') { + iret = unsafe_yyjson_get_pointer(iroot, ptr, ptr_len); // deprecated + assert_val_eq(iret, data.val); + } + + iret = yyjson_ptr_getx(NULL, NULL, ptr_len, NULL); + assert_val_eq(iret, NULL); + iret = yyjson_ptr_getx(iroot, ptr, ptr_len, NULL); + assert_val_eq(iret, data.val); + + memset(&err, -1, sizeof(err)); + iret = yyjson_ptr_getx(NULL, NULL, ptr_len, &err); + yy_assert(iret == NULL); + assert_err_param(&err); + + memset(&err, -1, sizeof(err)); + iret = yyjson_ptr_getx(iroot, ptr, ptr_len, &err); + assert_val_eq(iret, data.val); + if (data.src == empty_root) { + assert_err_param(&err); + } else { + assert_err(&err, &data); + } + + // ----------------------------- + // mut_doc.get + ret = yyjson_mut_doc_ptr_get(NULL, NULL); + yy_assert(ret == NULL); + if (data.ptr_len == 0) { + ret = yyjson_mut_doc_ptr_get(mdoc, ptr); + assert_mut_val_eq(ret, data.val); + ret = yyjson_mut_doc_get_pointer(mdoc, ptr); // deprecated + assert_mut_val_eq(ret, data.val); + } + + ret = yyjson_mut_doc_ptr_getn(NULL, NULL, ptr_len); + yy_assert(ret == NULL); + ret = yyjson_mut_doc_ptr_getn(mdoc, ptr, ptr_len); + assert_mut_val_eq(ret, data.val); + ret = yyjson_mut_doc_get_pointern(mdoc, ptr, ptr_len); // deprecated + assert_mut_val_eq(ret, data.val); + + ret = yyjson_mut_doc_ptr_getx(NULL, NULL, ptr_len, NULL, NULL); + yy_assert(ret == NULL); + ret = yyjson_mut_doc_ptr_getx(mdoc, ptr, ptr_len, NULL, NULL); + assert_mut_val_eq(ret, data.val); + + memset(&err, -1, sizeof(err)); + memset(&ctx, -1, sizeof(ctx)); + ret = yyjson_mut_doc_ptr_getx(NULL, NULL, ptr_len, &ctx, &err); + yy_assert(ret == NULL); + assert_ctx_eq(&ctx, NULL); + assert_err_param(&err); + + memset(&err, -1, sizeof(err)); + memset(&ctx, -1, sizeof(ctx)); + ret = yyjson_mut_doc_ptr_getx(mdoc, ptr, ptr_len, &ctx, &err); + assert_mut_val_eq(ret, data.val); + assert_ctx_eq(&ctx, &data); + assert_err(&err, &data); + + assert_mut_doc_eq(mdoc, data.src); /* doc should not be modified */ + + // ----------------------------- + // mut_val.get + ret = yyjson_mut_ptr_get(NULL, NULL); + yy_assert(ret == NULL); + if (data.ptr_len == 0) { + ret = yyjson_mut_ptr_get(mroot, ptr); + assert_mut_val_eq(ret, data.val); + ret = yyjson_mut_get_pointer(mroot, ptr); // deprecated + assert_mut_val_eq(ret, data.val); + } + + ret = yyjson_mut_ptr_getn(NULL, NULL, ptr_len); + yy_assert(ret == NULL); + ret = yyjson_mut_ptr_getn(mroot, ptr, ptr_len); + assert_mut_val_eq(ret, data.val); + ret = yyjson_mut_get_pointern(mroot, ptr, ptr_len); // deprecated + assert_mut_val_eq(ret, data.val); + if (mroot && ptr && ptr_len && *ptr == '/') { + ret = unsafe_yyjson_mut_get_pointer(mroot, ptr, ptr_len); // deprecated + assert_mut_val_eq(ret, data.val); + } + + ret = yyjson_mut_ptr_getx(NULL, NULL, ptr_len, NULL, NULL); + yy_assert(ret == NULL); + ret = yyjson_mut_ptr_getx(mroot, ptr, ptr_len, NULL, NULL); + assert_mut_val_eq(ret, data.val); + + memset(&err, -1, sizeof(err)); + memset(&ctx, -1, sizeof(ctx)); + ret = yyjson_mut_ptr_getx(NULL, NULL, ptr_len, &ctx, &err); + yy_assert(ret == NULL); + assert_ctx_eq(&ctx, NULL); + assert_err_param(&err); + + memset(&err, -1, sizeof(err)); + memset(&ctx, -1, sizeof(ctx)); + ret = yyjson_mut_ptr_getx(mroot, ptr, ptr_len, &ctx, &err); + assert_mut_val_eq(ret, data.val); + assert_ctx_eq(&ctx, &data); + if (data.err == YYJSON_PTR_ERR_NULL_ROOT) { + assert_err_param(&err); + } else { + assert_err(&err, &data); + } + + assert_mut_doc_eq(mdoc, data.src); /* doc should not be modified */ + } + + // suc = src.add(ptr, val), src->dst + if (data.op == PTR_OP_ADD) { + // ----------------------------- + // mut_doc.add + if (data.create_parent) { + if (data.ptr_len == 0) { // can use strlen() + mut_before(); + suc = yyjson_mut_doc_ptr_add(NULL, NULL, NULL); + yy_assert(suc == false); + mut_after(); + + mut_before(); + suc = yyjson_mut_doc_ptr_add(doc, ptr, val); + yy_assert(suc == (data.err == 0)); + assert_mut_doc_eq(doc, data.dst); + mut_after(); + } + + mut_before(); + suc = yyjson_mut_doc_ptr_addn(NULL, NULL, ptr_len, NULL); + yy_assert(suc == false); + mut_after(); + + mut_before(); + suc = yyjson_mut_doc_ptr_addn(doc, ptr, ptr_len, val); + yy_assert(suc == (data.err == 0)); + assert_mut_doc_eq(doc, data.dst); + mut_after(); + } + + mut_before(); + suc = yyjson_mut_doc_ptr_addx(NULL, NULL, ptr_len, NULL, data.create_parent, NULL, NULL); + yy_assert(suc == false); + mut_after(); + + mut_before(); + suc = yyjson_mut_doc_ptr_addx(doc, ptr, ptr_len, val, data.create_parent, NULL, NULL); + yy_assert(suc == (data.err == 0)); + assert_mut_doc_eq(doc, data.dst); + mut_after(); + + mut_before(); + suc = yyjson_mut_doc_ptr_addx(NULL, NULL, ptr_len, NULL, data.create_parent, &ctx, &err); + yy_assert(suc == false); + assert_err_param(&err); + assert_ctx_eq(&ctx, NULL); + mut_after(); + + mut_before(); + suc = yyjson_mut_doc_ptr_addx(doc, ptr, ptr_len, val, data.create_parent, &ctx, &err); + yy_assert(suc == (data.err == 0)); + assert_err(&err, &data); + assert_mut_doc_eq(doc, data.dst); + assert_ctx_eq(&ctx, &data); + mut_after(); + + // ----------------------------- + // mut_val.add + if (data.create_parent) { + if (data.ptr_len == 0) { // can use strlen() + mut_before(); + suc = yyjson_mut_ptr_add(NULL, NULL, NULL, NULL); + yy_assert(suc == false); + mut_after(); + + mut_before(); + suc = yyjson_mut_ptr_add(root, ptr, val, doc); + if (root) { + yy_assert(suc == (data.err == 0)); + assert_mut_val_eq(root, data.dst); + } else { + yy_assert(suc == false); + } + mut_after(); + } + + mut_before(); + suc = yyjson_mut_ptr_addn(NULL, NULL, ptr_len, NULL, NULL); + yy_assert(suc == false); + mut_after(); + + mut_before(); + suc = yyjson_mut_ptr_addn(root, ptr, ptr_len, val, doc); + if (root) { + yy_assert(suc == (data.err == 0)); + assert_mut_val_eq(root, data.dst); + } else { + yy_assert(suc == false); + } + mut_after(); + } + + mut_before(); + suc = yyjson_mut_ptr_addx(NULL, NULL, ptr_len, NULL, NULL, data.create_parent, NULL, NULL); + yy_assert(suc == false); + mut_after(); + + mut_before(); + suc = yyjson_mut_ptr_addx(root, ptr, ptr_len, val, doc, data.create_parent, NULL, NULL); + if (root) { + yy_assert(suc == (data.err == 0)); + assert_mut_val_eq(root, data.dst); + } else { + yy_assert(suc == false); + } + mut_after(); + + mut_before(); + suc = yyjson_mut_ptr_addx(NULL, NULL, ptr_len, NULL, doc, data.create_parent, &ctx, &err); + yy_assert(suc == false); + assert_ctx_eq(&ctx, NULL); + assert_err_param(&err); + mut_after(); + + mut_before(); + suc = yyjson_mut_ptr_addx(root, ptr, ptr_len, val, doc, data.create_parent, &ctx, &err); + if (root) { + yy_assert(suc == (data.err == 0)); + assert_err(&err, &data); + assert_mut_doc_eq(doc, data.dst); + assert_ctx_eq(&ctx, &data); + } else { + yy_assert(suc == false); + assert_err_param(&err); + } + mut_after(); + } + + // suc = src.set(ptr, val), src->dst + if (data.op == PTR_OP_SET) { + // ----------------------------- + // mut_doc.set + if (data.create_parent) { + if (data.ptr_len == 0) { // can use strlen() + mut_before(); + suc = yyjson_mut_doc_ptr_set(NULL, NULL, NULL); + yy_assert(suc == false); + mut_after(); + + mut_before(); + suc = yyjson_mut_doc_ptr_set(doc, ptr, val); + yy_assert(suc == (data.err == 0)); + assert_mut_doc_eq(doc, data.dst); + mut_after(); + } + + mut_before(); + suc = yyjson_mut_doc_ptr_setn(NULL, NULL, ptr_len, NULL); + yy_assert(suc == false); + mut_after(); + + mut_before(); + suc = yyjson_mut_doc_ptr_setn(doc, ptr, ptr_len, val); + yy_assert(suc == (data.err == 0)); + assert_mut_doc_eq(doc, data.dst); + mut_after(); + } + + mut_before(); + suc = yyjson_mut_doc_ptr_setx(NULL, NULL, ptr_len, NULL, data.create_parent, NULL, NULL); + yy_assert(suc == false); + mut_after(); + + mut_before(); + suc = yyjson_mut_doc_ptr_setx(doc, ptr, ptr_len, val, data.create_parent, NULL, NULL); + yy_assert(suc == (data.err == 0)); + assert_mut_doc_eq(doc, data.dst); + mut_after(); + + mut_before(); + suc = yyjson_mut_doc_ptr_setx(NULL, NULL, ptr_len, NULL, data.create_parent, &ctx, &err); + yy_assert(suc == false); + assert_err_param(&err); + assert_ctx_eq(&ctx, NULL); + mut_after(); + + mut_before(); + suc = yyjson_mut_doc_ptr_setx(doc, ptr, ptr_len, val, data.create_parent, &ctx, &err); + yy_assert(suc == (data.err == 0)); + assert_err(&err, &data); + assert_mut_doc_eq(doc, data.dst); + assert_ctx_eq(&ctx, &data); + mut_after(); + + // ----------------------------- + // mut_val.set + if (data.create_parent) { + if (data.ptr_len == 0) { // can use strlen() + mut_before(); + suc = yyjson_mut_ptr_set(NULL, NULL, NULL, NULL); + yy_assert(suc == false); + mut_after(); + + mut_before(); + suc = yyjson_mut_ptr_set(root, ptr, val, doc); + if (root) { + yy_assert(suc == (data.err == 0)); + assert_mut_val_eq(root, data.dst); + } else { + yy_assert(suc == false); + } + mut_after(); + } + + mut_before(); + suc = yyjson_mut_ptr_setn(NULL, NULL, ptr_len, NULL, NULL); + yy_assert(suc == false); + mut_after(); + + mut_before(); + suc = yyjson_mut_ptr_setn(root, ptr, ptr_len, val, doc); + if (root) { + yy_assert(suc == (data.err == 0)); + assert_mut_val_eq(root, data.dst); + } else { + yy_assert(suc == false); + } + mut_after(); + } + + mut_before(); + suc = yyjson_mut_ptr_setx(NULL, NULL, ptr_len, NULL, NULL, data.create_parent, NULL, NULL); + yy_assert(suc == false); + mut_after(); + + mut_before(); + suc = yyjson_mut_ptr_setx(root, ptr, ptr_len, val, doc, data.create_parent, NULL, NULL); + if (root) { + if (ptr_len) { + yy_assert(suc == (data.err == 0)); + assert_mut_val_eq(root, data.dst); + } else { + yy_assert(suc == false); + assert_mut_doc_eq(doc, data.src); + } + } else { + yy_assert(suc == false); + } + mut_after(); + + mut_before(); + suc = yyjson_mut_ptr_setx(NULL, NULL, ptr_len, NULL, doc, data.create_parent, &ctx, &err); + yy_assert(suc == false); + assert_ctx_eq(&ctx, NULL); + assert_err_param(&err); + mut_after(); + + mut_before(); + suc = yyjson_mut_ptr_setx(root, ptr, ptr_len, val, doc, data.create_parent, &ctx, &err); + if (root) { + if (ptr_len) { + yy_assert(suc == (data.err == 0)); + assert_err(&err, &data); + assert_mut_doc_eq(doc, data.dst); + assert_ctx_eq(&ctx, &data); + } else { + yy_assert(suc == false); + yy_assert(err.code == YYJSON_PTR_ERR_SET_ROOT); + assert_mut_doc_eq(doc, data.src); + assert_ctx_eq(&ctx, NULL); + } + } else { + yy_assert(suc == false); + assert_err_param(&err); + } + mut_after(); + } + + // old = src.replace(ptr, val), src->dst + if (data.op == PTR_OP_REPLACE) { + // ----------------------------- + // mut_doc.replace + if (data.ptr_len == 0) { // can use strlen() + mut_before(); + ret = yyjson_mut_doc_ptr_replace(NULL, NULL, NULL); + yy_assert(ret == NULL); + mut_after(); + + mut_before(); + ret = yyjson_mut_doc_ptr_replace(doc, ptr, val); + assert_mut_val_eq(ret, data.old); + assert_mut_doc_eq(doc, data.dst); + mut_after(); + } + + mut_before(); + ret = yyjson_mut_doc_ptr_replacen(NULL, NULL, ptr_len, NULL); + yy_assert(ret == NULL); + mut_after(); + + mut_before(); + ret = yyjson_mut_doc_ptr_replacen(doc, ptr, ptr_len, val); + assert_mut_val_eq(ret, data.old); + assert_mut_doc_eq(doc, data.dst); + mut_after(); + + mut_before(); + ret = yyjson_mut_doc_ptr_replacex(NULL, NULL, ptr_len, NULL, NULL, NULL); + yy_assert(ret == NULL); + mut_after(); + + mut_before(); + ret = yyjson_mut_doc_ptr_replacex(doc, ptr, ptr_len, val, NULL, NULL); + assert_mut_val_eq(ret, data.old); + assert_mut_doc_eq(doc, data.dst); + mut_after(); + + mut_before(); + ret = yyjson_mut_doc_ptr_replacex(NULL, NULL, ptr_len, NULL, &ctx, &err); + yy_assert(ret == NULL); + assert_err_param(&err); + assert_ctx_eq(&ctx, NULL); + mut_after(); + + mut_before(); + ret = yyjson_mut_doc_ptr_replacex(doc, ptr, ptr_len, val, &ctx, &err); + assert_mut_val_eq(ret, data.old); + assert_mut_doc_eq(doc, data.dst); + assert_ctx_eq(&ctx, &data); + assert_err(&err, &data); + mut_after(); + + // ----------------------------- + // mut_val.replace + if (data.ptr_len == 0) { // can use strlen() + mut_before(); + ret = yyjson_mut_ptr_replace(NULL, NULL, NULL); + yy_assert(ret == NULL); + mut_after(); + + mut_before(); + ret = yyjson_mut_ptr_replace(root, ptr, val); + if (root && val) { + if (ptr_len > 0) { + assert_mut_val_eq(ret, data.old); + assert_mut_val_eq(root, data.dst); + } else { + assert_mut_val_eq(ret, NULL); + assert_mut_val_eq(root, data.src); + } + } else { + yy_assert(ret == NULL); + } + mut_after(); + } + + mut_before(); + ret = yyjson_mut_ptr_replacen(NULL, NULL, ptr_len, NULL); + yy_assert(ret == NULL); + mut_after(); + + mut_before(); + ret = yyjson_mut_ptr_replacen(root, ptr, ptr_len, val); + if (root && val) { + if (ptr_len) { + assert_mut_val_eq(ret, data.old); + assert_mut_val_eq(root, data.dst); + } else { + assert_mut_val_eq(ret, NULL); + assert_mut_val_eq(root, data.src); + } + } else { + yy_assert(ret == NULL); + } + mut_after(); + + mut_before(); + ret = yyjson_mut_ptr_replacex(NULL, NULL, ptr_len, NULL, NULL, NULL); + yy_assert(ret == NULL); + mut_after(); + + mut_before(); + ret = yyjson_mut_ptr_replacex(root, ptr, ptr_len, val, NULL, NULL); + if (root && val) { + if (ptr_len) { + assert_mut_val_eq(ret, data.old); + assert_mut_val_eq(root, data.dst); + } else { + assert_mut_val_eq(ret, NULL); + assert_mut_val_eq(root, data.src); + } + } else { + yy_assert(ret == NULL); + } + mut_after(); + + mut_before(); + ret = yyjson_mut_ptr_replacex(NULL, NULL, ptr_len, NULL, &ctx, &err); + yy_assert(ret == NULL); + assert_err_param(&err); + assert_ctx_eq(&ctx, NULL); + mut_after(); + + mut_before(); + ret = yyjson_mut_ptr_replacex(root, ptr, ptr_len, val, &ctx, &err); + if (root && val) { + if (ptr_len) { + assert_mut_val_eq(ret, data.old); + assert_mut_val_eq(root, data.dst); + assert_ctx_eq(&ctx, &data); + assert_err(&err, &data); + } else { + assert_mut_val_eq(ret, NULL); + assert_mut_val_eq(root, data.src); + assert_ctx_eq(&ctx, NULL); + yy_assert(err.code == YYJSON_PTR_ERR_SET_ROOT); + } + } else { + yy_assert(ret == NULL); + assert_err_param(&err); + } + mut_after(); + } + + // old = src.remove(ptr), src->dst + if (data.op == PTR_OP_REMOVE) { + // ----------------------------- + // mut_doc.remove + if (data.ptr_len == 0) { // can use strlen() + mut_before(); + ret = yyjson_mut_doc_ptr_remove(NULL, NULL); + yy_assert(ret == NULL); + mut_after(); + + mut_before(); + ret = yyjson_mut_doc_ptr_remove(doc, ptr); + assert_mut_val_eq(ret, data.old); + assert_mut_doc_eq(doc, data.dst); + mut_after(); + } + + mut_before(); + ret = yyjson_mut_doc_ptr_removen(NULL, NULL, ptr_len); + yy_assert(ret == NULL); + mut_after(); + + mut_before(); + ret = yyjson_mut_doc_ptr_removen(doc, ptr, ptr_len); + assert_mut_val_eq(ret, data.old); + assert_mut_doc_eq(doc, data.dst); + mut_after(); + + mut_before(); + ret = yyjson_mut_doc_ptr_removex(NULL, NULL, ptr_len, NULL, NULL); + yy_assert(ret == NULL); + mut_after(); + + mut_before(); + ret = yyjson_mut_doc_ptr_removex(doc, ptr, ptr_len, NULL, NULL); + assert_mut_val_eq(ret, data.old); + assert_mut_doc_eq(doc, data.dst); + mut_after(); + + mut_before(); + ret = yyjson_mut_doc_ptr_removex(NULL, NULL, ptr_len, &ctx, &err); + yy_assert(ret == NULL); + assert_err_param(&err); + assert_ctx_eq(&ctx, NULL); + mut_after(); + + mut_before(); + ret = yyjson_mut_doc_ptr_removex(doc, ptr, ptr_len, &ctx, &err); + assert_mut_val_eq(ret, data.old); + assert_mut_doc_eq(doc, data.dst); + assert_ctx_eq(&ctx, &data); + assert_err(&err, &data); + mut_after(); + + // ----------------------------- + // mut_val.remove + if (data.ptr_len == 0) { // can use strlen() + mut_before(); + ret = yyjson_mut_ptr_remove(NULL, NULL); + yy_assert(ret == NULL); + mut_after(); + + mut_before(); + ret = yyjson_mut_ptr_remove(root, ptr); + if (root) { + if (ptr_len) { + assert_mut_val_eq(ret, data.old); + assert_mut_val_eq(root, data.dst); + } else { + assert_mut_val_eq(ret, NULL); + assert_mut_val_eq(root, data.src); + } + } else { + yy_assert(ret == NULL); + } + mut_after(); + } + + mut_before(); + ret = yyjson_mut_ptr_removen(NULL, NULL, ptr_len); + yy_assert(ret == NULL); + mut_after(); + + mut_before(); + ret = yyjson_mut_ptr_removen(root, ptr, ptr_len); + if (root) { + if (ptr_len) { + assert_mut_val_eq(ret, data.old); + assert_mut_val_eq(root, data.dst); + } else { + assert_mut_val_eq(ret, NULL); + assert_mut_val_eq(root, data.src); + } + } else { + yy_assert(ret == NULL); + } + mut_after(); + + mut_before(); + ret = yyjson_mut_ptr_removex(NULL, NULL, ptr_len, NULL, NULL); + yy_assert(ret == NULL); + mut_after(); + + mut_before(); + ret = yyjson_mut_ptr_removex(root, ptr, ptr_len, NULL, NULL); + if (root) { + if (ptr_len) { + assert_mut_val_eq(ret, data.old); + assert_mut_val_eq(root, data.dst); + } else { + assert_mut_val_eq(ret, NULL); + assert_mut_val_eq(root, data.src); + } + } else { + yy_assert(ret == NULL); + } + mut_after(); + + mut_before(); + ret = yyjson_mut_ptr_removex(NULL, NULL, ptr_len, &ctx, &err); + yy_assert(ret == NULL); + assert_err_param(&err); + assert_ctx_eq(&ctx, NULL); + mut_after(); + + mut_before(); + ret = yyjson_mut_ptr_removex(root, ptr, ptr_len, &ctx, &err); + if (root) { + if (ptr_len) { + assert_mut_val_eq(ret, data.old); + assert_mut_val_eq(root, data.dst); + assert_ctx_eq(&ctx, &data); + assert_err(&err, &data); + } else { + assert_mut_val_eq(ret, NULL); + assert_mut_val_eq(root, data.src); + assert_ctx_eq(&ctx, NULL); + yy_assert(err.code == YYJSON_PTR_ERR_SET_ROOT); + } + } else { + yy_assert(ret == NULL); + assert_err_param(&err); + } + mut_after(); + } + +#undef mut_before +#undef mut_after + + yyjson_doc_free(idoc); + yyjson_mut_doc_free(mdoc); + yyjson_doc_free(ival_doc); + yyjson_mut_doc_free(mval_doc); +} + +// ----------------------------------------------------------------------------- +// test context operation: append, replace, remove +static void test_ctx_op(ptr_data data) { + // source + yyjson_doc *idoc = yyjson_read(data.src, data.src ? strlen(data.src) : 0, 0); + yyjson_mut_doc *mdoc = yyjson_doc_mut_copy(idoc, NULL); + + // input value + yyjson_doc *ival_doc = yyjson_read(data.val, data.val ? strlen(data.val) : 0, 0); + yyjson_mut_doc *mval_doc = yyjson_doc_mut_copy(ival_doc, NULL); + yyjson_mut_val *mval = yyjson_mut_doc_get_root(mval_doc); + yyjson_doc *ikey_doc = yyjson_read(data.key, data.key ? strlen(data.key) : 0, 0); + yyjson_mut_doc *mkey_doc = yyjson_doc_mut_copy(ikey_doc, NULL); + yyjson_mut_val *mkey = yyjson_mut_doc_get_root(mkey_doc); + + // pointer + const char *ptr = data.ptr; + size_t ptr_len = data.ptr_len; + if (ptr && !ptr_len) ptr_len = strlen(ptr); + + // temp value + yyjson_mut_doc *doc; + yyjson_mut_val *ret, *key, *val; + yyjson_ptr_err err; + yyjson_ptr_ctx ctx; + bool suc; + +#define mut_before() do { \ + memset(&err, -1, sizeof(err)); \ + memset(&ctx, -1, sizeof(ctx)); \ + doc = yyjson_mut_doc_mut_copy(mdoc, NULL); \ + val = yyjson_mut_val_mut_copy(doc, mval); \ + key = yyjson_mut_val_mut_copy(doc, mkey); \ +} while(false) + +#define mut_after() do { \ + yyjson_mut_doc_free(doc); \ +} while (false) + + if (data.op == PTR_OP_ADD) { + mut_before(); + ret = yyjson_mut_doc_ptr_getx(doc, ptr, ptr_len, &ctx, &err); + suc = yyjson_ptr_ctx_append(&ctx, key, val); + yy_assert(suc == !data.err); + assert_mut_doc_eq(doc, data.dst); + assert_ctx_eq(&ctx, &data); + mut_after(); + } + + if (data.op == PTR_OP_REPLACE) { + mut_before(); + ret = yyjson_mut_doc_ptr_getx(doc, ptr, ptr_len, &ctx, &err); + suc = yyjson_ptr_ctx_replace(&ctx, val); + yy_assert(suc == !data.err); + assert_mut_doc_eq(doc, data.dst); + assert_ctx_eq(&ctx, &data); + mut_after(); + } + + if (data.op == PTR_OP_REMOVE) { + mut_before(); + ret = yyjson_mut_doc_ptr_getx(doc, ptr, ptr_len, &ctx, &err); + suc = yyjson_ptr_ctx_remove(&ctx); + yy_assert(suc == !data.err); + assert_mut_doc_eq(doc, data.dst); + assert_ctx_eq(&ctx, &data); + mut_after(); + } + +#undef mut_before +#undef mut_after + + yyjson_doc_free(idoc); + yyjson_mut_doc_free(mdoc); + yyjson_doc_free(ival_doc); + yyjson_mut_doc_free(mval_doc); + yyjson_doc_free(ikey_doc); + yyjson_mut_doc_free(mkey_doc); +} + +// ----------------------------------------------------------------------------- +// test cases from spec: https://www.rfc-editor.org/rfc/rfc6901 +static void test_spec(void) { + const char *json = "{" + "\"foo\":[\"bar\",\"baz\"]," + "\"\":0," + "\"a/b\":1," + "\"c%d\":2," + "\"e^f\":3," + "\"g|h\":4," + "\"i\\\\j\":5," + "\"k\\\"l\":6," + "\" \":7," + "\"m~n\":8" + "}"; + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = json, + .ptr = "", + .val = json, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = json, + .ptr = "/foo", + .val = "[\"bar\",\"baz\"]", + .ctn = json, + .pre = "\"m~n\"", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = json, + .ptr = "/foo/0", + .val = "\"bar\"", + .ctn = "[\"bar\",\"baz\"]", + .pre = "\"baz\"", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = json, + .ptr = "/", + .val = "0", + .ctn = json, + .pre = "\"foo\"", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = json, + .ptr = "/a~1b", + .val = "1", + .ctn = json, + .pre = "\"\"", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = json, + .ptr = "/c%d", + .val = "2", + .ctn = json, + .pre = "\"a/b\"", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = json, + .ptr = "/e^f", + .val = "3", + .ctn = json, + .pre = "\"c%d\"", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = json, + .ptr = "/g|h", + .val = "4", + .ctn = json, + .pre = "\"e^f\"", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = json, + .ptr = "/i\\j", + .val = "5", + .ctn = json, + .pre = "\"g|h\"", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = json, + .ptr = "/k\"l", + .val = "6", + .ctn = json, + .pre = "\"i\\\\j\"", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = json, + .ptr = "/ ", + .val = "7", + .ctn = json, + .pre = "\"k\\\"l\"", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = json, + .ptr = "/m~0n", + .val = "8", + .ctn = json, + .pre = "\" \"", + }); +} + +// ----------------------------------------------------------------------------- +// expected: val = src.get(ptr) +static void test_ptr_get(void) { + + // --------------------------------- + // invalid parameter + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = NULL, + .ptr = NULL, + .err = YYJSON_PTR_ERR_PARAMETER, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "1", + .ptr = NULL, + .err = YYJSON_PTR_ERR_PARAMETER, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = NULL, + .ptr = "/a", + .err = YYJSON_PTR_ERR_PARAMETER, + }); + + // --------------------------------- + // null root + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = empty_root, + .ptr = "", + .err = YYJSON_PTR_ERR_NULL_ROOT, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = empty_root, + .ptr = "/a", + .err = YYJSON_PTR_ERR_NULL_ROOT, + }); + + // --------------------------------- + // single root + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "1", + .ptr = "", + .val = "1", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "1", + .ptr = "/", // this matched to "" key + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + + // --------------------------------- + // error syntax + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1,2,3]}", + .ptr = "a", // no '/' prefix + .err = YYJSON_PTR_ERR_SYNTAX, + .pos = 0, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1,2,3]}", + .ptr = "~", // no '/' prefix + .err = YYJSON_PTR_ERR_SYNTAX, + .pos = 0, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1,2,3]}", + .ptr = "/~", // invalid escape + .err = YYJSON_PTR_ERR_SYNTAX, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1,2,3]}", + .ptr = "/a/~", // invalid escape + .err = YYJSON_PTR_ERR_SYNTAX, + .pos = 3, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1,2,3]}", + .ptr = "/a/~2", // invalid escape + .err = YYJSON_PTR_ERR_SYNTAX, + .pos = 3, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1,2,3]}", + .ptr = "/a/~/", // invalid escape + .err = YYJSON_PTR_ERR_SYNTAX, + .pos = 3, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1,2,3]}", + .ptr = "/a/~~", // invalid escape + .err = YYJSON_PTR_ERR_SYNTAX, + .pos = 3, + }); + + // --------------------------------- + // array index + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "[]", + .ptr = "/0", // out of range, but can be used to insert + .ctn = "[]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "[]", + .ptr = "/1", // out of range + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "[]", + .ptr = "/", // no index + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1,2,3]}", + .ptr = "/a/00", // leading zero + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 3, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1,2,3]}", + .ptr = "/a/01", // leading zero + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 3, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1,2,3]}", + .ptr = "/a/-1", // negative + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 3, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1,2,3]}", + .ptr = "/a/ 1", // space + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 3, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1,2,3]}", + .ptr = "/a/18446744073709551615", // big number + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 3, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[]}", + .ptr = "/a/0", // empty array, last index + .ctn = "[]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 3, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[]}", + .ptr = "/a/-", // empty array, last index + .ctn = "[]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 3, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[]}", + .ptr = "/a/1", // empty array, out of range + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 3, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1]}", // array with 1 value + .ptr = "/a/0", + .val = "1", + .ctn = "[1]", + .pre = "1", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1,2]}", // array with 2 values + .ptr = "/a/0", + .val = "1", + .ctn = "[1,2]", + .pre = "2", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1,2]}", // array with 2 values + .ptr = "/a/1", + .val = "2", + .ctn = "[1,2]", + .pre = "1", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1,2]}", + .ptr = "/a/2", // last index + .ctn = "[1,2]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 3, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1,2]}", + .ptr = "/a/3", // out of range + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 3, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1,2]}", + .ptr = "/a/-", // last index + .ctn = "[1,2]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 3, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1,[2,3,4]]}", + .ptr = "/a/-/2", // `-` cannot used to get value + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 3, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1,[2,3,4]]}", + .ptr = "/a/1/2", // 2 level + .val = "4", + .ctn = "[2,3,4]", + .pre = "3", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1,[2,3,4]]}", + .ptr = "/a/0/2", // 2 level, out of range + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 5, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1,[2,3,4]]}", + .ptr = "/a/1/3", // 2 level, out of range + .ctn = "[2,3,4]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 5, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":[1,[2,3,4]]}", + .ptr = "/a/1/b", // 2 level, invalid index + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 5, + }); + + // --------------------------------- + // object key + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{}", + .ptr = "/a", // no key + .ctn = "{}", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\\u0000bc\":1,\"b\":2}", + .ptr = "/a\0bc", // NUL inside key + .ptr_len = 5, + .val = "1", + .ctn = "{\"a\\u0000bc\":1,\"b\":2}", + .pre = "\"b\"", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a~b\":1,\"c\":2}", + .ptr = "/a~0b", // escaped '~' + .val = "1", + .ctn = "{\"a~b\":1,\"c\":2}", + .pre = "\"c\"", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a~b\":1,\"c\":2}", + .ptr = "/a~1b", // escaped '~' not matched + .ctn = "{\"a~b\":1,\"c\":2}", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a/b\":1,\"c\":2}", + .ptr = "/a~1b", // escaped '/' + .val = "1", + .ctn = "{\"a/b\":1,\"c\":2}", + .pre = "\"c\"", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a/b\":1,\"c\":2}", + .ptr = "/a~0b", // escaped '/' not matched + .ctn = "{\"a/b\":1,\"c\":2}", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":1,\"a\":2,\"b\":3}", + .ptr = "/a", // duplcated key + .val = "1", + .ctn = "{\"a\":1,\"a\":2,\"b\":3}", + .pre = "\"b\"", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":{\"b\":{\"c\":1}}}", + .ptr = "/a/b/c", // 3 level, 3 token + .val = "1", + .ctn = "{\"c\":1}", + .pre = "\"c\"", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":{\"b\":{\"c\":1}}}", + .ptr = "/a/b", // 3 level, 2 token + .val = "{\"c\":1}", + .ctn = "{\"b\":{\"c\":1}}", + .pre = "\"b\"", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":{\"b\":{\"c\":1}}}", + .ptr = "/a/c", // 3 level, 2 token, nonexist + .ctn = "{\"b\":{\"c\":1}}", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 3, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":{\"b\":{\"c\":1}}}", + .ptr = "/a/b/d", // 3 level, 3 token, nonexist + .ctn = "{\"c\":1}", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 5, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":{\"b\":{\"c\":1}}}", + .ptr = "/a/b/c/d", // 3 level, 4 token, nonexist + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 7, + }); + + // --------------------------------- + // pointer without null-terminator + const char *ptr = "/a/b"; + char *ptr_alc = malloc(strlen(ptr)); + memcpy(ptr_alc, ptr, strlen(ptr)); + test_ptr_op((ptr_data){ + .op = PTR_OP_GET, + .src = "{\"a\":{\"b\":{\"c\":1}}}", + .ptr = ptr_alc, + .ptr_len = strlen(ptr), + .val = "{\"c\":1}", + .ctn = "{\"b\":{\"c\":1}}", + .pre = "\"b\"", + }); + free(ptr_alc); +} + +static void test_ptr_put(void) { + // --------------------------------- + // invalid parameter + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = NULL, + .ptr = NULL, + .val = NULL, + .err = YYJSON_PTR_ERR_PARAMETER, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = NULL, + .ptr = NULL, + .val = NULL, + .err = YYJSON_PTR_ERR_PARAMETER, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = NULL, + .ptr = NULL, + .val = NULL, + .err = YYJSON_PTR_ERR_PARAMETER, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = NULL, + .ptr = NULL, + .err = YYJSON_PTR_ERR_PARAMETER, + }); + + // --------------------------------- + // error syntax (level 0) + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[0,1,2]", + .ptr = "1", + .val = "3", + .dst = "[0,1,2]", + .err = YYJSON_PTR_ERR_SYNTAX, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "[0,1,2]", + .ptr = "1", + .val = "3", + .dst = "[0,1,2]", + .err = YYJSON_PTR_ERR_SYNTAX, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[0,1,2]", + .ptr = "1", + .val = "3", + .dst = "[0,1,2]", + .err = YYJSON_PTR_ERR_SYNTAX, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[0,1,2]", + .ptr = "1", + .dst = "[0,1,2]", + .err = YYJSON_PTR_ERR_SYNTAX, + }); + + // --------------------------------- + // error syntax (level 1) + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[0,1,2]", + .ptr = "/~2", + .val = "3", + .dst = "[0,1,2]", + .err = YYJSON_PTR_ERR_SYNTAX, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "[0,1,2]", + .ptr = "/~2", + .val = "3", + .dst = "[0,1,2]", + .err = YYJSON_PTR_ERR_SYNTAX, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[0,1,2]", + .ptr = "/~2", + .val = "3", + .dst = "[0,1,2]", + .err = YYJSON_PTR_ERR_SYNTAX, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[0,1,2]", + .ptr = "/~2", + .dst = "[0,1,2]", + .err = YYJSON_PTR_ERR_SYNTAX, + .pos = 1, + }); + + // --------------------------------- + // error syntax (level 2) + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[0,1,2]", + .ptr = "/1/~2", + .val = "3", + .dst = "[0,1,2]", + .err = YYJSON_PTR_ERR_SYNTAX, + .pos = 3, + .create_parent = true, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "[0,1,2]", + .ptr = "/1/~2", + .val = "3", + .dst = "[0,1,2]", + .err = YYJSON_PTR_ERR_SYNTAX, + .pos = 3, + .create_parent = true, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[0,1,2]", + .ptr = "/1/~2", + .val = "3", + .dst = "[0,1,2]", + .err = YYJSON_PTR_ERR_SYNTAX, + .pos = 3, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[0,1,2]", + .ptr = "/1/~2", + .dst = "[0,1,2]", + .err = YYJSON_PTR_ERR_SYNTAX, + .pos = 3, + }); + + // --------------------------------- + // error syntax (level 3) + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[0,{},2]", + .ptr = "/1/a/~2", + .val = "3", + .dst = "[0,{},2]", + .err = YYJSON_PTR_ERR_SYNTAX, + .pos = 5, + .create_parent = true, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "[0,{},2]", + .ptr = "/1/a/~2", + .val = "3", + .dst = "[0,{},2]", + .err = YYJSON_PTR_ERR_SYNTAX, + .pos = 5, + .create_parent = true, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[0,{},2]", + .ptr = "/1/a/~2", + .val = "3", + .dst = "[0,{},2]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 3, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[0,{},2]", + .ptr = "/1/a/~2", + .dst = "[0,{},2]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 3, + }); + + // --------------------------------- + // no root (single value) + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = empty_root, + .ptr = "", + .val = "1", + .dst = "1", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = empty_root, + .ptr = "", + .val = "1", + .dst = "1", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = empty_root, + .ptr = "", + .val = "1", + .dst = empty_root, + .err = YYJSON_PTR_ERR_RESOLVE, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = empty_root, + .ptr = "", + .dst = empty_root, + .err = YYJSON_PTR_ERR_NULL_ROOT, + }); + + // --------------------------------- + // no root (level 1) + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = empty_root, + .ptr = "/a", + .val = "1", + .dst = empty_root, + .err = YYJSON_PTR_ERR_NULL_ROOT, + .create_parent = false, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = empty_root, + .ptr = "/a", + .val = "1", + .dst = "{\"a\":1}", + .ctn = "{\"a\":1}", + .pre = "\"a\"", + .create_parent = true, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = empty_root, + .ptr = "/a", + .val = "1", + .dst = empty_root, + .err = YYJSON_PTR_ERR_NULL_ROOT, + .create_parent = false, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = empty_root, + .ptr = "/a", + .val = "1", + .dst = "{\"a\":1}", + .ctn = "{\"a\":1}", + .pre = "\"a\"", + .create_parent = true, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = empty_root, + .ptr = "/a", + .val = "1", + .dst = empty_root, + .err = YYJSON_PTR_ERR_NULL_ROOT, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = empty_root, + .ptr = "/a", + .dst = empty_root, + .err = YYJSON_PTR_ERR_NULL_ROOT, + }); + + // --------------------------------- + // no root (level 2) + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = empty_root, + .ptr = "/a/0", + .val = "1", + .dst = empty_root, + .create_parent = false, + .err = YYJSON_PTR_ERR_NULL_ROOT, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = empty_root, + .ptr = "/a/0", + .val = "1", + .dst = "{\"a\":{\"0\":1}}", + .ctn = "{\"0\":1}", + .pre = "\"0\"", + .create_parent = true, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = empty_root, + .ptr = "/a/0", + .val = "1", + .dst = empty_root, + .create_parent = false, + .err = YYJSON_PTR_ERR_NULL_ROOT, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = empty_root, + .ptr = "/a/0", + .val = "1", + .dst = "{\"a\":{\"0\":1}}", + .ctn = "{\"0\":1}", + .pre = "\"0\"", + .create_parent = true, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = empty_root, + .ptr = "/a/0", + .val = "1", + .dst = empty_root, + .err = YYJSON_PTR_ERR_NULL_ROOT, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = empty_root, + .ptr = "/a/0", + .dst = empty_root, + .err = YYJSON_PTR_ERR_NULL_ROOT, + }); + + // --------------------------------- + // target is root + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[1,2]", + .ptr = "", + .val = "3", + .dst = "[1,2]", + .err = YYJSON_PTR_ERR_SET_ROOT, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "[1,2]", + .ptr = "", + .val = "3", + .dst = "3", + .old = "[1,2]", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[1,2]", + .ptr = "", + .val = "3", + .dst = "3", + .old = "[1,2]", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[1,2]", + .ptr = "", + .dst = empty_root, + .old = "[1,2]", + }); + + // --------------------------------- + // target is root, no value + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[1,2]", + .ptr = "", + .val = NULL, + .dst = "[1,2]", + .err = YYJSON_PTR_ERR_PARAMETER, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "[1,2]", + .ptr = "", + .val = NULL, + .dst = empty_root, + .old = "[1,2]", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[1,2]", + .ptr = "", + .val = NULL, + .dst = "[1,2]", + .err = YYJSON_PTR_ERR_PARAMETER, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[1,2]", + .ptr = "", + .dst = empty_root, + .old = "[1,2]", + }); + + // --------------------------------- + // no value + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[1,2]", + .ptr = "/0", + .val = NULL, + .dst = "[1,2]", + .err = YYJSON_PTR_ERR_PARAMETER, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "[1,2]", + .ptr = "/0", + .val = NULL, + .dst = "[2]", + .ctn = "[2]", + .old = "1", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[1,2]", + .ptr = "/0", + .val = NULL, + .dst = "[1,2]", + .err = YYJSON_PTR_ERR_PARAMETER, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[1,2]", + .ptr = "/0", + .dst = "[2]", + .old = "1", + .ctn = "[2]", + }); + + // --------------------------------- + // no parent (level 2) + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "{}", + .ptr = "/a/0", + .val = "1", + .dst = "{}", + .create_parent = false, + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "{}", + .ptr = "/a/0", + .val = "1", + .dst = "{\"a\":{\"0\":1}}", + .ctn = "{\"0\":1}", + .pre = "\"0\"", + .create_parent = true, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "{}", + .ptr = "/a/0", + .val = "1", + .dst = "{}", + .create_parent = false, + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "{}", + .ptr = "/a/0", + .val = "1", + .dst = "{\"a\":{\"0\":1}}", + .ctn = "{\"0\":1}", + .pre = "\"0\"", + .create_parent = true, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "{}", + .ptr = "/a/0", + .val = "1", + .dst = "{}", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "{}", + .ptr = "/a/0", + .dst = "{}", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + + // --------------------------------- + // no parent (level 3) + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "{}", + .ptr = "/a/0/b", + .val = "1", + .dst = "{\"a\":{\"0\":{\"b\":1}}}", + .ctn = "{\"b\":1}", + .pre = "\"b\"", + .create_parent = true, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "{}", + .ptr = "/a/0/b", + .val = "1", + .dst = "{\"a\":{\"0\":{\"b\":1}}}", + .ctn = "{\"b\":1}", + .pre = "\"b\"", + .create_parent = true, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "{}", + .ptr = "/a/0/b", + .val = "1", + .dst = "{}", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "{}", + .ptr = "/a/0/b", + .dst = "{}", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + + // --------------------------------- + // parent type not matched (array with no index) + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[]", + .ptr = "/a/0", + .val = "1", + .dst = "[]", + .create_parent = true, + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "[]", + .ptr = "/a/0", + .val = "1", + .dst = "[]", + .create_parent = true, + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[]", + .ptr = "/a/0", + .val = "1", + .dst = "[]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[]", + .ptr = "/a/0", + .dst = "[]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[1]", + .ptr = "/a/0", + .val = "1", + .dst = "[1]", + .create_parent = true, + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "[1]", + .ptr = "/a/0", + .val = "1", + .dst = "[1]", + .create_parent = true, + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[1]", + .ptr = "/a/0", + .val = "1", + .dst = "[1]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[1]", + .ptr = "/a/0", + .dst = "[1]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + + // --------------------------------- + // parent type not matched (not container) + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[1]", + .ptr = "/0/a", + .val = "1", + .dst = "[1]", + .create_parent = true, + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 3, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "[1]", + .ptr = "/0/a", + .val = "1", + .dst = "[1]", + .create_parent = true, + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 3, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[1]", + .ptr = "/0/a", + .val = "1", + .dst = "[1]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 3, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[1]", + .ptr = "/0/a", + .dst = "[1]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 3, + }); + + // --------------------------------- + // array size 0[0] + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[]", + .ptr = "/0", + .val = "1", + .dst = "[1]", + .ctn = "[1]", + .pre = "1", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "[]", + .ptr = "/0", + .val = "1", + .dst = "[]", + .ctn = "[]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[]", + .ptr = "/0", + .val = "1", + .dst = "[]", + .ctn = "[]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[]", + .ptr = "/0", + .val = "1", + .dst = "[]", + .ctn = "[]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + + // --------------------------------- + // array size 0[-] + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[]", + .ptr = "/-", + .val = "1", + .dst = "[1]", + .ctn = "[1]", + .pre = "1", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "[]", + .ptr = "/-", + .val = "1", + .dst = "[]", + .ctn = "[]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[]", + .ptr = "/-", + .val = "1", + .dst = "[]", + .ctn = "[]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[]", + .ptr = "/-", + .val = "1", + .dst = "[]", + .ctn = "[]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + + // --------------------------------- + // array size 0[1] + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[]", + .ptr = "/1", + .val = "1", + .dst = "[]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "[]", + .ptr = "/1", + .val = "1", + .dst = "[]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[]", + .ptr = "/1", + .val = "1", + .dst = "[]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[]", + .ptr = "/1", + .val = "1", + .dst = "[]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + + // --------------------------------- + // array size 1[0] + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[1]", + .ptr = "/0", + .val = "2", + .dst = "[2,1]", + .ctn = "[2,1]", + .pre = "1", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "[1]", + .ptr = "/0", + .val = "2", + .dst = "[2]", + .ctn = "[2]", + .pre = "2", + .old = "1", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[1]", + .ptr = "/0", + .val = "2", + .dst = "[2]", + .ctn = "[2]", + .pre = "2", + .old = "1", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[1]", + .ptr = "/0", + .dst = "[]", + .ctn = "[]", + .old = "1", + }); + + // --------------------------------- + // array size 1[1] + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[1]", + .ptr = "/1", + .val = "2", + .dst = "[1,2]", + .ctn = "[1,2]", + .pre = "1", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "[1]", + .ptr = "/1", + .val = "2", + .dst = "[1]", + .ctn = "[1]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[1]", + .ptr = "/1", + .val = "2", + .dst = "[1]", + .ctn = "[1]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[1]", + .ptr = "/1", + .dst = "[1]", + .ctn = "[1]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + + // --------------------------------- + // array size 1[-] + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[1]", + .ptr = "/-", + .val = "2", + .dst = "[1,2]", + .ctn = "[1,2]", + .pre = "1", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "[1]", + .ptr = "/-", + .val = "2", + .dst = "[1]", + .ctn = "[1]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[1]", + .ptr = "/-", + .val = "2", + .dst = "[1]", + .ctn = "[1]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[1]", + .ptr = "/-", + .dst = "[1]", + .ctn = "[1]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + + // --------------------------------- + // array size 1[2] + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[1]", + .ptr = "/2", + .val = "2", + .dst = "[1]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "[1]", + .ptr = "/2", + .val = "2", + .dst = "[1]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[1]", + .ptr = "/2", + .val = "2", + .dst = "[1]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[1]", + .ptr = "/2", + .dst = "[1]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + + // --------------------------------- + // array size 2[0] + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[0,1]", + .ptr = "/0", + .val = "2", + .dst = "[2,0,1]", + .ctn = "[2,0,1]", + .pre = "1", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "[0,1]", + .ptr = "/0", + .val = "2", + .dst = "[2,1]", + .ctn = "[2,1]", + .pre = "1", + .old = "0", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[0,1]", + .ptr = "/0", + .val = "2", + .dst = "[2,1]", + .ctn = "[2,1]", + .pre = "1", + .old = "0", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[0,1]", + .ptr = "/0", + .dst = "[1]", + .ctn = "[1]", + .old = "0", + }); + + // --------------------------------- + // array size 2[1] + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[0,1]", + .ptr = "/1", + .val = "2", + .dst = "[0,2,1]", + .ctn = "[0,2,1]", + .pre = "0", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "[0,1]", + .ptr = "/1", + .val = "2", + .dst = "[0,2]", + .ctn = "[0,2]", + .pre = "0", + .old = "1", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[0,1]", + .ptr = "/1", + .val = "2", + .dst = "[0,2]", + .ctn = "[0,2]", + .pre = "0", + .old = "1", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[0,1]", + .ptr = "/1", + .dst = "[0]", + .ctn = "[0]", + .old = "1", + }); + + // --------------------------------- + // array size 2[2] + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[0,1]", + .ptr = "/2", + .val = "2", + .dst = "[0,1,2]", + .ctn = "[0,1,2]", + .pre = "1", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "[0,1]", + .ptr = "/2", + .val = "2", + .dst = "[0,1]", + .ctn = "[0,1]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[0,1]", + .ptr = "/2", + .val = "2", + .dst = "[0,1]", + .ctn = "[0,1]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[0,1]", + .ptr = "/2", + .dst = "[0,1]", + .ctn = "[0,1]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + + // --------------------------------- + // array size 2[3] + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[0,1]", + .ptr = "/3", + .val = "2", + .dst = "[0,1]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "[0,1]", + .ptr = "/3", + .val = "2", + .dst = "[0,1]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[0,1]", + .ptr = "/3", + .val = "2", + .dst = "[0,1]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[0,1]", + .ptr = "/3", + .dst = "[0,1]", + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + + // --------------------------------- + // parent's parent index is last + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[0,1,2]", + .ptr = "/3/a", + .val = "3", + .dst = "[0,1,2,{\"a\":3}]", + .ctn = "{\"a\":3}", + .pre = "\"a\"", + .create_parent = true, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "[0,1,2]", + .ptr = "/3/a", + .val = "3", + .dst = "[0,1,2]", + .create_parent = true, + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[0,1,2]", + .ptr = "/3/a", + .val = "3", + .dst = "[0,1,2]", + .create_parent = true, + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[0,1,2]", + .ptr = "/3/a", + .val = "3", + .dst = "[0,1,2]", + .create_parent = true, + .err = YYJSON_PTR_ERR_RESOLVE, + .pos = 1, + }); + + // --------------------------------- + // key exist + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "{\"a\":1,\"b\":2}", + .ptr = "/a", + .val = "3", + .dst = "{\"a\":1,\"b\":2,\"a\":3}", + .ctn = "{\"a\":1,\"b\":2,\"a\":3}", + .pre = "\"b\"", + .create_parent = true, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "{\"a\":1,\"b\":2}", + .ptr = "/a", + .val = "3", + .dst = "{\"a\":3,\"b\":2}", + .ctn = "{\"a\":3,\"b\":2}", + .pre = "\"b\"", + .old = "1", + .create_parent = true, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "{\"a\":1,\"b\":2}", + .ptr = "/a", + .val = "3", + .dst = "{\"a\":3,\"b\":2}", + .ctn = "{\"a\":3,\"b\":2}", + .pre = "\"b\"", + .old = "1", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "{\"a\":1,\"b\":2}", + .ptr = "/a", + .dst = "{\"b\":2}", + .ctn = "{\"b\":2}", + .old = "1", + }); + + // --------------------------------- + // duplcated key + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "{\"a\":1,\"b\":2,\"a\":3,\"c\":4}", + .ptr = "/a", + .val = "5", + .dst = "{\"a\":1,\"b\":2,\"a\":3,\"c\":4,\"a\":5}", + .ctn = "{\"a\":1,\"b\":2,\"a\":3,\"c\":4,\"a\":5}", + .pre = "\"c\"", + .create_parent = true, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "{\"a\":1,\"b\":2,\"a\":3,\"c\":4}", + .ptr = "/a", + .val = "5", + .dst = "{\"a\":5,\"b\":2,\"c\":4}", + .ctn = "{\"a\":5,\"b\":2,\"c\":4}", + .pre = "\"c\"", + .old = "1", + .create_parent = true, + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "{\"a\":1,\"b\":2,\"a\":3,\"c\":4}", + .ptr = "/a", + .val = "5", + .dst = "{\"a\":5,\"b\":2,\"c\":4}", + .ctn = "{\"a\":5,\"b\":2,\"c\":4}", + .pre = "\"c\"", + .old = "1", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "{\"a\":1,\"b\":2,\"a\":3,\"c\":4}", + .ptr = "/a", + .dst = "{\"b\":2,\"c\":4}", + .ctn = "{\"b\":2,\"c\":4}", + .old = "1", + }); + + // --------------------------------- + // special key (escaped character) + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "{\"a\":1,\"b\":2}", + .ptr = "/c~0d~1e", + .val = "3", + .dst = "{\"a\":1,\"b\":2,\"c~d/e\":3}", + .ctn = "{\"a\":1,\"b\":2,\"c~d/e\":3}", + .pre = "\"b\"", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "{\"a\":1,\"b\":2}", + .ptr = "/c~0d~1e", + .val = "3", + .dst = "{\"a\":1,\"b\":2,\"c~d/e\":3}", + .ctn = "{\"a\":1,\"b\":2,\"c~d/e\":3}", + .pre = "\"b\"", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "{\"a\":1,\"b\":2,\"c~d/e\":3}", + .ptr = "/c~0d~1e", + .val = "4", + .dst = "{\"a\":1,\"b\":2,\"c~d/e\":4}", + .ctn = "{\"a\":1,\"b\":2,\"c~d/e\":4}", + .pre = "\"b\"", + .old = "3", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "{\"a\":1,\"b\":2,\"c~d/e\":3}", + .ptr = "/c~0d~1e", + .dst = "{\"a\":1,\"b\":2}", + .ctn = "{\"a\":1,\"b\":2}", + .old = "3", + }); + + // --------------------------------- + // special key (empty string) + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "{\"a\":1,\"b\":2}", + .ptr = "/", + .val = "3", + .dst = "{\"a\":1,\"b\":2,\"\":3}", + .ctn = "{\"a\":1,\"b\":2,\"\":3}", + .pre = "\"b\"", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "{\"a\":1,\"b\":2}", + .ptr = "/", + .val = "3", + .dst = "{\"a\":1,\"b\":2,\"\":3}", + .ctn = "{\"a\":1,\"b\":2,\"\":3}", + .pre = "\"b\"", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "{\"a\":1,\"b\":2,\"\":3}", + .ptr = "/", + .val = "4", + .dst = "{\"a\":1,\"b\":2,\"\":4}", + .ctn = "{\"a\":1,\"b\":2,\"\":4}", + .pre = "\"b\"", + .old = "3", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "{\"a\":1,\"b\":2,\"\":3}", + .ptr = "/", + .dst = "{\"a\":1,\"b\":2}", + .ctn = "{\"a\":1,\"b\":2}", + .old = "3", + }); + + // --------------------------------- + // special key (string with NUL character) + test_ptr_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "{\"a\":1,\"b\":2}", + .ptr = "/\0", + .ptr_len = 2, + .val = "3", + .dst = "{\"a\":1,\"b\":2,\"\\u0000\":3}", + .ctn = "{\"a\":1,\"b\":2,\"\\u0000\":3}", + .pre = "\"b\"", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_SET, + .src = "{\"a\":1,\"b\":2}", + .ptr = "/\0", + .ptr_len = 2, + .val = "3", + .dst = "{\"a\":1,\"b\":2,\"\\u0000\":3}", + .ctn = "{\"a\":1,\"b\":2,\"\\u0000\":3}", + .pre = "\"b\"", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "{\"a\":1,\"b\":2,\"\\u0000\":3}", + .ptr = "/\0", + .ptr_len = 2, + .val = "4", + .dst = "{\"a\":1,\"b\":2,\"\\u0000\":4}", + .ctn = "{\"a\":1,\"b\":2,\"\\u0000\":4}", + .pre = "\"b\"", + .old = "3", + }); + test_ptr_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "{\"a\":1,\"b\":2,\"\\u0000\":3}", + .ptr = "/\0", + .ptr_len = 2, + .dst = "{\"a\":1,\"b\":2}", + .ctn = "{\"a\":1,\"b\":2}", + .old = "3", + }); +} + +// ctx.append, replace, remove +static void test_ptr_ctx(void) { + // --------------------------------- + // invalid param (no ctx) + test_ctx_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[0,1,2]", + .ptr = "/a", + .dst = "[0,1,2]", + .err = 1, + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[0,1,2]", + .ptr = "/a", + .dst = "[0,1,2]", + .err = 1, + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[0,1,2]", + .ptr = "/a", + .dst = "[0,1,2]", + .err = 1, + }); + + // --------------------------------- + // invalid param (no val) + test_ctx_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[0,1,2]", + .ptr = "/0", + .dst = "[0,1,2]", + .ctn = "[0,1,2]", + .pre = "2", + .err = 1, + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[0,1,2]", + .ptr = "/0", + .dst = "[0,1,2]", + .ctn = "[0,1,2]", + .pre = "2", + .err = 1, + }); + + // --------------------------------- + // invalid param (no key) + test_ctx_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "{\"a\":1}", + .ptr = "/b", + .val = "2", + .dst = "{\"a\":1}", + .ctn = "{\"a\":1}", + .err = 1, + }); + + // --------------------------------- + // no ctx.ctn + test_ctx_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[0,1,2]", + .ptr = "", + .dst = "[0,1,2]", + .err = 1, + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[0,1,2]", + .ptr = "", + .dst = "[0,1,2]", + .err = 1, + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[0,1,2]", + .ptr = "", + .dst = "[0,1,2]", + .err = 1, + }); + + // --------------------------------- + // array size 0[0] + test_ctx_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[]", + .ptr = "/0", + .val = "1", + .dst = "[1]", + .ctn = "[1]", + .pre = "1", + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[]", + .ptr = "/0", + .val = "1", + .dst = "[]", + .ctn = "[]", + .err = 1, + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[]", + .ptr = "/0", + .dst = "[]", + .ctn = "[]", + .err = 1, + }); + + // --------------------------------- + // array size 1[0] + test_ctx_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[1]", + .ptr = "/0", + .val = "2", + .dst = "[1,2]", + .ctn = "[1,2]", + .pre = "1", + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[1]", + .ptr = "/0", + .val = "2", + .dst = "[2]", + .ctn = "[2]", + .pre = "2", + .old = "1", + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[1]", + .ptr = "/0", + .dst = "[]", + .ctn = "[]", + .old = "1", + }); + + // --------------------------------- + // array size 1[1] + test_ctx_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[1]", + .ptr = "/1", + .val = "2", + .dst = "[1,2]", + .ctn = "[1,2]", + .pre = "1", + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[1]", + .ptr = "/1", + .val = "2", + .dst = "[1]", + .ctn = "[1]", + .err = 1, + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[1]", + .ptr = "/1", + .dst = "[1]", + .ctn = "[1]", + .err = 1, + }); + + // --------------------------------- + // array size 2[0] + test_ctx_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[1,2]", + .ptr = "/0", + .val = "3", + .dst = "[1,3,2]", + .ctn = "[1,3,2]", + .pre = "1", + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[1,2]", + .ptr = "/0", + .val = "3", + .dst = "[3,2]", + .ctn = "[3,2]", + .pre = "2", + .old = "1", + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[1,2]", + .ptr = "/0", + .dst = "[2]", + .ctn = "[2]", + .old = "1", + }); + + // --------------------------------- + // array size 2[1] + test_ctx_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[1,2]", + .ptr = "/1", + .val = "3", + .dst = "[1,2,3]", + .ctn = "[1,2,3]", + .pre = "2", + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[1,2]", + .ptr = "/1", + .val = "3", + .dst = "[1,3]", + .ctn = "[1,3]", + .pre = "1", + .old = "2", + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[1,2]", + .ptr = "/1", + .dst = "[1]", + .ctn = "[1]", + .old = "2", + }); + + // --------------------------------- + // array size 2[2] + test_ctx_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "[1,2]", + .ptr = "/2", + .val = "3", + .dst = "[1,2,3]", + .ctn = "[1,2,3]", + .pre = "2", + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "[1,2]", + .ptr = "/2", + .val = "3", + .dst = "[1,2]", + .ctn = "[1,2]", + .err = 1, + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "[1,2]", + .ptr = "/2", + .dst = "[1,2]", + .ctn = "[1,2]", + .err = 1, + }); + + + // --------------------------------- + // object size 0[0] + test_ctx_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "{}", + .ptr = "/a", + .key = "\"a\"", + .val = "1", + .dst = "{\"a\":1}", + .ctn = "{\"a\":1}", + .pre = "\"a\"", + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "{}", + .ptr = "/a", + .val = "1", + .dst = "{}", + .ctn = "{}", + .err = 1, + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "{}", + .ptr = "/a", + .dst = "{}", + .ctn = "{}", + .err = 1, + }); + + // --------------------------------- + // object size 1[0] + test_ctx_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "{\"a\":1}", + .ptr = "/a", + .key = "\"b\"", + .val = "2", + .dst = "{\"a\":1,\"b\":2}", + .ctn = "{\"a\":1,\"b\":2}", + .pre = "\"a\"", + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "{\"a\":1}", + .ptr = "/a", + .val = "2", + .dst = "{\"a\":2}", + .ctn = "{\"a\":2}", + .pre = "\"a\"", + .old = "1", + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "{\"a\":1}", + .ptr = "/a", + .dst = "{}", + .ctn = "{}", + .old = "1", + }); + + // --------------------------------- + // object size 1[1] + test_ctx_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "{\"a\":1}", + .ptr = "/b", + .key = "\"b\"", + .val = "2", + .dst = "{\"a\":1,\"b\":2}", + .ctn = "{\"a\":1,\"b\":2}", + .pre = "\"a\"", + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "{\"a\":1}", + .ptr = "/b", + .val = "2", + .dst = "{\"a\":1}", + .ctn = "{\"a\":1}", + .err = 1, + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "{\"a\":1}", + .ptr = "/b", + .dst = "{\"a\":1}", + .ctn = "{\"a\":1}", + .err = 1, + }); + + // --------------------------------- + // object size 2[0] + test_ctx_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "{\"a\":1,\"b\":2}", + .ptr = "/a", + .key = "\"c\"", + .val = "3", + .dst = "{\"a\":1,\"c\":3,\"b\":2}", + .ctn = "{\"a\":1,\"c\":3,\"b\":2}", + .pre = "\"a\"", + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "{\"a\":1,\"b\":2}", + .ptr = "/a", + .val = "3", + .dst = "{\"a\":3,\"b\":2}", + .ctn = "{\"a\":3,\"b\":2}", + .pre = "\"b\"", + .old = "1", + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "{\"a\":1,\"b\":2}", + .ptr = "/a", + .dst = "{\"b\":2}", + .ctn = "{\"b\":2}", + .old = "1", + }); + + // --------------------------------- + // object size 2[1] + test_ctx_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "{\"a\":1,\"b\":2}", + .ptr = "/b", + .key = "\"c\"", + .val = "3", + .dst = "{\"a\":1,\"b\":2,\"c\":3}", + .ctn = "{\"a\":1,\"b\":2,\"c\":3}", + .pre = "\"b\"", + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "{\"a\":1,\"b\":2}", + .ptr = "/b", + .val = "3", + .dst = "{\"a\":1,\"b\":3}", + .ctn = "{\"a\":1,\"b\":3}", + .pre = "\"a\"", + .old = "2", + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "{\"a\":1,\"b\":2}", + .ptr = "/b", + .dst = "{\"a\":1}", + .ctn = "{\"a\":1}", + .old = "2", + }); + + // --------------------------------- + // object size 2[2] + test_ctx_op((ptr_data){ + .op = PTR_OP_ADD, + .src = "{\"a\":1,\"b\":2}", + .ptr = "/c", + .key = "\"c\"", + .val = "3", + .dst = "{\"a\":1,\"b\":2,\"c\":3}", + .ctn = "{\"a\":1,\"b\":2,\"c\":3}", + .pre = "\"b\"", + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REPLACE, + .src = "{\"a\":1,\"b\":2}", + .ptr = "/c", + .val = "3", + .dst = "{\"a\":1,\"b\":2}", + .ctn = "{\"a\":1,\"b\":2}", + .err = 1, + }); + test_ctx_op((ptr_data){ + .op = PTR_OP_REMOVE, + .src = "{\"a\":1,\"b\":2}", + .ptr = "/c", + .dst = "{\"a\":1,\"b\":2}", + .ctn = "{\"a\":1,\"b\":2}", + .err = 1, + }); +} + +static void test_ptr_get_type(void) { + const char *json = "{ \ + \"answer\": {\"to\": {\"life\": 42}}, \ + \"true\": true, \ + \"-1\": -1, \ + \"1\": 1, \ + \"0\": 0, \ + \"i64_max\": 9223372036854775807, \ + \"i64_max+\": 9223372036854775808, \ + \"zero\": 0, \ + \"pi\": 3.14159, \ + \"pistr\": \"3.14159\" \ + }"; + + bool bool_value; + double real_value; + int64_t sint_value; + uint64_t uint_value; + const char *string_value; + + yyjson_doc *doc = yyjson_read(json, strlen(json), 0); + yyjson_val *root = yyjson_doc_get_root (doc); + + // successful gets + yy_assert(yyjson_ptr_get_bool(root, "/true", &bool_value) == true && bool_value == true); + yy_assert(yyjson_ptr_get_uint(root, "/answer/to/life", &uint_value) == true && uint_value == 42); + yy_assert(yyjson_ptr_get_sint(root, "/-1", &sint_value) == true && sint_value == -1); + yy_assert(yyjson_ptr_get_sint(root, "/1", &sint_value) == true && sint_value == 1); + yy_assert(yyjson_ptr_get_uint(root, "/1", &uint_value) == true && uint_value == 1); + yy_assert(yyjson_ptr_get_sint(root, "/0", &sint_value) == true && sint_value == 0); + yy_assert(yyjson_ptr_get_uint(root, "/0", &uint_value) == true && uint_value == 0); + yy_assert(yyjson_ptr_get_sint(root, "/i64_max", &sint_value) == true); + yy_assert(yyjson_ptr_get_uint(root, "/i64_max", &uint_value) == true); + yy_assert(yyjson_ptr_get_uint(root, "/i64_max+", &uint_value) == true); + yy_assert(yyjson_ptr_get_real(root, "/pi", &real_value) == true && real_value == (double)3.14159); + yy_assert(yyjson_ptr_get_num(root, "/-1", &real_value) == true && real_value == (double)-1.0); + yy_assert(yyjson_ptr_get_num(root, "/zero", &real_value) == true && real_value == (double)0.0); + yy_assert(yyjson_ptr_get_num(root, "/answer/to/life", &real_value) == true && real_value == (double)42.0); + yy_assert(yyjson_ptr_get_num(root, "/pi", &real_value) == true && real_value == (double)3.14159); + yy_assert(yyjson_ptr_get_str(root, "/pistr", &string_value) == true && strcmp(string_value, "3.14159") == 0); + + // unsuccessful gets + yy_assert(yyjson_ptr_get_uint(root, "/-1", &uint_value) == false); // type cast error + yy_assert(yyjson_ptr_get_sint(root, "/i64_max+", &sint_value) == false); // type cast error + yy_assert(yyjson_ptr_get_num(root, "/pistr", &real_value) == false); // wrong type + yy_assert(yyjson_ptr_get_str(root, "/answer/to", &string_value) == false); // wrong type + yy_assert(yyjson_ptr_get_uint(root, "/nosuch", &uint_value) == false); // not exist + yy_assert(yyjson_ptr_get_sint(root, "/nosuch", &sint_value) == false); // not exist + yy_assert(yyjson_ptr_get_real(root, "/nosuch", &real_value) == false); // not exist + + // type mismatch + yy_assert(yyjson_ptr_get_bool(root, "/pi", &bool_value) == false); + yy_assert(yyjson_ptr_get_uint(root, "/pi", &uint_value) == false); + yy_assert(yyjson_ptr_get_sint(root, "/pi", &sint_value) == false); + yy_assert(yyjson_ptr_get_real(root, "/zero", &real_value) == false); + yy_assert(yyjson_ptr_get_num(root, "/true", &real_value) == false); + yy_assert(yyjson_ptr_get_str(root, "/pi", &string_value) == false); + + yyjson_doc_free(doc); +} + +yy_test_case(test_json_pointer) { + test_spec(); + test_ptr_get(); + test_ptr_put(); + test_ptr_ctx(); + test_ptr_get_type(); +} + +#else +yy_test_case(test_json_pointer) {} +#endif diff --git a/lib/yyjson-0.12.0/test/test_json_reader.c b/lib/yyjson-0.12.0/test/test_json_reader.c new file mode 100644 index 00000000000..edb61f4e29b --- /dev/null +++ b/lib/yyjson-0.12.0/test/test_json_reader.c @@ -0,0 +1,743 @@ +// This file is used to test the functionality of JSON reader. + +#include "yyjson.h" +#include "yy_test_utils.h" + +#if !YYJSON_DISABLE_READER + + + +// Expect result +typedef enum { + EXPECT_NONE, + EXPECT_PASS, + EXPECT_FAIL, +} expect_type; + +// All feature flags +static const yyjson_read_flag ALL_FLAGS[] = { + 1 << 1, // YYJSON_READ_STOP_WHEN_DONE + 1 << 7, // YYJSON_READ_BIGNUM_AS_RAW + 1 << 5, // YYJSON_READ_NUMBER_AS_RAW + 1 << 2, // YYJSON_READ_ALLOW_TRAILING_COMMAS + 1 << 3, // YYJSON_READ_ALLOW_COMMENTS + 1 << 4, // YYJSON_READ_ALLOW_INF_AND_NAN + 1 << 6, // YYJSON_READ_ALLOW_INVALID_UNICODE + 1 << 8, // YYJSON_READ_ALLOW_BOM + 1 << 9, // YYJSON_READ_ALLOW_EXT_NUMBER + 1 << 10, // YYJSON_READ_ALLOW_EXT_ESCAPE + 1 << 11, // YYJSON_READ_ALLOW_EXT_WHITESPACE + 1 << 12, // YYJSON_READ_ALLOW_SINGLE_QUOTED_STR + 1 << 13, // YYJSON_READ_ALLOW_UNQUOTED_KEY +}; + + + +/*============================================================================== + * MARK: - Helper + *============================================================================*/ + +static void test_read_data(const char *path, char *dat, usize len, + yyjson_read_flag flg, expect_type expect) { +#if YYJSON_DISABLE_UTF8_VALIDATION + bool is_utf8 = yy_str_is_utf8(dat, len); + if (!is_utf8) return; +#endif + + // test read + yyjson_read_err err; + yyjson_doc *doc = yyjson_read_opts(dat, len, flg, NULL, &err); + if (expect == EXPECT_PASS) { + yy_assertf(doc != NULL, "should pass but fail (0x%X): %s", flg, path); + yy_assert(yyjson_doc_get_read_size(doc) > 0); + yy_assert(yyjson_doc_get_val_count(doc) > 0); + yy_assert(err.code == YYJSON_READ_SUCCESS); + yy_assert(err.msg == NULL); + } + if (expect == EXPECT_FAIL) { + yy_assertf(doc == NULL, "should fail but pass (0x%X): %s", flg, path); + yy_assert(yyjson_doc_get_read_size(doc) == 0); + yy_assert(yyjson_doc_get_val_count(doc) == 0); + yy_assert(err.code != YYJSON_READ_SUCCESS); + yy_assert(err.msg != NULL); + } + + // test write again +#if !YYJSON_DISABLE_WRITER + if (doc) { + usize ret_len; + char *ret; + ret = yyjson_write(doc, YYJSON_WRITE_INF_AND_NAN_AS_NULL, &ret_len); + yy_assert(ret && ret_len); + free(ret); + ret = yyjson_write(doc, YYJSON_WRITE_INF_AND_NAN_AS_NULL | YYJSON_WRITE_PRETTY, &ret_len); + yy_assert(ret && ret_len); + free(ret); + } +#endif + yyjson_doc_free(doc); + + + // test read insitu + flg |= YYJSON_READ_INSITU; + + char *dat_cpy = malloc(len + YYJSON_PADDING_SIZE); + yy_assert(dat_cpy); + memcpy(dat_cpy, dat, len); + memset(dat_cpy + len, 0, YYJSON_PADDING_SIZE); + + usize max_mem_len = yyjson_read_max_memory_usage(len, flg); + void *buf = malloc(max_mem_len); + yyjson_alc alc; + yyjson_alc_pool_init(&alc, buf, max_mem_len); + + doc = yyjson_read_opts(dat_cpy, len, flg, &alc, &err); + if (expect == EXPECT_PASS) { + yy_assertf(doc != NULL, "should pass but fail (0x%X): %s", flg, path); + yy_assert(yyjson_doc_get_read_size(doc) > 0); + yy_assert(yyjson_doc_get_val_count(doc) > 0); + yy_assert(err.code == YYJSON_READ_SUCCESS); + yy_assert(err.msg == NULL); + } + if (expect == EXPECT_FAIL) { + yy_assertf(doc == NULL, "should fail but pass (0x%X): %s", flg, path); + yy_assert(yyjson_doc_get_read_size(doc) == 0); + yy_assert(yyjson_doc_get_val_count(doc) == 0); + yy_assert(err.code != YYJSON_READ_SUCCESS); + yy_assert(err.msg != NULL); + } + yyjson_doc_free(doc); + free(buf); + free(dat_cpy); + + + // test incremental read +#if !YYJSON_DISABLE_INCR_READER + // incremental read only support standard JSON + yyjson_read_flag non_std_flg = + YYJSON_READ_JSON5 | + YYJSON_READ_ALLOW_BOM | + YYJSON_READ_ALLOW_INVALID_UNICODE; + if (flg & non_std_flg) return; + + // extend input length in chunks of one byte at a time + const size_t chunk_len = 1; + size_t read_len = 0; + flg &= ~YYJSON_READ_INSITU; + + dat_cpy = malloc(len + YYJSON_PADDING_SIZE); + yy_assert(dat_cpy); + memcpy(dat_cpy, dat, len); + memset(dat_cpy + len, 0, YYJSON_PADDING_SIZE); + + yyjson_incr_state *state = NULL; +restart_incr_read: + state = yyjson_incr_new((char *)dat, len, flg, NULL); + yy_assert(state != NULL); + yy_assert(!yyjson_incr_read(NULL, read_len, &err)); + yy_assert(!yyjson_incr_read(state, 0, &err)); + yy_assert(!yyjson_incr_read(state, 0, NULL)); + yy_assert(!yyjson_incr_read(state, len + 1, NULL)); + + while (read_len < len || len == 0) { + read_len += chunk_len; + if (read_len > len) { + read_len = len; + } + doc = yyjson_incr_read(state, read_len, &err); + if (doc != NULL && read_len < len) { + /* Incremental parsing is complete but there is more data to parse. + This can happen when we are parsing a number on the root level + and not all digits have been provided to the parser yet. + + Discard incremental state and restart parsing. */ + yyjson_doc_free(doc); + yyjson_incr_free(state); + goto restart_incr_read; + } + if (doc != NULL || err.code != YYJSON_READ_ERROR_MORE) { + break; + } + } + if (doc) { // test write again +#if !YYJSON_DISABLE_WRITER + char *ret = yyjson_write(doc, 0, NULL); + yy_assert(ret); + free(ret); +#endif + } + if (expect == EXPECT_PASS) { + yy_assertf(doc != NULL, "should pass but fail (0x%X): %s", flg, path); + yy_assert(yyjson_doc_get_read_size(doc) > 0); + yy_assert(yyjson_doc_get_val_count(doc) > 0); + yy_assert(err.code == YYJSON_READ_SUCCESS); + yy_assert(err.msg == NULL); + } + if (expect == EXPECT_FAIL) { + yy_assertf(doc == NULL, "should fail but pass (0x%X): %s", flg, path); + yy_assert(yyjson_doc_get_read_size(doc) == 0); + yy_assert(yyjson_doc_get_val_count(doc) == 0); + yy_assert(err.code != YYJSON_READ_SUCCESS); + yy_assert(err.msg != NULL); + } + yyjson_incr_free(state); + yyjson_doc_free(doc); + free(dat_cpy); +#endif +} + +static void test_read_file(const char *path, yyjson_read_flag flg, expect_type expect) { + u8 *dat; + usize len; + yy_assertf(yy_file_read(path, &dat, &len), "fail to read file: %s", path); + test_read_data(path, (char *)dat, len, flg, expect); + free(dat); +} + + + +/*============================================================================== + * MARK: - Datasets + *============================================================================*/ + +// yyjson test data +static void test_json_yyjson(void) { + // read dir + char dir[YY_MAX_PATH]; + yy_path_combine(dir, YYJSON_TEST_DATA_PATH, "data", "json", "test_yyjson", NULL); + int count; + char **names = yy_dir_read(dir, &count); + yy_assertf(names != NULL && count != 0, "read dir fail:%s\n", dir); + + for (int i = 0; i < count; i++) { + // read file + char *name = names[i]; + if (name[0] == '.') continue; + char path[YY_MAX_PATH]; + yy_path_combine(path, dir, name, NULL); + u8 *dat; + usize len; + yy_assertf(yy_file_read(path, &dat, &len), "fail to read file: %s", path); + + // check file name + bool has_fail = yy_str_contains(name, "(fail)"); + bool has_garbage = yy_str_contains(name, "(garbage)"); + bool has_bignum = yy_str_contains(name, "(bignum)"); + bool has_bighex = yy_str_contains(name, "(bighex)"); + bool has_comma = yy_str_contains(name, "(comma)"); + bool has_comment = yy_str_contains(name, "(comment)"); + bool has_endcomment = yy_str_contains(name, "(endcomment)"); + bool has_inf = yy_str_contains(name, "(inf)"); + bool has_nan = yy_str_contains(name, "(nan)"); + bool has_str_err = yy_str_contains(name, "(str_err)"); + bool has_bom = yy_str_contains(name, "(bom)"); + bool has_ext_num = yy_str_contains(name, "(ext_num)"); + bool has_ext_esc = yy_str_contains(name, "(ext_esc)"); + bool has_ext_ws = yy_str_contains(name, "(ext_ws)"); + bool has_str_sq = yy_str_contains(name, "(str_sq)"); + bool has_str_uq = yy_str_contains(name, "(str_uq)"); + bool has_non_std = (has_bighex | has_comma | has_comment | + has_inf | has_nan | has_str_err | has_bom | + has_ext_num | has_ext_esc | + has_ext_ws | has_str_sq | has_str_uq); + + // test all flag combination + u32 flg_num = (u32)yy_nelems(ALL_FLAGS); + u32 flg_comb_num = 1 << flg_num; + for (u32 c = 0; c < flg_comb_num; c++) { + yyjson_write_flag flg = 0; + for (u32 f = 0; f < flg_num; f++) { + if (c & (1 << f)) flg |= ALL_FLAGS[f]; + } + + // check if the current combined flag is valid + bool pass = !has_fail; + pass &= !has_garbage || (flg & (YYJSON_READ_STOP_WHEN_DONE)); + pass &= !has_bignum || (flg & (YYJSON_READ_BIGNUM_AS_RAW | + YYJSON_READ_NUMBER_AS_RAW | + YYJSON_READ_ALLOW_INF_AND_NAN)); + pass &= !has_bighex || (flg & (YYJSON_READ_BIGNUM_AS_RAW | + YYJSON_READ_NUMBER_AS_RAW)); + pass &= !has_comma || (flg & (YYJSON_READ_ALLOW_TRAILING_COMMAS)); + pass &= !has_comment || (flg & (YYJSON_READ_ALLOW_COMMENTS)); + pass &= !has_endcomment || (flg & (YYJSON_READ_ALLOW_COMMENTS | + YYJSON_READ_STOP_WHEN_DONE)); + pass &= !has_inf || (flg & (YYJSON_READ_ALLOW_INF_AND_NAN)); + pass &= !has_nan || (flg & (YYJSON_READ_ALLOW_INF_AND_NAN)); + pass &= !has_str_err || (flg & (YYJSON_READ_ALLOW_INVALID_UNICODE)); + pass &= !has_bom || (flg & (YYJSON_READ_ALLOW_BOM | + YYJSON_READ_ALLOW_EXT_WHITESPACE)); + pass &= !has_ext_num || (flg & (YYJSON_READ_ALLOW_EXT_NUMBER)); + pass &= !has_ext_esc || (flg & (YYJSON_READ_ALLOW_EXT_ESCAPE)); + pass &= !has_ext_ws || (flg & (YYJSON_READ_ALLOW_EXT_WHITESPACE)); + pass &= !has_str_sq || (flg & (YYJSON_READ_ALLOW_SINGLE_QUOTED_STR)); + pass &= !has_str_uq || (flg & (YYJSON_READ_ALLOW_UNQUOTED_KEY)); +#if YYJSON_DISABLE_NON_STANDARD + pass &= !has_non_std; + pass &= !has_bignum || (flg & (YYJSON_READ_BIGNUM_AS_RAW | + YYJSON_READ_NUMBER_AS_RAW)); + pass &= !has_endcomment || (flg & YYJSON_READ_STOP_WHEN_DONE); +#endif + test_read_data(path, (char *)dat, len, flg, pass ? EXPECT_PASS : EXPECT_FAIL); + } + + // free file data + free(dat); + } + yy_dir_free(names); + + + // test invalid input + yy_assert(!yyjson_read_opts(NULL, 0, 0, NULL, NULL)); + yy_assert(!yyjson_read_opts("1", 0, 0, NULL, NULL)); + yy_assert(!yyjson_read_opts("1", SIZE_MAX, 0, NULL, NULL)); + + // test read file + yy_path_combine(dir, YYJSON_TEST_DATA_PATH, "data", "json", "test_yyjson", "blns.json", NULL); + yyjson_doc *doc = yyjson_read_file(dir, 0, NULL, NULL); + yy_assert(yyjson_is_arr(yyjson_doc_get_root(doc))); + yyjson_doc_free(doc); + + // test read file fail + yyjson_read_err err; + yy_assert(!yyjson_read_file(NULL, 0, NULL, NULL)); + yy_assert(!yyjson_read_file("...not a valid file...", 0, NULL, &err)); + yy_assert(err.code == YYJSON_READ_ERROR_FILE_OPEN); + + // test alloc fail + yyjson_alc alc_small; + char alc_buf[64]; + yy_assert(yyjson_alc_pool_init(&alc_small, alc_buf, sizeof(void *) * 8)); + yy_assert(!yyjson_read_opts("[]", 2, 0, &alc_small, NULL)); + yy_assert(!yyjson_read_opts("[ ]", 4, 0, &alc_small, NULL)); + yy_assert(!yyjson_read_opts("123", 3, 0, &alc_small, NULL)); + yy_assert(!yyjson_read_file(dir, 0, &alc_small, NULL)); +} + + + +// http://www.json.org/JSON_checker/ +static void test_json_checker(void) { + char dir[YY_MAX_PATH]; + yy_path_combine(dir, YYJSON_TEST_DATA_PATH, "data", "json", "test_checker", NULL); + int count; + char **names = yy_dir_read(dir, &count); + yy_assertf(names != NULL && count != 0, "read dir fail:%s\n", dir); + + for (int i = 0; i < count; i++) { + char *name = names[i]; + char path[YY_MAX_PATH]; + yy_path_combine(path, dir, name, NULL); + if (yy_str_has_prefix(name, "pass_")) { + test_read_file(path, 0, EXPECT_PASS); + } else if (yy_str_has_prefix(name, "fail_") && + !yy_str_contains(name, "EXCLUDE")) { + test_read_file(path, 0, EXPECT_FAIL); + } else { + test_read_file(path, 0, EXPECT_NONE); + } + } + + yy_dir_free(names); +} + +// https://github.com/nst/JSONTestSuite +static void test_json_parsing(void) { + char dir[YY_MAX_PATH]; + yy_path_combine(dir, YYJSON_TEST_DATA_PATH, "data", "json", "test_parsing", NULL); + int count; + char **names = yy_dir_read(dir, &count); + yy_assertf(names != NULL && count != 0, "read dir fail:%s\n", dir); + + for (int i = 0; i < count; i++) { + char *name = names[i]; + if (*name == '.') continue; + char path[YY_MAX_PATH]; + yy_path_combine(path, dir, name, NULL); + + if (yy_str_has_prefix(name, "y_")) { + test_read_file(path, 0, EXPECT_PASS); + } else if (yy_str_has_prefix(name, "n_")) { + test_read_file(path, 0, EXPECT_FAIL); + } else { + test_read_file(path, 0, EXPECT_NONE); + } + } + yy_dir_free(names); +} + +// https://github.com/nst/JSONTestSuite +static void test_json_transform(void) { + char dir[YY_MAX_PATH]; + yy_path_combine(dir, YYJSON_TEST_DATA_PATH, "data", "json", "test_transform", NULL); + int count; + char **names = yy_dir_read(dir, &count); + yy_assertf(names != NULL && count != 0, "read dir fail:%s\n", dir); + + for (int i = 0; i < count; i++) { + char *name = names[i]; + if (*name == '.') continue; + char path[YY_MAX_PATH]; + yy_path_combine(path, dir, name, NULL); + + if (yy_str_contains(name, "invalid")) { + test_read_file(path, 0, EXPECT_FAIL); + } else { + test_read_file(path, 0, EXPECT_PASS); + } + } + + yy_dir_free(names); +} + +// https://github.com/miloyip/nativejson-benchmark +static void test_json_encoding(void) { + char dir[YY_MAX_PATH]; + yy_path_combine(dir, YYJSON_TEST_DATA_PATH, "data", "json", "test_encoding", NULL); + int count; + char **names = yy_dir_read(dir, &count); + yy_assertf(names != NULL && count != 0, "read dir fail:%s\n", dir); + + for (int i = 0; i < count; i++) { + char *name = names[i]; + if (*name == '.') continue; + char path[YY_MAX_PATH]; + yy_path_combine(path, dir, name, NULL); + + if (strcmp(name, "utf8.json") == 0) { + test_read_file(path, 0, EXPECT_PASS); + } else if (strcmp(name, "utf8bom.json") == 0) { + test_read_file(path, 0, EXPECT_FAIL); +#if !YYJSON_DISABLE_NON_STANDARD + test_read_file(path, YYJSON_READ_ALLOW_BOM, EXPECT_PASS); + test_read_file(path, YYJSON_READ_ALLOW_EXT_WHITESPACE, EXPECT_PASS); +#else + test_read_file(path, YYJSON_READ_ALLOW_BOM, EXPECT_FAIL); + test_read_file(path, YYJSON_READ_ALLOW_EXT_WHITESPACE, EXPECT_FAIL); +#endif + } else { + test_read_file(path, 0, EXPECT_FAIL); + test_read_file(path, YYJSON_READ_ALLOW_BOM, EXPECT_FAIL); + test_read_file(path, YYJSON_READ_ALLOW_EXT_WHITESPACE, EXPECT_FAIL); + } + } + yy_dir_free(names); +} + + + +/*============================================================================== + * MARK: - Whitespace + *============================================================================*/ + +/// Validate `read(src, flg) == read(dst)`. +static void validate_whitespace(const char *src, const char *dst, yyjson_read_flag flg) { + yyjson_doc *doc_src = yyjson_read(src, src ? strlen(src) : 0, flg); + yyjson_doc *doc_dst = yyjson_read(dst, dst ? strlen(dst) : 0, 0); + +#if !YYJSON_DISABLE_NON_STANDARD + if (doc_dst) { + yy_assert(doc_src); + yy_assert(yyjson_equals(yyjson_doc_get_root(doc_src), yyjson_doc_get_root(doc_dst))); + } else { + yy_assert(!doc_src); + } +#endif + + yyjson_doc_free(doc_src); + yyjson_doc_free(doc_dst); +} + +static void test_json_whitespace(void) { + // --------------------------------- + // standard whitespace + validate_whitespace + ( + "[1, 2]", + "[1,2]", 0); + validate_whitespace + ( + "[1, 2]", + "[1,2]", YYJSON_READ_ALLOW_EXT_WHITESPACE); + + validate_whitespace + ( + "[1,\n2]", + "[1,2]", 0); + validate_whitespace + ( + "[1,\n2]", + "[1,2]", YYJSON_READ_ALLOW_EXT_WHITESPACE); + + + // --------------------------------- + // single-byte whitespace + validate_whitespace + ( + "[1,\v2]", + NULL, 0); + validate_whitespace + ( + "[1,\v2]", + "[1,2]", YYJSON_READ_ALLOW_EXT_WHITESPACE); + validate_whitespace + ( + "[1,\f2]", + NULL, 0); + validate_whitespace + ( + "[1,\f2]", + "[1,2]", YYJSON_READ_ALLOW_EXT_WHITESPACE); + + + // --------------------------------- + // multe-byte whitespace + validate_whitespace + ( + "[1, \xC2\xA0 2]", + NULL, 0); + validate_whitespace + ( + "[1, \xC2\xA0 2]", + "[1,2]", YYJSON_READ_ALLOW_EXT_WHITESPACE); + validate_whitespace + ( + "[1, \xE1\x9A\x80\xE2\x80\x80\xE2\x80\x81\xE2\x80\x8A 2]", + NULL, 0); + validate_whitespace + ( + "[1, \xE1\x9A\x80\xE2\x80\x80\xE2\x80\x81\xE2\x80\x8A 2]", + "[1,2]", YYJSON_READ_ALLOW_EXT_WHITESPACE); + validate_whitespace + ( + "[1, \xE2\x80\x8A\xE2\x80\xA8\xE2\x80\xA9\xE2\x80\xAF 2]", + NULL, 0); + validate_whitespace + ( + "[1, \xE2\x80\x8A\xE2\x80\xA8\xE2\x80\xA9\xE2\x80\xAF 2]", + "[1,2]", YYJSON_READ_ALLOW_EXT_WHITESPACE); + validate_whitespace + ( + "[1, \xE2\x81\x9F\xE3\x80\x80 2]", + NULL, 0); + validate_whitespace + ( + "[1, \xE2\x81\x9F\xE3\x80\x80 2]", + "[1,2]", YYJSON_READ_ALLOW_EXT_WHITESPACE); + + + // --------------------------------- + // BOM head + validate_whitespace + ( + "\xEF\xBB\xBF[1,2]", + NULL, 0); + validate_whitespace + ( + "\xEF\xBB\xBF[1,2]", + "[1,2]", YYJSON_READ_ALLOW_BOM); + validate_whitespace + ( + "\xEF\xBB\xBF[1,2]", + "[1,2]", YYJSON_READ_ALLOW_EXT_WHITESPACE); + validate_whitespace + ( + "\xEF\xBB\xBF[1,2]", + "[1,2]", YYJSON_READ_ALLOW_BOM | YYJSON_READ_ALLOW_EXT_WHITESPACE); + + + // --------------------------------- + // BOM inside + validate_whitespace + ( + "[1,2\xEF\xBB\xBF]", + NULL, 0); + validate_whitespace + ( + "[1,2\xEF\xBB\xBF]", + NULL, YYJSON_READ_ALLOW_BOM); + validate_whitespace + ( + "[1,2\xEF\xBB\xBF]", + "[1,2]", YYJSON_READ_ALLOW_EXT_WHITESPACE); + validate_whitespace + ( + "[1,2\xEF\xBB\xBF]", + "[1,2]", YYJSON_READ_ALLOW_BOM | YYJSON_READ_ALLOW_EXT_WHITESPACE); + + + // --------------------------------- + // single-line comment + validate_whitespace + ( + "[1,//test\n 2]", + "[1,2]", YYJSON_READ_ALLOW_COMMENTS); + validate_whitespace + ( + "[1,//test\n 2]", + "[1,2]", YYJSON_READ_ALLOW_COMMENTS | YYJSON_READ_ALLOW_EXT_WHITESPACE); + + validate_whitespace + ( + "[1,//test\xE2\x80\xA8 2]", + NULL, YYJSON_READ_ALLOW_COMMENTS); + validate_whitespace + ( + "[1,//test\xE2\x80\xA8 2]", + "[1,2]", YYJSON_READ_ALLOW_COMMENTS | YYJSON_READ_ALLOW_EXT_WHITESPACE); + + validate_whitespace + ( + "[1,//test\xE2\x80\xA9 2]", + NULL, YYJSON_READ_ALLOW_COMMENTS); + validate_whitespace + ( + "[1,//test\xE2\x80\xA9 2]", + "[1,2]", YYJSON_READ_ALLOW_COMMENTS | YYJSON_READ_ALLOW_EXT_WHITESPACE); + + validate_whitespace + ( + "[1,//test\xE2\x80\xAF 2]", + NULL, YYJSON_READ_ALLOW_COMMENTS); + validate_whitespace + ( + "[1,//test\xE2\x80\xAF 2]", + NULL, YYJSON_READ_ALLOW_COMMENTS | YYJSON_READ_ALLOW_EXT_WHITESPACE); + +} + + + +/*============================================================================== + * MARK: - Incremental + *============================================================================*/ + +#if !YYJSON_DISABLE_INCR_READER + +static yyjson_doc *test_incr_read_insitu(char *dat, usize len, usize chunk_len, yyjson_read_flag flg) { +#if YYJSON_DISABLE_UTF8_VALIDATION + if (!yy_str_is_utf8(dat, len)) return NULL; +#endif + + yyjson_read_err err; + yyjson_incr_state *state = yyjson_incr_new(dat, len, flg, NULL); + size_t read_len = 0; + yyjson_doc *doc = NULL; + while (read_len < len) { + read_len += chunk_len; + if (read_len > len) { + read_len = len; + } + /* put some garbage where the parser is supposed to stop */ + u8 saved_end = dat[read_len]; + dat[read_len] = 'X'; + doc = yyjson_incr_read(state, read_len, &err); + dat[read_len] = saved_end; + if (doc != NULL || err.code != YYJSON_READ_ERROR_MORE) { + break; + } + } + if (doc != NULL) { + yy_assert(yyjson_doc_get_read_size(doc) > 0); + yy_assert(yyjson_doc_get_val_count(doc) > 0); + yy_assert(err.code == YYJSON_READ_SUCCESS); + yy_assert(err.msg == NULL); + } else { + yy_assert(yyjson_doc_get_read_size(doc) == 0); + yy_assert(yyjson_doc_get_val_count(doc) == 0); + yy_assert(err.code != YYJSON_READ_SUCCESS); + yy_assert(err.msg != NULL); + } + yy_assert(err.code != YYJSON_READ_ERROR_MORE); + yyjson_incr_free(state); + return doc; +} + +/** Returns an allocated minified JSON string representation of an object with + obj_len keys. The values are arrays of length arr_len. The elements in the + arrays are strings, booleans, nulls, numbers, empty arrays and empty + objects. The returned string is padded with four null bytes. */ +static char *create_json(usize obj_len, usize arr_len) { + yy_buf buf; + char *values[] = {"12.5", "45", "\"hello\"", "false", + "null", "{}", "[]", "\"\\u066Dhey\\\"\\/\""}; + usize i, j; + if (!yy_buf_init(&buf, 1024)) return NULL; + if (!yy_buf_append(&buf, (u8 *)"{", 1)) goto error; + for (i = 0; i < obj_len; i++) { + char key[32]; + if (i > 0 && !yy_buf_append(&buf, (u8 *)",", 1)) goto error; + sprintf(key, "\"key%zu\":[", i); + if (!yy_buf_append(&buf, (u8 *)key, strlen(key))) goto error; + for (j = 0; j < arr_len; j++) { + char *tmp; + if (j > 0 && !yy_buf_append(&buf, (u8 *)",", 1)) goto error; + tmp = values[(i + j) % (sizeof(values) / sizeof(char *))]; + if (!yy_buf_append(&buf, (u8 *)tmp, strlen(tmp))) goto error; + } + if (!yy_buf_append(&buf, (u8 *)"]", 1)) goto error; + } + if (!yy_buf_append(&buf, (u8 *)"}", 1)) goto error; + if (!yy_buf_append(&buf, (u8 *)"\0\0\0\0", 4)) goto error; + return (char *)buf.hdr; + +error: + yy_buf_release(&buf); + return NULL; +} + +// yyjson incremental with insitu +static void test_json_incremental(void) { + char *dat = create_json(3, 10); + usize len = strlen(dat); + char *dat_dup = yy_str_copy(dat); + yyjson_doc *doc = test_incr_read_insitu(dat, len, 1, 0); + yy_assertf(doc != NULL, "incremental read should pass but fail\n"); + +#if !YYJSON_DISABLE_WRITER + usize pretty_len; + char *pretty; + pretty = yyjson_write(doc, YYJSON_WRITE_PRETTY, &pretty_len); + yy_assert(pretty && pretty_len); + yyjson_doc_free(doc); + pretty = realloc(pretty, pretty_len + YYJSON_PADDING_SIZE); /* for insitu */ + doc = test_incr_read_insitu(pretty, pretty_len, 1, 0); + yy_assertf(doc != NULL, "incremental read pretty should pass but fail\n"); + usize minify_len; + char *minify; + minify = yyjson_write(doc, YYJSON_WRITE_ESCAPE_UNICODE | YYJSON_WRITE_ESCAPE_SLASHES, &minify_len); + free(pretty); +#if !YYJSON_DISABLE_FAST_FP_CONV + yy_assertf(strcmp(minify, dat_dup) == 0, "roundtrip to minified JSON mismatch\n"); +#endif + free(minify); +#endif + + yyjson_doc_free(doc); + free(dat); + free(dat_dup); +} + +#else +static void test_json_incremental() {} +#endif + + + +/*============================================================================== + * MARK: - Entry + *============================================================================*/ + +yy_test_case(test_json_reader) { + test_json_yyjson(); + test_json_checker(); + test_json_parsing(); + test_json_transform(); + test_json_encoding(); + test_json_whitespace(); + test_json_incremental(); +} + +#else +yy_test_case(test_json_reader) {} +#endif diff --git a/lib/yyjson-0.12.0/test/test_json_val.c b/lib/yyjson-0.12.0/test/test_json_val.c new file mode 100644 index 00000000000..5a4c6f065c3 --- /dev/null +++ b/lib/yyjson-0.12.0/test/test_json_val.c @@ -0,0 +1,838 @@ +// This file is used to test the functions related to `yyjson_val`. + +#include "yyjson.h" +#include "yy_test_utils.h" + +#if !YYJSON_DISABLE_READER + +/// Validate value type +static bool validate_val_type(yyjson_val *val, + yyjson_type type, + yyjson_subtype subtype) { + + if (yyjson_is_null(val) != (type == YYJSON_TYPE_NULL && + subtype == YYJSON_SUBTYPE_NONE)) return false; + if (yyjson_is_true(val) != (type == YYJSON_TYPE_BOOL && + subtype == YYJSON_SUBTYPE_TRUE)) return false; + if (yyjson_is_false(val) != (type == YYJSON_TYPE_BOOL && + subtype == YYJSON_SUBTYPE_FALSE)) return false; + if (yyjson_is_bool(val) != (type == YYJSON_TYPE_BOOL && + (subtype == YYJSON_SUBTYPE_TRUE || + subtype == YYJSON_SUBTYPE_FALSE))) return false; + if (yyjson_is_uint(val) != (type == YYJSON_TYPE_NUM && + subtype == YYJSON_SUBTYPE_UINT)) return false; + if (yyjson_is_sint(val) != (type == YYJSON_TYPE_NUM && + subtype == YYJSON_SUBTYPE_SINT)) return false; + if (yyjson_is_int(val) != (type == YYJSON_TYPE_NUM && + (subtype == YYJSON_SUBTYPE_UINT || + subtype == YYJSON_SUBTYPE_SINT))) return false; + if (yyjson_is_real(val) != (type == YYJSON_TYPE_NUM && + subtype == YYJSON_SUBTYPE_REAL)) return false; + if (yyjson_is_num(val) != (type == YYJSON_TYPE_NUM && + (subtype == YYJSON_SUBTYPE_UINT || + subtype == YYJSON_SUBTYPE_SINT || + subtype == YYJSON_SUBTYPE_REAL))) return false; + if (yyjson_is_str(val) != (type == YYJSON_TYPE_STR)) return false; + if (yyjson_is_arr(val) != (type == YYJSON_TYPE_ARR && + subtype == YYJSON_SUBTYPE_NONE)) return false; + if (yyjson_is_obj(val) != (type == YYJSON_TYPE_OBJ && + subtype == YYJSON_SUBTYPE_NONE)) return false; + if (yyjson_is_ctn(val) != ((type == YYJSON_TYPE_ARR || + type == YYJSON_TYPE_OBJ) && + subtype == YYJSON_SUBTYPE_NONE)) return false; + + if (yyjson_get_type(val) != type) return false; + if (yyjson_get_subtype(val) != subtype) return false; + if (yyjson_get_tag(val) != (type | subtype)) return false; + + return true; +} + +/// Test simple json value api +static void test_json_val_api(void) { + yyjson_doc *doc; + yyjson_val *val; + const char *json; + + val = NULL; + yy_assert(strcmp(yyjson_get_type_desc(val), "unknown") == 0); + yy_assert(yyjson_get_len(val) == 0); + yy_assert(yyjson_equals_str(val, "") == false); + yy_assert(yyjson_equals_strn(val, "", 0) == false); + yy_assert(yyjson_arr_size(val) == 0); + yy_assert(yyjson_obj_size(val) == 0); + yy_assert(yyjson_get_uint(val) == (u64)0); + yy_assert(yyjson_get_sint(val) == (i64)0); + yy_assert(yyjson_get_int(val) == (i64)0); + yy_assert(yyjson_get_real(val) == (f64)0); + yy_assert(yyjson_get_num(val) == (f64)0); + yy_assert(yyjson_get_bool(val) == false); + yy_assert(yyjson_get_str(val) == NULL); + + json = "null"; + doc = yyjson_read(json, strlen(json), 0); + val = yyjson_doc_get_root(doc); + yy_assert(validate_val_type(val, YYJSON_TYPE_NULL, YYJSON_SUBTYPE_NONE)); + yy_assert(strcmp(yyjson_get_type_desc(val), "null") == 0); + yyjson_doc_free(doc); + + json = "true"; + doc = yyjson_read(json, strlen(json), 0); + val = yyjson_doc_get_root(doc); + yy_assert(validate_val_type(val, YYJSON_TYPE_BOOL, YYJSON_SUBTYPE_TRUE)); + yy_assert(strcmp(yyjson_get_type_desc(val), "true") == 0); + yy_assert(yyjson_get_bool(val) == true); + yyjson_doc_free(doc); + + json = "false"; + doc = yyjson_read(json, strlen(json), 0); + val = yyjson_doc_get_root(doc); + yy_assert(validate_val_type(val, YYJSON_TYPE_BOOL, YYJSON_SUBTYPE_FALSE)); + yy_assert(strcmp(yyjson_get_type_desc(val), "false") == 0); + yy_assert(yyjson_get_bool(val) == false); + yyjson_doc_free(doc); + + json = "123"; + doc = yyjson_read(json, strlen(json), 0); + val = yyjson_doc_get_root(doc); + yy_assert(validate_val_type(val, YYJSON_TYPE_NUM, YYJSON_SUBTYPE_UINT)); + yy_assert(strcmp(yyjson_get_type_desc(val), "uint") == 0); + yy_assert(yyjson_get_uint(val) == (u64)123); + yy_assert(yyjson_get_sint(val) == (i64)123); + yy_assert(yyjson_get_int(val) == (i64)123); + yy_assert(yyjson_get_real(val) == (f64)0); + yy_assert(yyjson_get_num(val) == (f64)123); + yy_assert(yyjson_get_bool(val) == false); + yyjson_doc_free(doc); + + json = "-123"; + doc = yyjson_read(json, strlen(json), 0); + val = yyjson_doc_get_root(doc); + yy_assert(validate_val_type(val, YYJSON_TYPE_NUM, YYJSON_SUBTYPE_SINT)); + yy_assert(strcmp(yyjson_get_type_desc(val), "sint") == 0); + yy_assert(yyjson_get_uint(val) == (u64)-123); + yy_assert(yyjson_get_sint(val) == (i64)-123); + yy_assert(yyjson_get_int(val) == (i64)-123); + yy_assert(yyjson_get_real(val) == (f64)0); + yy_assert(yyjson_get_num(val) == (f64)-123); + yyjson_doc_free(doc); + + json = "123.0"; + doc = yyjson_read(json, strlen(json), 0); + val = yyjson_doc_get_root(doc); + yy_assert(validate_val_type(val, YYJSON_TYPE_NUM, YYJSON_SUBTYPE_REAL)); + yy_assert(strcmp(yyjson_get_type_desc(val), "real") == 0); + yy_assert(yyjson_get_uint(val) == (u64)0); + yy_assert(yyjson_get_sint(val) == (i64)0); + yy_assert(yyjson_get_int(val) == (i64)0); + yy_assert(yyjson_get_real(val) == (f64)123.0); + yy_assert(yyjson_get_num(val) == (f64)123.0); + yyjson_doc_free(doc); + + json = "\"abc\""; + doc = yyjson_read(json, strlen(json), 0); + val = yyjson_doc_get_root(doc); + yy_assert(validate_val_type(val, YYJSON_TYPE_STR, YYJSON_SUBTYPE_NOESC)); + yy_assert(strcmp(yyjson_get_type_desc(val), "string") == 0); + yy_assert(strcmp(yyjson_get_str(val), "abc") == 0); + yy_assert(yyjson_get_uint(val) == (u64)0); + yy_assert(yyjson_get_sint(val) == (i64)0); + yy_assert(yyjson_get_int(val) == (i64)0); + yy_assert(yyjson_get_real(val) == (f64)0.0); + yy_assert(yyjson_get_num(val) == (f64)0.0); + yy_assert(yyjson_get_len(val) == 3); + yy_assert(yyjson_equals_str(val, "abc")); + yyjson_doc_free(doc); + + json = "\"abc\\u0000def\""; + doc = yyjson_read(json, strlen(json), 0); + val = yyjson_doc_get_root(doc); + yy_assert(validate_val_type(val, YYJSON_TYPE_STR, YYJSON_SUBTYPE_NONE)); + yy_assert(strcmp(yyjson_get_type_desc(val), "string") == 0); + yy_assert(strcmp(yyjson_get_str(val), "abc") == 0); + yy_assert(memcmp(yyjson_get_str(val), "abc\0def", 7) == 0); + yy_assert(yyjson_get_len(val) == 7); + yy_assert(yyjson_equals_str(val, "abc") == false); + yy_assert(yyjson_equals_strn(val, "abc", 3) == false); + yy_assert(yyjson_equals_str(val, "abc\0def") == false); + yy_assert(yyjson_equals_strn(val, "abc\0def", 7) == true); + yyjson_doc_free(doc); + + json = "[]"; + doc = yyjson_read(json, strlen(json), 0); + val = yyjson_doc_get_root(doc); + yy_assert(validate_val_type(val, YYJSON_TYPE_ARR, YYJSON_SUBTYPE_NONE)); + yy_assert(strcmp(yyjson_get_type_desc(val), "array") == 0); + yyjson_doc_free(doc); + + json = "{}"; + doc = yyjson_read(json, strlen(json), 0); + val = yyjson_doc_get_root(doc); + yy_assert(validate_val_type(val, YYJSON_TYPE_OBJ, YYJSON_SUBTYPE_NONE)); + yy_assert(strcmp(yyjson_get_type_desc(val), "object") == 0); + yyjson_doc_free(doc); + + val = NULL; + yy_assert(validate_val_type(val, YYJSON_TYPE_NONE, YYJSON_SUBTYPE_NONE)); +} + +/// Test json array api +static void test_json_arr_api(void) { + yyjson_doc *doc; + yyjson_val *arr, *val; + const char *json; + yyjson_arr_iter iter; + size_t idx, max, tmp[16]; + + //--------------------------------------------- + // array (size 0) + + json = "[]"; + doc = yyjson_read(json, strlen(json), 0); + arr = yyjson_doc_get_root(doc); + yy_assert(yyjson_is_arr(arr)); + yy_assert(yyjson_arr_size(arr) == 0); + + val = yyjson_arr_get(arr, 0); + yy_assert(val == NULL); + + val = yyjson_arr_get_first(arr); + yy_assert(val == NULL); + val = yyjson_arr_get_last(arr); + yy_assert(val == NULL); + + // iter + iter = yyjson_arr_iter_with(arr); + yy_assert(yyjson_arr_iter_has_next(&iter) == false); + while ((val = yyjson_arr_iter_next(&iter))) { + yy_assert(false); + } + + // foreach + yyjson_arr_foreach(arr, idx, max, val) { + yy_assert(false); + } + + yyjson_doc_free(doc); + + + //--------------------------------------------- + // array (size 1) + + json = "[1]"; + doc = yyjson_read(json, strlen(json), 0); + arr = yyjson_doc_get_root(doc); + yy_assert(yyjson_arr_size(arr) == 1); + + val = yyjson_arr_get(arr, 0); + yy_assert(yyjson_get_int(val) == 1); + val = yyjson_arr_get(arr, 1); + yy_assert(val == NULL); + + val = yyjson_arr_get_first(arr); + yy_assert(yyjson_get_int(val) == 1); + val = yyjson_arr_get_last(arr); + yy_assert(yyjson_get_int(val) == 1); + + // iter + idx = 0; + yyjson_arr_iter_init(arr, &iter); + yy_assert(yyjson_arr_iter_has_next(&iter) == true); + while ((val = yyjson_arr_iter_next(&iter))) { + idx++; + yy_assert(yyjson_get_int(val) == (i64)idx); + yy_assert(yyjson_arr_iter_has_next(&iter) == idx < 1); + } + yy_assert(yyjson_arr_iter_has_next(&iter) == false); + yy_assert(idx == 1); + + // foreach + memset(tmp, 0, sizeof(tmp)); + yyjson_arr_foreach(arr, idx, max, val) { + yy_assert(yyjson_get_int(val) == (i64)idx + 1); + yy_assert(max == 1); + yy_assert(tmp[idx] == 0); + tmp[idx] = idx + 1; + } + yy_assert(tmp[0] == 1); + yy_assert(tmp[1] == 0); + + yyjson_doc_free(doc); + + + //--------------------------------------------- + // array (size 2) + + json = "[1,2]"; + doc = yyjson_read(json, strlen(json), 0); + arr = yyjson_doc_get_root(doc); + yy_assert(yyjson_arr_size(arr) == 2); + + val = yyjson_arr_get(arr, 0); + yy_assert(yyjson_get_int(val) == 1); + val = yyjson_arr_get(arr, 1); + yy_assert(yyjson_get_int(val) == 2); + val = yyjson_arr_get(arr, 2); + yy_assert(val == NULL); + + val = yyjson_arr_get_first(arr); + yy_assert(yyjson_get_int(val) == 1); + val = yyjson_arr_get_last(arr); + yy_assert(yyjson_get_int(val) == 2); + + // iter + idx = 0; + yyjson_arr_iter_init(arr, &iter); + yy_assert(yyjson_arr_iter_has_next(&iter) == true); + while ((val = yyjson_arr_iter_next(&iter))) { + idx++; + yy_assert(yyjson_get_int(val) == (i64)idx); + yy_assert(yyjson_arr_iter_has_next(&iter) == idx < 2); + } + yy_assert(yyjson_arr_iter_has_next(&iter) == false); + yy_assert(idx == 2); + + // foreach + memset(tmp, 0, sizeof(tmp)); + yyjson_arr_foreach(arr, idx, max, val) { + yy_assert(yyjson_get_int(val) == (i64)idx + 1); + yy_assert(max == 2); + yy_assert(tmp[idx] == 0); + tmp[idx] = idx + 1; + } + yy_assert(tmp[0] == 1); + yy_assert(tmp[1] == 2); + yy_assert(tmp[2] == 0); + + yyjson_doc_free(doc); + + + //--------------------------------------------- + // array (size 3) + + json = "[1,2,3]"; + doc = yyjson_read(json, strlen(json), 0); + arr = yyjson_doc_get_root(doc); + yy_assert(yyjson_arr_size(arr) == 3); + + val = yyjson_arr_get(arr, 0); + yy_assert(yyjson_get_int(val) == 1); + val = yyjson_arr_get(arr, 1); + yy_assert(yyjson_get_int(val) == 2); + val = yyjson_arr_get(arr, 2); + yy_assert(yyjson_get_int(val) == 3); + val = yyjson_arr_get(arr, 3); + yy_assert(val == NULL); + + val = yyjson_arr_get_first(arr); + yy_assert(yyjson_get_int(val) == 1); + val = yyjson_arr_get_last(arr); + yy_assert(yyjson_get_int(val) == 3); + + // iter + idx = 0; + yyjson_arr_iter_init(arr, &iter); + yy_assert(yyjson_arr_iter_has_next(&iter) == true); + while ((val = yyjson_arr_iter_next(&iter))) { + idx++; + yy_assert(yyjson_get_int(val) == (i64)idx); + yy_assert(yyjson_arr_iter_has_next(&iter) == idx < 3); + } + yy_assert(yyjson_arr_iter_has_next(&iter) == false); + yy_assert(idx == 3); + + // foreach + memset(tmp, 0, sizeof(tmp)); + yyjson_arr_foreach(arr, idx, max, val) { + yy_assert(yyjson_get_int(val) == (i64)idx + 1); + yy_assert(max == 3); + yy_assert(tmp[idx] == 0); + tmp[idx] = idx + 1; + } + yy_assert(tmp[0] == 1); + yy_assert(tmp[1] == 2); + yy_assert(tmp[2] == 3); + yy_assert(tmp[3] == 0); + + yyjson_doc_free(doc); + + + //--------------------------------------------- + // array (size 3, non-flat) + + json = "[1,[null],3]"; + doc = yyjson_read(json, strlen(json), 0); + arr = yyjson_doc_get_root(doc); + yy_assert(yyjson_arr_size(arr) == 3); + + val = yyjson_arr_get(arr, 0); + yy_assert(yyjson_get_int(val) == 1); + val = yyjson_arr_get(arr, 2); + yy_assert(yyjson_get_int(val) == 3); + val = yyjson_arr_get(arr, 3); + yy_assert(val == NULL); + + val = yyjson_arr_get_first(arr); + yy_assert(yyjson_get_int(val) == 1); + val = yyjson_arr_get_last(arr); + yy_assert(yyjson_get_int(val) == 3); + + //--------------------------------------------- + // iter + yy_assert(yyjson_arr_iter_init(arr, NULL) == false); + yy_assert(yyjson_arr_iter_init(NULL, &iter) == false); + yy_assert(yyjson_arr_iter_init(NULL, NULL) == false); + + + yyjson_doc_free(doc); +} + +/// Test json object api +static void test_json_obj_api(void) { + yyjson_doc *doc; + yyjson_val *obj, *key, *val; + const char *json; + yyjson_obj_iter iter; + size_t idx, max, tmp[16]; + + + //--------------------------------------------- + // object (size 0) + + json = "{}"; + doc = yyjson_read(json, strlen(json), 0); + obj = yyjson_doc_get_root(doc); + yy_assert(yyjson_is_obj(obj)); + yy_assert(yyjson_obj_size(obj) == 0); + + val = yyjson_obj_get(obj, "x"); + yy_assert(val == NULL); + val = yyjson_obj_get(obj, ""); + yy_assert(val == NULL); + val = yyjson_obj_get(obj, NULL); + yy_assert(val == NULL); + + // iter + iter = yyjson_obj_iter_with(obj); + yy_assert(yyjson_obj_iter_has_next(&iter) == false); + while ((key = yyjson_obj_iter_next(&iter))) { + yy_assert(false); + } + + // iter get + yy_assert(yyjson_obj_iter_init(obj, &iter)); + yy_assert(!yyjson_obj_iter_get(&iter, "x")); + + // foreach + yyjson_obj_foreach(obj, idx, max, key, val) { + yy_assert(false); + } + + yyjson_doc_free(doc); + + + //--------------------------------------------- + // object (size 1) + + json = "{\"a\":1}"; + doc = yyjson_read(json, strlen(json), 0); + obj = yyjson_doc_get_root(doc); + yy_assert(yyjson_is_obj(obj)); + yy_assert(yyjson_obj_size(obj) == 1); + + val = yyjson_obj_get(obj, "a"); + yy_assert(yyjson_get_int(val) == 1); + val = yyjson_obj_get(obj, "x"); + yy_assert(val == NULL); + val = yyjson_obj_get(obj, ""); + yy_assert(val == NULL); + val = yyjson_obj_get(obj, NULL); + yy_assert(val == NULL); + + // iter + memset(tmp, 0, sizeof(tmp)); + yyjson_obj_iter_init(obj, &iter); + yy_assert(yyjson_obj_iter_has_next(&iter) == true); + while ((key = yyjson_obj_iter_next(&iter))) { + val = key + 1; + if (yyjson_equals_str(key, "a")) { + yy_assert(yyjson_get_int(val) == 1); + yy_assert(tmp[0] == 0); + tmp[0] = 1; + yy_assert(yyjson_obj_iter_has_next(&iter) == false); + } else { + yy_assert(false); + } + } + yy_assert(yyjson_obj_iter_has_next(&iter) == false); + yy_assert(tmp[0]); + + // iter get + yy_assert(yyjson_obj_iter_init(obj, &iter)); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "a")) == 1); + yy_assert(!yyjson_obj_iter_get(&iter, "x")); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "a")) == 1); + yy_assert(!yyjson_obj_iter_get(&iter, "x")); + + yy_assert(yyjson_obj_iter_init(obj, &iter)); + yy_assert(!yyjson_obj_iter_get(&iter, "x")); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "a")) == 1); + yy_assert(!yyjson_obj_iter_get(&iter, "x")); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "a")) == 1); + + // foreach + memset(tmp, 0, sizeof(tmp)); + yyjson_obj_foreach(obj, idx, max, key, val) { + if (yyjson_equals_str(key, "a")) { + yy_assert(yyjson_get_int(val) == 1); + yy_assert(tmp[0] == 0); + tmp[0] = 1; + } else { + yy_assert(false); + } + } + yy_assert(tmp[0]); + + yyjson_doc_free(doc); + + + //--------------------------------------------- + // object (size 2) + + json = "{\"a\":1,\"b\":2}"; + doc = yyjson_read(json, strlen(json), 0); + obj = yyjson_doc_get_root(doc); + yy_assert(yyjson_is_obj(obj)); + yy_assert(yyjson_obj_size(obj) == 2); + + val = yyjson_obj_get(obj, "a"); + yy_assert(yyjson_get_int(val) == 1); + val = yyjson_obj_get(obj, "b"); + yy_assert(yyjson_get_int(val) == 2); + val = yyjson_obj_get(obj, "x"); + yy_assert(val == NULL); + val = yyjson_obj_get(obj, ""); + yy_assert(val == NULL); + val = yyjson_obj_get(obj, NULL); + yy_assert(val == NULL); + + // iter + memset(tmp, 0, sizeof(tmp)); + yyjson_obj_iter_init(obj, &iter); + yy_assert(yyjson_obj_iter_has_next(&iter) == true); + while ((key = yyjson_obj_iter_next(&iter))) { + val = yyjson_obj_iter_get_val(key); + if (yyjson_equals_str(key, "a")) { + yy_assert(yyjson_get_int(val) == 1); + yy_assert(tmp[0] == 0); + tmp[0] = 1; + yy_assert(yyjson_obj_iter_has_next(&iter) == true); + } else if (yyjson_equals_str(key, "b")) { + yy_assert(yyjson_get_int(val) == 2); + yy_assert(tmp[1] == 0); + tmp[1] = 2; + yy_assert(yyjson_obj_iter_has_next(&iter) == false); + } else { + yy_assert(false); + } + } + yy_assert(yyjson_obj_iter_has_next(&iter) == false); + yy_assert(tmp[0]); + yy_assert(tmp[1]); + + // iter get + yy_assert(yyjson_obj_iter_init(obj, &iter)); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "a")) == 1); + yy_assert(!yyjson_obj_iter_get(&iter, "x")); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "a")) == 1); + yy_assert(!yyjson_obj_iter_get(&iter, "x")); + + yy_assert(yyjson_obj_iter_init(obj, &iter)); + yy_assert(!yyjson_obj_iter_get(&iter, "x")); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "a")) == 1); + yy_assert(!yyjson_obj_iter_get(&iter, "x")); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "a")) == 1); + + yy_assert(yyjson_obj_iter_init(obj, &iter)); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "a")) == 1); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "b")) == 2); + yy_assert(!yyjson_obj_iter_get(&iter, "x")); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "b")) == 2); + + yy_assert(yyjson_obj_iter_init(obj, &iter)); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "b")) == 2); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "a")) == 1); + yy_assert(!yyjson_obj_iter_get(&iter, "x")); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "b")) == 2); + + // foreach + memset(tmp, 0, sizeof(tmp)); + yyjson_obj_foreach(obj, idx, max, key, val) { + if (yyjson_equals_str(key, "a")) { + yy_assert(yyjson_get_int(val) == 1); + yy_assert(tmp[0] == 0); + tmp[0] = 1; + } else if (yyjson_equals_str(key, "b")) { + yy_assert(yyjson_get_int(val) == 2); + yy_assert(tmp[1] == 0); + tmp[1] = 2; + } else { + yy_assert(false); + } + } + yy_assert(tmp[0]); + yy_assert(tmp[1]); + + yyjson_doc_free(doc); + + + //--------------------------------------------- + // object (size 3) + + json = "{\"a\":1,\"b\":2,\"c\":3}"; + doc = yyjson_read(json, strlen(json), 0); + obj = yyjson_doc_get_root(doc); + yy_assert(yyjson_is_obj(obj)); + yy_assert(yyjson_obj_size(obj) == 3); + + val = yyjson_obj_get(obj, "a"); + yy_assert(yyjson_get_int(val) == 1); + val = yyjson_obj_get(obj, "b"); + yy_assert(yyjson_get_int(val) == 2); + val = yyjson_obj_get(obj, "c"); + yy_assert(yyjson_get_int(val) == 3); + val = yyjson_obj_get(obj, "x"); + yy_assert(val == NULL); + val = yyjson_obj_get(obj, ""); + yy_assert(val == NULL); + val = yyjson_obj_get(obj, NULL); + yy_assert(val == NULL); + + // iter + memset(tmp, 0, sizeof(tmp)); + yyjson_obj_iter_init(obj, &iter); + yy_assert(yyjson_obj_iter_has_next(&iter) == true); + while ((key = yyjson_obj_iter_next(&iter))) { + val = key + 1; + if (yyjson_equals_str(key, "a")) { + yy_assert(yyjson_get_int(val) == 1); + yy_assert(tmp[0] == 0); + tmp[0] = 1; + yy_assert(yyjson_obj_iter_has_next(&iter) == true); + } else if (yyjson_equals_str(key, "b")) { + yy_assert(yyjson_get_int(val) == 2); + yy_assert(tmp[1] == 0); + tmp[1] = 2; + yy_assert(yyjson_obj_iter_has_next(&iter) == true); + } else if (yyjson_equals_str(key, "c")) { + yy_assert(yyjson_get_int(val) == 3); + yy_assert(tmp[2] == 0); + tmp[2] = 3; + yy_assert(yyjson_obj_iter_has_next(&iter) == false); + } else { + yy_assert(false); + } + } + yy_assert(yyjson_obj_iter_has_next(&iter) == false); + yy_assert(tmp[0]); + yy_assert(tmp[1]); + yy_assert(tmp[2]); + + // iter get + yy_assert(yyjson_obj_iter_init(obj, &iter)); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "a")) == 1); + yy_assert(!yyjson_obj_iter_get(&iter, "x")); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "a")) == 1); + yy_assert(!yyjson_obj_iter_get(&iter, "x")); + + yy_assert(yyjson_obj_iter_init(obj, &iter)); + yy_assert(!yyjson_obj_iter_get(&iter, "x")); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "a")) == 1); + yy_assert(!yyjson_obj_iter_get(&iter, "x")); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "a")) == 1); + + yy_assert(yyjson_obj_iter_init(obj, &iter)); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "a")) == 1); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "b")) == 2); + yy_assert(!yyjson_obj_iter_get(&iter, "x")); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "b")) == 2); + + yy_assert(yyjson_obj_iter_init(obj, &iter)); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "b")) == 2); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "a")) == 1); + yy_assert(!yyjson_obj_iter_get(&iter, "x")); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "b")) == 2); + + yy_assert(yyjson_obj_iter_init(obj, &iter)); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "c")) == 3); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "b")) == 2); + yy_assert(!yyjson_obj_iter_get(&iter, "x")); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "b")) == 2); + + yy_assert(yyjson_obj_iter_init(obj, &iter)); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "a")) == 1); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "b")) == 2); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "c")) == 3); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "a")) == 1); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "b")) == 2); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "c")) == 3); + + yy_assert(yyjson_obj_iter_init(obj, &iter)); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "c")) == 3); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "b")) == 2); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "a")) == 1); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "c")) == 3); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "b")) == 2); + yy_assert(yyjson_get_int(yyjson_obj_iter_get(&iter, "a")) == 1); + + // foreach + memset(tmp, 0, sizeof(tmp)); + yyjson_obj_foreach(obj, idx, max, key, val) { + if (yyjson_equals_str(key, "a")) { + yy_assert(yyjson_get_int(val) == 1); + yy_assert(tmp[0] == 0); + tmp[0] = 1; + } else if (yyjson_equals_str(key, "b")) { + yy_assert(yyjson_get_int(val) == 2); + yy_assert(tmp[1] == 0); + tmp[1] = 2; + } else if (yyjson_equals_str(key, "c")) { + yy_assert(yyjson_get_int(val) == 3); + yy_assert(tmp[2] == 0); + tmp[2] = 3; + } else { + yy_assert(false); + } + } + yy_assert(tmp[0]); + yy_assert(tmp[1]); + yy_assert(tmp[2]); + + //--------------------------------------------- + // iter + yy_assert(yyjson_obj_iter_init(obj, NULL) == false); + yy_assert(yyjson_obj_iter_init(NULL, &iter) == false); + yy_assert(yyjson_obj_iter_init(NULL, NULL) == false); + + yyjson_doc_free(doc); +} + +static void validate_equals(const char *lhs_json, const char *rhs_json, bool equals) { + yyjson_doc *lhs_doc = yyjson_read(lhs_json, strlen(lhs_json), 0); + yyjson_doc *rhs_doc = yyjson_read(rhs_json, strlen(rhs_json), 0); + + yyjson_val *lhs_val = yyjson_doc_get_root(lhs_doc); + yyjson_val *rhs_val = yyjson_doc_get_root(rhs_doc); + + yy_assert(yyjson_equals(lhs_val, rhs_val) == equals); + yy_assert(yyjson_equals(rhs_val, lhs_val) == equals); + + yyjson_doc_free(rhs_doc); + yyjson_doc_free(lhs_doc); + + // RAW type + lhs_doc = yyjson_read(lhs_json, strlen(lhs_json), YYJSON_READ_NUMBER_AS_RAW); + rhs_doc = yyjson_read(rhs_json, strlen(rhs_json), YYJSON_READ_NUMBER_AS_RAW); + + lhs_val = yyjson_doc_get_root(lhs_doc); + rhs_val = yyjson_doc_get_root(rhs_doc); + + yy_assert(yyjson_equals(lhs_val, rhs_val) == equals); + yy_assert(yyjson_equals(rhs_val, lhs_val) == equals); + + yyjson_doc_free(rhs_doc); + yyjson_doc_free(lhs_doc); +} + +static void test_json_equals_api(void) { + yy_assert(!yyjson_equals(NULL, NULL)); + validate_equals("", "", false); + validate_equals("", "true", false); + validate_equals("true", "", false); + validate_equals("true", "false", false); + validate_equals("null", "null", true); + validate_equals("true", "true", true); + validate_equals("false", "false", true); + validate_equals("1", "1", true); + validate_equals("1", "2", false); + validate_equals("-1", "-1", true); + validate_equals("-1", "1", false); + validate_equals("1", "\"hello\"", false); + validate_equals("\"hello\"", "\"hello\"", true); + validate_equals("\"hello\"", "\"world\"", false); + validate_equals("\"\"", "\"\"", true); + validate_equals("123.456", "123.456", true); + validate_equals("-123.456", "-123.456", true); + validate_equals("-123.456", "123.456", false); + validate_equals("{}", "{}", true); + validate_equals("[]", "[]", true); + validate_equals("[]", "{}", false); + validate_equals("{}", "[]", false); + validate_equals("[]", "[1]", false); + validate_equals("[1]", "[1]", true); + validate_equals("[1]", "[2]", false); + validate_equals("[1]", "[1, 2]", false); + validate_equals("{}", "{\"a\":0}", false); + validate_equals("{\"a\":0}", "{\"a\":0}", true); + validate_equals("{\"a\":0}", "{\"a\":1}", false); + validate_equals("{\"a\":0}", "{\"b\":0}", false); + validate_equals("{\"a\":0}", "{\"a\":0,\"b\":0}", false); + validate_equals("{\"a\":{\"b\":[1.0, 2.0]}}", + "{\"a\":{\"b\":[1.0, 2.0]}}", + true); + validate_equals("{\"a\":{\"b\":[1.0, 2.0]}}", + "{\"a\":{\"b\":[1.0, 2]}}", + false); + validate_equals("[1,2,3,4,5,\"test\",123.456,true,false,null]", + "[1,2,3,4,5,\"test\",123.456,true,false,null]", + true); + validate_equals("[null,1,2,3,4,5,\"test\",123.456,true,false]", + "[1,2,3,4,5,\"test\",123.456,true,false,null]", + false); + validate_equals("{}", + "{\"a\":1,\"b\":2,\"c\":3}", + false); + validate_equals("{\"a\":1,\"b\":2,\"c\":3}", + "{\"b\":2,\"a\":1,\"c\":3}", + true); + validate_equals("{\"a\":1,\"b\":2,\"c\":3}", + "{\"a\":1,\"b\":2,\"c\":3,\"d\":4}", + false); + validate_equals("\ +[{\ + \"array\": [1,2,3,4,5,\"test\",123.456,true,false,null,{\"a\":1,\"b\":2,\"c\":3}],\ + \"object\": {\ + \"key1\": 1,\ + \"key2\": 2,\ + \"key3\": true,\ + \"key4\": false,\ + \"key5\": null,\ + \"key6\": [1,2,3,4,5,\"test\",123.456,true,false,null],\ + \"key7\": {\"a\":1,\"b\":2,\"c\":3}\ + }\ +}]", +"\ +[{\ + \"object\": {\ + \"key5\": null,\ + \"key6\": [1,2,3,4,5,\"test\",123.456,true,false,null],\ + \"key1\": 1,\ + \"key7\": {\"c\":3,\"a\":1,\"b\":2},\ + \"key2\": 2,\ + \"key3\": true,\ + \"key4\": false\ + },\ + \"array\": [1,2,3,4,5,\"test\",123.456,true,false,null,{\"a\":1,\"b\":2,\"c\":3}]\ +}]", true); +} + +yy_test_case(test_json_val) { + test_json_val_api(); + test_json_arr_api(); + test_json_obj_api(); + test_json_equals_api(); +} + +#else +yy_test_case(test_json_val) {} +#endif diff --git a/lib/yyjson-0.12.0/test/test_json_writer.c b/lib/yyjson-0.12.0/test/test_json_writer.c new file mode 100644 index 00000000000..f8713f7ddeb --- /dev/null +++ b/lib/yyjson-0.12.0/test/test_json_writer.c @@ -0,0 +1,1044 @@ +// This file is used to test the functionality of JSON writer. + +#include "yyjson.h" +#include "yy_test_utils.h" + + +#if !YYJSON_DISABLE_WRITER + +static bool mut_val_has_inf_nan(yyjson_mut_val *val) { + usize idx, max; + yyjson_mut_val *k, *v; + + if (yyjson_mut_is_real(val)) { + f64 num = yyjson_mut_get_real(val); + if (isnan(num) || isinf(num)) return true; + return false; + } + if (yyjson_mut_is_arr(val)) { + yyjson_mut_arr_foreach(val, idx, max, v) { + if (mut_val_has_inf_nan(v)) return true; + } + }else if (yyjson_mut_is_obj(val)) { + yyjson_mut_obj_foreach(val, idx, max, k, v) { + if (mut_val_has_inf_nan(v)) return true; + } + } + return false; +} + +static usize mut_val_get_num(yyjson_mut_val *val) { + usize idx, max, num; + yyjson_mut_val *k, *v; + + if (!val) return 0; + if (!yyjson_mut_is_ctn(val)) return 1; + + num = 1; + if (yyjson_mut_is_arr(val)) { + yyjson_mut_arr_foreach(val, idx, max, v) { + num += mut_val_get_num(v); + } + }else if (yyjson_mut_is_obj(val)) { + yyjson_mut_obj_foreach(val, idx, max, k, v) { + num += 1; + num += mut_val_get_num(v); + } + } + return num; +} + + +static void validate_json_write_with_flag(yyjson_write_flag flg, + yyjson_mut_doc *doc, + yyjson_alc *alc, + const char *expect) { +#if !YYJSON_DISABLE_READER + // write mutable doc to string + usize len; + char *ret = yyjson_mut_write_opts(doc, flg, alc, &len, NULL); + if (!expect) { + yy_assertf(!ret && len == 0, "write with flag 0x%x\nexpect fail, but return:\n%s\n", flg, ret); + return; + } + yy_assertf(ret && len > 0, "write with flag 0x%x\nexpect:\n%s\noutput:\n%s\n", flg, expect, ret); + yy_assertf(strlen(ret) == len, "write with flag 0x%x\nexpect:\n%s\noutput:\n%s\n", flg, expect, ret); + yy_assertf(strlen(expect) == len, "write with flag 0x%x\nexpect:\n%s\noutput:\n%s\n", flg, expect, ret); + yy_assertf(memcmp(ret, expect, len) == 0, "write with flag 0x%x\nexpect:\n%s\noutput:\n%s\n", flg, expect, ret); + + + // temp file path + const char *tmp_file_path = "__yyjson_test_tmp__.json"; + FILE *tmp_fp; + u8 *dat, num = '0'; + usize dat_len; + + + // write mutable doc to file + yy_file_delete(tmp_file_path); + yy_assert(yyjson_mut_write_file(tmp_file_path, doc, flg, alc, NULL)); + yy_assert(yy_file_read(tmp_file_path, &dat, &dat_len)); + yy_assert(dat_len == len); + yy_assert(memcmp(dat, ret, len) == 0); + free(dat); + yy_file_delete(tmp_file_path); + + + // write mutable doc to file pointer + tmp_fp = yy_file_open(tmp_file_path, "wb"); + yy_assert(yyjson_mut_write_fp(tmp_fp, doc, flg, alc, NULL)); + fclose(tmp_fp); + yy_assert(yy_file_read(tmp_file_path, &dat, &dat_len)); + yy_assert(dat_len == len); + yy_assert(memcmp(dat, ret, len) == 0); + free(dat); + yy_file_delete(tmp_file_path); + + + // write to read-only fp + yy_file_write(tmp_file_path, (void *)&num, 1); + tmp_fp = yy_file_open(tmp_file_path, "rb"); + yy_assert(!yyjson_mut_write_fp(tmp_fp, doc, flg, alc, NULL)); + fclose(tmp_fp); + yy_file_delete(tmp_file_path); + + yy_assert(!yyjson_mut_write_fp(NULL, doc, flg, alc, NULL)); + + + // read + yyjson_read_flag rflg = YYJSON_READ_NOFLAG; + if (flg & YYJSON_WRITE_ALLOW_INF_AND_NAN) rflg |= YYJSON_READ_ALLOW_INF_AND_NAN; + yyjson_doc *idoc = yyjson_read_opts(ret, len, rflg, NULL, NULL); + yy_assert(idoc); + if (mut_val_get_num(doc->root) != idoc->val_read) { + idoc = yyjson_read_opts(ret, len, rflg, NULL, NULL); + } + yy_assert(mut_val_get_num(doc->root) == idoc->val_read); + + + // write immutable doc to string + usize len2; + char *ret2 = yyjson_write_opts(idoc, flg, NULL, &len2, NULL); + yy_assert(len == len2 && ret2); + yy_assert(memcmp(ret, ret2, len) == 0); + free(ret2); + + ret2 = yyjson_val_write_opts(idoc->root, flg, NULL, &len2, NULL); + yy_assert(len == len2 && ret2); + yy_assert(memcmp(ret, ret2, len) == 0); + free(ret2); + + + // write immutable doc to file + yy_assert(yyjson_write_file(tmp_file_path, idoc, flg, alc, NULL)); + u8 *dat2; + usize dat2_len; + yy_assert(yy_file_read(tmp_file_path, &dat2, &dat2_len)); + yy_assert(dat2_len == len); + yy_assert(memcmp(dat2, ret, len) == 0); + free(dat2); + yy_file_delete(tmp_file_path); + + tmp_fp = yy_file_open(tmp_file_path, "wb"); + yy_assert(yyjson_write_fp(tmp_fp, idoc, flg, alc, NULL)); + fclose(tmp_fp); + yy_assert(yy_file_read(tmp_file_path, &dat2, &dat2_len)); + yy_assert(dat2_len == len); + yy_assert(memcmp(dat2, ret, len) == 0); + free(dat2); + yy_file_delete(tmp_file_path); + + yy_file_write(tmp_file_path, (void *)&num, 1); + tmp_fp = yy_file_open(tmp_file_path, "rb"); + yy_assert(!yyjson_write_fp(tmp_fp, idoc, flg, alc, NULL)); + fclose(tmp_fp); + yy_file_delete(tmp_file_path); + + yy_assert(!yyjson_write_fp(NULL, idoc, flg, alc, NULL)); + + + // write immutable val to file + yy_assert(yyjson_val_write_file(tmp_file_path, idoc->root, flg, alc, NULL)); + yy_assert(yy_file_read(tmp_file_path, &dat2, &dat2_len)); + yy_assert(dat2_len == len); + yy_assert(memcmp(dat2, ret, len) == 0); + free(dat2); + yy_file_delete(tmp_file_path); + + tmp_fp = yy_file_open(tmp_file_path, "wb"); + yy_assert(yyjson_val_write_fp(tmp_fp, idoc->root, flg, alc, NULL)); + fclose(tmp_fp); + yy_assert(yy_file_read(tmp_file_path, &dat2, &dat2_len)); + yy_assert(dat2_len == len); + yy_assert(memcmp(dat2, ret, len) == 0); + free(dat2); + yy_file_delete(tmp_file_path); + + yy_file_write(tmp_file_path, (void *)&num, 1); + tmp_fp = yy_file_open(tmp_file_path, "rb"); + yy_assert(!yyjson_val_write_fp(tmp_fp, idoc->root, flg, alc, NULL)); + fclose(tmp_fp); + yy_file_delete(tmp_file_path); + + yy_assert(!yyjson_val_write_fp(NULL, idoc->root, flg, alc, NULL)); + + + // copy mutable doc and write again + yyjson_mut_doc *mdoc = yyjson_doc_mut_copy(idoc, NULL); + yy_assert(mdoc); + usize len3; + char *ret3 = yyjson_mut_write_opts(doc, flg, NULL, &len3, NULL); + yy_assert(len == len3 && ret3); + yy_assert(memcmp(ret, ret3, len) == 0); + free(ret3); + + ret3 = yyjson_mut_val_write_opts(doc->root, flg, NULL, &len3, NULL); + yy_assert(len == len3 && ret3); + yy_assert(memcmp(ret, ret3, len) == 0); + free(ret3); + + + yyjson_doc_free(idoc); + yyjson_mut_doc_free(mdoc); + + + if (alc) alc->free(alc->ctx, (void *)ret); + else free((void *)ret); +#endif +} + +// @param min Expected minify string +// @param pre Expected pretty +// @param min_null Expected minify string with flat NAN_INF_AS_NULL +// @param pre_null Expected pretty string with flat NAN_INF_AS_NULL +static void validate_json_write_ex(yyjson_mut_doc *doc, + yyjson_alc *alc, + const char *min, + const char *pre, + const char *min_null, + const char *pre_null) { + yyjson_write_flag flg; + bool has_nan_inf = mut_val_has_inf_nan(yyjson_mut_doc_get_root(doc)); + + // nan inf should fail without 'INF_AND_NAN' flag + if (has_nan_inf) { + flg = YYJSON_WRITE_NOFLAG; + validate_json_write_with_flag(flg, doc, alc, NULL); + flg = YYJSON_WRITE_PRETTY; + validate_json_write_with_flag(flg, doc, alc, NULL); + } + + // minify + flg = YYJSON_WRITE_NOFLAG; + if (has_nan_inf) flg |= YYJSON_WRITE_ALLOW_INF_AND_NAN; + validate_json_write_with_flag(flg, doc, alc, min); + + flg = YYJSON_WRITE_NOFLAG; + if (has_nan_inf) flg |= YYJSON_WRITE_INF_AND_NAN_AS_NULL; + validate_json_write_with_flag(flg, doc, alc, min_null); + + flg = YYJSON_WRITE_NOFLAG; + if (has_nan_inf) flg |= YYJSON_WRITE_ALLOW_INF_AND_NAN | + YYJSON_WRITE_INF_AND_NAN_AS_NULL; + validate_json_write_with_flag(flg, doc, alc, min_null); + + // pretty + flg = YYJSON_WRITE_PRETTY; + if (has_nan_inf) flg |= YYJSON_WRITE_ALLOW_INF_AND_NAN; + validate_json_write_with_flag(flg, doc, alc, pre); + + flg = YYJSON_WRITE_PRETTY; + if (has_nan_inf) flg |= YYJSON_WRITE_INF_AND_NAN_AS_NULL; + validate_json_write_with_flag(flg, doc, alc, pre_null); + + flg = YYJSON_WRITE_PRETTY; + if (has_nan_inf) flg |= YYJSON_WRITE_ALLOW_INF_AND_NAN | + YYJSON_WRITE_INF_AND_NAN_AS_NULL; + validate_json_write_with_flag(flg, doc, alc, pre_null); + + // use small allocator to test allocation failure + if (min && pre && alc && strlen(min) > 8) { + char buf[64]; + yyjson_alc small_alc; + yyjson_alc_pool_init(&small_alc, buf, 8 * sizeof(void *)); + for (int i = 1; i < 64; i++) small_alc.malloc(small_alc.ctx, i); + validate_json_write_ex(doc, &small_alc, NULL, NULL, NULL, NULL); + } +} + +static void validate_json_write(yyjson_mut_doc *doc, + yyjson_alc *alc, + const char *min, + const char *pre) { + validate_json_write_ex(doc, alc, min, pre, min, pre); +} + +static void test_json_write(yyjson_alc *alc) { + + yyjson_mut_doc *doc; + yyjson_mut_val *root, *val, *val2; + char *str1, *str2, *cur1, *cur2; + usize len; + yyjson_write_err err; + + doc = yyjson_mut_doc_new(NULL); + + + // invalid params + yy_assert(!yyjson_mut_write(NULL, 0, NULL)); + yy_assert(!yyjson_mut_write(doc, 0, NULL)); + + len = 1; + yy_assert(!yyjson_mut_write(NULL, 0, &len)); + yy_assert(len == 0); + len = 1; + yy_assert(!yyjson_mut_write(doc, 0, &len)); + yy_assert(len == 0); + + yy_assert(!yyjson_mut_write_opts(NULL, 0, NULL, NULL, NULL)); + yy_assert(!yyjson_mut_write_opts(doc, 0, NULL, NULL, NULL)); + + len = 1; + yy_assert(!yyjson_mut_write_opts(NULL, 0, NULL, &len, NULL)); + yy_assert(len == 0); + len = 1; + yy_assert(!yyjson_mut_write_opts(doc, 0, NULL, &len, NULL)); + yy_assert(len == 0); + + memset(&err, 0, sizeof(err)); + yy_assert(!yyjson_mut_write_opts(NULL, 0, NULL, NULL, &err)); + yy_assert(err.code && err.msg); + memset(&err, 0, sizeof(err)); + yy_assert(!yyjson_mut_write_opts(doc, 0, NULL, NULL, &err)); + yy_assert(err.code && err.msg); + + len = 1; + memset(&err, 0, sizeof(err)); + yy_assert(!yyjson_mut_write_opts(NULL, 0, NULL, &len, &err)); + yy_assert(len == 0); + yy_assert(err.code && err.msg); + len = 1; + memset(&err, 0, sizeof(err)); + yy_assert(!yyjson_mut_write_opts(doc, 0, NULL, &len, &err)); + yy_assert(len == 0); + yy_assert(err.code && err.msg); + + + // invalid + root = yyjson_mut_null(doc); + root->tag = 0; + yyjson_mut_doc_set_root(doc, root); + validate_json_write(doc, alc, NULL, NULL); + + root = yyjson_mut_arr(doc); + yyjson_mut_doc_set_root(doc, root); + val = yyjson_mut_null(doc); + val->tag = 0; + yyjson_mut_arr_add_val(root, val); + validate_json_write(doc, alc, NULL, NULL); + + + // single +#if !YYJSON_DISABLE_NON_STANDARD + root = yyjson_mut_real(doc, NAN); + yyjson_mut_doc_set_root(doc, root); + validate_json_write_ex(doc, alc, + "NaN", "NaN", + "null", "null"); + + root = yyjson_mut_real(doc, -INFINITY); + yyjson_mut_doc_set_root(doc, root); + validate_json_write_ex(doc, alc, + "-Infinity", "-Infinity", + "null", "null"); +#else + root = yyjson_mut_real(doc, NAN); + yyjson_mut_doc_set_root(doc, root); + validate_json_write_ex(doc, alc, + NULL, NULL, + "null", "null"); + + root = yyjson_mut_real(doc, -INFINITY); + yyjson_mut_doc_set_root(doc, root); + validate_json_write_ex(doc, alc, + NULL, NULL, + "null", "null"); +#endif + + root = yyjson_mut_null(doc); + yyjson_mut_doc_set_root(doc, root); + validate_json_write(doc, alc, "null", "null"); + + root = yyjson_mut_true(doc); + yyjson_mut_doc_set_root(doc, root); + validate_json_write(doc, alc, "true", "true"); + + root = yyjson_mut_false(doc); + yyjson_mut_doc_set_root(doc, root); + validate_json_write(doc, alc, "false", "false"); + + root = yyjson_mut_uint(doc, 123); + yyjson_mut_doc_set_root(doc, root); + validate_json_write(doc, alc, "123", "123"); + + root = yyjson_mut_sint(doc, -123); + yyjson_mut_doc_set_root(doc, root); + validate_json_write(doc, alc, "-123", "-123"); + + root = yyjson_mut_real(doc, -1.5); + yyjson_mut_doc_set_root(doc, root); + validate_json_write(doc, alc, "-1.5", "-1.5"); + + root = yyjson_mut_str(doc, "abc"); + yyjson_mut_doc_set_root(doc, root); + validate_json_write(doc, alc, "\"abc\"", "\"abc\""); + + root = yyjson_mut_arr(doc); + yyjson_mut_doc_set_root(doc, root); + validate_json_write(doc, alc, "[]", "[]"); + + root = yyjson_mut_obj(doc); + yyjson_mut_doc_set_root(doc, root); + validate_json_write(doc, alc, "{}", "{}"); + + + // string without null-terminator + for (len = 0; len <= 128; len++) { + char *str = len ? malloc(len) : (char *)1; + for (usize i = 0; i < len; i++) { + str[i] = 'a' + (yy_rand_u32() % 26); + } + + char *json = malloc(len + 3); + json[0] = '"'; + memcpy((void *)(json + 1), (void *)str, len); + json[len + 1] = '"'; + json[len + 2] = '\0'; + + root = yyjson_mut_strn(doc, str, len); + yyjson_mut_doc_set_root(doc, root); + validate_json_write(doc, alc, json, json); + + if (len) free((void *)str); + free((void *)json); + } + + + // array + root = yyjson_mut_arr(doc); + yyjson_mut_doc_set_root(doc, root); + yyjson_mut_arr_add_int(doc, root, 1); + validate_json_write(doc, alc, + "[1]", + "[\n" + " 1\n" + "]"); + + root = yyjson_mut_arr(doc); + yyjson_mut_doc_set_root(doc, root); + yyjson_mut_arr_add_int(doc, root, 1); + yyjson_mut_arr_add_int(doc, root, 2); + validate_json_write(doc, alc, + "[1,2]", + "[\n" + " 1,\n" + " 2\n" + "]"); + +#if !YYJSON_DISABLE_NON_STANDARD + root = yyjson_mut_arr(doc); + yyjson_mut_doc_set_root(doc, root); + yyjson_mut_arr_add_real(doc, root, NAN); + validate_json_write_ex(doc, alc, + "[NaN]", + "[\n" + " NaN\n" + "]", + "[null]", + "[\n" + " null\n" + "]"); +#endif + + root = yyjson_mut_arr(doc); + yyjson_mut_doc_set_root(doc, root); + yyjson_mut_arr_add_str(doc, root, "abc"); + yyjson_mut_arr_add_bool(doc, root, true); + yyjson_mut_arr_add_null(doc, root); + validate_json_write(doc, alc, + "[\"abc\",true,null]", + "[\n" + " \"abc\",\n" + " true,\n" + " null\n" + "]"); + + root = yyjson_mut_arr(doc); + yyjson_mut_doc_set_root(doc, root); + val = yyjson_mut_arr(doc); + yyjson_mut_arr_add_val(root, val); + validate_json_write(doc, alc, + "[[]]", + "[\n" + " []\n" + "]"); + + root = yyjson_mut_arr(doc); + yyjson_mut_doc_set_root(doc, root); + val = yyjson_mut_arr_add_arr(doc, root); + yyjson_mut_arr_add_arr(doc, val); + validate_json_write(doc, alc, + "[[[]]]", + "[\n" + " [\n" + " []\n" + " ]\n" + "]"); + + root = yyjson_mut_arr(doc); + yyjson_mut_doc_set_root(doc, root); + val = yyjson_mut_obj(doc); + yyjson_mut_arr_add_val(root, val); + validate_json_write(doc, alc, + "[{}]", + "[\n" + " {}\n" + "]"); + + root = yyjson_mut_arr(doc); + yyjson_mut_doc_set_root(doc, root); + yyjson_mut_arr_add_arr(doc, root); + yyjson_mut_arr_add_true(doc, root); + validate_json_write(doc, alc, + "[[],true]", + "[\n" + " [],\n" + " true\n" + "]"); + + root = yyjson_mut_arr(doc); + yyjson_mut_doc_set_root(doc, root); + yyjson_mut_arr_add_true(doc, root); + yyjson_mut_arr_add_arr(doc, root); + validate_json_write(doc, alc, + "[true,[]]", + "[\n" + " true,\n" + " []\n" + "]"); + + root = yyjson_mut_arr(doc); + yyjson_mut_doc_set_root(doc, root); + val = yyjson_mut_arr_add_arr(doc, root); + yyjson_mut_arr_add_true(doc, val); + validate_json_write(doc, alc, + "[[true]]", + "[\n" + " [\n" + " true\n" + " ]\n" + "]"); + + root = yyjson_mut_arr(doc); + yyjson_mut_doc_set_root(doc, root); + val = yyjson_mut_arr_add_arr(doc, root); + yyjson_mut_arr_add_true(doc, val); + val = yyjson_mut_arr_add_arr(doc, root); + validate_json_write(doc, alc, + "[[true],[]]", + "[\n" + " [\n" + " true\n" + " ],\n" + " []\n" + "]"); + + cur1 = str1 = malloc(1024 * 2 + 4); + cur2 = str2 = malloc(1024 * 7 + 4); + root = yyjson_mut_arr(doc); + yyjson_mut_doc_set_root(doc, root); + *cur1++ = '['; + *cur2++ = '['; + *cur2++ = '\n'; + for (int i = 0; i < 1024; i++) { + yyjson_mut_arr_add_int(doc, root, 1); + memcpy(cur1, "1,", 2); + cur1 += 2; + memcpy(cur2, " 1,\n", 7); + cur2 += 7; + } + cur1 -= 1; + *cur1++ = ']'; + *cur1 = '\0'; + cur2 -= 2; + *cur2++ = '\n'; + *cur2++ = ']'; + *cur2 = '\0'; + validate_json_write(doc, alc, str1, str2); + free(str1); + free(str2); + + + // object + root = yyjson_mut_obj(doc); + yyjson_mut_doc_set_root(doc, root); + yy_assert(doc->root); + yyjson_mut_obj_add_int(doc, root, "abc", 123); + yy_assert(doc->root); + validate_json_write(doc, alc, + "{\"abc\":123}", + "{\n" + " \"abc\": 123\n" + "}"); + +#if !YYJSON_DISABLE_NON_STANDARD + root = yyjson_mut_obj(doc); + yyjson_mut_doc_set_root(doc, root); + yy_assert(doc->root); + yyjson_mut_obj_add_real(doc, root, "abc", NAN); + yy_assert(doc->root); + validate_json_write_ex(doc, alc, + "{\"abc\":NaN}", + "{\n" + " \"abc\": NaN\n" + "}", + "{\"abc\":null}", + "{\n" + " \"abc\": null\n" + "}"); +#endif + + root = yyjson_mut_obj(doc); + yyjson_mut_doc_set_root(doc, root); + yy_assert(doc->root); + val = yyjson_mut_obj(doc); + yyjson_mut_obj_add_val(doc, root, "abc", val); + yy_assert(doc->root); + validate_json_write(doc, alc, + "{\"abc\":{}}", + "{\n" + " \"abc\": {}\n" + "}"); + + root = yyjson_mut_obj(doc); + yyjson_mut_doc_set_root(doc, root); + yyjson_mut_obj_add_null(doc, root, "a"); + yyjson_mut_obj_add_true(doc, root, "b"); + yyjson_mut_obj_add_int(doc, root, "c", 123); + yyjson_mut_obj_add_str(doc, root, "d", "zzz"); + validate_json_write(doc, alc, + "{\"a\":null,\"b\":true,\"c\":123,\"d\":\"zzz\"}", + "{\n" + " \"a\": null,\n" + " \"b\": true,\n" + " \"c\": 123,\n" + " \"d\": \"zzz\"\n" + "}"); + + root = yyjson_mut_obj(doc); + yyjson_mut_doc_set_root(doc, root); + yyjson_mut_obj_add_null(doc, root, "a"); + yyjson_mut_obj_add_true(doc, root, "a"); + yyjson_mut_obj_add_false(doc, root, "a"); + yyjson_mut_obj_add_int(doc, root, "a", 123); + yyjson_mut_obj_add_str(doc, root, "a", "zzz"); + validate_json_write(doc, alc, + "{\"a\":null,\"a\":true,\"a\":false,\"a\":123,\"a\":\"zzz\"}", + "{\n" + " \"a\": null,\n" + " \"a\": true,\n" + " \"a\": false,\n" + " \"a\": 123,\n" + " \"a\": \"zzz\"\n" + "}"); + + root = yyjson_mut_obj(doc); + yyjson_mut_doc_set_root(doc, root); + val = yyjson_mut_arr(doc); + yyjson_mut_arr_add_int(doc, val, 123); + yyjson_mut_obj_add_val(doc, root, "a", val); + validate_json_write(doc, alc, + "{\"a\":[123]}", + "{\n" + " \"a\": [\n" + " 123\n" + " ]\n" + "}"); + + root = yyjson_mut_obj(doc); + yyjson_mut_doc_set_root(doc, root); + val = yyjson_mut_arr(doc); + yyjson_mut_arr_add_val(val, yyjson_mut_raw(doc, "123")); + yyjson_mut_obj_add_val(doc, root, "a", val); + validate_json_write(doc, alc, + "{\"a\":[123]}", + "{\n" + " \"a\": [\n" + " 123\n" + " ]\n" + "}"); + + root = yyjson_mut_obj(doc); + yyjson_mut_doc_set_root(doc, root); + val = yyjson_mut_obj(doc); + yyjson_mut_obj_add_val(doc, root, "a", val); + val2 = yyjson_mut_obj(doc); + yyjson_mut_obj_add_val(doc, val, "b", val2); + validate_json_write(doc, alc, + "{\"a\":{\"b\":{}}}", + "{\n" + " \"a\": {\n" + " \"b\": {}\n" + " }\n" + "}"); + + // large object with same key + cur1 = str1 = malloc(1024 * 6 + 32); + cur2 = str2 = malloc(1024 * 12 + 32); + root = yyjson_mut_obj(doc); + yyjson_mut_doc_set_root(doc, root); + *cur1++ = '{'; + *cur2++ = '{'; + *cur2++ = '\n'; + for (int i = 0; i < 1024; i++) { + yyjson_mut_obj_add_int(doc, root, "a", 1); + memcpy(cur1, "\"a\":1,", 6); + cur1 += 6; + memcpy(cur2, " \"a\": 1,\n", 12); + cur2 += 12; + } + cur1 -= 1; + *cur1++ = '}'; + *cur1 = '\0'; + cur2 -= 2; + *cur2++ = '\n'; + *cur2++ = '}'; + *cur2 = '\0'; + validate_json_write(doc, alc, str1, str2); + free(str1); + free(str2); + + yyjson_mut_doc_free(doc); +} + +yy_test_case(test_json_writer) { + // test read and roundtrip + { + yyjson_alc alc; + usize len = 1024 * 1024; + void *buf = malloc(len); + yyjson_alc_pool_init(&alc, buf, len); + test_json_write(&alc); + test_json_write(NULL); + free(buf); + } + + // test invalid parameters + { + yyjson_write_file(NULL, NULL, 0, NULL, NULL); + yyjson_write_file("", NULL, 0, NULL, NULL); + yyjson_write_file("tmp.json", NULL, 0, NULL, NULL); + yyjson_mut_write_file(NULL, NULL, 0, NULL, NULL); + yyjson_mut_write_file("", NULL, 0, NULL, NULL); + yyjson_mut_write_file("tmp.json", NULL, 0, NULL, NULL); + } + +#if !YYJSON_DISABLE_READER + // test invalid immutable doc + { + yyjson_doc *doc = yyjson_read("[1]", 3, 0); + yy_assert(doc); + yyjson_val *arr = yyjson_doc_get_root(doc); + yy_assert(arr); + yyjson_val *one = yyjson_arr_get(arr, 0); + yy_assert(one); + one->tag = YYJSON_TYPE_NONE; + yy_assert(!yyjson_write(doc, 0, NULL)); + yy_assert(!yyjson_write(doc, YYJSON_WRITE_PRETTY, NULL)); + one->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_REAL; + one->uni.f64 = NAN; + yy_assert(!yyjson_write(doc, 0, NULL)); + yy_assert(!yyjson_write(doc, YYJSON_WRITE_PRETTY, NULL)); + yyjson_doc_free(doc); + } + + // test fail + { + char path[4100]; + memset(path, 'a', sizeof(path)); + path[4099] = '\0'; + yyjson_doc *idoc = yyjson_read("1", 1, 0); + yy_assert(!yyjson_write_file(path, idoc, 0, NULL, NULL)); + yyjson_doc_free(idoc); + + yyjson_mut_doc *mdoc = yyjson_mut_doc_new(NULL); + yyjson_mut_doc_set_root(mdoc, yyjson_mut_null(mdoc)); + yy_assert(!yyjson_mut_write_file(path, mdoc, 0, NULL, NULL)); + yyjson_mut_doc_free(mdoc); + } + + // test raw + { + const char *str = "[1.2345678901234567890e999]"; + yyjson_doc *idoc = yyjson_read(str, strlen(str), YYJSON_READ_NUMBER_AS_RAW); + yyjson_val *root = yyjson_doc_get_root(idoc); + yyjson_val *raw = yyjson_arr_get_first(root); + yy_assert(yyjson_is_raw(raw)); + yy_assert(yyjson_get_len(raw) == strlen(str) - 2); + yy_assert(memcmp(yyjson_get_raw(raw), str + 1, strlen(str) - 2) == 0); + + usize ret_len; + char *ret = yyjson_write(idoc, 0, &ret_len); + yy_assert(ret_len == strlen(str) && memcmp(ret, str, ret_len) == 0); + free(ret); + ret = yyjson_write(idoc, YYJSON_WRITE_PRETTY, &ret_len); + yy_assert(ret); + free(ret); + + yyjson_mut_doc *mdoc = yyjson_doc_mut_copy(idoc, NULL); + ret = yyjson_mut_write(mdoc, 0, &ret_len); + yy_assert(ret_len == strlen(str) && memcmp(ret, str, ret_len) == 0); + free(ret); + ret = yyjson_mut_write(mdoc, YYJSON_WRITE_PRETTY, &ret_len); + yy_assert(ret); + free(ret); + yyjson_mut_doc_free(mdoc); + + yyjson_doc_free(idoc); + } + + // test modify input + { + char *ret; + const char *str = "[123]"; + yyjson_doc *doc = yyjson_read(str, strlen(str), 0); + yyjson_val *root = yyjson_doc_get_root(doc); + yyjson_val *val = yyjson_arr_get(root, 0); + + yy_assert(!yyjson_set_bool(root, true)); + + yyjson_set_raw(val, "aaa", 3); + ret = yyjson_write(doc, 0, NULL); + yy_assert(strcmp(ret, "[aaa]") == 0); + free(ret); + + yyjson_set_null(val); + ret = yyjson_write(doc, 0, NULL); + yy_assert(strcmp(ret, "[null]") == 0); + free(ret); + + yyjson_set_bool(val, true); + ret = yyjson_write(doc, 0, NULL); + yy_assert(strcmp(ret, "[true]") == 0); + free(ret); + + yyjson_set_uint(val, 111); + ret = yyjson_write(doc, 0, NULL); + yy_assert(strcmp(ret, "[111]") == 0); + free(ret); + + yyjson_set_sint(val, -111); + ret = yyjson_write(doc, 0, NULL); + yy_assert(strcmp(ret, "[-111]") == 0); + free(ret); + + yyjson_set_int(val, 100); + ret = yyjson_write(doc, 0, NULL); + yy_assert(strcmp(ret, "[100]") == 0); + free(ret); + + yyjson_set_real(val, 1.5); + ret = yyjson_write(doc, 0, NULL); + yy_assert(strcmp(ret, "[1.5]") == 0); + free(ret); + + yyjson_set_str(val, "abc"); + ret = yyjson_write(doc, 0, NULL); + yy_assert(strcmp(ret, "[\"abc\"]") == 0); + free(ret); + + yyjson_set_str(val, "abc\n"); + yyjson_set_str_noesc(val, true); + ret = yyjson_write(doc, 0, NULL); + yy_assert(strcmp(ret, "[\"abc\n\"]") == 0); + free(ret); + yyjson_set_str_noesc(val, false); + ret = yyjson_write(doc, 0, NULL); + yy_assert(strcmp(ret, "[\"abc\\n\"]") == 0); + free(ret); + + yyjson_set_strn(val, "abcd", 3); + ret = yyjson_write(doc, 0, NULL); + yy_assert(strcmp(ret, "[\"abc\"]") == 0); + free(ret); + + yyjson_doc_free(doc); + } + + + // test 2 space indent + { + const char *str = + "[\n" + " 123\n" + "]"; + yyjson_doc *doc = yyjson_read(str, strlen(str), 0); + yyjson_mut_doc *mdoc = yyjson_doc_mut_copy(doc, NULL); + + char *ret = yyjson_write(doc, YYJSON_WRITE_PRETTY_TWO_SPACES, NULL); + yy_assert(strcmp(ret, str) == 0); + free(ret); + + char *mret = yyjson_mut_write(mdoc, YYJSON_WRITE_PRETTY_TWO_SPACES, NULL); + yy_assert(strcmp(mret, str) == 0); + free(mret); + + yyjson_doc_free(doc); + yyjson_mut_doc_free(mdoc); + } + + + // test newline at end + { + size_t len; + const char *str; + yyjson_doc *doc; + yyjson_mut_doc *mdoc; + char *ret; + + // single value + str = "123"; + doc = yyjson_read(str, strlen(str), 0); + ret = yyjson_write(doc, YYJSON_WRITE_NEWLINE_AT_END, &len); + yy_assert(strlen(ret) == len && len == strlen(str) + 1); + yy_assert(memcmp(str, ret, strlen(str)) == 0); + yy_assert(ret[strlen(str)] == '\n'); + free(ret); + + mdoc = yyjson_doc_mut_copy(doc, NULL); + ret = yyjson_mut_write(mdoc, YYJSON_WRITE_NEWLINE_AT_END, &len); + yy_assert(strlen(ret) == len && len == strlen(str) + 1); + yy_assert(memcmp(str, ret, strlen(str)) == 0); + yy_assert(ret[strlen(str)] == '\n'); + free(ret); + + yyjson_doc_free(doc); + yyjson_mut_doc_free(mdoc); + + // multiple values + str = "[123]"; + doc = yyjson_read(str, strlen(str), 0); + ret = yyjson_write(doc, YYJSON_WRITE_NEWLINE_AT_END, &len); + yy_assert(strlen(ret) == len && len == strlen(str) + 1); + yy_assert(memcmp(str, ret, strlen(str)) == 0); + yy_assert(ret[strlen(str)] == '\n'); + free(ret); + + mdoc = yyjson_doc_mut_copy(doc, NULL); + ret = yyjson_mut_write(mdoc, YYJSON_WRITE_NEWLINE_AT_END, &len); + yy_assert(strlen(ret) == len && len == strlen(str) + 1); + yy_assert(memcmp(str, ret, strlen(str)) == 0); + yy_assert(ret[strlen(str)] == '\n'); + free(ret); + + yyjson_doc_free(doc); + yyjson_mut_doc_free(mdoc); + + // multiple values, pretty + str = "[\n 123\n]"; + doc = yyjson_read(str, strlen(str), 0); + ret = yyjson_write(doc, YYJSON_WRITE_PRETTY | YYJSON_WRITE_NEWLINE_AT_END, &len); + yy_assert(strlen(ret) == len && len == strlen(str) + 1); + yy_assert(memcmp(str, ret, strlen(str)) == 0); + yy_assert(ret[strlen(str)] == '\n'); + free(ret); + + mdoc = yyjson_doc_mut_copy(doc, NULL); + ret = yyjson_mut_write(mdoc, YYJSON_WRITE_PRETTY | YYJSON_WRITE_NEWLINE_AT_END, &len); + yy_assert(strlen(ret) == len && len == strlen(str) + 1); + yy_assert(memcmp(str, ret, strlen(str)) == 0); + yy_assert(ret[strlen(str)] == '\n'); + free(ret); + + yyjson_doc_free(doc); + yyjson_mut_doc_free(mdoc); + } +#endif + + // test build JSON on stack + { + const char *expect = "{\"code\":200,\"msg\":\"success\",\"arr\":[true,false,null,1,-1,0.5,inf]}"; + + yyjson_mut_val root, code_key, code, msg_key, msg, arr_key, arr; + yyjson_mut_val vals[7]; + yyjson_mut_set_obj(&root); + yyjson_mut_set_str(&code_key, "code"); + yyjson_mut_set_int(&code, 200); + yyjson_mut_set_str(&msg_key, "msg"); + yyjson_mut_set_str(&msg, "success"); + yyjson_mut_set_str_noesc(&msg, true); + yyjson_mut_set_str(&arr_key, "arr"); + yyjson_mut_set_arr(&arr); + yyjson_mut_set_bool(&vals[0], true); + yyjson_mut_set_bool(&vals[1], false); + yyjson_mut_set_null(&vals[2]); + yyjson_mut_set_uint(&vals[3], 1); + yyjson_mut_set_sint(&vals[4], -1); + yyjson_mut_set_real(&vals[5], 0.5); + yyjson_mut_set_raw(&vals[6], "inf", 3); + + yyjson_mut_obj_add(&root, &code_key, &code); + yyjson_mut_obj_add(&root, &msg_key, &msg); + yyjson_mut_obj_add(&root, &arr_key, &arr); + for (size_t i = 0; i < yy_nelems(vals); i++) { + yyjson_mut_arr_append(&arr, &vals[i]); + } + + char buf[256]; + yyjson_alc alc; + yyjson_alc_pool_init(&alc, buf, sizeof(buf)); + char *json = yyjson_mut_val_write_opts(&root, 0, &alc, NULL, NULL); + yy_assert(strcmp(json, expect) == 0); + } + + // test bool conversion + // some environments don't have a native bool type + // and the bool type may store values other than 0/1 + { + yyjson_mut_doc *mdoc = yyjson_mut_doc_new(NULL); + yyjson_mut_val *mobj = yyjson_mut_obj(mdoc); + yyjson_mut_doc_set_root(mdoc, mobj); + + for (u8 i = 0; i < 10; i++) { + char str[2]; + snprintf(str, sizeof(str), "%d", (int)i); + yyjson_mut_val *key = yyjson_mut_strcpy(mdoc, str); + yyjson_mut_val *val = yyjson_mut_bool(mdoc, (bool)i); + yyjson_mut_obj_add(mobj, key, val); + } + + char *json = yyjson_mut_write(mdoc, YYJSON_WRITE_PRETTY, NULL); + yy_assert(json != NULL); + +#if !YYJSON_DISABLE_READER + yyjson_doc *doc = yyjson_read(json, strlen(json), 0); + yyjson_val *obj = yyjson_doc_get_root(doc); + yy_assert(yyjson_obj_size(obj) == 10); + for (u8 i = 0; i < 10; i++) { + char str[2]; + snprintf(str, sizeof(str), "%d", (int)i); + yyjson_val *val = yyjson_obj_get(obj, str); + yy_assert(yyjson_is_bool(val)); + yy_assert(yyjson_get_bool(val) == (i != 0)); + } + yyjson_doc_free(doc); +#endif + + yyjson_mut_doc_free(mdoc); + free(json); + } +} + +#else +yy_test_case(test_json_writer) {} +#endif diff --git a/lib/yyjson-0.12.0/test/test_number.c b/lib/yyjson-0.12.0/test/test_number.c new file mode 100644 index 00000000000..0221c37d0fb --- /dev/null +++ b/lib/yyjson-0.12.0/test/test_number.c @@ -0,0 +1,1591 @@ +// This file is used to test the functionality of number reading and writing. +// It contains various test data to detect how numbers are handled in different +// boundary cases. The results are compared with google/double-conversion to +// ensure accuracy. + +#include "yyjson.h" +#include "yy_test_utils.h" +#include "goo_double_conv.h" +#include <locale.h> + +#if !YYJSON_DISABLE_READER && !YYJSON_DISABLE_WRITER + +// Whether IEEE 754 binary floating-point format is used. +#define FP_IEEE_754 GOO_HAS_IEEE_754 + +// Whether yyjson use libc's strtod/sprintf instead of its built-in functions. +#define FP_USE_LIBC (!FP_IEEE_754 || YYJSON_DISABLE_FAST_FP_CONV) + +// The decimal precision required to read/write a floating-point value. +#ifndef FLT_DECIMAL_DIG +#define FLT_DECIMAL_DIG 9 +#endif +#ifndef DBL_DECIMAL_DIG +#define DBL_DECIMAL_DIG 17 +#endif + + + +/*============================================================================== + * MARK: - Helper + *============================================================================*/ + +/// Convert bits to float. +static yy_inline f32 f32_from_bits(u32 u) { + f32 f; + memcpy((void *)&f, (void *)&u, sizeof(u)); + return f; +} + +/// Convert bits to double. +static yy_inline f64 f64_from_bits(u64 u) { + f64 f; + memcpy((void *)&f, (void *)&u, sizeof(u)); + return f; +} + +/// Current locale decimal point. +static char locale_decimal_point = '.'; + +/// Update locale decimal point. +static void update_locale_decimal_point(void) { + struct lconv *conv = localeconv(); + char c = conv->decimal_point[0]; + yy_assertf(c && conv->decimal_point[1] == '\0', + "locale decimal point is invalid: %s\n", conv->decimal_point); + locale_decimal_point = c; +} + +/// Replace decimal point to current locale. +static void decimal_point_to_locale(char *buf) { + char *ptr = strchr(buf, '.'); + if (ptr) *ptr = locale_decimal_point; +} + +/// Reset decimal point to default minimal "C" locale. +static void decimal_point_to_std(char *buf) { + char *ptr = strchr(buf, locale_decimal_point); + if (ptr) *ptr = '.'; +} + + + +/*============================================================================== + * MARK: - Conversion (Libc) + *============================================================================*/ + +/// Read float from string (libc). +static usize libc_f32_read(const char *str, f32 *val) { + bool has_locale = (locale_decimal_point != '.'); + if (has_locale) { + char *dup = yy_str_copy(str); + decimal_point_to_locale(dup); + str = dup; + } + char *end = NULL; + *val = strtof(str, &end); + usize len = end ? (end - str) : 0; + if (has_locale) free((void *)str); + return len; +} + +/// Read double from string (libc). +static usize libc_f64_read(const char *str, f64 *val) { + bool has_locale = (locale_decimal_point != '.'); + if (has_locale) { + char *dup = yy_str_copy(str); + decimal_point_to_locale(dup); + str = dup; + } + char *end = NULL; + *val = strtod(str, &end); + usize len = end ? (end - str) : 0; + if (has_locale) free((void *)str); + return len; +} + +/// Write float to string shortest (libc). +static usize libc_f32_write(f32 val, char *buf, usize len) { + if (isinf(val)) return snprintf(buf, len, (val > 0) ? "Infinity" : "-Infinity"); + if (isnan(val)) return snprintf(buf, len, "NaN"); + int out_len = snprintf(buf, len, "%.*g", FLT_DECIMAL_DIG, val); + if (locale_decimal_point != '.') decimal_point_to_std(buf); + return (out_len >= (int)len) ? 0 : out_len; +} + +/// Write double to string shortest (libc). +static usize libc_f64_write(f64 val, char *buf, usize len) { + if (isinf(val)) return snprintf(buf, len, (val > 0) ? "Infinity" : "-Infinity"); + if (isnan(val)) return snprintf(buf, len, "NaN"); + int out_len = snprintf(buf, len, "%.*g", DBL_DECIMAL_DIG, val); + if (locale_decimal_point != '.') decimal_point_to_std(buf); + return (out_len >= (int)len) ? 0 : out_len; +} + +/// Write double to string with fixed-point notation (libc). +static usize libc_f64_write_fixed(f64 val, int prec, char *buf, usize len) { + if (isinf(val)) return snprintf(buf, len, (val > 0) ? "Infinity" : "-Infinity"); + if (isnan(val)) return snprintf(buf, len, "NaN"); + int out_len = snprintf(buf, len, "%.*f", prec, val); + if (locale_decimal_point != '.') decimal_point_to_std(buf); + return (out_len >= (int)len) ? 0 : out_len; +} + + + +/*============================================================================== + * MARK: - Conversion (Google) + *============================================================================*/ + +/// Read float from string (google/double-conversion). +static usize goo_f32_read(const char *str, f32 *val) { + int str_len = (int)strlen(str); + *val = goo_strtof(str, str_len, &str_len); + return (usize)str_len; +} + +/// Read double from string (google/double-conversion). +static usize goo_f64_read(const char *str, f64 *val) { + int str_len = (int)strlen(str); + *val = goo_strtod(str, str_len, &str_len); + return (usize)str_len; +} + +/// Write float to string shortest (google/double-conversion). +static usize goo_f32_write(f32 val, char *buf, usize len) { + return (usize)goo_ftoa(val, GOO_FMT_SHORTEST, 0, buf, (int)len); +} + +/// Write double to string shortest (google/double-conversion). +static usize goo_f64_write(f64 val, char *buf, usize len) { + return (usize)goo_dtoa(val, GOO_FMT_SHORTEST, 0, buf, (int)len); +} + +/// Write double to string with fixed-point notation (google/double-conversion). +static usize goo_f64_write_fixed(f64 val, int prec, char *buf, usize len) { + return (usize)goo_dtoa(val, GOO_FMT_FIXED, prec, buf, (int)len); +} + + + +/*============================================================================== + * MARK: - Conversion (Common) + *============================================================================*/ + +/// Read float from string. +static usize f32_read(const char *str, f32 *val) { +#if FP_IEEE_754 + return goo_f32_read(str, val); +#else + return libc_f32_read(str, val); +#endif +} + +/// Read double from string. +static usize f64_read(const char *str, f64 *val) { +#if !FP_USE_LIBC + return goo_f64_read(str, val); +#else + return libc_f64_read(str, val); +#endif +} + +/// Write float to string shortest. +static usize f32_write(f32 val, char *buf, usize len) { +#if !FP_USE_LIBC + return goo_f32_write(val, buf, len); +#else + return libc_f32_write(val, buf, len); +#endif +} + +/// Write double to string shortest. +static usize f64_write(f64 val, char *buf, usize len) { +#if !FP_USE_LIBC + return goo_f64_write(val, buf, len); +#else + return libc_f64_write(val, buf, len); +#endif +} + +/// Write double to string with fixed-point notation. +static usize f64_write_fixed(f64 val, int prec, char *buf, usize len) { +#if !FP_USE_LIBC + return goo_f64_write_fixed(val, prec, buf, len); +#else + return libc_f64_write_fixed(val, prec, buf, len); +#endif +} + + + +/*============================================================================== + * MARK: - Number String Format Checker + *============================================================================*/ + +/// number type (accept overflow) +typedef enum { + NUM_TYPE_FAIL, // not a number + NUM_TYPE_SINT, // signed integer + NUM_TYPE_UINT, // unsigned integer + NUM_TYPE_REAL, // real number + NUM_TYPE_LITERAL // nan or inf literal +} num_type; + +/// number information +typedef struct { + const char *str; // string + usize len; // string length + num_type type; // string number type + bool ext; // extended number format + bool int_overflow; // overflow when reading as an integer + bool real_overflow; // overflow when reading as a real number + i64 i; // read as int64 + u64 u; // read as uint64 + f64 f; // read as double +} num_info; + +static yy_inline bool char_is_sign(char c) { + return c == '-' || c == '+'; +} + +static yy_inline bool char_is_e(char c) { + return c == 'e' || c == 'E'; +} + +static yy_inline bool char_is_x(char c) { + return c == 'x' || c == 'X'; +} + +static yy_inline bool char_is_digit(char c) { + return '0' <= c && c <= '9'; +} + +static yy_inline bool char_is_hex(char c) { + return ('0' <= c && c <= '9') || + ('a' <= c && c <= 'f') || + ('A' <= c && c <= 'F'); +} + +/// Check for overflow when reading an integer number (uint64/int64). +static yy_inline bool check_int_overflow(const char *str, num_type type) { + if (type != NUM_TYPE_SINT && type != NUM_TYPE_UINT) return false; + + bool neg = (*str == '-'); + str += char_is_sign(*str); + usize str_len = strlen(str); + + if (str[0] == '0' && char_is_x(str[1])) { + // hex integer + str_len -= 2; + str += 2; + if (str_len < 16) return false; + if (str_len > 16) return true; + if (neg) { + return strcmp(str, "8000000000000000") > 0; + } else { + return false; + } + } else { + // standard integer + if (str_len < 19) return false; + const char *max = neg ? "9223372036854775808" : "18446744073709551615"; + usize max_len = strlen(max); + if (str_len > max_len) return true; + if (str_len == max_len && strcmp(str, max) > 0) return true; + return false; + } +} + +/// Check for overflow when reading a real number (double). +static yy_inline bool check_real_overflow(const char *str, num_type type) { + if (type != NUM_TYPE_SINT && type != NUM_TYPE_UINT && type != NUM_TYPE_REAL) return false; + + f64 val = 0; + if (!f64_read(str, &val)) return false; + return !!isinf(val); +} + +/// Check JSON number string and return its type. +/// This checks only the string format, not for numeric overflow. +/// @param str A null-terminated string. +/// @param ext Allow extended number format. +static yy_inline num_type get_num_type(const char *str, bool ext) { + if (!str || !*str) return NUM_TYPE_FAIL; + + if (!ext) { + // optional sign + bool neg = (*str == '-'); + str += neg; + + // must begin with a digit + if (!char_is_digit(*str)) { + if (!yy_str_cmp(str, "nan", true) || + !yy_str_cmp(str, "inf", true) || + !yy_str_cmp(str, "infinity", true)) return NUM_TYPE_LITERAL; + return NUM_TYPE_FAIL; + } + + // leading zeros are not allowed + if (str[0] == '0' && char_is_digit(str[1])) return NUM_TYPE_FAIL; + + // one or more digits + while (char_is_digit(*str)) str++; + + // ending with integer type + if (*str == '\0') return neg ? NUM_TYPE_SINT : NUM_TYPE_UINT; + + // optional fraction part + if (*str == '.') { + str++; + // one or more digits + if (!char_is_digit(*str)) return NUM_TYPE_FAIL; + while (char_is_digit(*str)) str++; + } + + // optional exponent part + if (char_is_e(*str)) { + str++; + // optional sign + if (char_is_sign(*str)) str++; + // one or more digits + if (!char_is_digit(*str)) return NUM_TYPE_FAIL; + while (char_is_digit(*str)) str++; + } + + // ending with real type + return *str == '\0' ? NUM_TYPE_REAL : NUM_TYPE_FAIL; + + } else { + // optional sign + bool neg = (*str == '-'); + str += char_is_sign(*str); + + // hex integer + if (str[0] == '0' && char_is_x(str[1])) { + str += 2; + if (!char_is_hex(*str)) return NUM_TYPE_FAIL; + while (char_is_hex(*str)) str++; + if (*str == '\0') return neg ? NUM_TYPE_SINT : NUM_TYPE_UINT; + return NUM_TYPE_FAIL; + } + + // real number start with '.' + if (*str == '.') { + str++; + if (!char_is_digit(*str)) return NUM_TYPE_FAIL; + while (char_is_digit(*str)) str++; + + // optional exponent part + if (char_is_e(*str)) { + str++; + if (char_is_sign(*str)) str++; + if (!char_is_digit(*str)) return NUM_TYPE_FAIL; + while (char_is_digit(*str)) str++; + } + + return *str == '\0' ? NUM_TYPE_REAL : NUM_TYPE_FAIL; + } + + // must begin with a digit + if (!char_is_digit(*str)) { + if (!yy_str_cmp(str, "nan", true) || + !yy_str_cmp(str, "inf", true) || + !yy_str_cmp(str, "infinity", true)) return NUM_TYPE_LITERAL; + return NUM_TYPE_FAIL; + } + + // leading zeros are not allowed + if (*str == '0' && char_is_digit(str[1])) return NUM_TYPE_FAIL; + + // one or more digits + while (char_is_digit(*str)) str++; + + // ending with integer type + if (*str == '\0') return neg ? NUM_TYPE_SINT : NUM_TYPE_UINT; + + // optional fraction part + if (*str == '.') { + str++; + while (char_is_digit(*str)) str++; + } + + // optional exponent part + if (char_is_e(*str)) { + str++; + if (char_is_sign(*str)) str++; + if (!char_is_digit(*str)) return NUM_TYPE_FAIL; + while (char_is_digit(*str)) str++; + } + + // ending with real type + return *str == '\0' ? NUM_TYPE_REAL : NUM_TYPE_FAIL; + } +} + +/// Get number information from a string. +static yy_inline num_info get_num_info(const char *str) { + num_info info = { 0 }; + info.str = str; + info.len = str ? strlen(str) : 0; + info.type = get_num_type(str, false); + if (info.type == NUM_TYPE_FAIL) { + info.type = get_num_type(str, true); + if (info.type == NUM_TYPE_FAIL) return info; + info.ext = true; + } + + if (info.type == NUM_TYPE_LITERAL) { + bool neg = *str == '-'; + str += char_is_sign(*str); + info.f = (*str == 'n' || *str == 'N') ? NAN : (neg ? -INFINITY : INFINITY); + return info; + } + + if (info.type == NUM_TYPE_UINT || info.type == NUM_TYPE_SINT) { + info.int_overflow = check_int_overflow(str, info.type); + if (!info.int_overflow) { + if (info.type == NUM_TYPE_UINT) { + yy_assert(sizeof(unsigned long long) >= sizeof(u64)); + info.u = (u64)strtoull(str, NULL, 0); + info.f = (f64)info.u; + } else { + yy_assert(sizeof(signed long long) >= sizeof(i64)); + info.i = (i64)strtoll(str, NULL, 0); + info.f = (f64)info.i; + } + return info; + } + } + + // real number and integer overflow number + f64 val = 0; + yy_assert(f64_read(str, &val) > 0); + info.f = val; + info.real_overflow = !!isinf(val); + return info; +} + +/// Check if the number string is in its most compact (shortest) form. +static yy_inline bool check_num_compact(const char *str, num_type type) { + if (type == NUM_TYPE_SINT || type == NUM_TYPE_UINT) { + return *str != '+'; + } + + if (type == NUM_TYPE_LITERAL) { + bool sign = *str == '-'; + str += sign; + if (*str == 'n' || *str == 'N') return !sign; // sign is unnecessary for NaN + return true; + } + + if (type == NUM_TYPE_REAL) { + // get decimal point and exponent part + const char *dot = NULL, *exp = NULL, *end = NULL; + const char *cur = str; + while (*cur) { + if (*cur == '.') dot = cur; + else if (char_is_e(*cur)) exp = cur; + cur++; + } + end = cur; + + // check fraction part + if (dot) { + if (exp) { + if (*(exp - 1) == '0' || + *(exp - 1) == '.') return false; // 1.0e23, 1.e23 -> 1e23 + } else { + if (*(end - 1) == '0' && + *(end - 2) != '.' && + !char_is_digit(*(end - 2))) return false; // 1.10 -> 1.1 + } + } + + // check exponent part + if (exp) { + if (exp[1] == '+') return false; // 1e+23 -> 1e23 + if (exp[1] == '0') return false; // 1e023 -> 1e23 + } + return true; + } + + return false; +} + + + +/*============================================================================== + * MARK: - Number Read/Write + *============================================================================*/ + +/// Validate a real number's output. +static void validate_real_output(const char *str, + void *val_ptr, yyjson_write_flag flg) { +#define expect(expr) yy_assertf(expr, "num: %.17g, flg: %u, out: [%s]", num, flg, str) + + yyjson_val *val = val_ptr; + yy_assert(yyjson_is_real(val)); + + /// global flag + bool allow_inf_nan = (flg & YYJSON_WRITE_ALLOW_INF_AND_NAN) != 0; + bool inf_nan_to_null = (flg & YYJSON_WRITE_INF_AND_NAN_AS_NULL) != 0; + bool to_float = (flg & YYJSON_WRITE_FP_TO_FLOAT) != 0; + u32 to_fixed = flg >> (32 - YYJSON_WRITE_FP_PREC_BITS); + + /// value flag, should override global flag + bool val_to_float = ((u32)(val->tag >> 32) & YYJSON_WRITE_FP_TO_FLOAT) != 0; + u32 val_to_fixed = (u32)(val->tag >> 32) >> (32 - YYJSON_WRITE_FP_PREC_BITS); + if (val_to_fixed) to_fixed = val_to_fixed; + if (val_to_float) to_float = val_to_float; + + /// `to fixed` should override `to float` + if (to_fixed) to_float = false; + + char buf[64]; + f64 num = val->uni.f64; + if (to_float) num = (f32)num; + + if (isfinite(num)) { + expect(get_num_type(str, false) == NUM_TYPE_REAL); + expect(check_num_compact(str, NUM_TYPE_REAL)); + + if (to_fixed && (-1e21 < num && num < 1e21)) { + // To fixed-point. + // This will remove trailing zeros and reduce unnecessary precision, + // so the output string may not be the same as libc/google's. + f64_write_fixed(num, to_fixed, buf, sizeof(buf)); + f64 out_num; + expect(f64_read(str, &out_num) > 0); + expect(f64_read(buf, &num) > 0); + expect(out_num == num); + + char *dot = strchr(str, '.'); + expect(dot != NULL); + usize digits_after_dot = strlen(str) - (usize)(dot - str) - 1; + expect(digits_after_dot <= (usize)to_fixed); + + } else { +#if FP_USE_LIBC + // To shortest. + // The libc's output string may not be the shortest. + f64 out_num; + expect(f64_read(str, &out_num) > 0); + if (to_float) { + expect((f32)out_num == (f32)num); + } else { + expect(out_num == num); + } +#else + // To shortest. + // The output string should be exactly the same as google's. + if (to_float) { + f32_write((f32)num, buf, sizeof(buf)); + } else { + f64_write(num, buf, sizeof(buf)); + } + expect(!strcmp(str, buf)); +#endif + } + } else { + if (inf_nan_to_null) { + expect(!strcmp(str, "null")); + } +#if !YYJSON_DISABLE_NON_STANDARD + else if (allow_inf_nan) { + if (isnan(num)) { + expect(!strcmp(str, "NaN")); + } else if (num > 0) { + expect(!strcmp(str, "Infinity")); + } else { + expect(!strcmp(str, "-Infinity")); + } + } +#endif + else { + expect(!str); + } + } +#undef expect +} + +/// Test number write with info and flag. +static void test_num_write(num_info info, yyjson_write_flag flg) { +#define expect(expr) yy_assertf(expr, "num str: [%s], flg: %u", info.str, flg) + + bool to_float = (flg & YYJSON_WRITE_FP_TO_FLOAT) != 0; + u32 to_fixed = flg >> (32 - YYJSON_WRITE_FP_PREC_BITS); + + yyjson_mut_doc *doc = yyjson_mut_doc_new(NULL); + + /// write as real number + f64 num = info.f; + if (to_float && !to_fixed) num = (f32)num; + + yyjson_mut_val *val = yyjson_mut_real(doc, num); + yyjson_mut_doc_set_root(doc, val); + char *str = yyjson_mut_write(doc, flg, NULL); + validate_real_output(str, val, flg); + free(str); + + /// write as uint/sint + if (info.type == NUM_TYPE_UINT && !info.int_overflow) { + char buf[64]; + snprintf(buf, sizeof(buf), "%llu", (unsigned long long)info.u); + val = yyjson_mut_uint(doc, info.u); + yyjson_mut_doc_set_root(doc, val); + str = yyjson_mut_write(doc, flg, NULL); + expect(!strcmp(str, buf)); + free(str); + } else if (info.type == NUM_TYPE_SINT && !info.int_overflow) { + char buf[64]; + snprintf(buf, sizeof(buf), "%lld", (signed long long)info.i); + val = yyjson_mut_sint(doc, info.i); + yyjson_mut_doc_set_root(doc, val); + str = yyjson_mut_write(doc, flg, NULL); + expect(!strcmp(str, buf)); + free(str); + } + + yyjson_mut_doc_free(doc); + +#undef expect +} + +/// Test number read with info and flag. +static void test_num_read(num_info info, yyjson_read_flag flg) { +#define expect(expr) yy_assertf(expr, "num str: [%s], flg: %u", str, flg) + + const char *str = info.str; + usize len = info.len; + yyjson_doc *doc = yyjson_read(str, len, flg); + yyjson_val *val = yyjson_doc_get_root(doc); + +#if YYJSON_DISABLE_NON_STANDARD + bool non_std = false; +#else + bool non_std = true; +#endif + bool flg_big_raw = (flg & YYJSON_READ_BIGNUM_AS_RAW) != 0; + bool flg_num_raw = (flg & YYJSON_READ_NUMBER_AS_RAW) != 0; + bool flg_inf_nan = (flg & YYJSON_READ_ALLOW_INF_AND_NAN) != 0; + bool flg_ext = (flg & YYJSON_READ_ALLOW_EXT_NUMBER) != 0; + + if (info.type == NUM_TYPE_FAIL || (info.ext && (!flg_ext || !non_std))) { + /// not a valid number + expect(val == NULL); + + } else if (info.type == NUM_TYPE_LITERAL) { + /// nan/inf literal + if (flg_inf_nan && non_std) { + if (flg_num_raw) { + expect(yyjson_is_raw(val) && !strcmp(yyjson_get_raw(val), str)); + } else if (isnan(info.f)) { + expect(yyjson_is_real(val) && isnan(yyjson_get_real(val))); + } else { + expect(yyjson_is_real(val) && yyjson_get_real(val) == info.f); + } + } else { + expect(val == NULL); + } + + } else if (flg_num_raw) { + /// uint/sint/real -> raw + expect(yyjson_is_raw(val) && !strcmp(yyjson_get_raw(val), str)); + + } else if (info.real_overflow) { + /// uint/sint/real -> overflow + if (flg_big_raw) { + expect(yyjson_is_raw(val) && !strcmp(yyjson_get_raw(val), str)); + } else if (non_std && flg_inf_nan) { + expect(yyjson_is_real(val) && yyjson_get_real(val) == info.f); + } else { + expect(val == NULL); + } + + } else if (info.int_overflow) { + /// uint/sint overflow -> real + if (flg_big_raw) { + expect(yyjson_is_raw(val) && !strcmp(yyjson_get_raw(val), str)); + } else { + if (strchr(info.str, 'x') || strchr(info.str, 'X')) { + // Hex, do not read as float + expect(val == NULL); + } else { + expect(yyjson_is_real(val) && yyjson_get_real(val) == info.f); + } + } + + } else if (info.type == NUM_TYPE_UINT) { + /// uint + expect(yyjson_is_uint(val) && yyjson_get_uint(val) == info.u); + + } else if (info.type == NUM_TYPE_SINT) { + /// sint + expect(yyjson_is_sint(val) && yyjson_get_sint(val) == info.i); + + } else if (info.type == NUM_TYPE_REAL) { + /// real + expect(yyjson_is_real(val) && yyjson_get_real(val) == info.f); + + } + + yyjson_val val_out = { 0 }; + const char *ptr = yyjson_read_number(str, &val_out, flg, NULL, NULL); + if (val) { + expect(yyjson_equals(val, &val_out)); + expect(ptr == str + len); + } else { + expect(ptr != str + len); + } + + yyjson_doc_free(doc); + +#undef expect +} + +/// Test number read and write. +static void test_num_info(num_info info) { + /// test read + test_num_read(info, YYJSON_READ_NOFLAG); + test_num_read(info, YYJSON_READ_BIGNUM_AS_RAW); + test_num_read(info, YYJSON_READ_NUMBER_AS_RAW); + test_num_read(info, YYJSON_READ_ALLOW_INF_AND_NAN); + test_num_read(info, YYJSON_READ_ALLOW_EXT_NUMBER); + test_num_read(info, YYJSON_READ_ALLOW_INF_AND_NAN | YYJSON_READ_ALLOW_EXT_NUMBER); + test_num_read(info, YYJSON_READ_BIGNUM_AS_RAW | YYJSON_READ_ALLOW_INF_AND_NAN); + test_num_read(info, YYJSON_READ_NUMBER_AS_RAW | YYJSON_READ_ALLOW_INF_AND_NAN); + test_num_read(info, YYJSON_READ_BIGNUM_AS_RAW | YYJSON_READ_ALLOW_EXT_NUMBER); + test_num_read(info, YYJSON_READ_NUMBER_AS_RAW | YYJSON_READ_ALLOW_EXT_NUMBER); + test_num_read(info, YYJSON_READ_BIGNUM_AS_RAW | YYJSON_READ_ALLOW_INF_AND_NAN | YYJSON_READ_ALLOW_EXT_NUMBER); + test_num_read(info, YYJSON_READ_NUMBER_AS_RAW | YYJSON_READ_ALLOW_INF_AND_NAN | YYJSON_READ_ALLOW_EXT_NUMBER); + + /// test write + test_num_write(info, YYJSON_WRITE_NOFLAG); + test_num_write(info, YYJSON_WRITE_ALLOW_INF_AND_NAN); + test_num_write(info, YYJSON_WRITE_INF_AND_NAN_AS_NULL); + + /// test write fp format + test_num_write(info, YYJSON_WRITE_FP_TO_FLOAT); + test_num_write(info, YYJSON_WRITE_FP_TO_FLOAT | YYJSON_WRITE_ALLOW_INF_AND_NAN); + test_num_write(info, YYJSON_WRITE_FP_TO_FLOAT | YYJSON_WRITE_INF_AND_NAN_AS_NULL); + for (int i = 1; i <= 15; i++) { + test_num_write(info, YYJSON_WRITE_FP_TO_FIXED(i)); + } +} + +/// Test all numbers from the txt files. +static void test_all_files(void) { + /// get all files in the /test/data/num directory + char dir[YY_MAX_PATH]; + yy_path_combine(dir, YYJSON_TEST_DATA_PATH, "data", "num", NULL); + int count; + char **names = yy_dir_read(dir, &count); + yy_assertf(names != NULL && count != 0, "read dir fail:%s\n", dir); + + for (int i = 0; i < count; i++) { + /// get full path of this file, ignore hidden and non-txt file + char *name = names[i]; + if (*name == '.') continue; + if (!yy_str_has_suffix(name, ".txt")) continue; + char path[YY_MAX_PATH]; + yy_path_combine(path, dir, name, NULL); + + /// read this file to memory + yy_dat dat; + bool file_suc = yy_dat_init_with_file(&dat, path); + yy_assertf(file_suc == true, "file read fail: %s\n", path); + + /// check flags + bool is_int = yy_str_has_prefix(name, "int"); // uint/sint + bool is_hex = yy_str_has_prefix(name, "hex"); // hex int + bool is_real = yy_str_has_prefix(name, "real"); // real + bool is_literal = yy_str_has_prefix(name, "literal"); // literal + + bool is_ext = yy_str_contains(name, "(ext)"); // extended format + bool is_big = yy_str_contains(name, "(big)"); // int overflow -> real + bool is_inf = yy_str_contains(name, "(inf)"); // int/real overflow -> inf + bool is_fail = yy_str_contains(name, "(fail)"); // always fail + + /// iterate over each line of the file + usize len; + char *line; + while ((line = yy_dat_read_line(&dat, &len))) { + /// ignore empty line and comment + if (len == 0 || line[0] == '#') continue; + /// add a null-terminator + line[len] = '\0'; + + /// check number format + num_info info = get_num_info(line); + if (is_fail) { + yy_assert(info.type == NUM_TYPE_FAIL); + } else { + yy_assert(info.ext == is_ext); + if (is_int || is_hex) { + if (line[0] == '-') { + yy_assert(info.type == NUM_TYPE_SINT); + } else { + yy_assert(info.type == NUM_TYPE_UINT); + } + if (is_inf) { + yy_assert(info.int_overflow == true); + yy_assert(info.real_overflow == true); + } else if (is_big) { + yy_assert(info.int_overflow == true); + yy_assert(info.real_overflow == false); + } + } else if (is_real) { + yy_assert(info.type == NUM_TYPE_REAL); + if (is_inf) { + yy_assert(info.real_overflow == is_inf); + } + } else if (is_literal) { + yy_assert(info.type == NUM_TYPE_LITERAL); + } + } + + /// test one number + test_num_info(info); + } + + yy_dat_release(&dat); + } + + yy_dir_free(names); +} + +/// Test some random integer read/write. +static void test_random_int(void) { + int count = 10000; + char buf[64] = { 0 }; + char *end; + + num_info info = { 0 }; + info.str = buf; + + yy_rand_reset(0); + for (int i = 0; i < count; i++) { + u64 r = yy_rand_u64(); + info.len = (usize)snprintf(buf, 32, "%llu", (unsigned long long)r); + info.u = r; + info.type = NUM_TYPE_UINT; + test_num_info(info); + } + + yy_rand_reset(0); + for (int i = 0; i < count; i++) { + i64 r = (i64)(yy_rand_u64() | ((u64)1 << 63)); + info.len = (usize)snprintf(buf, 32, "%lld", (signed long long)r); + info.i = r; + info.type = NUM_TYPE_SINT; + test_num_info(info); + } + + yy_rand_reset(0); + for (int i = 0; i < count; i++) { + u32 r = yy_rand_u32(); + info.len = (usize)snprintf(buf, 32, "%lu", (unsigned long)r); + info.u = r; + info.type = NUM_TYPE_UINT; + test_num_info(info); + } + + yy_rand_reset(0); + for (int i = 0; i < count; i++) { + i32 r = (i32)(yy_rand_u32() | ((u32)1 << 31)); + info.len = (usize)snprintf(buf, 32, "%li", (signed long)r); + info.i = r; + info.type = NUM_TYPE_SINT; + test_num_info(info); + } +} + +/// Test real number read/write fast (do not test all flags). +static void test_real_fast(f64 num, yyjson_alc *alc, + bool test_to_float, + bool test_to_fixed) { + char buf[64] = { 0 }; + char *str; + usize len; + + yyjson_val val = { 0 }; + yyjson_set_real(&val, num); + + /// double to shortest + str = yyjson_val_write_opts(&val, 0, alc, &len, NULL); + validate_real_output(str, &val, 0); + if (str) { + yyjson_val val_out = { 0 }; + const char *end = yyjson_read_number(str, &val_out, 0, alc, NULL); + yy_assert(end && *end == '\0'); + yy_assert(val_out.uni.f64 == val.uni.f64); + alc->free(alc->ctx, str); + } + + /// float to shortest + if (test_to_float) { + yyjson_write_flag flg = YYJSON_WRITE_FP_TO_FLOAT; + str = yyjson_val_write_opts(&val, flg, alc, &len, NULL); + validate_real_output(str, &val, flg); + if (str) { + yyjson_val val2 = { 0 }; + const char *end = yyjson_read_number(str, &val2, 0, alc, NULL); + yy_assert(end && *end == '\0'); + + f64 num2; + f64_read(str, &num2); + yy_assert(val2.uni.f64 == num2); + alc->free(alc->ctx, str); + } + } + + /// double to fixed + if (test_to_fixed) { + for (int prec = 1; prec <= 15; prec++) { + yyjson_write_flag flg = YYJSON_WRITE_FP_TO_FIXED(prec); + str = yyjson_val_write_opts(&val, flg, alc, &len, NULL); + validate_real_output(str, &val, flg); + if (str) { + yyjson_val val2 = { 0 }; + const char *end = yyjson_read_number(str, &val2, 0, alc, NULL); + yy_assert(end && *end == '\0'); + + f64 num2; + f64_read(str, &num2); + yy_assert(val2.uni.f64 == num2); + alc->free(alc->ctx, str); + } + } + } +} + +/// Test some random real number read/write. +static void test_random_real(void) { + int count = 10000; + char alc_buf[4096]; + yyjson_alc alc; + yyjson_alc_pool_init(&alc, alc_buf, sizeof(alc_buf)); + + yy_rand_reset(0); + for (int i = 0; i < count; i++) { + u64 r = yy_rand_u64(); + f64 f = f64_from_bits(r); + test_real_fast(f, &alc, true, true); + } + + yy_rand_reset(0); + for (int i = 0; i < count; i++) { + u32 r = yy_rand_u32(); + f32 f = f32_from_bits(r); + test_real_fast(f, &alc, true, true); + } +} + +/// Test some special real number read/write +static void test_special_real(void) { + char alc_buf[4096]; + yyjson_alc alc; + yyjson_alc_pool_init(&alc, alc_buf, sizeof(alc_buf)); + + // short digits + for (int sig = 1; sig <= 200; sig++) { + for (int exp = -326; exp <= 308; exp++) { + char buf[64]; + snprintf(buf, sizeof(buf), "%de%d", sig, exp); + f64 num; + f64_read(buf, &num); + test_real_fast(num, &alc, true, true); + } + } + + // edge cases + for (u64 exp = 0; exp <= 2046; exp++) { + for (u64 sig = 0; sig <= 100; sig++) { + u64 raw = (exp << 52) | sig; + f64 num = f64_from_bits(raw); + test_real_fast(num, &alc, true, true); + } + for (u64 sig = 0xFFFFFFFFFFFFFULL; sig >= (0xFFFFFFFFFFFFFULL - 100); sig--) { + u64 raw = (exp << 52) | sig; + f64 num = f64_from_bits(raw); + test_real_fast(num, &alc, true, true); + } + } +} + +/// Test all float32 number read/write. +/// It takes about 13 minutes on Apple M1/M2 (release build). +static void test_all_float(void) { + char alc_buf[4096]; + yyjson_alc alc; + yyjson_alc_pool_init(&alc, alc_buf, sizeof(alc_buf)); + + printf("--- begin test all float ---\n"); + f64 begin_time = yy_get_time(); + for (u32 i = 0, max = (u32)1 << 31; i < max; i++) { + f32 f = f32_from_bits(i); + test_real_fast((f64)f, &alc, true, false); + + // print progress + if ((i << 8) == 0 && i) { + f64 progress = (f64)i / max; + f64 elapsed = yy_get_time() - begin_time; + f64 expected = elapsed / (i + 1) * max; + f64 remaining = expected - elapsed; + printf("progress: %.2f%%, remaining: %.1f minutes\n", + progress * 100, remaining / 60); + fflush(NULL); + } + } + printf("--- end test all float ---\n"); +} + + + +/*============================================================================== + * MARK: - Test Input Types and Flags + *============================================================================*/ + +/// Test reader with different parameters. +static void test_read_params(void) { + yyjson_val ival; + yyjson_mut_val mval; + const char *ptr; + + ptr = yyjson_read_number(NULL, &ival, 0, NULL, NULL); + yy_assertf(ptr == NULL, "read line NULL should fail\n"); + ptr = yyjson_read_number("123", NULL, 0, NULL, NULL); + yy_assertf(ptr == NULL, "read val NULL should fail\n"); + ptr = yyjson_read_number(NULL, NULL, 0, NULL, NULL); + yy_assertf(ptr == NULL, "read line and val NULL should fail\n"); + + ptr = yyjson_mut_read_number(NULL, &mval, 0, NULL, NULL); + yy_assertf(ptr == NULL, "read line NULL should fail\n"); + ptr = yyjson_mut_read_number("123", NULL, 0, NULL, NULL); + yy_assertf(ptr == NULL, "read val NULL should fail\n"); + ptr = yyjson_mut_read_number(NULL, NULL, 0, NULL, NULL); + yy_assertf(ptr == NULL, "read line and val NULL should fail\n"); +} + +/// Test all combinations of number types and flags. +static void test_read_flags(void) { + + /// all number types + const char *num_arr[] = { + "0", // uint + "-0", // sint + "0.0", // real + "-0.0", // real + + "123", // uint + "-123", // sint + "123.0", // real + "-123.0", // real + + "9223372036854775808", // uint + "9223372036854775808.0", // real + + "18446744073709551615", // uint + "18446744073709551615.0", // real + "18446744073709551616", // uint overflow + "184467440737095516160", // uint overflow + + "-9223372036854775808", // sint + "-9223372036854775808.0", // real + "-9223372036854775809", // sint overflow + "-92233720368547758090", // sint overflow + + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890", // uint->real overflow + "-12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890", // sint->real overflow + + "123e999", // real overflow + "-123e999", // real overflow + + "NaN", // nan + "+NaN", // nan + "-NaN", // nan + "Inf", // inf + "+Infinity", // -inf + "-Infinity", // -inf + + "0x123", // hex + "-0x123", // hex + "+0X000123" // hex + + "+123", // ext number + ".123", // ext number + "123.", // ext number + "+.123e12", // ext number + "+123.e12", // ext number + ".000000000000000000000", // ext number + + "001", // fail + }; + + /// all number flags + yyjson_read_flag flag_arr[] = { + YYJSON_READ_NUMBER_AS_RAW, + YYJSON_READ_BIGNUM_AS_RAW, + YYJSON_READ_ALLOW_INF_AND_NAN, + YYJSON_READ_ALLOW_EXT_NUMBER, + }; + + /// test number type + for (usize i = 0; i < yy_nelems(num_arr); i++) { + const char *num_str = num_arr[i]; + usize num_len = strlen(num_str); + + bool ext = false; + num_type type = get_num_type(num_str, false); + if (type == NUM_TYPE_FAIL) { + type = get_num_type(num_str, true); + if (type != NUM_TYPE_FAIL) ext = true; + } + + /// test flag combination + u32 flag_count = (u32)yy_nelems(flag_arr); + u32 comb_count = 1 << flag_count; + for (u32 c = 0; c < comb_count; c++) { + yyjson_read_flag flg = 0; + for (u32 f = 0; f < flag_count; f++) { + if (c & (1 << f)) flg |= flag_arr[f]; + } + + /// doc read + yyjson_doc *doc = yyjson_read(num_str, num_len, flg); + yyjson_val *val = yyjson_doc_get_root(doc); + + { /// val read + yyjson_val val2; + const char *end = yyjson_read_number(num_str, &val2, flg, NULL, NULL); + if (val) { + yy_assert(yyjson_equals(val, &val2)); + yy_assert(end && *end == '\0'); + } else { + yy_assert(end != num_str); + } + } + { /// mut val read + yyjson_mut_val val2; + const char *end = yyjson_mut_read_number(num_str, &val2, flg, NULL, NULL); + if (val) { + yy_assert(yyjson_equals(val, (yyjson_val *)&val2)); + yy_assert(end && *end == '\0'); + } else { + yy_assert(end != num_str); + } + } + { /// minity format read + usize buf_len = num_len + 2; + char *buf = calloc(1, buf_len + 1); + buf[0] = '['; + memcpy(buf + 1, num_str, num_len); + buf[num_len + 1] = ']'; + yyjson_doc *doc2 = yyjson_read(buf, buf_len, flg); + yyjson_val *val2 = yyjson_arr_get_first(yyjson_doc_get_root(doc2)); + yy_assert(val == val2 || yyjson_equals(val, val2)); + yyjson_doc_free(doc2); + free(buf); + } + { /// pretty format read + usize buf_len = num_len + 6; + char *buf = calloc(1, buf_len + 1); + memcpy(buf, "[\n ", 4); + memcpy(buf + 4, num_str, num_len); + memcpy(buf + 4 + num_len, "\n]", 2); + yyjson_doc *doc2 = yyjson_read(buf, buf_len, flg); + yyjson_val *val2 = yyjson_arr_get_first(yyjson_doc_get_root(doc2)); + yy_assert(val == val2 || yyjson_equals(val, val2)); + yyjson_doc_free(doc2); + free(buf); + } + +#if YYJSON_DISABLE_NON_STANDARD + flg &= ~YYJSON_READ_ALLOW_INF_AND_NAN; + flg &= ~YYJSON_READ_ALLOW_EXT_NUMBER; +#endif + if (type == NUM_TYPE_FAIL || (ext && !(flg & YYJSON_READ_ALLOW_EXT_NUMBER))) { + /// invalid number format + yy_assert(!doc); + } else if (flg & YYJSON_READ_NUMBER_AS_RAW) { + /// all number should be raw + if (type == NUM_TYPE_LITERAL && + !(flg & YYJSON_READ_ALLOW_INF_AND_NAN)) { + yy_assert(!doc); + } else { + yy_assert(yyjson_is_raw(val)); + yy_assert(!strcmp(num_str, yyjson_get_raw(val))); + } + } else switch (type) { + case NUM_TYPE_SINT: + case NUM_TYPE_UINT: { + /// integer number format + if (!check_int_overflow(num_str, type)) { + /// integer number not overflow + yy_assert(yyjson_is_int(val)); + } else if (!check_real_overflow(num_str, type)) { + /// integer number overflow, but real number not overflow + if (flg & YYJSON_READ_BIGNUM_AS_RAW) { + yy_assert(yyjson_is_raw(val)); + yy_assert(!strcmp(num_str, yyjson_get_raw(val))); + } else { + yy_assert(yyjson_is_real(val)); + } + } else { + /// real number overflow + if (flg & YYJSON_READ_BIGNUM_AS_RAW) { + yy_assert(yyjson_is_raw(val)); + yy_assert(!strcmp(num_str, yyjson_get_raw(val))); + } else if (flg & YYJSON_READ_ALLOW_INF_AND_NAN) { + yy_assert(yyjson_is_real(val)); + } else { + yy_assert(!doc); + } + } + break; + } + case NUM_TYPE_REAL: { + /// real number + if (!check_real_overflow(num_str, type)) { + /// real number not overflow + yy_assert(yyjson_is_real(val)); + } else { + /// real number overflow + if (flg & YYJSON_READ_BIGNUM_AS_RAW) { + yy_assert(yyjson_is_raw(val)); + yy_assert(!strcmp(num_str, yyjson_get_raw(val))); + } else if (flg & YYJSON_READ_ALLOW_INF_AND_NAN) { + yy_assert(yyjson_is_real(val)); + } else { + yy_assert(!doc); + } + } + break; + } + case NUM_TYPE_LITERAL: { + if ((flg & YYJSON_READ_ALLOW_INF_AND_NAN)) { + yy_assert(yyjson_is_real(val)); + } else { + yy_assert(!doc); + } + break; + } + default: { + break; + } + } + + yyjson_doc_free(doc); + } + } +} + +/// Test all combinations of number types and flags. +static void test_write_flags(void) { + const u32 prec = 3; + yyjson_write_flag flag_arr[] = { + YYJSON_WRITE_ALLOW_INF_AND_NAN, + YYJSON_WRITE_INF_AND_NAN_AS_NULL, + YYJSON_WRITE_FP_TO_FLOAT, + YYJSON_WRITE_FP_TO_FIXED(3), + }; + + /// test flag combination + u32 flag_count = (u32)yy_nelems(flag_arr); + u32 comb_count = 1 << flag_count; + for (u32 c = 0; c < comb_count; c++) { + yyjson_write_flag flg = 0; + for (u32 f = 0; f < flag_count; f++) { + if (c & (1 << f)) flg |= flag_arr[f]; + } + bool allow_inf_nan = (flg & YYJSON_WRITE_ALLOW_INF_AND_NAN); + bool inf_nan_as_null = (flg & YYJSON_WRITE_INF_AND_NAN_AS_NULL); + bool to_float = (flg & YYJSON_WRITE_FP_TO_FLOAT) != 0; + bool to_fixed = (flg >> (32 - YYJSON_WRITE_FP_PREC_BITS)) != 0; + + f64 num64 = 0.12345678901234567; + f32 num32 = (f32)num64; + yyjson_val val = { 0 }; + char *str; + + /// int + yyjson_set_int(&val, 321); + str = yyjson_val_write(&val, flg, NULL); + yy_assert(get_num_type(str, false) == NUM_TYPE_UINT); + free(str); + + /// float + yyjson_set_float(&val, num32); + str = yyjson_val_write(&val, flg, NULL); + validate_real_output(str, &val, flg); + free(str); + + /// float to fixed + yyjson_set_float(&val, num32); + yyjson_set_fp_to_fixed(&val, prec + 1); + str = yyjson_val_write(&val, flg, NULL); + validate_real_output(str, &val, flg); + free(str); + + /// double + yyjson_set_double(&val, num64); + str = yyjson_val_write(&val, flg, NULL); + validate_real_output(str, &val, flg); + free(str); + + /// double to fixed + yyjson_set_double(&val, num64); + yyjson_set_fp_to_fixed(&val, prec + 1); + str = yyjson_val_write(&val, flg, NULL); + validate_real_output(str, &val, flg); + free(str); + + /// inf + num64 = INFINITY; + yyjson_set_double(&val, num64); + str = yyjson_val_write(&val, flg, NULL); + validate_real_output(str, &val, flg); + free(str); + + /// inf to fixed + num64 = INFINITY; + yyjson_set_double(&val, num64); + yyjson_set_fp_to_fixed(&val, prec + 1); + str = yyjson_val_write(&val, flg, NULL); + validate_real_output(str, &val, flg); + free(str); + + /// float inf + num64 = 1e100; + yyjson_set_double(&val, num64); + str = yyjson_val_write(&val, flg, NULL); + validate_real_output(str, &val, flg); + free(str); + + /// float inf to fixed + num64 = 1e100; + yyjson_set_double(&val, num64); + yyjson_set_fp_to_fixed(&val, prec + 1); + str = yyjson_val_write(&val, flg, NULL); + validate_real_output(str, &val, flg); + free(str); + } + + { /// set val format + yyjson_val val = { 0 }; + + /// set float/double + yyjson_set_float(&val, (float)1.25); + yy_assert(yyjson_is_real(&val)); + yy_assert((float)yyjson_get_real(&val) == (float)1.25); + yy_assert((val.tag >> 32) == YYJSON_WRITE_FP_TO_FLOAT); + yyjson_set_double(&val, 1.25); + yy_assert(yyjson_is_real(&val)); + yy_assert(yyjson_get_real(&val) == 1.25); + yy_assert((val.tag >> 32) == 0); + + /// set to fixed + yyjson_set_fp_to_fixed(&val, 12); + yy_assert(yyjson_is_real(&val)); + yy_assert((val.tag >> 32) == YYJSON_WRITE_FP_TO_FIXED(12)); + yyjson_set_fp_to_fixed(&val, 0); + yy_assert(yyjson_is_real(&val)); + yy_assert((val.tag >> 32) == YYJSON_WRITE_FP_TO_FIXED(0)); + + /// set to float + yyjson_set_fp_to_float(&val, true); + yy_assert(yyjson_is_real(&val)); + yy_assert((val.tag >> 32) == YYJSON_WRITE_FP_TO_FLOAT); + yyjson_set_fp_to_float(&val, false); + yy_assert(yyjson_is_real(&val)); + yy_assert((val.tag >> 32) == 0); + } + { /// set mut val format + yyjson_mut_val val = { 0 }; + + /// set float/double + yyjson_mut_set_float(&val, (float)1.25); + yy_assert(yyjson_mut_is_real(&val)); + yy_assert((float)yyjson_mut_get_real(&val) == (float)1.25); + yy_assert((val.tag >> 32) == YYJSON_WRITE_FP_TO_FLOAT); + yyjson_mut_set_double(&val, 1.25); + yy_assert(yyjson_mut_is_real(&val)); + yy_assert(yyjson_mut_get_real(&val) == 1.25); + yy_assert((val.tag >> 32) == 0); + + /// set to fixed + yyjson_mut_set_fp_to_fixed(&val, 12); + yy_assert(yyjson_mut_is_real(&val)); + yy_assert((val.tag >> 32) == YYJSON_WRITE_FP_TO_FIXED(12)); + yyjson_mut_set_fp_to_fixed(&val, 0); + yy_assert(yyjson_mut_is_real(&val)); + yy_assert((val.tag >> 32) == YYJSON_WRITE_FP_TO_FIXED(0)); + + /// set to float + yyjson_mut_set_fp_to_float(&val, true); + yy_assert(yyjson_mut_is_real(&val)); + yy_assert((val.tag >> 32) == YYJSON_WRITE_FP_TO_FLOAT); + yyjson_mut_set_fp_to_float(&val, false); + yy_assert(yyjson_mut_is_real(&val)); + yy_assert((val.tag >> 32) == 0); + } + + /// write number + { + char *int_buf = malloc(21); + char *flt_buf = malloc(40); + char *str, *end; + + yyjson_val val = { 0 }; + yyjson_mut_val mval = { 0 }; + + /// input check + yyjson_set_int(&val, 0); + yyjson_mut_set_int(&mval, 0); + end = yyjson_write_number(NULL, int_buf); + yy_assert(!end); + end = yyjson_mut_write_number(NULL, int_buf); + yy_assert(!end); + end = yyjson_write_number(&val, NULL); + yy_assert(!end); + end = yyjson_mut_write_number(&mval, NULL); + yy_assert(!end); + + /// type check + yyjson_set_null(&val); + yyjson_mut_set_null(&mval); + end = yyjson_write_number(&val, int_buf); + yy_assert(!end); + end = yyjson_mut_write_number(&mval, int_buf); + yy_assert(!end); + + /// uint + memset(&val, 0, sizeof(val)); + yyjson_set_uint(&val, UINT64_MAX); + str = yyjson_val_write(&val, 0, NULL); + end = yyjson_write_number(&val, int_buf); + yy_assert(!strcmp(str, int_buf)); + yy_assert((usize)(end - int_buf) == strlen(str)); + free(str); + + /// sint + memset(&val, 0, sizeof(val)); + yyjson_set_sint(&val, INT64_MAX); + str = yyjson_val_write(&val, 0, NULL); + end = yyjson_write_number(&val, int_buf); + yy_assert(!strcmp(str, int_buf)); + yy_assert((usize)(end - int_buf) == strlen(str)); + free(str); + + /// float + memset(&val, 0, sizeof(val)); + yyjson_set_float(&val, 1.23456789f); + str = yyjson_val_write(&val, 0, NULL); + end = yyjson_write_number(&val, flt_buf); + yy_assert(!strcmp(str, flt_buf)); + yy_assert((usize)(end - flt_buf) == strlen(str)); + free(str); + + /// double + memset(&val, 0, sizeof(val)); + yyjson_set_double(&val, 1.23456789); + str = yyjson_val_write(&val, 0, NULL); + end = yyjson_write_number(&val, flt_buf); + yy_assert(!strcmp(str, flt_buf)); + yy_assert((usize)(end - flt_buf) == strlen(str)); + free(str); + + /// fixed + memset(&val, 0, sizeof(val)); + yyjson_set_double(&val, 1.23456789); + yyjson_set_fp_to_fixed(&val, 2); + str = yyjson_val_write(&val, 0, NULL); + end = yyjson_write_number(&val, flt_buf); + yy_assert(!strcmp(str, flt_buf)); + yy_assert((usize)(end - flt_buf) == strlen(str)); + free(str); + + /// extra flag bits + memset(&val, 0, sizeof(val)); + yyjson_set_double(&val, 1.23456789); + val.tag |= (u64)1 << (64 - 6); + str = yyjson_val_write(&val, 0, NULL); + end = yyjson_write_number(&val, flt_buf); + yy_assert(!strcmp(str, flt_buf)); + yy_assert((usize)(end - flt_buf) == strlen(str)); + free(str); + + /// inf + memset(&val, 0, sizeof(val)); + yyjson_set_double(&val, INFINITY); + str = yyjson_val_write(&val, YYJSON_WRITE_ALLOW_INF_AND_NAN, NULL); + end = yyjson_write_number(&val, flt_buf); + if (str) { + yy_assert(!strcmp(str, flt_buf)); + yy_assert((usize)(end - flt_buf) == strlen(str)); + } else { + yy_assert(!end); + } + free(str); + + free(int_buf); + free(flt_buf); + } +} + + + +/*============================================================================== + * MARK: - Entry + *============================================================================*/ + +static void test_number_locale(void) { + test_read_params(); + test_read_flags(); + test_write_flags(); + test_all_files(); +} + +static void test_number_extra(void) { + test_random_int(); + test_random_real(); + test_special_real(); + +#if YYJSON_TEST_ALL_FLOAT || 0 + test_all_float(); /// costs too much time, disabled for regular testing +#endif +} + +yy_test_case(test_number) { + /// change locale (decimal point is ',') + setlocale(LC_ALL, "fr_FR"); + update_locale_decimal_point(); + test_number_locale(); + + /// reset locale (decimal point is '.') + setlocale(LC_ALL, "C"); + update_locale_decimal_point(); + test_number_locale(); + + /// test some extra numbers + test_number_extra(); +} + +#else +yy_test_case(test_number) {} +#endif diff --git a/lib/yyjson-0.12.0/test/test_roundtrip.c b/lib/yyjson-0.12.0/test/test_roundtrip.c new file mode 100644 index 00000000000..96cd8409284 --- /dev/null +++ b/lib/yyjson-0.12.0/test/test_roundtrip.c @@ -0,0 +1,91 @@ +// This file is used to test the round-trip JSON reading and writing. + +#include "yyjson.h" +#include "yy_test_utils.h" +#include <locale.h> + + + +void test_roundtrip_locale(void) { + + // Check version + yy_assert(yyjson_version() == YYJSON_VERSION_HEX); + + uint32_t ver = (YYJSON_VERSION_MAJOR << 16) + + (YYJSON_VERSION_MINOR << 8) + + (YYJSON_VERSION_PATCH); + yy_assert(yyjson_version() == ver); + + char buf[16]; + snprintf(buf, sizeof(buf), "%d.%d.%d", + YYJSON_VERSION_MAJOR, YYJSON_VERSION_MINOR, YYJSON_VERSION_PATCH); + yy_assert(strcmp(YYJSON_VERSION_STRING, buf) == 0); + ver = YYJSON_VERSION_MAJOR << 16; + + // Check JSON file roundtrip +#if !YYJSON_DISABLE_READER && !YYJSON_DISABLE_WRITER + + char dir[YY_MAX_PATH]; + yy_path_combine(dir, YYJSON_TEST_DATA_PATH, "data", "json", "test_roundtrip", NULL); + + int count; + char **names = yy_dir_read(dir, &count); + yy_assertf(names != NULL && count != 0, "read dir fail: %s\n", dir); + + for (int i = 0; i < count; i++) { + char *name = names[i]; + char path[YY_MAX_PATH]; + yy_path_combine(path, dir, name, NULL); + + char *in_dat; + usize in_len; + bool read_suc = yy_file_read(path, (u8 **)&in_dat, &in_len); + yy_assertf(read_suc == true, "file read fail: %s\n", path); + yy_assertf(in_len > 0, "file is empty: %s\n", path); + + yyjson_doc *doc = yyjson_read((const char *)in_dat, in_len, 0); + yy_assertf(doc != NULL, "json read fail: %s\n", path); + + usize out_len; + char *out_dat = yyjson_write(doc, 0, &out_len); + yy_assertf(out_dat != NULL, "json write fail: %s\n", path); + +#if !YYJSON_DISABLE_FAST_FP_CONV + yy_assertf(in_len == out_len && memcmp(in_dat, out_dat, in_len) == 0, + "roundtrip fail: %s\nin: %.*s\nout: %.*s\n", + path, (int)in_len, in_dat, (int)out_len, out_dat); +#endif + + usize mout_len; + yyjson_mut_doc *mdoc = yyjson_doc_mut_copy(doc, NULL); + char *mout_dat = yyjson_mut_write(mdoc, 0, &mout_len); + yy_assertf(mout_dat != NULL, "json mut write fail: %s\n", path); + +#if !YYJSON_DISABLE_FAST_FP_CONV + yy_assertf(in_len == mout_len && memcmp(in_dat, mout_dat, in_len) == 0, + "roundtrip (mut) fail: %s\nin: %.*s\nout: %.*s\n", + path, (int)in_len, in_dat, (int)mout_len, mout_dat); +#endif + + yyjson_doc_free(doc); + yyjson_mut_doc_free(mdoc); + free(in_dat); + free(out_dat); + free(mout_dat); + } + + yy_dir_free(names); + +#endif +} + + +yy_test_case(test_roundtrip) { + // decimal point is '.' + setlocale(LC_ALL, "C"); + test_roundtrip_locale(); + + // decimal point is ',' + setlocale(LC_ALL, "fr_FR"); + test_roundtrip_locale(); +} diff --git a/lib/yyjson-0.12.0/test/test_string.c b/lib/yyjson-0.12.0/test/test_string.c new file mode 100644 index 00000000000..670ba699cec --- /dev/null +++ b/lib/yyjson-0.12.0/test/test_string.c @@ -0,0 +1,1580 @@ +// This file is used to test string processing and Unicode encoding validation. +// This file must be compiled with UTF-8 encoding. + +#include "yyjson.h" +#include "yy_test_utils.h" + + + +/// A string value with length. +typedef struct { + const char *str; + usize len; +} string_val; + +/// A string set for different flags. +typedef struct { + string_val str; // raw string + string_val esc_non; // json string + string_val esc_sla; // json string escape slashes + string_val esc_uni; // json string escape unicode + string_val esc_all; // json string escape unicode and slashes + bool invalid_unicode; // flag `ALLOW_INVALID_UNICODE` +} string_set; + + + +/*============================================================================== + * MARK: - Standard Reader/Writer + *============================================================================*/ + +/// Validate roundtrip: `write(read(str)) == str`. +static void validate_roundtrip(char *str, usize len, yyjson_write_flag flg) { +#if !YYJSON_DISABLE_READER && !YYJSON_DISABLE_WRITER +#if YYJSON_DISABLE_UTF8_VALIDATION + if (str && !yy_str_is_utf8(str, len)) return; +#endif + + yyjson_doc *doc; + usize ret_len = 0; + char *ret; + + // str == write(read(str)) + doc = yyjson_read(str, len, YYJSON_READ_ALLOW_INVALID_UNICODE); + ret = yyjson_write(doc, flg, &ret_len); + yy_assert(ret); + yy_assert(ret_len == len); + yy_assert(memcmp(ret, str, len) == 0); + free(ret); + yyjson_doc_free(doc); + + // test no read/write flag + doc = yyjson_read(str, len, 0); + ret = yyjson_write(doc, flg, NULL); + free(ret); + yyjson_doc_free(doc); + + // test no write flag + doc = yyjson_read(str, len, YYJSON_READ_ALLOW_INVALID_UNICODE); + ret = yyjson_write(doc, 0, NULL); + free(ret); + yyjson_doc_free(doc); + + // test pretty flag + doc = yyjson_read(str, len, YYJSON_READ_ALLOW_INVALID_UNICODE); + ret = yyjson_write(doc, YYJSON_WRITE_PRETTY, NULL); + free(ret); + yyjson_doc_free(doc); +#endif +} + +/// Validate read: `read(src) == dst`. +static void validate_str_read(string_val *src, string_val *dst, yyjson_read_flag flg) { +#if !YYJSON_DISABLE_READER +#if YYJSON_DISABLE_UTF8_VALIDATION + if (src->str && !yy_str_is_utf8(src->str, src->len)) return; +#endif + + string_val empty = { NULL, 0 }; + if (!src || !src->str) return; + if (!dst) dst = ∅ + + usize buf_len = src->len + 2; + char *buf = malloc(buf_len); + buf[0] = '"'; + memcpy(buf + 1, src->str, src->len); + buf[buf_len - 1] = '"'; + + yyjson_doc *doc = yyjson_read(buf, buf_len, flg); + if (dst->str) { + yy_assertf(doc, + "read fail,\ninput: \"%s\" len:%u\nexpect:\"%s\" len:%u\noutput:NULL doc\n", + src->str, (u32)src->len, dst->str, (u32)dst->len); + yyjson_val *val = yyjson_doc_get_root(doc); + yy_assertf(yyjson_is_str(val), + "read fail,\ninput: \"%s\" len:%u\nexpect:\"%s\" len:%u\noutput:root not string\n", + src->str, (u32)src->len, dst->str, (u32)dst->len); + yy_assertf(yyjson_equals_strn(val, dst->str, dst->len), + "read fail,\ninput: \"%s\" len:%u\nexpect:\"%s\" len:%u\noutput:\"%s\" len:%u\n", + src->str, (u32)src->len, dst->str, (u32)dst->len, + yyjson_get_str(val), (u32)yyjson_get_len(val)); + } else { + yy_assertf(!doc, + "input string should be rejected by reader, but accepted: \"%s\"\n", + src->str); + } + free(buf); + yyjson_doc_free(doc); + +#endif +} + +/// Validate write: `write(src) == dst`. +static void validate_str_write(string_val *src, string_val *dst, yyjson_write_flag flg) { +#if !YYJSON_DISABLE_WRITER +#if YYJSON_DISABLE_UTF8_VALIDATION + if (src->str && !yy_str_is_utf8(src->str, src->len)) return; +#endif + + string_val empty = { NULL, 0 }; + if (!src || !src->str) return; + if (!dst) dst = ∅ + + char *buf = src->len ? malloc(src->len) : (char *)1; + memcpy(buf, src->str, src->len); + + yyjson_mut_doc *doc = yyjson_mut_doc_new(NULL); + yyjson_mut_val *val = yyjson_mut_strn(doc, buf, src->len); + yyjson_mut_doc_set_root(doc, val); + + // single value + usize ret_len = 0; + char *ret = yyjson_mut_write_opts(doc, flg, NULL, &ret_len, NULL); + if (dst->str) { + yy_assertf(ret, + "write fail,\ninput: \"%s\" len:%u\nexpect:\"%s\" len:%u\noutput:NULL\n", + src->str, (u32)src->len, dst->str, (u32)dst->len); + yy_assertf((ret_len == dst->len + 2) && (memcmp(ret + 1, dst->str, dst->len) == 0), + "write fail,\ninput: \"%s\" len:%u\nexpect:\"%s\" len:%u\noutput:%s len:%u\n", + src->str, (u32)src->len, dst->str, (u32)dst->len, ret, (u32)ret_len - 2); + validate_roundtrip(ret, ret_len, flg); + free((void *)ret); + } else { + yy_assertf(!ret, + "input string should be rejected by writer, but accepted: \"%s\"\n", + src->str); + } + + // string in array (minify) + yyjson_mut_val *arr = yyjson_mut_arr(doc); + yyjson_mut_arr_append(arr, val); + yyjson_mut_doc_set_root(doc, arr); + ret = yyjson_mut_write_opts(doc, flg, NULL, &ret_len, NULL); + if (dst->str) { + yy_assertf(ret, + "write fail,\ninput: \"%s\" len:%u\nexpect:\"%s\" len:%u\noutput:NULL\n", + src->str, (u32)src->len, dst->str, (u32)dst->len); + yy_assertf((ret_len == dst->len + 4) && (memcmp(ret + 2, dst->str, dst->len) == 0), + "write fail,\ninput: \"%s\" len:%u\nexpect:\"%s\" len:%u\noutput:%s len:%u\n", + src->str, (u32)src->len, dst->str, (u32)dst->len, ret, (u32)ret_len - 4); + validate_roundtrip(ret, ret_len, flg); + free((void *)ret); + } else { + yy_assertf(!ret, + "input string should be rejected by writer, but accepted: \"%s\"\n", + src->str); + } + + // string in array (pretty) + ret = yyjson_mut_write_opts(doc, flg | YYJSON_WRITE_PRETTY, NULL, &ret_len, NULL); + if (dst->str) { + yy_assertf(ret, + "write fail,\ninput: \"%s\" len:%u\nexpect:\"%s\" len:%u\noutput:NULL\n", + src->str, (u32)src->len, dst->str, (u32)dst->len); + yy_assertf((ret_len == dst->len + 10) && (memcmp(ret + 7, dst->str, dst->len) == 0), + "write fail,\ninput: \"%s\" len:%u\nexpect:\"%s\" len:%u\noutput:%s len:%u\n", + src->str, (u32)src->len, dst->str, (u32)dst->len, ret, (u32)ret_len - 10); + validate_roundtrip(ret, ret_len, flg | YYJSON_WRITE_PRETTY); + free((void *)ret); + } else { + yy_assertf(!ret, + "input string should be rejected by writer, but accepted: \"%s\"\n", + src->str); + } + + + yyjson_mut_doc_free(doc); + if (src->len) free(buf); +#endif +} + +/// Validate string read: +/// `read(esc_non) -> str` +/// `read(esc_sla) -> str` +/// `read(esc_uni) -> str` +/// `read(esc_all) -> str` +static void validate_read(string_set set) { + yyjson_read_flag flg = YYJSON_READ_ALLOW_INVALID_UNICODE; + + if (set.invalid_unicode) { + validate_str_read(&set.esc_non, NULL, 0); + validate_str_read(&set.esc_sla, NULL, 0); +#if YYJSON_DISABLE_NON_STANDARD + validate_str_read(&set.esc_non, NULL, flg); + validate_str_read(&set.esc_sla, NULL, flg); +#else + validate_str_read(&set.esc_non, &set.str, flg); + validate_str_read(&set.esc_sla, &set.str, flg); +#endif + validate_str_read(&set.esc_uni, &set.str, flg); + validate_str_read(&set.esc_all, &set.str, flg); + } else { + validate_str_read(&set.esc_non, &set.str, 0); + validate_str_read(&set.esc_sla, &set.str, 0); + validate_str_read(&set.esc_uni, &set.str, 0); + validate_str_read(&set.esc_all, &set.str, 0); + + validate_str_read(&set.esc_non, &set.str, flg); + validate_str_read(&set.esc_sla, &set.str, flg); + validate_str_read(&set.esc_uni, &set.str, flg); + validate_str_read(&set.esc_all, &set.str, flg); + } +} + +/// Validate string encode: +/// `write(str) -> esc_non (NOFLAG)` +/// `write(str) -> esc_sla (ESCAPE_SLASHES)` +/// `write(str) -> esc_uni (ESCAPE_UNICODE)` +/// `write(str) -> esc_all (ESCAPE_SLASHES | ESCAPE_UNICODE)` +static void validate_write(string_set set) { + yyjson_write_flag flg_non = YYJSON_WRITE_NOFLAG; + yyjson_write_flag flg_sla = YYJSON_WRITE_ESCAPE_SLASHES; + yyjson_write_flag flg_uni = YYJSON_WRITE_ESCAPE_UNICODE; + yyjson_write_flag flg_all = YYJSON_WRITE_ESCAPE_UNICODE | YYJSON_WRITE_ESCAPE_SLASHES; + yyjson_write_flag flg_inv = YYJSON_WRITE_ALLOW_INVALID_UNICODE; + + if (set.invalid_unicode) { + validate_str_write(&set.str, NULL, flg_non); + validate_str_write(&set.str, NULL, flg_sla); + validate_str_write(&set.str, NULL, flg_uni); + validate_str_write(&set.str, NULL, flg_all); +#if YYJSON_DISABLE_NON_STANDARD + validate_str_write(&set.str, NULL, flg_non | flg_inv); + validate_str_write(&set.str, NULL, flg_sla | flg_inv); + validate_str_write(&set.str, NULL, flg_uni | flg_inv); + validate_str_write(&set.str, NULL, flg_all | flg_inv); +#else + validate_str_write(&set.str, &set.esc_non, flg_non | flg_inv); + validate_str_write(&set.str, &set.esc_sla, flg_sla | flg_inv); + validate_str_write(&set.str, &set.esc_uni, flg_uni | flg_inv); + validate_str_write(&set.str, &set.esc_all, flg_all | flg_inv); +#endif + } else { + validate_str_write(&set.str, &set.esc_non, flg_non); + validate_str_write(&set.str, &set.esc_sla, flg_sla); + validate_str_write(&set.str, &set.esc_uni, flg_uni); + validate_str_write(&set.str, &set.esc_all, flg_all); + + validate_str_write(&set.str, &set.esc_non, flg_non | flg_inv); + validate_str_write(&set.str, &set.esc_sla, flg_sla | flg_inv); + validate_str_write(&set.str, &set.esc_uni, flg_uni | flg_inv); + validate_str_write(&set.str, &set.esc_all, flg_all | flg_inv); + } +} + +static void validate_read_write(string_set set) { + validate_read(set); + validate_write(set); +} + +static void test_read_write(void) { + validate_read_write((string_set) { + { "", 0 }, + { "", 0 }, + { "", 0 }, + { "", 0 }, + { "", 0 }, + }); + + validate_read_write((string_set) { + { "a", 1 }, + { "a", 1 }, + { "a", 1 }, + { "a", 1 }, + { "a", 1 }, + }); + + validate_read_write((string_set) { + { "abc", 3 }, + { "abc", 3 }, + { "abc", 3 }, + { "abc", 3 }, + { "abc", 3 }, + }); + + validate_read_write((string_set) { + { "\0", 1 }, + { "\\u0000", 6, }, + { "\\u0000", 6, }, + { "\\u0000", 6, }, + { "\\u0000", 6, }, + }); + + validate_read_write((string_set) { + { "abc\0", 4 }, + { "abc\\u0000", 9 }, + { "abc\\u0000", 9 }, + { "abc\\u0000", 9 }, + { "abc\\u0000", 9 }, + }); + + validate_read_write((string_set) { + { "\0abc", 4 }, + { "\\u0000abc", 9 }, + { "\\u0000abc", 9 }, + { "\\u0000abc", 9 }, + { "\\u0000abc", 9 }, + }); + + validate_read_write((string_set) { + { "abc\0def", 7 }, + { "abc\\u0000def", 12 }, + { "abc\\u0000def", 12 }, + { "abc\\u0000def", 12 }, + { "abc\\u0000def", 12 }, + }); + + validate_read_write((string_set) { + { "a\\b", 3 }, + { "a\\\\b", 4 }, + { "a\\\\b", 4 }, + { "a\\\\b", 4 }, + { "a\\\\b", 4 }, + }); + + validate_read_write((string_set) { + { "a/b", 3 }, + { "a/b", 3 }, + { "a\\/b", 4 }, + { "a/b", 3 }, + { "a\\/b", 4 }, + }); + + validate_read((string_set) { + { "abc\x20\x7F", 5 }, + { "abc\x20\x7F", 5 }, + { "abc\x20\x7F", 5 }, + { "abc\x20\x7F", 5 }, + { "abc\x20\x7F", 5 }, + }); + + validate_read_write((string_set) { + { "\"\\/\b\f\n\r\t", 8 }, + { "\\\"\\\\/\\b\\f\\n\\r\\t", 15 }, + { "\\\"\\\\\\/\\b\\f\\n\\r\\t", 16 }, + { "\\\"\\\\/\\b\\f\\n\\r\\t", 15 }, + { "\\\"\\\\\\/\\b\\f\\n\\r\\t", 16 }, + }); + + validate_read_write((string_set) { + { "Alizée", 7 }, + { "Alizée", 7 }, + { "Alizée", 7 }, + { "Aliz\\u00E9e", 11 }, + { "Aliz\\u00E9e", 11 }, + }); + + validate_read_write((string_set) { + { "Hello世界", 11 }, + { "Hello世界", 11 }, + { "Hello世界", 11 }, + { "Hello\\u4E16\\u754C", 17 }, + { "Hello\\u4E16\\u754C", 17 }, + }); + + validate_read((string_set) { + { "Hello世界", 11 }, + { "Hello世界", 11 }, + { "Hello世界", 11 }, + { "Hello\\u4e16\\u754c", 17 }, + { "Hello\\u4e16\\u754c", 17 }, + }); + + validate_read_write((string_set) { + { "Emoji😊", 9 }, + { "Emoji😊", 9 }, + { "Emoji😊", 9 }, + { "Emoji\\uD83D\\uDE0A", 17 }, + { "Emoji\\uD83D\\uDE0A", 17 }, + }); + + validate_read_write((string_set) { + { "ðŸ±\tðŸ¶", 9 }, + { "ðŸ±\\tðŸ¶", 10 }, + { "ðŸ±\\tðŸ¶", 10 }, + { "\\uD83D\\uDC31\\t\\uD83D\\uDC36", 26 }, + { "\\uD83D\\uDC31\\t\\uD83D\\uDC36", 26 }, + }); + + validate_read_write((string_set) { + { "Check✅©\t2020®Ñблоко////à¹à¸­à¸›à¹€à¸›à¸´à¹‰à¸¥\\\\リンゴ|ØªÙØ§Ø­Ø©|蘋果|사과|", 97 }, + { "Check✅©\\t2020®Ñблоко////à¹à¸­à¸›à¹€à¸›à¸´à¹‰à¸¥\\\\\\\\リンゴ|ØªÙØ§Ø­Ø©|蘋果|사과|", 100 }, + { "Check✅©\\t2020®Ñблоко\\/\\/\\/\\/à¹à¸­à¸›à¹€à¸›à¸´à¹‰à¸¥\\\\\\\\リンゴ|ØªÙØ§Ø­Ø©|蘋果|사과|", 104 }, + { "Check\\u2705\\u00A9\\t2020\\u00AE\\u044F\\u0431\\u043B\\u043E\\u043A\\u043E////\\u0E41\\u0E2D\\u0E1B\\u0E40\\u0E1B\\u0E34\\u0E49\\u0E25\\\\\\\\\\u30EA\\u30F3\\u30B4|\\u062A\\u0641\\u0627\\u062D\\u0629|\\u860B\\u679C|\\uC0AC\\uACFC|\\uF8FF", 203 }, + { "Check\\u2705\\u00A9\\t2020\\u00AE\\u044F\\u0431\\u043B\\u043E\\u043A\\u043E\\/\\/\\/\\/\\u0E41\\u0E2D\\u0E1B\\u0E40\\u0E1B\\u0E34\\u0E49\\u0E25\\\\\\\\\\u30EA\\u30F3\\u30B4|\\u062A\\u0641\\u0627\\u062D\\u0629|\\u860B\\u679C|\\uC0AC\\uACFC|\\uF8FF", 207 }, + }); + + + // string with different length + char rand_str[65] = { 0 }; + for (int i = 0; i < 64; i++) { + rand_str[i] = 'a' + (i % 26); + } + for (int len = 1; len <= 64; len++) { + validate_read_write((string_set) { + { rand_str, len }, + { rand_str, len }, + { rand_str, len }, + { rand_str, len }, + { rand_str, len }, + }); + } + for (int len = 0; len <= 64; len++) { + // escape first char + char buf1[1 + 64]; + char buf2[2 + 64]; + buf1[0] = '\t'; + memcpy(buf1 + 1, rand_str, len); + buf2[0] = '\\'; + buf2[1] = 't'; + memcpy(buf2 + 2, rand_str, len); + validate_read_write((string_set) { + { buf1, len + 1 }, + { buf2, len + 2 }, + { buf2, len + 2 }, + { buf2, len + 2 }, + { buf2, len + 2 }, + }); + } + + + // 1 byte invalid UTF-8 + for (int len = 0; len <= 6; len++) { + validate_write((string_set) { + { "\x80qwerty", 1 + len }, + { "\x80qwerty", 1 + len }, + { "\x80qwerty", 1 + len }, + { "\\uFFFDqwerty", 6 + len }, + { "\\uFFFDqwerty", 6 + len }, + true + }); + validate_read((string_set) { + { "\x80qwerty", 1 + len }, + { "\x80qwerty", 1 + len }, + { "\x80qwerty", 1 + len }, + { NULL, 0 }, + { NULL, 0 }, + true + }); + validate_write((string_set) { + { "\x80\x8Fqwerty", 2 + len }, + { "\x80\x8Fqwerty", 2 + len }, + { "\x80\x8Fqwerty", 2 + len }, + { "\\uFFFD\\uFFFDqwerty", 12 + len }, + { "\\uFFFD\\uFFFDqwerty", 12 + len }, + true + }); + validate_read((string_set) { + { "\x80\x8Fqwerty", 2 + len }, + { "\x80\x8Fqwerty", 2 + len }, + { "\x80\x8Fqwerty", 2 + len }, + { NULL, 0 }, + { NULL, 0 }, + true + }); + } + + + // 2 byte invalid UTF-8 + for (int len = 0; len <= 6; len++) { + validate_write((string_set) { + { "\xC0qwerty", 1 + len }, + { "\xC0qwerty", 1 + len }, + { "\xC0qwerty", 1 + len }, + { "\\uFFFDqwerty", 6 + len }, + { "\\uFFFDqwerty", 6 + len }, + true + }); + validate_read((string_set) { + { "\xC0qwerty", 1 + len }, + { "\xC0qwerty", 1 + len }, + { "\xC0qwerty", 1 + len }, + { NULL, 0 }, + { NULL, 0 }, + true + }); + validate_write((string_set) { + { "\xC0\xC0qwerty", 2 + len }, + { "\xC0\xC0qwerty", 2 + len }, + { "\xC0\xC0qwerty", 2 + len }, + { "\\uFFFD\\uFFFDqwerty", 12 + len }, + { "\\uFFFD\\uFFFDqwerty", 12 + len }, + true + }); + validate_read((string_set) { + { "\xC0\xC0qwerty", 2 + len }, + { "\xC0\xC0qwerty", 2 + len }, + { "\xC0\xC0qwerty", 2 + len }, + { NULL, 0 }, + { NULL, 0 }, + true + }); + validate_write((string_set) { + { "\xC0\tqwerty", 2 + len }, + { "\xC0\\tqwerty", 3 + len }, + { "\xC0\\tqwerty", 3 + len }, + { "\\uFFFD\\tqwerty", 8 + len }, + { "\\uFFFD\\tqwerty", 8 + len }, + true + }); + validate_read((string_set) { + { "\xC0\tqwerty", 2 + len }, + { "\xC0\tqwerty", 2 + len }, + { "\xC0\\tqwerty", 3 + len }, + { NULL, 0 }, + { NULL, 0 }, + true + }); + } + + + // 3 byte invalid UTF-8 + for (int len = 0; len <= 6; len++) { + validate_write((string_set) { + { "\xE0qwerty", 1 + len }, + { "\xE0qwerty", 1 + len }, + { "\xE0qwerty", 1 + len }, + { "\\uFFFDqwerty", 6 + len }, + { "\\uFFFDqwerty", 6 + len }, + true + }); + validate_read((string_set) { + { "\xE0qwerty", 1 + len }, + { "\xE0qwerty", 1 + len }, + { "\xE0qwerty", 1 + len }, + { NULL, 0 }, + { NULL, 0 }, + true + }); + validate_write((string_set) { + { "\xE0\x81\x81qwerty", 3 + len }, + { "\xE0\x81\x81qwerty", 3 + len }, + { "\xE0\x81\x81qwerty", 3 + len }, + { "\\uFFFD\\uFFFD\\uFFFDqwerty", 18 + len }, + { "\\uFFFD\\uFFFD\\uFFFDqwerty", 18 + len }, + true + }); + validate_read((string_set) { + { "\xE0\x81\x81qwerty", 3 + len }, + { "\xE0\x81\x81qwerty", 3 + len }, + { "\xE0\x81\x81qwerty", 3 + len }, + { NULL, 0 }, + { NULL, 0 }, + true + }); + } + + + // 4 byte invalid UTF-8 + for (int len = 0; len <= 6; len++) { + validate_write((string_set) { + { "\xF0qwerty", 1 + len }, + { "\xF0qwerty", 1 + len }, + { "\xF0qwerty", 1 + len }, + { "\\uFFFDqwerty", 6 + len }, + { "\\uFFFDqwerty", 6 + len }, + true + }); + validate_read((string_set) { + { "\xF0qwerty", 1 + len }, + { "\xF0qwerty", 1 + len }, + { "\xF0qwerty", 1 + len }, + { NULL, 0 }, + { NULL, 0 }, + true + }); + validate_write((string_set) { + { "\xF0\x81\x81\x81qwerty", 4 + len }, + { "\xF0\x81\x81\x81qwerty", 4 + len }, + { "\xF0\x81\x81\x81qwerty", 4 + len }, + { "\\uFFFD\\uFFFD\\uFFFD\\uFFFDqwerty", 24 + len }, + { "\\uFFFD\\uFFFD\\uFFFD\\uFFFDqwerty", 24 + len }, + true + }); + validate_read((string_set) { + { "\xF0\x81\x81\x81qwerty", 4 + len }, + { "\xF0\x81\x81\x81qwerty", 4 + len }, + { "\xF0\x81\x81\x81qwerty", 4 + len }, + { NULL, 0 }, + { NULL, 0 }, + true + }); + } + + + // special case + validate_read((string_set) { + { "qwerty\0", 7 }, + { "qwerty\0", 7 }, + { "qwerty\0", 7 }, + { NULL, 0 }, + { NULL, 0 }, + true + }); + validate_read((string_set) { + { "qwerty\0abc", 10 }, + { "qwerty\0abc", 10 }, + { "qwerty\0abc", 10 }, + { NULL, 0 }, + { NULL, 0 }, + true + }); + validate_read((string_set) { + { "\tqwerty\0", 8 }, + { "\\tqwerty\0", 9 }, + { "\\tqwerty\0", 9 }, + { NULL, 0 }, + { NULL, 0 }, + true + }); + validate_read((string_set) { + { "\tqwerty\0abc", 11 }, + { "\\tqwerty\0abc", 12 }, + { "\\tqwerty\0abc", 12 }, + { NULL, 0 }, + { NULL, 0 }, + true + }); + validate_read((string_set) { + { "\tqwerty\x80", 8 }, + { "\\tqwerty\x80", 9 }, + { "\\tqwerty\x80", 9 }, + { NULL, 0 }, + { NULL, 0 }, + true + }); + validate_read((string_set) { + { "\tqwerty\x80xyz", 11 }, + { "\\tqwerty\x80xyz", 12 }, + { "\\tqwerty\x80xyz", 12 }, + { NULL, 0 }, + { NULL, 0 }, + true + }); + + + // invalid escape + validate_read((string_set) { + { NULL, 0 }, + { "\\T", 2 }, + }); + validate_read((string_set) { + { NULL, 0 }, + { "\\U00E9", 2 }, + }); + validate_read((string_set) { + { NULL, 0 }, + { "\\a", 2 }, + }); + validate_read((string_set) { + { NULL, 0 }, + { "\\e", 2 }, + }); + validate_read((string_set) { + { NULL, 0 }, + { "\\v", 2 }, + }); + validate_read((string_set) { + { NULL, 0 }, + { "\\'", 2 }, + }); + validate_read((string_set) { + { NULL, 0 }, + { "\\?", 2 }, + }); + validate_read((string_set) { + { NULL, 0 }, + { "\\000", 4 }, + }); + validate_read((string_set) { + { NULL, 0 }, + { "\\101", 4 }, + }); + validate_read((string_set) { + { NULL, 0 }, + { "\\x00", 4 }, + }); + validate_read((string_set) { + { NULL, 0 }, + { "\\x41", 4 }, + }); + validate_read((string_set) { + { NULL, 0 }, + { "\\U1234", 6 }, + }); + validate_read((string_set) { + { NULL, 0 }, + { "\\u123Z", 6 }, + }); + validate_read((string_set) { + { NULL, 0 }, + { "\\x1234", 6 }, + }); + + + // invalid high surrogate + validate_read((string_set) { + { NULL, 0 }, + { "\\uDE0A", 6 }, + }); + validate_read((string_set) { + { NULL, 0 }, + { "\\uDE0A\\u0000", 12 }, + }); + + + // no matched low surrogate + validate_read((string_set) { + { NULL, 0 }, + { "\\uD83D", 6 }, + }); + validate_read((string_set) { + { NULL, 0 }, + { "\\uD83D\\", 7 }, + }); + validate_read((string_set) { + { NULL, 0 }, + { "\\uD83D\\u", 8 }, + }); + validate_read((string_set) { + { NULL, 0 }, + { "\\uD83DAAAA", 10 }, + }); + + + // invalid low surrogate + validate_read((string_set) { + { NULL, 0 }, + { "\\uD83D\\u0000", 12 }, + }); + validate_read((string_set) { + { NULL, 0 }, + { "\\uD83D\\uD83D", 12 }, + }); + + + // truncated escape sequence + for (int len = 1; len < 12; len++) { + if (len == 6) continue; + const char *str = "\\u0024\\u0024"; + validate_read((string_set) { + { NULL, 0 }, + { str, len }, + { str, len }, + { str, len }, + { str, len }, + }); + } + +} + + + +/*============================================================================== + * MARK: - Extended Escape + *============================================================================*/ + +/// Validate unquoted key: `read(set.str) == set.esc_non`. +static void validate_str_esc(char quote, string_set set, yyjson_read_flag flg) { +#if !YYJSON_DISABLE_READER && !YYJSON_DISABLE_NON_STANDARD + + string_val *src = &set.str; + string_val *dst = &set.esc_non; + +#if YYJSON_DISABLE_UTF8_VALIDATION + if (src->str && !yy_str_is_utf8(src->str, src->len)) return; +#endif + + usize buf_len = src->len + 2; + char *buf = malloc(buf_len); + buf[0] = quote; + memcpy(buf + 1, src->str, src->len); + buf[buf_len - 1] = quote; + + yyjson_doc *doc = yyjson_read(buf, buf_len, flg); + yyjson_val *val = yyjson_doc_get_root(doc); + if (dst->str) { + yy_assert(yyjson_equals_strn(val, dst->str, dst->len) && + val->uni.str[dst->len] == '\0'); + } else { + yy_assert(!doc); + } + free(buf); + yyjson_doc_free(doc); +#endif +} + +static void test_extended_escape(void) { + + // ---------------------------------- + // double-quoted string + validate_str_esc('\"', (string_set) { + { "ab\\\"xy", 6 }, + { "ab\"xy", 5 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\\"xy", 6 }, + { "ab\"xy", 5 } + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + validate_str_esc('\"', (string_set) { + { "ab\\\'xy", 6 }, + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\\'xy", 6 }, + { "ab\'xy", 5 } + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + validate_str_esc('\"', (string_set) { + { "ab\\", 3 }, + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\", 3 }, + { NULL, 0 } + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + + // ---------------------------------- + // single-quote string + validate_str_esc('\'', (string_set) { + { "ab\\\"xy", 6 }, + { "ab\"xy", 5 } + }, YYJSON_READ_ALLOW_SINGLE_QUOTED_STR); + validate_str_esc('\'', (string_set) { + { "ab\\\"xy", 6 }, + { "ab\"xy", 5 } + }, YYJSON_READ_ALLOW_SINGLE_QUOTED_STR | YYJSON_READ_ALLOW_EXT_ESCAPE); + + validate_str_esc('\'', (string_set) { + { "ab\\\'xy", 6 }, + { "ab\'xy", 5 } + }, YYJSON_READ_ALLOW_SINGLE_QUOTED_STR); + validate_str_esc('\'', (string_set) { + { "ab\\\'xy", 6 }, + { "ab\'xy", 5 } + }, YYJSON_READ_ALLOW_SINGLE_QUOTED_STR | YYJSON_READ_ALLOW_EXT_ESCAPE); + + validate_str_esc('\'', (string_set) { + { "ab\\", 3 }, + { NULL, 0 } + }, YYJSON_READ_ALLOW_SINGLE_QUOTED_STR); + validate_str_esc('\'', (string_set) { + { "ab\\", 3 }, + { NULL, 0 } + }, YYJSON_READ_ALLOW_SINGLE_QUOTED_STR | YYJSON_READ_ALLOW_EXT_ESCAPE); + + + // ---------------------------------- + // single escape + + validate_str_esc('\"', (string_set) { + { "ab\\axy", 6 }, + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\axy", 6 }, + { "ab\axy", 5 } + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + validate_str_esc('\"', (string_set) { + { "ab\\exy", 6 }, + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\exy", 6 }, + { "ab\x1Bxy", 5 } // this is not standard C escape + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + validate_str_esc('\"', (string_set) { + { "ab\\vxy", 6 }, + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\vxy", 6 }, + { "ab\vxy", 5 } + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + validate_str_esc('\"', (string_set) { + { "ab\\?xy", 6 }, + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\?xy", 6 }, + { "ab\?xy", 5 } + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + validate_str_esc('\"', (string_set) { + { "ab\\0xy", 6 }, + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\0xy", 6 }, + { "ab\x00xy", 5 } + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + validate_str_esc('\"', (string_set) { + { "ab\\012xy", 8 }, + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\012xy", 8 }, // oct not allowed + { NULL, 0 } + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + + // ---------------------------------- + // hex escape + + validate_str_esc('\"', (string_set) { + { "ab\\x00xy", 8 }, + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\x00xy", 8 }, + { "ab\x00xy", 5 } + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + validate_str_esc('\"', (string_set) { + { "ab\\x7Fxy", 8 }, + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\x7Fxy", 8 }, // max ascii + { "ab\x7Fxy", 5 } + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + validate_str_esc('\"', (string_set) { + { "ab\\x80xy", 8 }, + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\x80xy", 8 }, // 2-byte utf8 + { "ab\xC2\x80xy", 6 } + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + validate_str_esc('\"', (string_set) { + { "ab\\xFFxy", 8 }, + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\xFFxy", 8 }, // 2-byte utf8 + { "abÿxy", 6 } + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + validate_str_esc('\"', (string_set) { + { "ab\\xPPxy", 8 }, // not hex + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\xPPxy", 8 }, // not hex + { NULL, 0 } + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + validate_str_esc('\"', (string_set) { + { "ab\\X7Fxy", 8 }, + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\X7Fxy", 8 }, // `X` not `x` + { "abX7Fxy", 7 } // just ignore '\' + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + + // ---------------------------------- + // unknown escape + + validate_str_esc('\"', (string_set) { + { "ab\\U1234xy", 10 }, + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\U1234xy", 10 }, + { "abU1234xy", 9 } + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + validate_str_esc('\"', (string_set) { + { "ab\\😀xy", 9 }, + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\😀xy", 9 }, + { "ab😀xy", 8 } + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + validate_str_esc('\"', (string_set) { + { "ab\\1xy", 6 }, + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\1xy", 6 }, + { NULL, 0 } // oct not allow + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + + // ---------------------------------- + // line continuation + + validate_str_esc('\"', (string_set) { + { "ab\\\nxy", 6 }, + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\\nxy", 6 }, + { "abxy", 4 } + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + validate_str_esc('\"', (string_set) { + { "ab\\\rxy", 6 }, + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\\rxy", 6 }, + { "abxy", 4 } + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + validate_str_esc('\"', (string_set) { + { "ab\\\r\nxy", 7 }, + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\\r\nxy", 7 }, + { "abxy", 4 } + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + validate_str_esc('\"', (string_set) { + { "ab\\\n\rxy", 7 }, + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\\n\rxy", 7 }, + { NULL, 0 } + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + validate_str_esc('\"', (string_set) { + { "ab\\\xE2\x80\xA8xy", 8 }, // <LS> + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\\xE2\x80\xA8xy", 8 }, // <LS> + { "abxy", 4 } + }, YYJSON_READ_ALLOW_EXT_ESCAPE); + + validate_str_esc('\"', (string_set) { + { "ab\\\xE2\x80\xA9xy", 8 }, // <PS> + { NULL, 0 } + }, 0); + validate_str_esc('\"', (string_set) { + { "ab\\\xE2\x80\xA9xy", 8 }, // <PS> + { "abxy", 4 } + }, YYJSON_READ_ALLOW_EXT_ESCAPE); +} + + + +/*============================================================================== + * MARK: - Single-quoted String + *============================================================================*/ + +/// Validate single-quoted string: `read(set.str) == set.esc_non`. +static void validate_str_sq(string_set set) { +#if !YYJSON_DISABLE_READER && !YYJSON_DISABLE_NON_STANDARD + + string_val *src = &set.str; + string_val *dst = &set.esc_non; + +#if YYJSON_DISABLE_UTF8_VALIDATION + if (src->str && !yy_str_is_utf8(src->str, src->len)) return; +#endif + + usize buf_len; + char *buf, *cur; + yyjson_doc *doc; + yyjson_val *key, *val, *arr, *obj; + yyjson_obj_iter iter; + + // single str + buf_len = src->len + 2; + cur = buf = malloc(buf_len); + cur[0] = '\''; cur += 1; + memcpy(cur, src->str, src->len); cur += src->len; + cur[0] = '\''; cur += 1; + + doc = yyjson_read(buf, buf_len, YYJSON_READ_ALLOW_SINGLE_QUOTED_STR); + val = yyjson_doc_get_root(doc); + if (dst->str) { + yy_assert(yyjson_equals_strn(val, dst->str, dst->len) && + val->uni.str[dst->len] == '\0'); + +#if !YYJSON_DISABLE_WRITER + // write again + usize ret_len; + char *ret = yyjson_write(doc, 0, &ret_len); + yyjson_doc *ret_doc = yyjson_read(ret, ret_len, 0); + val = yyjson_doc_get_root(ret_doc); + yy_assert(yyjson_equals_strn(val, dst->str, dst->len)); + free(ret); + yyjson_doc_free(ret_doc); +#endif + } else { + yy_assert(!doc); + } + free(buf); + yyjson_doc_free(doc); + + + // str in array + for (int pretty = 0; pretty <= 1; pretty++) { + buf_len = (src->len + 2) * 2 + 3 + pretty; + cur = buf = malloc(buf_len); + memcpy(cur, pretty ? "[ '" : "['", 2 + pretty); cur += 2 + pretty; + memcpy(cur, src->str, src->len); cur += src->len; + memcpy(cur, "','", 3); cur += 3; + memcpy(cur, src->str, src->len); cur += src->len; + memcpy(cur, "']", 2); cur += 2; + + doc = yyjson_read(buf, buf_len, YYJSON_READ_ALLOW_SINGLE_QUOTED_STR); + arr = yyjson_doc_get_root(doc); + val = yyjson_arr_get(arr, 0); + if (dst->str) { + yy_assert(yyjson_equals_strn(val, dst->str, dst->len) && + val->uni.str[dst->len] == '\0' && + yyjson_equals(val, yyjson_arr_get(arr, 1))); + } else { + yy_assert(!doc); + } + free(buf); + yyjson_doc_free(doc); + } + + + // str in object key + for (int pretty = 0; pretty <= 1; pretty++) { + buf_len = (src->len + 2) * 2 + 3 + pretty; + cur = buf = malloc(buf_len); + memcpy(cur, pretty ? "{ '" : "{'", 2 + pretty); cur += 2 + pretty; + memcpy(cur, src->str, src->len); cur += src->len; + memcpy(cur, "':'", 3); cur += 3; + memset(cur, ' ', src->len); cur += src->len; + memcpy(cur, "'}", 2); cur += 2; + + doc = yyjson_read(buf, buf_len, YYJSON_READ_ALLOW_SINGLE_QUOTED_STR); + obj = yyjson_doc_get_root(doc); + iter = yyjson_obj_iter_with(obj); + key = yyjson_obj_iter_next(&iter); + val = yyjson_obj_iter_get_val(key); + if (dst->str) { + yy_assert(yyjson_equals_strn(key, dst->str, dst->len) && + key->uni.str[dst->len] == '\0'); + } else { + yy_assert(!doc); + } + free(buf); + yyjson_doc_free(doc); + } + + // str in object value + for (int pretty = 0; pretty <= 1; pretty++) { + buf_len = (src->len + 2) * 2 + 3 + pretty; + cur = buf = malloc(buf_len); + memcpy(cur, pretty ? "{ '" : "{'", 2 + pretty); cur += 2 + pretty; + memset(cur, ' ', src->len); cur += src->len; + memcpy(cur, "':'", 3); cur += 3; + memcpy(cur, src->str, src->len); cur += src->len; + memcpy(cur, "'}", 2); cur += 2; + + doc = yyjson_read(buf, buf_len, YYJSON_READ_ALLOW_SINGLE_QUOTED_STR); + obj = yyjson_doc_get_root(doc); + iter = yyjson_obj_iter_with(obj); + key = yyjson_obj_iter_next(&iter); + val = yyjson_obj_iter_get_val(key); + if (dst->str) { + yy_assert(yyjson_equals_strn(val, dst->str, dst->len) && + val->uni.str[dst->len] == '\0'); + } else { + yy_assert(!doc); + } + free(buf); + yyjson_doc_free(doc); + } +#endif +} + +static void test_single_quoted_string(void) { + validate_str_sq((string_set) { + { "", 0 }, + { "", 0 } + }); + validate_str_sq((string_set) { + { "abcd", 4 }, + { "abcd", 4 } + }); + validate_str_sq((string_set) { + { "ab\"cd", 5 }, + { "ab\"cd", 5 } + }); + validate_str_sq((string_set) { + { "ab'cd", 5 }, + { NULL, 0 } + }); + validate_str_sq((string_set) { + { "ab\\'cd", 6 }, + { "ab\'cd", 5 } + }); + validate_str_sq((string_set) { + { "ab\x00cd", 5 }, + { NULL, 0 } + }); + validate_str_sq((string_set) { + { "abcdefghijklmnopqrstuvwxyz😀\\u0000😀", 40 }, + { "abcdefghijklmnopqrstuvwxyz😀\x00😀", 35 } + }); +} + + + +/*============================================================================== + * MARK: - Unquoted Key + *============================================================================*/ + +/// Validate unquoted key: `read(set.str) == set.esc_non`. +static void validate_str_uq(string_set set, yyjson_read_flag flg) { +#if !YYJSON_DISABLE_READER && !YYJSON_DISABLE_NON_STANDARD + + string_val *src = &set.str; + string_val *dst = &set.esc_non; + +#if YYJSON_DISABLE_UTF8_VALIDATION + if (src->str && !yy_str_is_utf8(src->str, src->len)) return; +#endif + + usize buf_len; + char *buf, *cur; + yyjson_doc *doc; + yyjson_val *key, *val, *arr, *obj; + yyjson_obj_iter iter; + + // str in object key + for (int pretty = 0; pretty <= 1; pretty++) { + buf_len = 1 + pretty + src->len + pretty + 3; + cur = buf = malloc(buf_len); + memcpy(cur, pretty ? "{ " : "{", 1 + pretty); cur += 1 + pretty; + memcpy(cur, src->str, src->len); cur += src->len; + memcpy(cur, pretty ? " " : "", pretty); cur += pretty; + memcpy(cur, ":0}", 3); + + flg |= YYJSON_READ_ALLOW_UNQUOTED_KEY; + doc = yyjson_read(buf, buf_len, flg); + obj = yyjson_doc_get_root(doc); + iter = yyjson_obj_iter_with(obj); + key = yyjson_obj_iter_next(&iter); + val = yyjson_obj_iter_get_val(key); + if (dst->str) { + yy_assert(yyjson_equals_strn(key, dst->str, dst->len) && + key->uni.str[dst->len] == '\0'); + } else { + yy_assert(!doc); + } + free(buf); + yyjson_doc_free(doc); + } +#endif +} + +static void test_unquoted_key(void) { + + validate_str_uq((string_set) { + { "abcd", 4 }, + { "abcd", 4 } + }, 0); + + validate_str_uq((string_set) { + { "ab-cd", 5 }, // `-` is not allowed + { NULL, 0 } + }, 0); + + validate_str_uq((string_set) { + { "1", 1 }, // cannot start with digit + { NULL, 0 } + }, 0); + + validate_str_uq((string_set) { + { "123abc", 6 }, // cannot start with digit + { NULL, 0 } + }, 0); + + validate_str_uq((string_set) { + { ".abc", 4 }, // cannot start with dot + { NULL, 0 } + }, 0); + + validate_str_uq((string_set) { + { "abc\n", 4 }, // JSON space + { "abc", 3 } + }, 0); + + validate_str_uq((string_set) { + { "ab\0cd", 5 }, // invalid '\0' + { NULL, 0 } + }, 0); + + validate_str_uq((string_set) { + { "\\u0000", 6 }, // escaped '\0' + { "\0", 1 } + }, 0); + + validate_str_uq((string_set) { + { "abc\f", 4 }, // extended space <FF> + { NULL, 0 } + }, 0); + + validate_str_uq((string_set) { + { "$", 1 }, // char `$` + { "$", 1 } + }, 0); + + validate_str_uq((string_set) { + { "_", 1 }, // char `_` + { "_", 1 } + }, 0); + + validate_str_uq((string_set) { + { "#", 1 }, // char `#` + { NULL, 0 } + }, 0); + + validate_str_uq((string_set) { + { "@", 1 }, // char `@` + { NULL, 0 } + }, 0); + + validate_str_uq((string_set) { + { "abc\f", 4 }, // extended space <FF> with flag + { "abc", 3 } + }, YYJSON_READ_ALLOW_EXT_WHITESPACE); + + validate_str_uq((string_set) { + { "abc\xC2\xA0", 5 }, // extended unicode space <NBSP> + { "abc\xC2\xA0", 5 } + }, 0); + + validate_str_uq((string_set) { + { "abc\xC2\xA0", 5 }, // extended unicode space <NBSP> with flag + { "abc", 3 } + }, YYJSON_READ_ALLOW_EXT_WHITESPACE); + + validate_str_uq((string_set) { + { "\\u679Cabc\xC2\xA0", 11 }, // extended unicode space <NBSP> + { "æžœabc\xC2\xA0", 8 } + }, 0); + + validate_str_uq((string_set) { + { "\\u679Cabc\xC2\xA0", 11 }, // extended unicode space <NBSP> with flag + { "æžœabc", 6 } + }, YYJSON_READ_ALLOW_EXT_WHITESPACE); + + validate_str_uq((string_set) { + { "ab\\nc", 4 }, // single escape + { NULL, 0 } + }, 0); + + validate_str_uq((string_set) { + { "\\u00E9\\u679Cabcd", 16 }, // unicode escape prefix + { "é果abcd", 9 } + }, 0); + + validate_str_uq((string_set) { + { "ab\\u00E9\\u679Ccd", 16 }, // unicode escape + { "abé果cd", 9 } + }, 0); + + validate_str_uq((string_set) { + { "ab\\uASDFcd", 10 }, // invalid unicode escape + { NULL, 0 } + }, 0); + + validate_str_uq((string_set) { + { "\\uD83D\\uDE00abcdÄ果", 16 }, // unicode escape prefix + { "😀abcdÄ", 8 } + }, 0); + + validate_str_uq((string_set) { + {"ab\\uD83D\\uDE00cdÄ果", 16}, // unicode escape + {"ab😀cdÄ", 8} + }, 0); + + validate_str_uq((string_set) { + {"ab\\uD83D\\uFFFFcdÄ果", 16}, // invalid unicode escape + {NULL, 0} + }, 0); + + validate_str_uq((string_set) { + {"\\uDE0Aabc", 9}, // invalid high surrogate + {NULL, 0} + }, 0); + + validate_str_uq((string_set) { + {"\\uD83D\\uXXXX", 12}, // invalid low surrogate + {NULL, 0} + }, 0); + + validate_str_uq((string_set) { + {"\\uD83Dabc", 9}, // no low surrogate + {NULL, 0} + }, 0); + + validate_str_uq((string_set) { + { "abcdefghijklmnopqrstuvwxyz\\u00E9abcdefghijklmnopqrstuvwxyz😀果éabc", 70 }, // long string + { "abcdefghijklmnopqrstuvwxyzéabcdefghijklmnopqrstuvwxyz😀果éabc", 66 } + }, 0); + + validate_str_uq((string_set) { + { "😀Check✅©2020®Ñблокоà¹à¸­à¸›à¹€à¸›à¸´à¹‰à¸¥ãƒªãƒ³ã‚´ØªÙاحة蘋果사과", 90 }, // utf8 + { "😀Check✅©2020®Ñблокоà¹à¸­à¸›à¹€à¸›à¸´à¹‰à¸¥ãƒªãƒ³ã‚´ØªÙاحة蘋果사과", 90 } + }, 0); + + validate_str_uq((string_set) { + { "PPPPPQQQQQ\\u00E9PPPPPQQQQQ\x80", 27 }, // invalid UTF-8 + { NULL, 0 } + }, 0); + + validate_str_uq((string_set) { + { "\x80PPPPPQQQQQ\\u00E9PPPPPQQQQQ\x80", 28 }, // invalid UTF-8 + { NULL, 0 } + }, 0); + + validate_str_uq((string_set) { + { "\x80PPPPPQQQQQ\\u00E9PPPPPQQQQQ\x80", 28 }, // invalid UTF-8 + { "\x80PPPPPQQQQQéPPPPPQQQQQ\x80", 24 } + }, YYJSON_READ_ALLOW_INVALID_UNICODE); +} + +/*----------------------------------------------------------------------------*/ +/* MARK: - Invalid Unicode Flags */ +/*----------------------------------------------------------------------------*/ + +static void test_invalid_unicode_flags(void) { +#if !YYJSON_DISABLE_READER + /* unpaired surrogate */ + char inv_sur_hi[8 + YYJSON_PADDING_SIZE]; + memcpy(inv_sur_hi, "\"\\uD83D\"", 8); + memset(inv_sur_hi + 8, 0, YYJSON_PADDING_SIZE); + yyjson_doc *doc = yyjson_read(inv_sur_hi, 8, 0); + yy_assert(!doc); + + doc = yyjson_read(inv_sur_hi, 8, YYJSON_READ_ALLOW_INVALID_SURROGATE); + yy_assert(doc); + yyjson_val *val = yyjson_doc_get_root(doc); + const char *str = yyjson_get_str(val); + yy_assert(str && (u8)str[0] == 0xED && (u8)str[1] == 0xA0 && + (u8)str[2] == 0xBD && str[3] == '\0'); + yy_assert(yyjson_get_subtype(val) == YYJSON_SUBTYPE_UNIERR); + yyjson_doc_free(doc); + + doc = yyjson_read(inv_sur_hi, 8, + YYJSON_READ_ALLOW_INVALID_SURROGATE | + YYJSON_READ_REPLACE_INVALID_UNICODE); + yy_assert(doc); + val = yyjson_doc_get_root(doc); + str = yyjson_get_str(val); + yy_assert(str && (u8)str[0] == 0xEF && (u8)str[1] == 0xBF && + (u8)str[2] == 0xBD && str[3] == '\0'); + yy_assert(yyjson_get_subtype(val) == YYJSON_SUBTYPE_UNIERR); + yyjson_doc_free(doc); + + /* invalid UTF-8 byte */ + char inv_utf8[4 + YYJSON_PADDING_SIZE]; + inv_utf8[0] = '"'; + inv_utf8[1] = (char)0x80; + inv_utf8[2] = '"'; + inv_utf8[3] = '\0'; + memset(inv_utf8 + 3, 0, YYJSON_PADDING_SIZE); + + yy_assert(!yyjson_read(inv_utf8, 3, 0)); + + doc = yyjson_read(inv_utf8, 3, YYJSON_READ_ALLOW_INVALID_UNICODE); + yy_assert(doc); + val = yyjson_doc_get_root(doc); + str = yyjson_get_str(val); + yy_assert(str && (u8)str[0] == 0x80 && str[1] == '\0'); + yy_assert(yyjson_get_subtype(val) == YYJSON_SUBTYPE_UNIERR); + yyjson_doc_free(doc); + + doc = yyjson_read(inv_utf8, 3, YYJSON_READ_REPLACE_INVALID_UNICODE); + yy_assert(doc); + val = yyjson_doc_get_root(doc); + str = yyjson_get_str(val); + yy_assert(str && (u8)str[0] == 0x80 && str[1] == '\0'); + yy_assert(yyjson_get_subtype(val) == YYJSON_SUBTYPE_UNIERR); + yyjson_doc_free(doc); + + /* malformed \u with no digits */ + char inv_esc1[4 + YYJSON_PADDING_SIZE]; + memcpy(inv_esc1, "\"\\u\"", 4); + memset(inv_esc1 + 4, 0, YYJSON_PADDING_SIZE); + doc = yyjson_read(inv_esc1, 4, YYJSON_READ_REPLACE_INVALID_UNICODE); + yy_assert(doc); + val = yyjson_doc_get_root(doc); + str = yyjson_get_str(val); + yy_assert(str && str[0] == '\\' && str[1] == 'u' && str[2] == '\0'); + yy_assert(yyjson_get_len(val) == 2); + yy_assert(yyjson_get_subtype(val) == YYJSON_SUBTYPE_UNIERR); + yyjson_doc_free(doc); + + /* malformed \u with non-hex char */ + char inv_esc2[5 + YYJSON_PADDING_SIZE]; + memcpy(inv_esc2, "\"\\uX\"", 5); + memset(inv_esc2 + 5, 0, YYJSON_PADDING_SIZE); + doc = yyjson_read(inv_esc2, 5, YYJSON_READ_REPLACE_INVALID_UNICODE); + yy_assert(doc); + val = yyjson_doc_get_root(doc); + str = yyjson_get_str(val); + yy_assert(str && str[0] == '\\' && str[1] == 'u' && str[2] == '\0'); + yy_assert(yyjson_get_len(val) == 2); + yy_assert(yyjson_get_subtype(val) == YYJSON_SUBTYPE_UNIERR); + yyjson_doc_free(doc); + + /* malformed \u with truncated trailing hex digits */ + char inv_esc3[8 + YYJSON_PADDING_SIZE]; + memcpy(inv_esc3, "\"\\u123G\"", 8); + memset(inv_esc3 + 8, 0, YYJSON_PADDING_SIZE); + doc = yyjson_read(inv_esc3, 8, YYJSON_READ_REPLACE_INVALID_UNICODE); + yy_assert(doc); + val = yyjson_doc_get_root(doc); + str = yyjson_get_str(val); + yy_assert(str && str[0] == '\\' && str[1] == 'u' && + str[2] == '1' && str[3] == '2' && str[4] == '3' && str[5] == '\0'); + yy_assert(yyjson_get_len(val) == 5); + yy_assert(yyjson_get_subtype(val) == YYJSON_SUBTYPE_UNIERR); + yyjson_doc_free(doc); + + /* malformed surrogate pair with incomplete low surrogate */ + char inv_sur_pair[10 + YYJSON_PADDING_SIZE]; + memcpy(inv_sur_pair, "\"\\uD800\\u\"", 10); + memset(inv_sur_pair + 10, 0, YYJSON_PADDING_SIZE); + doc = yyjson_read(inv_sur_pair, 10, YYJSON_READ_REPLACE_INVALID_UNICODE); + yy_assert(doc); + val = yyjson_doc_get_root(doc); + str = yyjson_get_str(val); + yy_assert(str && (u8)str[0] == 0xEF && (u8)str[1] == 0xBF && + (u8)str[2] == 0xBD && str[3] == '\0'); + yy_assert(yyjson_get_len(val) == 3); + yy_assert(yyjson_get_subtype(val) == YYJSON_SUBTYPE_UNIERR); + yyjson_doc_free(doc); +#endif +} + + + +/*============================================================================== + * MARK: - Entry + *============================================================================*/ + +yy_test_case(test_string) { + test_read_write(); + test_extended_escape(); + test_single_quoted_string(); + test_invalid_unicode_flags(); + test_unquoted_key(); +} diff --git a/lib/yyjson-0.12.0/test/util/goo_double_conv.c b/lib/yyjson-0.12.0/test/util/goo_double_conv.c new file mode 100644 index 00000000000..994d781d51b --- /dev/null +++ b/lib/yyjson-0.12.0/test/util/goo_double_conv.c @@ -0,0 +1,6185 @@ +// Source code from: https://github.com/google/double-conversion (v3.3.0) +// Rewritten from C++ to a single C file for easier integration. +// Original code released under BSD 3-Clause, see full license below. + + +// Copyright 2006-2011 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +#include "goo_double_conv.h" + +#include <stdlib.h> +#include <stdint.h> +#include <stdbool.h> +#include <string.h> +#include <limits.h> +#include <assert.h> + + + +/// ============================================================================ +/// Compile Hint Begin +/// ============================================================================ + +/* warning suppress begin */ +#if defined(__clang__) +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wunused-function" +# pragma clang diagnostic ignored "-Wunused-parameter" +# pragma clang diagnostic ignored "-Wunused-label" +# pragma clang diagnostic ignored "-Wunused-macros" +# pragma clang diagnostic ignored "-Wunused-variable" +#elif defined(__GNUC__) +# if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) +# pragma GCC diagnostic push +# endif +# pragma GCC diagnostic ignored "-Wunused-function" +# pragma GCC diagnostic ignored "-Wunused-parameter" +# pragma GCC diagnostic ignored "-Wunused-label" +# pragma GCC diagnostic ignored "-Wunused-macros" +# pragma GCC diagnostic ignored "-Wunused-variable" +#elif defined(_MSC_VER) +# pragma warning(push) +# pragma warning(disable:4100) /* unreferenced formal parameter */ +# pragma warning(disable:4102) /* unreferenced label */ +# pragma warning(disable:4127) /* conditional expression is constant */ +# pragma warning(disable:4706) /* assignment within conditional expression */ +#endif + + + +/// ============================================================================ +/// ceil.c +/// ============================================================================ + +static void fp_force_eval(double x) { + volatile double y; + y = x; +} + +#if FLT_EVAL_METHOD==0 || FLT_EVAL_METHOD==1 +#define EPS DBL_EPSILON +#elif FLT_EVAL_METHOD==2 +#define EPS LDBL_EPSILON +#endif +static const double toint = 1/EPS; + +static double fp_ceil(double x) { + uint64_t u; + memcpy((void *)&u, (void *)&x, sizeof(uint64_t)); + + int e = u >> 52 & 0x7ff; + double y; + + if (e >= 0x3ff+52 || x == 0) + return x; + /* y = int(x) - x, where int(x) is an integer neighbor of x */ + if (u >> 63) + y = x - toint + toint - x; + else + y = x + toint - toint - x; + /* special case because of non-nearest rounding modes */ + if (e <= 0x3ff-1) { + fp_force_eval(y); + return u >> 63 ? -0.0 : 1; + } + if (y < 0) + return x + y + 1; + return x + y; +} + + + +/// ============================================================================ +/// utils.h +/// ============================================================================ + +#ifndef MAX +#define MAX(a, b) ((a) > (b) ? (a) : (b)) +#endif + +#ifndef MIN +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#endif + +// For C++11 and C23 compatibility +#if __cplusplus >= 201103L || __STDC_VERSION__ >= 202311L +#define DOUBLE_CONVERSION_NULLPTR nullptr +#else +#define DOUBLE_CONVERSION_NULLPTR NULL +#endif + +// Use DOUBLE_CONVERSION_NON_PREFIXED_MACROS to get unprefixed macros as was +// the case in double-conversion releases prior to 3.1.6 + +#ifndef DOUBLE_CONVERSION_ASSERT +#define DOUBLE_CONVERSION_ASSERT(condition) assert(condition) +#endif +#if defined(DOUBLE_CONVERSION_NON_PREFIXED_MACROS) && !defined(ASSERT) +#define ASSERT DOUBLE_CONVERSION_ASSERT +#endif + +#ifndef DOUBLE_CONVERSION_UNIMPLEMENTED +#define DOUBLE_CONVERSION_UNIMPLEMENTED() (abort()) +#endif +#if defined(DOUBLE_CONVERSION_NON_PREFIXED_MACROS) && !defined(UNIMPLEMENTED) +#define UNIMPLEMENTED DOUBLE_CONVERSION_UNIMPLEMENTED +#endif + +#ifndef DOUBLE_CONVERSION_NO_RETURN +#ifdef _MSC_VER +#define DOUBLE_CONVERSION_NO_RETURN __declspec(noreturn) +#else +#define DOUBLE_CONVERSION_NO_RETURN __attribute__((noreturn)) +#endif +#endif +#if defined(DOUBLE_CONVERSION_NON_PREFIXED_MACROS) && !defined(NO_RETURN) +#define NO_RETURN DOUBLE_CONVERSION_NO_RETURN +#endif + +#ifndef DOUBLE_CONVERSION_UNREACHABLE +#ifdef _MSC_VER +void DOUBLE_CONVERSION_NO_RETURN abort_noreturn(); +static void abort_noreturn() { abort(); } +#define DOUBLE_CONVERSION_UNREACHABLE() (abort_noreturn()) +#else +#define DOUBLE_CONVERSION_UNREACHABLE() (abort()) +#endif +#endif +#if defined(DOUBLE_CONVERSION_NON_PREFIXED_MACROS) && !defined(UNREACHABLE) +#define UNREACHABLE DOUBLE_CONVERSION_UNREACHABLE +#endif + +// Not all compilers support __has_attribute and combining a check for both +// ifdef and __has_attribute on the same preprocessor line isn't portable. +#ifdef __has_attribute +# define DOUBLE_CONVERSION_HAS_ATTRIBUTE(x) __has_attribute(x) +#else +# define DOUBLE_CONVERSION_HAS_ATTRIBUTE(x) 0 +#endif + +#ifndef DOUBLE_CONVERSION_UNUSED +#if DOUBLE_CONVERSION_HAS_ATTRIBUTE(unused) +#define DOUBLE_CONVERSION_UNUSED __attribute__((unused)) +#else +#define DOUBLE_CONVERSION_UNUSED +#endif +#endif +#if defined(DOUBLE_CONVERSION_NON_PREFIXED_MACROS) && !defined(UNUSED) +#define UNUSED DOUBLE_CONVERSION_UNUSED +#endif + +#if DOUBLE_CONVERSION_HAS_ATTRIBUTE(uninitialized) +#define DOUBLE_CONVERSION_STACK_UNINITIALIZED __attribute__((uninitialized)) +#else +#define DOUBLE_CONVERSION_STACK_UNINITIALIZED +#endif +#if defined(DOUBLE_CONVERSION_NON_PREFIXED_MACROS) && !defined(STACK_UNINITIALIZED) +#define STACK_UNINITIALIZED DOUBLE_CONVERSION_STACK_UNINITIALIZED +#endif + +// Double operations detection based on target architecture. +// Linux uses a 80bit wide floating point stack on x86. This induces double +// rounding, which in turn leads to wrong results. +// An easy way to test if the floating-point operations are correct is to +// evaluate: 89255.0/1e22. If the floating-point stack is 64 bits wide then +// the result is equal to 89255e-22. +// The best way to test this, is to create a division-function and to compare +// the output of the division with the expected result. (Inlining must be +// disabled.) +// On Linux,x86 89255e-22 != Div_double(89255.0/1e22) +// +// For example: +/* +// -- in div.c +double Div_double(double x, double y) { return x / y; } + +// -- in main.c +double Div_double(double x, double y); // Forward declaration. + +int main(int argc, char** argv) { + return Div_double(89255.0, 1e22) == 89255e-22; +} +*/ +// Run as follows ./main || echo "correct" +// +// If it prints "correct" then the architecture should be here, in the "correct" section. +#if defined(_M_X64) || defined(__x86_64__) || \ + defined(__ARMEL__) || defined(__avr32__) || defined(_M_ARM) || defined(_M_ARM64) || \ + defined(__hppa__) || defined(__ia64__) || \ + defined(__mips__) || \ + defined(__loongarch__) || \ + defined(__nios2__) || defined(__ghs) || \ + defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \ + defined(_POWER) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \ + defined(__sparc__) || defined(__sparc) || defined(__s390__) || \ + defined(__SH4__) || defined(__alpha__) || \ + defined(_MIPS_ARCH_MIPS32R2) || defined(__ARMEB__) ||\ + defined(__AARCH64EL__) || defined(__aarch64__) || defined(__AARCH64EB__) || \ + defined(__riscv) || defined(__e2k__) || \ + defined(__or1k__) || defined(__arc__) || defined(__ARC64__) || \ + defined(__microblaze__) || defined(__XTENSA__) || \ + defined(__EMSCRIPTEN__) || defined(__wasm32__) +#define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 +#elif defined(__mc68000__) || \ + defined(__pnacl__) || defined(__native_client__) +#undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS +#elif defined(_M_IX86) || defined(__i386__) || defined(__i386) +#if defined(_WIN32) +// Windows uses a 64bit wide floating point stack. +#define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 +#else +#undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS +#endif // _WIN32 +#else +#error Target architecture was not detected as supported by Double-Conversion. +#endif +#if defined(DOUBLE_CONVERSION_NON_PREFIXED_MACROS) && !defined(CORRECT_DOUBLE_OPERATIONS) +#define CORRECT_DOUBLE_OPERATIONS DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS +#endif + + +typedef uint16_t uc16; +typedef const char *Iterator; + + +// The following macro works on both 32 and 64-bit platforms. +// Usage: instead of writing 0x1234567890123456 +// write DOUBLE_CONVERSION_UINT64_2PART_C(0x12345678,90123456); +#define DOUBLE_CONVERSION_UINT64_2PART_C(a, b) ((((uint64_t)(a) << 32) + (uint64_t)0x##b##u)) +#if defined(DOUBLE_CONVERSION_NON_PREFIXED_MACROS) && !defined(UINT64_2PART_C) +#define UINT64_2PART_C DOUBLE_CONVERSION_UINT64_2PART_C +#endif + +// The expression DOUBLE_CONVERSION_ARRAY_SIZE(a) is a compile-time constant of type +// size_t which represents the number of elements of the given +// array. You should only use DOUBLE_CONVERSION_ARRAY_SIZE on statically allocated +// arrays. +#ifndef DOUBLE_CONVERSION_ARRAY_SIZE +#define DOUBLE_CONVERSION_ARRAY_SIZE(a) \ + ((sizeof(a) / sizeof(*(a))) / \ + (size_t)(!(sizeof(a) % sizeof(*(a))))) +#endif +#if defined(DOUBLE_CONVERSION_NON_PREFIXED_MACROS) && !defined(ARRAY_SIZE) +#define ARRAY_SIZE DOUBLE_CONVERSION_ARRAY_SIZE +#endif + +static int StrLength(const char *string) { + size_t length = strlen(string); + DOUBLE_CONVERSION_ASSERT(length == (size_t)((int)(length))); + return (int)(length); +} + + + +// This is a simplified version of V8's Vector class. +typedef struct Vector { + char *start; + int length; +} Vector; + +static void Vector_init(Vector *vec, char *data, int len) { + DOUBLE_CONVERSION_ASSERT(len == 0 || (len > 0 && data != DOUBLE_CONVERSION_NULLPTR)); + vec->start = data; + vec->length = len; +} + +static Vector Vector_make(char *data, int len) { + Vector vec; + Vector_init(&vec, data, len); + return vec; +} + +// Returns a vector using the same backing storage as this one, +// spanning from and including 'from', to but not including 'to'. +static Vector Vector_SubVector(Vector *vec, int from, int to) { + DOUBLE_CONVERSION_ASSERT(to <= vec->length); + DOUBLE_CONVERSION_ASSERT(from < to); + DOUBLE_CONVERSION_ASSERT(0 <= from); + return Vector_make(vec->start + from, to - from); +} + +// Returns the length of the vector. +static int Vector_length(Vector *vec) { + return vec->length; +} + +// Returns whether or not the vector is empty. +static bool Vector_is_empty(Vector *vec) { + return vec->length == 0; +} + +// Returns the pointer to the start of the data in the vector. +static char *Vector_start(Vector *vec) { + return vec->start; +} + +// Access individual vector elements +static char Vector_at(Vector *vec, int index) { + return vec->start[index]; +} + +static char Vector_first(Vector *vec) { + return vec->start[0]; +} + +static char Vector_last(Vector *vec) { + return vec->start[vec->length - 1]; +} + +static void Vector_pop_back(Vector *vec) { + DOUBLE_CONVERSION_ASSERT(!Vector_is_empty(vec)); + vec->length--; +} + + + +// Helper class for building result strings in a character buffer. The +// purpose of the class is to use safe operations that checks the +// buffer bounds on all operations in debug mode. +typedef struct StringBuilder { + Vector buffer; + int position; +} StringBuilder; + +static void StringBuilder_init(StringBuilder *sb, char *buffer, int buffer_size) { + sb->buffer = Vector_make(buffer, buffer_size); + sb->position = 0; +} + +static StringBuilder StringBuilder_make(char *buffer, int buffer_size) { + StringBuilder sb; + StringBuilder_init(&sb, buffer, buffer_size); + return sb; +} + +static bool StringBuilder_is_finalized(StringBuilder *sb) { + return sb->position < 0; +} + +// Finalize the string by 0-terminating it and returning the buffer. +static char *StringBuilder_Finalize(StringBuilder *sb) { + DOUBLE_CONVERSION_ASSERT(!StringBuilder_is_finalized(sb) && sb->position < sb->buffer.length); + sb->buffer.start[sb->position] = '\0'; + // Make sure nobody managed to add a 0-character to the + // buffer while building the string. + DOUBLE_CONVERSION_ASSERT(strlen(sb->buffer.start) == (size_t)(sb->position)); + sb->position = -1; + DOUBLE_CONVERSION_ASSERT(StringBuilder_is_finalized(sb)); + return Vector_start(&sb->buffer); +} + +static int StringBuilder_size(StringBuilder *sb) { + return sb->buffer.length; +} + +// Get the current position in the builder. +static int StringBuilder_position(StringBuilder *sb) { + DOUBLE_CONVERSION_ASSERT(!StringBuilder_is_finalized(sb)); + return sb->position; +} + +// Reset the position. +static void StringBuilder_Reset(StringBuilder *sb) { + sb->position = 0; +} + +// Add a single character to the builder. It is not allowed to add +// 0-characters; use the Finalize() method to terminate the string +// instead. +static void StringBuilder_AddCharacter(StringBuilder *sb, char c) { + DOUBLE_CONVERSION_ASSERT(c != '\0'); + DOUBLE_CONVERSION_ASSERT(!StringBuilder_is_finalized(sb) && sb->position < sb->buffer.length); + sb->buffer.start[sb->position++] = c; +} + +// Add the first 'n' characters of the given string 's' to the +// builder. The input string must have enough characters. +static void StringBuilder_AddSubstring(StringBuilder *sb, const char* s, int n) { + DOUBLE_CONVERSION_ASSERT(!StringBuilder_is_finalized(sb) && sb->position + n < sb->buffer.length); + DOUBLE_CONVERSION_ASSERT((size_t)(n) <= strlen(s)); + memmove(sb->buffer.start + sb->position, s, (size_t)n); + sb->position += n; +} + +// Add an entire string to the builder. Uses strlen() internally to +// compute the length of the input string. +static void StringBuilder_AddString(StringBuilder *sb, const char* s) { + StringBuilder_AddSubstring(sb, s, StrLength(s)); +} + +// Add character padding to the builder. If count is non-positive, +// nothing is added to the builder. +static void StringBuilder_AddPadding(StringBuilder *sb, char c, int count) { + for (int i = 0; i < count; i++) { + StringBuilder_AddCharacter(sb, c); + } +} + + + +/// ============================================================================ +/// diy-fp.h +/// ============================================================================ + +static const uint64_t DiyFp_kUint64MSB = DOUBLE_CONVERSION_UINT64_2PART_C(0x80000000, 00000000); +static const int DiyFp_kSignificandSize = 64; + +// This "Do It Yourself Floating Point" class implements a floating-point number +// with a uint64 significand and an int exponent. Normalized DiyFp numbers will +// have the most significant bit of the significand set. +// Multiplication and Subtraction do not normalize their results. +// DiyFp store only non-negative numbers and are not designed to contain special +// doubles (NaN and Infinity). +typedef struct DiyFp { + uint64_t f; + int32_t e; +} DiyFp; + +static void DiyFp_init(DiyFp *fp, uint64_t significand, int32_t exponent) { + fp->f = significand; + fp->e = exponent; +} + +static DiyFp DiyFp_make(uint64_t significand, int32_t exponent) { + DiyFp fp; + DiyFp_init(&fp, significand, exponent); + return fp; +} + +// this -= other. +// The exponents of both numbers must be the same and the significand of this +// must be greater or equal than the significand of other. +// The result will not be normalized. +static void DiyFp_Subtract(DiyFp *fp, const DiyFp *other) { + DOUBLE_CONVERSION_ASSERT(fp->e == other->e); + DOUBLE_CONVERSION_ASSERT(fp->f >= other->f); + fp->f -= other->f; +} + +// Returns a - b. +// The exponents of both numbers must be the same and a must be greater +// or equal than b. The result will not be normalized. +static DiyFp DiyFp_Minus(const DiyFp *a, const DiyFp *b) { + DiyFp result = *a; + DiyFp_Subtract(&result, b); + return result; +} + +// this *= other. +static void DiyFp_Multiply(DiyFp *fp, const DiyFp *other) { + // Simply "emulates" a 128 bit multiplication. + // However: the resulting number only contains 64 bits. The least + // significant 64 bits are only used for rounding the most significant 64 + // bits. + const uint64_t kM32 = 0xFFFFFFFFU; + const uint64_t a = fp->f >> 32; + const uint64_t b = fp->f & kM32; + const uint64_t c = other->f >> 32; + const uint64_t d = other->f & kM32; + const uint64_t ac = a * c; + const uint64_t bc = b * c; + const uint64_t ad = a * d; + const uint64_t bd = b * d; + // By adding 1U << 31 to tmp we round the final result. + // Halfway cases will be rounded up. + const uint64_t tmp = (bd >> 32) + (ad & kM32) + (bc & kM32) + (1U << 31); + fp->e += other->e + 64; + fp->f = ac + (ad >> 32) + (bc >> 32) + (tmp >> 32); +} + +// returns a * b; +static DiyFp DiyFp_Times(const DiyFp *a, const DiyFp *b) { + DiyFp result = *a; + DiyFp_Multiply(&result, b); + return result; +} + +static void DiyFp_Normalize(DiyFp *fp) { + DOUBLE_CONVERSION_ASSERT(fp->f != 0); + uint64_t significand = fp->f; + int32_t exponent = fp->e; + + // This method is mainly called for normalizing boundaries. In general, + // boundaries need to be shifted by 10 bits, and we optimize for this case. + const uint64_t k10MSBits = DOUBLE_CONVERSION_UINT64_2PART_C(0xFFC00000, 00000000); + while ((significand & k10MSBits) == 0) { + significand <<= 10; + exponent -= 10; + } + while ((significand & DiyFp_kUint64MSB) == 0) { + significand <<= 1; + exponent--; + } + fp->f = significand; + fp->e = exponent; +} + +static DiyFp DiyFp_Normalize_make(const DiyFp *a) { + DiyFp result = *a; + DiyFp_Normalize(&result); + return result; +} + + + +/// ============================================================================ +/// ieee.h +/// ============================================================================ + +// We assume that doubles and uint64_t have the same endianness. +static uint64_t double_to_uint64(double d) { + uint64_t u; + memcpy(&u, &d, sizeof(uint64_t)); + return u; +} + +static double uint64_to_double(uint64_t d64) { + double d; + memcpy(&d, &d64, sizeof(uint64_t)); + return d; +} + +static uint32_t float_to_uint32(float f) { + uint32_t u; + memcpy(&u, &f, sizeof(uint32_t)); + return u; +} + +static float uint32_to_float(uint32_t d32) { + float f; + memcpy(&f, &d32, sizeof(uint32_t)); + return f; +} + +static const uint64_t Double_kSignMask = DOUBLE_CONVERSION_UINT64_2PART_C(0x80000000, 00000000); +static const uint64_t Double_kExponentMask = DOUBLE_CONVERSION_UINT64_2PART_C(0x7FF00000, 00000000); +static const uint64_t Double_kSignificandMask = DOUBLE_CONVERSION_UINT64_2PART_C(0x000FFFFF, FFFFFFFF); +static const uint64_t Double_kHiddenBit = DOUBLE_CONVERSION_UINT64_2PART_C(0x00100000, 00000000); +static const uint64_t Double_kQuietNanBit = DOUBLE_CONVERSION_UINT64_2PART_C(0x00080000, 00000000); +#define Double_kPhysicalSignificandSize ((int)52) // Excludes the hidden bit. +#define Double_kSignificandSize ((int)53) +#define Double_kExponentBias ((int)(0x3FF + Double_kPhysicalSignificandSize)) +#define Double_kMaxExponent ((int)(0x7FF - Double_kExponentBias)) +#define Double_kDenormalExponent ((int)(-Double_kExponentBias + 1)) +static const uint64_t Double_kInfinity = DOUBLE_CONVERSION_UINT64_2PART_C(0x7FF00000, 00000000); +#if (defined(__mips__) && !defined(__mips_nan2008)) || defined(__hppa__) +static const uint64_t Double_kNaN = DOUBLE_CONVERSION_UINT64_2PART_C(0x7FF7FFFF, FFFFFFFF); +#else +static const uint64_t Double_kNaN = DOUBLE_CONVERSION_UINT64_2PART_C(0x7FF80000, 00000000); +#endif + +static uint64_t DiyFpToUint64(DiyFp *fp) { + uint64_t significand = fp->f; + int exponent = fp->e; + while (significand > Double_kHiddenBit + Double_kSignificandMask) { + significand >>= 1; + exponent++; + } + if (exponent >= Double_kMaxExponent) { + return Double_kInfinity; + } + if (exponent < Double_kDenormalExponent) { + return 0; + } + while (exponent > Double_kDenormalExponent && (significand & Double_kHiddenBit) == 0) { + significand <<= 1; + exponent--; + } + uint64_t biased_exponent; + if (exponent == Double_kDenormalExponent && (significand & Double_kHiddenBit) == 0) { + biased_exponent = 0; + } else { + biased_exponent = (uint64_t)(exponent + Double_kExponentBias); + } + return (significand & Double_kSignificandMask) | + (biased_exponent << Double_kPhysicalSignificandSize); +} + + + +// Helper functions for doubles. +typedef struct Double { + uint64_t d64; +} Double; + +static Double Double_make_u(uint64_t d64) { + Double d; + d.d64 = d64; + return d; +} + +static Double Double_make(double d) { + return Double_make_u(double_to_uint64(d)); +} + +static Double Double_make_diyfp(DiyFp *fp) { + return Double_make_u(DiyFpToUint64(fp)); +} + +// Returns the double's bit as uint64. +static uint64_t Double_AsUint64(Double *d) { + return d->d64; +} + +static double Double_value(Double *d) { + return uint64_to_double(d->d64); +} + +static double Double_Infinity(void) { + return uint64_to_double(Double_make_u(Double_kInfinity).d64); +} + +static double Double_NaN(void) { + return uint64_to_double(Double_make_u(Double_kNaN).d64); +} + +// Returns true if the double is a denormal. +static bool Double_IsDenormal(Double *d) { + uint64_t d64 = d->d64; + return (d64 & Double_kExponentMask) == 0; +} + +// We consider denormals not to be special. +// Hence only Infinity and NaN are special. +static bool Double_IsSpecial(Double *d) { + uint64_t d64 = d->d64; + return (d64 & Double_kExponentMask) == Double_kExponentMask; +} + +static bool Double_IsNan(Double *d) { + uint64_t d64 = d->d64; + return ((d64 & Double_kExponentMask) == Double_kExponentMask) && + ((d64 & Double_kSignificandMask) != 0); +} + +static bool Double_IsQuietNan(Double *d) { +#if (defined(__mips__) && !defined(__mips_nan2008)) || defined(__hppa__) + return Double_IsNan(d) && ((d->d64 & Double_kQuietNanBit) == 0); +#else + return Double_IsNan(d) && ((d->d64 & Double_kQuietNanBit) != 0); +#endif +} + +static bool Double_IsSignalingNan(Double *d) { +#if (defined(__mips__) && !defined(__mips_nan2008)) || defined(__hppa__) + return Double_IsNan(d) && ((d->d64 & Double_kQuietNanBit) != 0); +#else + return Double_IsNan(d) && ((d->d64 & Double_kQuietNanBit) == 0); +#endif +} + +static bool Double_IsInfinite(Double *d) { + uint64_t d64 = d->d64; + return ((d64 & Double_kExponentMask) == Double_kExponentMask) && + ((d64 & Double_kSignificandMask) == 0); +} + +static int Double_Sign(Double *d) { + uint64_t d64 = d->d64; + return (d64 & Double_kSignMask) == 0? 1: -1; +} + +static int Double_Exponent(Double *d) { + if (Double_IsDenormal(d)) return Double_kDenormalExponent; + + uint64_t d64 = d->d64; + int biased_e = (int)((d64 & Double_kExponentMask) >> Double_kPhysicalSignificandSize); + return biased_e - Double_kExponentBias; +} + +static uint64_t Double_Significand(Double *d) { + uint64_t d64 = d->d64; + uint64_t significand = d64 & Double_kSignificandMask; + if (!Double_IsDenormal(d)) { + return significand + Double_kHiddenBit; + } else { + return significand; + } +} + +// The value encoded by this Double must be greater or equal to +0.0. +// It must not be special (infinity, or NaN). +static DiyFp Double_AsDiyFp(Double *d) { + DOUBLE_CONVERSION_ASSERT(Double_Sign(d) > 0); + DOUBLE_CONVERSION_ASSERT(!Double_IsSpecial(d)); + return DiyFp_make(Double_Significand(d), Double_Exponent(d)); +} + +// The value encoded by this Double must be strictly greater than 0. +static DiyFp Double_AsNormalizedDiyFp(Double *d) { + DOUBLE_CONVERSION_ASSERT(d->d64 > 0.0); + uint64_t f = Double_Significand(d); + int e = Double_Exponent(d); + + // The current double could be a denormal. + while ((f & Double_kHiddenBit) == 0) { + f <<= 1; + e--; + } + // Do the final shifts in one go. + f <<= DiyFp_kSignificandSize - Double_kSignificandSize; + e -= DiyFp_kSignificandSize - Double_kSignificandSize; + return DiyFp_make(f, e); +} + +// Returns the next greater double. Returns +infinity on input +infinity. +static double Double_NextDouble(Double *d) { + if (d->d64 == Double_kInfinity) return uint64_to_double(Double_make_u(Double_kInfinity).d64); + if (Double_Sign(d) < 0 && Double_Significand(d) == 0) { + // -0.0 + return 0.0; + } + if (Double_Sign(d) < 0) { + return uint64_to_double(Double_make_u(d->d64 - 1).d64); + } else { + return uint64_to_double(Double_make_u(d->d64 + 1).d64); + } +} + +static double Double_PreviousDouble(Double *d) { + if (d->d64 == (Double_kInfinity | Double_kSignMask)) return -Double_Infinity(); + if (Double_Sign(d) < 0) { + return uint64_to_double(Double_make_u(d->d64 + 1).d64); + } else { + if (Double_Significand(d) == 0) return -0.0; + return uint64_to_double(Double_make_u(d->d64 - 1).d64); + } +} + +// Precondition: the value encoded by this Double must be greater or equal +// than +0.0. +static DiyFp Double_UpperBoundary(Double *d) { + DOUBLE_CONVERSION_ASSERT(Double_Sign(d) > 0); + return DiyFp_make(Double_Significand(d) * 2 + 1, Double_Exponent(d) - 1); +} + +static bool Double_LowerBoundaryIsCloser(Double *d) { + // The boundary is closer if the significand is of the form f == 2^p-1 then + // the lower boundary is closer. + // Think of v = 1000e10 and v- = 9999e9. + // Then the boundary (== (v - v-)/2) is not just at a distance of 1e9 but + // at a distance of 1e8. + // The only exception is for the smallest normal: the largest denormal is + // at the same distance as its successor. + // Note: denormals have the same exponent as the smallest normals. + bool physical_significand_is_zero = ((d->d64 & Double_kSignificandMask) == 0); + return physical_significand_is_zero && (Double_Exponent(d) != Double_kDenormalExponent); +} + +// Computes the two boundaries of this. +// The bigger boundary (m_plus) is normalized. The lower boundary has the same +// exponent as m_plus. +// Precondition: the value encoded by this Double must be greater than 0. +static void Double_NormalizedBoundaries(Double *d, DiyFp *out_m_minus, DiyFp *out_m_plus) { + DOUBLE_CONVERSION_ASSERT(d->d64 > 0.0); + DiyFp v = Double_AsDiyFp(d); + DiyFp t = DiyFp_make((v.f << 1) + 1, v.e - 1); + DiyFp m_plus = DiyFp_Normalize_make(&t); + DiyFp m_minus; + if (Double_LowerBoundaryIsCloser(d)) { + m_minus = DiyFp_make((v.f << 2) - 1, v.e - 2); + } else { + m_minus = DiyFp_make((v.f << 1) - 1, v.e - 1); + } + m_minus.f = (m_minus.f << (m_minus.e - m_plus.e)); + m_minus.e = (m_plus.e); + *out_m_plus = m_plus; + *out_m_minus = m_minus; +} + +// Returns the significand size for a given order of magnitude. +// If v = f*2^e with 2^p-1 <= f <= 2^p then p+e is v's order of magnitude. +// This function returns the number of significant binary digits v will have +// once it's encoded into a double. In almost all cases this is equal to +// kSignificandSize. The only exceptions are denormals. They start with +// leading zeroes and their effective significand-size is hence smaller. +static int Double_SignificandSizeForOrderOfMagnitude(int order) { + if (order >= (Double_kDenormalExponent + Double_kSignificandSize)) { + return Double_kSignificandSize; + } + if (order <= Double_kDenormalExponent) return 0; + return order - Double_kDenormalExponent; +} + + + +static const uint32_t Single_kSignMask = 0x80000000; +static const uint32_t Single_kExponentMask = 0x7F800000; +static const uint32_t Single_kSignificandMask = 0x007FFFFF; +static const uint32_t Single_kHiddenBit = 0x00800000; +static const uint32_t Single_kQuietNanBit = 0x00400000; +#define Single_kPhysicalSignificandSize ((int)23) // Excludes the hidden bit. +#define Single_kSignificandSize ((int)24) +#define Single_kExponentBias ((int)(0x7F + Single_kPhysicalSignificandSize)) +#define Single_kDenormalExponent ((int)(-Single_kExponentBias + 1)) +#define Single_kMaxExponent ((int)(0xFF - Single_kExponentBias)) +static const uint32_t Single_kInfinity = 0x7F800000; +#if (defined(__mips__) && !defined(__mips_nan2008)) || defined(__hppa__) +static const uint32_t Single_kNaN = 0x7FBFFFFF; +#else +static const uint32_t Single_kNaN = 0x7FC00000; +#endif + +typedef struct Single { + uint32_t d32; +} Single; + +static Single Single_make(float f) { + Single s; + s.d32 = float_to_uint32(f); + return s; +} + +static Single Single_make_u(uint32_t u) { + Single s; + s.d32 = u; + return s; +} + +static float Single_value(Single *s) { + return uint32_to_float(s->d32); +} + +static float Single_Infinity(void) { + return uint32_to_float(Single_make_u(Single_kInfinity).d32); +} + +static float Single_NaN(void) { + return uint32_to_float(Single_make_u(Single_kNaN).d32); +} + +// Returns the single's bit as uint64. +static uint32_t Single_AsUint32(Single *s) { + return s->d32; +} + +// Returns true if the single is a denormal. +static bool Single_IsDenormal(Single *s) { + uint32_t d32 = Single_AsUint32(s); + return (d32 & Single_kExponentMask) == 0; +} + +// We consider denormals not to be special. +// Hence only Infinity and NaN are special. +static bool Single_IsSpecial(Single *s) { + uint32_t d32 = Single_AsUint32(s); + return (d32 & Single_kExponentMask) == Single_kExponentMask; +} + +static bool Single_IsNan(Single *s) { + uint32_t d32 = Single_AsUint32(s); + return ((d32 & Single_kExponentMask) == Single_kExponentMask) && + ((d32 & Single_kSignificandMask) != 0); +} + +static bool Single_IsQuietNan(Single *s) { +#if (defined(__mips__) && !defined(__mips_nan2008)) || defined(__hppa__) + return Single_IsNan(s) && ((Single_AsUint32(s) & Single_kQuietNanBit) == 0); +#else + return Single_IsNan(s) && ((Single_AsUint32(s) & Single_kQuietNanBit) != 0); +#endif +} + +static bool Single_IsSignalingNan(Single *s) { +#if (defined(__mips__) && !defined(__mips_nan2008)) || defined(__hppa__) + return Single_IsNan(s) && ((Single_AsUint32(s) & Single_kQuietNanBit) != 0); +#else + return Single_IsNan(s) && ((Single_AsUint32(s) & Single_kQuietNanBit) == 0); +#endif +} + +static int Single_Exponent(Single *s) { + if (Single_IsDenormal(s)) return Single_kDenormalExponent; + + uint32_t d32 = Single_AsUint32(s); + int biased_e = + (int)((d32 & Single_kExponentMask) >> Single_kPhysicalSignificandSize); + return biased_e - Single_kExponentBias; +} + +static uint32_t Single_Significand(Single *s) { + uint32_t d32 = Single_AsUint32(s); + uint32_t significand = d32 & Single_kSignificandMask; + if (!Single_IsDenormal(s)) { + return significand + Single_kHiddenBit; + } else { + return significand; + } +} + +static bool Single_IsInfinite(Single *s) { + uint32_t d32 = Single_AsUint32(s); + return ((d32 & Single_kExponentMask) == Single_kExponentMask) && + ((d32 & Single_kSignificandMask) == 0); +} + +static int Single_Sign(Single *s) { + uint32_t d32 = Single_AsUint32(s); + return (d32 & Single_kSignMask) == 0? 1: -1; +} + +// The value encoded by this Single must be greater or equal to +0.0. +// It must not be special (infinity, or NaN). +static DiyFp Single_AsDiyFp(Single *s) { + DOUBLE_CONVERSION_ASSERT(Single_Sign(s) > 0); + DOUBLE_CONVERSION_ASSERT(!Single_IsSpecial(s)); + return DiyFp_make(Single_Significand(s), Single_Exponent(s)); +} + +// Precondition: the value encoded by this Single must be greater or equal +// than +0.0. +static DiyFp Single_UpperBoundary(Single *s) { + DOUBLE_CONVERSION_ASSERT(Single_Sign(s) > 0); + return DiyFp_make(Single_Significand(s) * 2 + 1, Single_Exponent(s) - 1); +} + +static bool Single_LowerBoundaryIsCloser(Single *s) { + // The boundary is closer if the significand is of the form f == 2^p-1 then + // the lower boundary is closer. + // Think of v = 1000e10 and v- = 9999e9. + // Then the boundary (== (v - v-)/2) is not just at a distance of 1e9 but + // at a distance of 1e8. + // The only exception is for the smallest normal: the largest denormal is + // at the same distance as its successor. + // Note: denormals have the same exponent as the smallest normals. + bool physical_significand_is_zero = ((Single_AsUint32(s) & Single_kSignificandMask) == 0); + return physical_significand_is_zero && (Single_Exponent(s) != Single_kDenormalExponent); +} + +// Computes the two boundaries of this. +// The bigger boundary (m_plus) is normalized. The lower boundary has the same +// exponent as m_plus. +// Precondition: the value encoded by this Single must be greater than 0. +static void Single_NormalizedBoundaries(Single *s, DiyFp *out_m_minus, DiyFp *out_m_plus) { + DOUBLE_CONVERSION_ASSERT(Single_value(s) > 0.0); + DiyFp v = Single_AsDiyFp(s); + DiyFp t = DiyFp_make((v.f << 1) + 1, v.e - 1); + DiyFp m_plus = DiyFp_Normalize_make(&t); + DiyFp m_minus; + if (Single_LowerBoundaryIsCloser(s)) { + m_minus = DiyFp_make((v.f << 2) - 1, v.e - 2); + } else { + m_minus = DiyFp_make((v.f << 1) - 1, v.e - 1); + } + m_minus.f = (m_minus.f << (m_minus.e - m_plus.e)); + m_minus.e = (m_plus.e); + *out_m_plus = m_plus; + *out_m_minus = m_minus; +} + + + +/// ============================================================================ +/// bignum.h +/// ============================================================================ + +typedef uint32_t Bignum_Chunk; +typedef uint64_t Bignum_DoubleChunk; + +// 3584 = 128 * 28. We can represent 2^3584 > 10^1000 accurately. +// This bignum can encode much bigger numbers, since it contains an +// exponent. +#define Bignum_kMaxSignificantBits ((int)3584) +static const int Bignum_kChunkSize = sizeof(Bignum_Chunk) * 8; +static const int Bignum_kDoubleChunkSize = sizeof(Bignum_DoubleChunk) * 8; +// With bigit size of 28 we loose some bits, but a double still fits easily +// into two chunks, and more importantly we can use the Comba multiplication. +#define Bignum_kBigitSize ((int)28) +static const Bignum_Chunk Bignum_kBigitMask = (1 << Bignum_kBigitSize) - 1; +// Every instance allocates kBigitLength chunks on the stack. Bignums cannot +// grow. There are no checks if the stack-allocated space is sufficient. +#define Bignum_kBigitCapacity ((int)(Bignum_kMaxSignificantBits / Bignum_kBigitSize)) + +typedef struct Bignum { + // The Bignum's value is value(bigits_buffer_) * 2^(exponent_ * kBigitSize), + // where the value of the buffer consists of the lower kBigitSize bits of + // the first used_bigits_ Chunks in bigits_buffer_, first chunk has lowest + // significant bits. + int16_t used_bigits; + int16_t exponent; + Bignum_Chunk bigits_buffer[Bignum_kBigitCapacity]; +} Bignum; + + + +/// ============================================================================ +/// bignum.cc +/// ============================================================================ + +static Bignum_Chunk *Bignum_RawBigit(Bignum *b, int index) { + return &b->bigits_buffer[index]; +} + +static void Bignum_Zero(Bignum *b) { + b->used_bigits = 0; + b->exponent = 0; +} + +// BigitLength includes the "hidden" bigits encoded in the exponent. +static int Bignum_BigitLength(Bignum *b) { + return b->used_bigits + b->exponent; +} + +static void Bignum_EnsureCapacity(int size) { + if (size > Bignum_kBigitCapacity) { + DOUBLE_CONVERSION_UNREACHABLE(); + } +} + +static void Bignum_Align(Bignum *b, Bignum *other) { + if (b->exponent > other->exponent) { + // If "X" represents a "hidden" bigit (by the exponent) then we are in the + // following case (a == this, b == other): + // a: aaaaaaXXXX or a: aaaaaXXX + // b: bbbbbbX b: bbbbbbbbXX + // We replace some of the hidden digits (X) of a with 0 digits. + // a: aaaaaa000X or a: aaaaa0XX + const int zero_bigits = b->exponent - other->exponent; + Bignum_EnsureCapacity(b->used_bigits + zero_bigits); + for (int i = b->used_bigits - 1; i >= 0; --i) { + *Bignum_RawBigit(b, i + zero_bigits) = *Bignum_RawBigit(b, i); + } + for (int i = 0; i < zero_bigits; ++i) { + *Bignum_RawBigit(b, i) = 0; + } + b->used_bigits += (int16_t)zero_bigits; + b->exponent -= (int16_t)zero_bigits; + + DOUBLE_CONVERSION_ASSERT(b->used_bigits >= 0); + DOUBLE_CONVERSION_ASSERT(b->exponent >= 0); + } +} + +static void Bignum_Clamp(Bignum *b) { + while (b->used_bigits > 0 && *Bignum_RawBigit(b, b->used_bigits - 1) == 0) { + b->used_bigits--; + } + if (b->used_bigits == 0) { + // Zero. + b->exponent = 0; + } +} + +static bool Bignum_IsClamped(Bignum *b) { + return b->used_bigits == 0 || *Bignum_RawBigit(b, b->used_bigits - 1) != 0; +} + +static Bignum_Chunk Bignum_BigitOrZero(Bignum *b, const int index) { + if (index >= Bignum_BigitLength(b)) { + return 0; + } + if (index < b->exponent) { + return 0; + } + return *Bignum_RawBigit(b, index - b->exponent); +} + +// Returns +// -1 if a < b, +// 0 if a == b, and +// +1 if a > b. +static int Bignum_Compare(Bignum *a, Bignum *b) { + DOUBLE_CONVERSION_ASSERT(Bignum_IsClamped(a)); + DOUBLE_CONVERSION_ASSERT(Bignum_IsClamped(b)); + const int bigit_length_a = Bignum_BigitLength(a); + const int bigit_length_b = Bignum_BigitLength(b); + if (bigit_length_a < bigit_length_b) { + return -1; + } + if (bigit_length_a > bigit_length_b) { + return +1; + } + for (int i = bigit_length_a - 1; i >= MIN(a->exponent, b->exponent); --i) { + const Bignum_Chunk bigit_a = Bignum_BigitOrZero(a, i); + const Bignum_Chunk bigit_b = Bignum_BigitOrZero(b, i); + if (bigit_a < bigit_b) { + return -1; + } + if (bigit_a > bigit_b) { + return +1; + } + // Otherwise they are equal up to this digit. Try the next digit. + } + return 0; +} + +static bool Bignum_Equal(Bignum *a, Bignum *b) { + return Bignum_Compare(a, b) == 0; +} + +static bool Bignum_LessEqual(Bignum *a, Bignum *b) { + return Bignum_Compare(a, b) <= 0; +} + +static bool Bignum_Less(Bignum *a, Bignum *b) { + return Bignum_Compare(a, b) < 0; +} + +// Returns Compare(a + b, c); +static int Bignum_PlusCompare(Bignum *a, Bignum *b, Bignum *c) { + DOUBLE_CONVERSION_ASSERT(Bignum_IsClamped(a)); + DOUBLE_CONVERSION_ASSERT(Bignum_IsClamped(b)); + DOUBLE_CONVERSION_ASSERT(Bignum_IsClamped(c)); + if (Bignum_BigitLength(a) < Bignum_BigitLength(b)) { + return Bignum_PlusCompare(b, a, c); + } + if (Bignum_BigitLength(a) + 1 < Bignum_BigitLength(c)) { + return -1; + } + if (Bignum_BigitLength(a) > Bignum_BigitLength(c)) { + return +1; + } + // The exponent encodes 0-bigits. So if there are more 0-digits in 'a' than + // 'b' has digits, then the bigit-length of 'a'+'b' must be equal to the one + // of 'a'. + if (a->exponent >= Bignum_BigitLength(b) && Bignum_BigitLength(a) < Bignum_BigitLength(c)) { + return -1; + } + + Bignum_Chunk borrow = 0; + // Starting at min_exponent all digits are == 0. So no need to compare them. + const int min_exponent = MIN(MIN(a->exponent, b->exponent), c->exponent); + for (int i = Bignum_BigitLength(c) - 1; i >= min_exponent; --i) { + const Bignum_Chunk chunk_a = Bignum_BigitOrZero(a, i); + const Bignum_Chunk chunk_b = Bignum_BigitOrZero(b, i); + const Bignum_Chunk chunk_c = Bignum_BigitOrZero(c, i); + const Bignum_Chunk sum = chunk_a + chunk_b; + if (sum > chunk_c + borrow) { + return +1; + } else { + borrow = chunk_c + borrow - sum; + if (borrow > 1) { + return -1; + } + borrow <<= Bignum_kBigitSize; + } + } + if (borrow == 0) { + return 0; + } + return -1; +} + +// Returns a + b == c +static bool Bignum_PlusEqual(Bignum *a, Bignum *b, Bignum *c) { + return Bignum_PlusCompare(a, b, c) == 0; +} + +// Returns a + b <= c +static bool Bignum_PlusLessEqual(Bignum *a, Bignum *b, Bignum *c) { + return Bignum_PlusCompare(a, b, c) <= 0; +} + +// Returns a + b < c +static bool Bignum_PlusLess(Bignum *a, Bignum *b, Bignum *c) { + return Bignum_PlusCompare(a, b, c) < 0; +} + +// Guaranteed to lie in one Bigit. +static void Bignum_AssignUInt16(Bignum *b, uint16_t value) { + Bignum_Zero(b); + if (value > 0) { + *Bignum_RawBigit(b, 0) = value; + b->used_bigits = 1; + } +} + +static void Bignum_AssignUInt64(Bignum *b, uint64_t value) { + Bignum_Zero(b); + for(int i = 0; value > 0; ++i) { + *Bignum_RawBigit(b, i) = value & Bignum_kBigitMask; + value >>= Bignum_kBigitSize; + b->used_bigits++; + } +} + +static void Bignum_AssignBignum(Bignum *b, Bignum *other) { + b->exponent = other->exponent; + for (int i = 0; i < other->used_bigits; ++i) { + *Bignum_RawBigit(b, i) = *Bignum_RawBigit(other, i); + } + b->used_bigits = other->used_bigits; +} + +static void Bignum_AddBignum(Bignum *b, Bignum *other) { + DOUBLE_CONVERSION_ASSERT(Bignum_IsClamped(b)); + DOUBLE_CONVERSION_ASSERT(Bignum_IsClamped(other)); + + // If this has a greater exponent than other append zero-bigits to this. + // After this call exponent_ <= other.exponent_. + Bignum_Align(b, other); + + // There are two possibilities: + // aaaaaaaaaaa 0000 (where the 0s represent a's exponent) + // bbbbb 00000000 + // ---------------- + // ccccccccccc 0000 + // or + // aaaaaaaaaa 0000 + // bbbbbbbbb 0000000 + // ----------------- + // cccccccccccc 0000 + // In both cases we might need a carry bigit. + + Bignum_EnsureCapacity(1 + MAX(Bignum_BigitLength(b), Bignum_BigitLength(other)) - b->exponent); + Bignum_Chunk carry = 0; + int bigit_pos = other->exponent - b->exponent; + DOUBLE_CONVERSION_ASSERT(bigit_pos >= 0); + for (int i = b->used_bigits; i < bigit_pos; ++i) { + *Bignum_RawBigit(b, i) = 0; + } + for (int i = 0; i < other->used_bigits; ++i) { + const Bignum_Chunk my = (bigit_pos < b->used_bigits) ? *Bignum_RawBigit(b, bigit_pos) : 0; + const Bignum_Chunk sum = my + *Bignum_RawBigit(other, i) + carry; + *Bignum_RawBigit(b, bigit_pos) = sum & Bignum_kBigitMask; + carry = sum >> Bignum_kBigitSize; + ++bigit_pos; + } + while (carry != 0) { + const Bignum_Chunk my = (bigit_pos < b->used_bigits) ? *Bignum_RawBigit(b, bigit_pos) : 0; + const Bignum_Chunk sum = my + carry; + *Bignum_RawBigit(b, bigit_pos) = sum & Bignum_kBigitMask; + carry = sum >> Bignum_kBigitSize; + ++bigit_pos; + } + b->used_bigits = (int16_t)MAX(bigit_pos, (int)(b->used_bigits)); + DOUBLE_CONVERSION_ASSERT(Bignum_IsClamped(b)); +} + +static void Bignum_SubtractBignum(Bignum *b, Bignum *other) { + DOUBLE_CONVERSION_ASSERT(Bignum_IsClamped(b)); + DOUBLE_CONVERSION_ASSERT(Bignum_IsClamped(other)); + // We require this to be bigger than other. + DOUBLE_CONVERSION_ASSERT(Bignum_LessEqual(other, b)); + + Bignum_Align(b, other); + + const int offset = other->exponent - b->exponent; + Bignum_Chunk borrow = 0; + int i; + for (i = 0; i < other->used_bigits; ++i) { + DOUBLE_CONVERSION_ASSERT((borrow == 0) || (borrow == 1)); + const Bignum_Chunk difference = *Bignum_RawBigit(b, i + offset) - *Bignum_RawBigit(other, i) - borrow; + *Bignum_RawBigit(b, i + offset) = difference & Bignum_kBigitMask; + borrow = difference >> (Bignum_kChunkSize - 1); + } + while (borrow != 0) { + const Bignum_Chunk difference = *Bignum_RawBigit(b, i + offset) - borrow; + *Bignum_RawBigit(b, i + offset) = difference & Bignum_kBigitMask; + borrow = difference >> (Bignum_kChunkSize - 1); + ++i; + } + Bignum_Clamp(b); +} + +static void Bignum_AddUInt64(Bignum *b, uint64_t operand) { + if (operand == 0) { + return; + } + Bignum other; + Bignum_AssignUInt64(&other, operand); + Bignum_AddBignum(b, &other); +} + +static uint64_t Bignum_ReadUInt64(const Vector *buffer, + int from, + int digits_to_read) { + uint64_t result = 0; + for (int i = from; i < from + digits_to_read; ++i) { + const int digit = buffer->start[i] - '0'; + DOUBLE_CONVERSION_ASSERT(0 <= digit && digit <= 9); + result = result * 10 + digit; + } + return result; +} + +static void Bignum_BigitsShiftLeft(Bignum *b, int shift_amount) { + DOUBLE_CONVERSION_ASSERT(shift_amount < Bignum_kBigitSize); + DOUBLE_CONVERSION_ASSERT(shift_amount >= 0); + Bignum_Chunk carry = 0; + for (int i = 0; i < b->used_bigits; ++i) { + const Bignum_Chunk new_carry = *Bignum_RawBigit(b, i) >> (Bignum_kBigitSize - shift_amount); + *Bignum_RawBigit(b, i) = ((*Bignum_RawBigit(b, i) << shift_amount) + carry) & Bignum_kBigitMask; + carry = new_carry; + } + if (carry != 0) { + *Bignum_RawBigit(b, b->used_bigits) = carry; + b->used_bigits++; + } +} + +static void Bignum_ShiftLeft(Bignum *b, int shift_amount) { + if (b->used_bigits == 0) { + return; + } + b->exponent += (int16_t)(shift_amount / Bignum_kBigitSize); + const int local_shift = shift_amount % Bignum_kBigitSize; + Bignum_EnsureCapacity(b->used_bigits + 1); + Bignum_BigitsShiftLeft(b, local_shift); +} + +static void Bignum_MultiplyByUInt32(Bignum *b, uint32_t factor) { + if (factor == 1) { + return; + } + if (factor == 0) { + Bignum_Zero(b); + return; + } + if (b->used_bigits == 0) { + return; + } + // The product of a bigit with the factor is of size kBigitSize + 32. + // Assert that this number + 1 (for the carry) fits into double chunk. + DOUBLE_CONVERSION_ASSERT(Bignum_kDoubleChunkSize >= Bignum_kBigitSize + 32 + 1); + Bignum_DoubleChunk carry = 0; + for (int i = 0; i < b->used_bigits; ++i) { + const Bignum_DoubleChunk product = (Bignum_DoubleChunk)(factor) * *Bignum_RawBigit(b, i) + carry; + *Bignum_RawBigit(b, i) = (Bignum_Chunk)(product & Bignum_kBigitMask); + carry = (product >> Bignum_kBigitSize); + } + while (carry != 0) { + Bignum_EnsureCapacity(b->used_bigits + 1); + *Bignum_RawBigit(b, b->used_bigits) = carry & Bignum_kBigitMask; + b->used_bigits++; + carry >>= Bignum_kBigitSize; + } +} + +static void Bignum_MultiplyByUInt64(Bignum *b, uint64_t factor) { + if (factor == 1) { + return; + } + if (factor == 0) { + Bignum_Zero(b); + return; + } + if (b->used_bigits == 0) { + return; + } + DOUBLE_CONVERSION_ASSERT(Bignum_kBigitSize < 32); + uint64_t carry = 0; + const uint64_t low = factor & 0xFFFFFFFF; + const uint64_t high = factor >> 32; + for (int i = 0; i < b->used_bigits; ++i) { + const uint64_t product_low = low * *Bignum_RawBigit(b, i); + const uint64_t product_high = high * *Bignum_RawBigit(b, i); + const uint64_t tmp = (carry & Bignum_kBigitMask) + product_low; + *Bignum_RawBigit(b, i) = tmp & Bignum_kBigitMask; + carry = (carry >> Bignum_kBigitSize) + (tmp >> Bignum_kBigitSize) + + (product_high << (32 - Bignum_kBigitSize)); + } + while (carry != 0) { + Bignum_EnsureCapacity(b->used_bigits + 1); + *Bignum_RawBigit(b, b->used_bigits) = carry & Bignum_kBigitMask; + b->used_bigits++; + carry >>= Bignum_kBigitSize; + } +} + +static void Bignum_MultiplyByPowerOfTen(Bignum *b, int exponent) { + const uint64_t kFive27 = DOUBLE_CONVERSION_UINT64_2PART_C(0x6765c793, fa10079d); + const uint16_t kFive1 = 5; + const uint16_t kFive2 = kFive1 * 5; + const uint16_t kFive3 = kFive2 * 5; + const uint16_t kFive4 = kFive3 * 5; + const uint16_t kFive5 = kFive4 * 5; + const uint16_t kFive6 = kFive5 * 5; + const uint32_t kFive7 = kFive6 * 5; + const uint32_t kFive8 = kFive7 * 5; + const uint32_t kFive9 = kFive8 * 5; + const uint32_t kFive10 = kFive9 * 5; + const uint32_t kFive11 = kFive10 * 5; + const uint32_t kFive12 = kFive11 * 5; + const uint32_t kFive13 = kFive12 * 5; + const uint32_t kFive1_to_12[] = + { kFive1, kFive2, kFive3, kFive4, kFive5, kFive6, + kFive7, kFive8, kFive9, kFive10, kFive11, kFive12 }; + + DOUBLE_CONVERSION_ASSERT(exponent >= 0); + + if (exponent == 0) { + return; + } + if (b->used_bigits == 0) { + return; + } + // We shift by exponent at the end just before returning. + int remaining_exponent = exponent; + while (remaining_exponent >= 27) { + Bignum_MultiplyByUInt64(b, kFive27); + remaining_exponent -= 27; + } + while (remaining_exponent >= 13) { + Bignum_MultiplyByUInt32(b, kFive13); + remaining_exponent -= 13; + } + if (remaining_exponent > 0) { + Bignum_MultiplyByUInt32(b, kFive1_to_12[remaining_exponent - 1]); + } + Bignum_ShiftLeft(b, exponent); +} + +static void Bignum_AssignDecimalString(Bignum *b, const Vector *value) { + // 2^64 = 18446744073709551616 > 10^19 + static const int kMaxUint64DecimalDigits = 19; + Bignum_Zero(b); + int length = value->length; + unsigned pos = 0; + // Let's just say that each digit needs 4 bits. + while (length >= kMaxUint64DecimalDigits) { + const uint64_t digits = Bignum_ReadUInt64(value, pos, kMaxUint64DecimalDigits); + pos += kMaxUint64DecimalDigits; + length -= kMaxUint64DecimalDigits; + Bignum_MultiplyByPowerOfTen(b, kMaxUint64DecimalDigits); + Bignum_AddUInt64(b, digits); + } + const uint64_t digits = Bignum_ReadUInt64(value, pos, length); + Bignum_MultiplyByPowerOfTen(b, length); + Bignum_AddUInt64(b, digits); + Bignum_Clamp(b); +} + +static uint64_t Bignum_HexCharValue(int c) { + if ('0' <= c && c <= '9') { + return c - '0'; + } + if ('a' <= c && c <= 'f') { + return 10 + c - 'a'; + } + DOUBLE_CONVERSION_ASSERT('A' <= c && c <= 'F'); + return 10 + c - 'A'; +} + +// Unlike AssignDecimalString(), this function is "only" used +// for unit-tests and therefore not performance critical. +static void Bignum_AssignHexString(Bignum *b, Vector *value) { + Bignum_Zero(b); + // Required capacity could be reduced by ignoring leading zeros. + Bignum_EnsureCapacity(((value->length * 4) + Bignum_kBigitSize - 1) / Bignum_kBigitSize); + DOUBLE_CONVERSION_ASSERT(sizeof(uint64_t) * 8 >= Bignum_kBigitSize + 4); // TODO: static_assert + // Accumulates converted hex digits until at least kBigitSize bits. + // Works with non-factor-of-four kBigitSizes. + uint64_t tmp = 0; + for (int cnt = 0; !Vector_is_empty(value); Vector_pop_back(value)) { + tmp |= (Bignum_HexCharValue(Vector_last(value)) << cnt); + if ((cnt += 4) >= Bignum_kBigitSize) { + *Bignum_RawBigit(b, b->used_bigits++) = (tmp & Bignum_kBigitMask); + cnt -= Bignum_kBigitSize; + tmp >>= Bignum_kBigitSize; + } + } + if (tmp > 0) { + DOUBLE_CONVERSION_ASSERT(tmp <= Bignum_kBigitMask); + *Bignum_RawBigit(b, b->used_bigits++) = (Bignum_Chunk)(tmp & Bignum_kBigitMask); + } + Bignum_Clamp(b); +} + +static void Bignum_Times10(Bignum *b) { + Bignum_MultiplyByUInt32(b, 10); +} + +static void Bignum_Square(Bignum *b) { + DOUBLE_CONVERSION_ASSERT(Bignum_IsClamped(b)); + const int product_length = 2 * b->used_bigits; + Bignum_EnsureCapacity(product_length); + + // Comba multiplication: compute each column separately. + // Example: r = a2a1a0 * b2b1b0. + // r = 1 * a0b0 + + // 10 * (a1b0 + a0b1) + + // 100 * (a2b0 + a1b1 + a0b2) + + // 1000 * (a2b1 + a1b2) + + // 10000 * a2b2 + // + // In the worst case we have to accumulate nb-digits products of digit*digit. + // + // Assert that the additional number of bits in a DoubleChunk are enough to + // sum up used_digits of Bigit*Bigit. + if ((1 << (2 * (Bignum_kChunkSize - Bignum_kBigitSize))) <= b->used_bigits) { + DOUBLE_CONVERSION_UNIMPLEMENTED(); + } + Bignum_DoubleChunk accumulator = 0; + // First shift the digits so we don't overwrite them. + const int copy_offset = b->used_bigits; + for (int i = 0; i < b->used_bigits; ++i) { + *Bignum_RawBigit(b, copy_offset + i) = *Bignum_RawBigit(b, i); + } + // We have two loops to avoid some 'if's in the loop. + for (int i = 0; i < b->used_bigits; ++i) { + // Process temporary digit i with power i. + // The sum of the two indices must be equal to i. + int bigit_index1 = i; + int bigit_index2 = 0; + // Sum all of the sub-products. + while (bigit_index1 >= 0) { + const Bignum_Chunk chunk1 = *Bignum_RawBigit(b, copy_offset + bigit_index1); + const Bignum_Chunk chunk2 = *Bignum_RawBigit(b, copy_offset + bigit_index2); + accumulator += (Bignum_DoubleChunk)(chunk1) * chunk2; + bigit_index1--; + bigit_index2++; + } + *Bignum_RawBigit(b, i) = (Bignum_Chunk)(accumulator) & Bignum_kBigitMask; + accumulator >>= Bignum_kBigitSize; + } + for (int i = b->used_bigits; i < product_length; ++i) { + int bigit_index1 = b->used_bigits - 1; + int bigit_index2 = i - bigit_index1; + // Invariant: sum of both indices is again equal to i. + // Inner loop runs 0 times on last iteration, emptying accumulator. + while (bigit_index2 < b->used_bigits) { + const Bignum_Chunk chunk1 = *Bignum_RawBigit(b, copy_offset + bigit_index1); + const Bignum_Chunk chunk2 = *Bignum_RawBigit(b, copy_offset + bigit_index2); + accumulator += (Bignum_DoubleChunk)(chunk1) * chunk2; + bigit_index1--; + bigit_index2++; + } + // The overwritten RawBigit(i) will never be read in further loop iterations, + // because bigit_index1 and bigit_index2 are always greater + // than i - used_bigits_. + *Bignum_RawBigit(b, i) = (Bignum_Chunk)(accumulator) & Bignum_kBigitMask; + accumulator >>= Bignum_kBigitSize; + } + // Since the result was guaranteed to lie inside the number the + // accumulator must be 0 now. + DOUBLE_CONVERSION_ASSERT(accumulator == 0); + + // Don't forget to update the used_digits and the exponent. + b->used_bigits = (int16_t)product_length; + b->exponent *= 2; + Bignum_Clamp(b); +} + +static void Bignum_AssignPowerUInt16(Bignum *b, uint16_t base, int power_exponent) { + DOUBLE_CONVERSION_ASSERT(base != 0); + DOUBLE_CONVERSION_ASSERT(power_exponent >= 0); + if (power_exponent == 0) { + Bignum_AssignUInt16(b, 1); + return; + } + Bignum_Zero(b); + int shifts = 0; + // We expect base to be in range 2-32, and most often to be 10. + // It does not make much sense to implement different algorithms for counting + // the bits. + while ((base & 1) == 0) { + base >>= 1; + shifts++; + } + int bit_size = 0; + int tmp_base = base; + while (tmp_base != 0) { + tmp_base >>= 1; + bit_size++; + } + const int final_size = bit_size * power_exponent; + // 1 extra bigit for the shifting, and one for rounded final_size. + Bignum_EnsureCapacity(final_size / Bignum_kBigitSize + 2); + + // Left to Right exponentiation. + int mask = 1; + while (power_exponent >= mask) mask <<= 1; + + // The mask is now pointing to the bit above the most significant 1-bit of + // power_exponent. + // Get rid of first 1-bit; + mask >>= 2; + uint64_t this_value = base; + + bool delayed_multiplication = false; + const uint64_t max_32bits = 0xFFFFFFFF; + while (mask != 0 && this_value <= max_32bits) { + this_value = this_value * this_value; + // Verify that there is enough space in this_value to perform the + // multiplication. The first bit_size bits must be 0. + if ((power_exponent & mask) != 0) { + DOUBLE_CONVERSION_ASSERT(bit_size > 0); + const uint64_t base_bits_mask = + ~(((uint64_t)(1) << (64 - bit_size)) - 1); + const bool high_bits_zero = (this_value & base_bits_mask) == 0; + if (high_bits_zero) { + this_value *= base; + } else { + delayed_multiplication = true; + } + } + mask >>= 1; + } + Bignum_AssignUInt64(b, this_value); + if (delayed_multiplication) { + Bignum_MultiplyByUInt32(b, base); + } + + // Now do the same thing as a bignum. + while (mask != 0) { + Bignum_Square(b); + if ((power_exponent & mask) != 0) { + Bignum_MultiplyByUInt32(b, base); + } + mask >>= 1; + } + + // And finally add the saved shifts. + Bignum_ShiftLeft(b, shifts * power_exponent); +} + +static void Bignum_SubtractTimes(Bignum *b, Bignum *other, int factor) { + DOUBLE_CONVERSION_ASSERT(b->exponent <= other->exponent); + if (factor < 3) { + for (int i = 0; i < factor; ++i) { + Bignum_SubtractBignum(b, other); + } + return; + } + Bignum_Chunk borrow = 0; + const int exponent_diff = other->exponent - b->exponent; + for (int i = 0; i < other->used_bigits; ++i) { + const Bignum_DoubleChunk product = (Bignum_DoubleChunk)(factor) * *Bignum_RawBigit(other, i); + const Bignum_DoubleChunk remove = borrow + product; + const Bignum_Chunk difference = *Bignum_RawBigit(b, i + exponent_diff) - (remove & Bignum_kBigitMask); + *Bignum_RawBigit(b, i + exponent_diff) = difference & Bignum_kBigitMask; + borrow = (Bignum_Chunk)((difference >> (Bignum_kChunkSize - 1)) + + (remove >> Bignum_kBigitSize)); + } + for (int i = other->used_bigits + exponent_diff; i < b->used_bigits; ++i) { + if (borrow == 0) { + return; + } + const Bignum_Chunk difference = *Bignum_RawBigit(b, i) - borrow; + *Bignum_RawBigit(b, i) = difference & Bignum_kBigitMask; + borrow = difference >> (Bignum_kChunkSize - 1); + } + Bignum_Clamp(b); +} + +// Precondition: this/other < 16bit. +static uint16_t Bignum_DivideModuloIntBignum(Bignum *b, Bignum *other) { + DOUBLE_CONVERSION_ASSERT(Bignum_IsClamped(b)); + DOUBLE_CONVERSION_ASSERT(Bignum_IsClamped(other)); + DOUBLE_CONVERSION_ASSERT(other->used_bigits > 0); + + // Easy case: if we have less digits than the divisor than the result is 0. + // Note: this handles the case where this == 0, too. + if (Bignum_BigitLength(b) < Bignum_BigitLength(other)) { + return 0; + } + + Bignum_Align(b, other); + + uint16_t result = 0; + + // Start by removing multiples of 'other' until both numbers have the same + // number of digits. + while (Bignum_BigitLength(b) > Bignum_BigitLength(other)) { + // This naive approach is extremely inefficient if `this` divided by other + // is big. This function is implemented for doubleToString where + // the result should be small (less than 10). + DOUBLE_CONVERSION_ASSERT(*Bignum_RawBigit(other, other->used_bigits - 1) >= ((1 << Bignum_kBigitSize) / 16)); + DOUBLE_CONVERSION_ASSERT(*Bignum_RawBigit(b, b->used_bigits - 1) < 0x10000); + // Remove the multiples of the first digit. + // Example this = 23 and other equals 9. -> Remove 2 multiples. + result += (uint16_t)(*Bignum_RawBigit(b, b->used_bigits - 1)); + Bignum_SubtractTimes(b, other, *Bignum_RawBigit(b, b->used_bigits - 1)); + } + + DOUBLE_CONVERSION_ASSERT(Bignum_BigitLength(b) == Bignum_BigitLength(other)); + + // Both bignums are at the same length now. + // Since other has more than 0 digits we know that the access to + // RawBigit(used_bigits_ - 1) is safe. + const Bignum_Chunk this_bigit = *Bignum_RawBigit(b, b->used_bigits - 1); + const Bignum_Chunk other_bigit = *Bignum_RawBigit(other, other->used_bigits - 1); + + if (other->used_bigits == 1) { + // Shortcut for easy (and common) case. + int quotient = this_bigit / other_bigit; + *Bignum_RawBigit(b, b->used_bigits - 1) = this_bigit - other_bigit * quotient; + DOUBLE_CONVERSION_ASSERT(quotient < 0x10000); + result += (uint16_t)(quotient); + Bignum_Clamp(b); + return result; + } + + const int division_estimate = this_bigit / (other_bigit + 1); + DOUBLE_CONVERSION_ASSERT(division_estimate < 0x10000); + result += (uint16_t)(division_estimate); + Bignum_SubtractTimes(b, other, division_estimate); + + if (other_bigit * (division_estimate + 1) > this_bigit) { + // No need to even try to subtract. Even if other's remaining digits were 0 + // another subtraction would be too much. + return result; + } + + while (Bignum_LessEqual(other, b)) { + Bignum_SubtractBignum(b, other); + result++; + } + return result; +} + +static int Bignum_ChunkSizeInHexChars(Bignum_Chunk number) { + DOUBLE_CONVERSION_ASSERT(number > 0); + int result = 0; + while (number != 0) { + number >>= 4; + result++; + } + return result; +} + +static char Bignum_HexCharOfValue(const int value) { + DOUBLE_CONVERSION_ASSERT(0 <= value && value <= 16); + if (value < 10) { + return (char)(value + '0'); + } + return (char)(value - 10 + 'A'); +} + +static bool Bignum_ToHexString(Bignum *b, char *buffer, int buffer_size) { + DOUBLE_CONVERSION_ASSERT(Bignum_IsClamped(b)); + // Each bigit must be printable as separate hex-character. + DOUBLE_CONVERSION_ASSERT(Bignum_kBigitSize % 4 == 0); + static const int kHexCharsPerBigit = Bignum_kBigitSize / 4; + + if (b->used_bigits == 0) { + if (buffer_size < 2) { + return false; + } + buffer[0] = '0'; + buffer[1] = '\0'; + return true; + } + // We add 1 for the terminating '\0' character. + const int needed_chars = (Bignum_BigitLength(b) - 1) * kHexCharsPerBigit + + Bignum_ChunkSizeInHexChars(*Bignum_RawBigit(b, b->used_bigits - 1)) + 1; + if (needed_chars > buffer_size) { + return false; + } + int string_index = needed_chars - 1; + buffer[string_index--] = '\0'; + for (int i = 0; i < b->exponent; ++i) { + for (int j = 0; j < kHexCharsPerBigit; ++j) { + buffer[string_index--] = '0'; + } + } + for (int i = 0; i < b->used_bigits - 1; ++i) { + Bignum_Chunk current_bigit = *Bignum_RawBigit(b, i); + for (int j = 0; j < kHexCharsPerBigit; ++j) { + buffer[string_index--] = Bignum_HexCharOfValue(current_bigit & 0xF); + current_bigit >>= 4; + } + } + // And finally the last bigit. + Bignum_Chunk most_significant_bigit = *Bignum_RawBigit(b, b->used_bigits - 1); + while (most_significant_bigit != 0) { + buffer[string_index--] = Bignum_HexCharOfValue(most_significant_bigit & 0xF); + most_significant_bigit >>= 4; + } + return true; +} + + + +/// ============================================================================ +/// bignum-dtoa.h +/// ============================================================================ + +typedef enum BignumDtoaMode { + // Return the shortest correct representation. + // For example the output of 0.299999999999999988897 is (the less accurate but + // correct) 0.3. + BIGNUM_DTOA_SHORTEST, + // Same as BIGNUM_DTOA_SHORTEST but for single-precision floats. + BIGNUM_DTOA_SHORTEST_SINGLE, + // Return a fixed number of digits after the decimal point. + // For instance fixed(0.1, 4) becomes 0.1000 + // If the input number is big, the output will be big. + BIGNUM_DTOA_FIXED, + // Return a fixed number of digits, no matter what the exponent is. + BIGNUM_DTOA_PRECISION +} BignumDtoaMode; + +// Converts the given double 'v' to ascii. +// The result should be interpreted as buffer * 10^(point-length). +// The buffer will be null-terminated. +// +// The input v must be > 0 and different from NaN, and Infinity. +// +// The output depends on the given mode: +// - SHORTEST: produce the least amount of digits for which the internal +// identity requirement is still satisfied. If the digits are printed +// (together with the correct exponent) then reading this number will give +// 'v' again. The buffer will choose the representation that is closest to +// 'v'. If there are two at the same distance, than the number is round up. +// In this mode the 'requested_digits' parameter is ignored. +// - FIXED: produces digits necessary to print a given number with +// 'requested_digits' digits after the decimal point. The produced digits +// might be too short in which case the caller has to fill the gaps with '0's. +// Example: toFixed(0.001, 5) is allowed to return buffer="1", point=-2. +// Halfway cases are rounded up. The call toFixed(0.15, 2) thus returns +// buffer="2", point=0. +// Note: the length of the returned buffer has no meaning wrt the significance +// of its digits. That is, just because it contains '0's does not mean that +// any other digit would not satisfy the internal identity requirement. +// - PRECISION: produces 'requested_digits' where the first digit is not '0'. +// Even though the length of produced digits usually equals +// 'requested_digits', the function is allowed to return fewer digits, in +// which case the caller has to fill the missing digits with '0's. +// Halfway cases are again rounded up. +// 'BignumDtoa' expects the given buffer to be big enough to hold all digits +// and a terminating null-character. +static void BignumDtoa(double v, BignumDtoaMode mode, int requested_digits, + Vector *buffer, int *length, int *point); + +static int BignumNormalizedExponent(uint64_t significand, int exponent) { + DOUBLE_CONVERSION_ASSERT(significand != 0); + while ((significand & Double_kHiddenBit) == 0) { + significand = significand << 1; + exponent = exponent - 1; + } + return exponent; +} + +// Forward declarations: +// Returns an estimation of k such that 10^(k-1) <= v < 10^k. +static int BignumEstimatePower(int exponent); + +// Computes v / 10^estimated_power exactly, as a ratio of two bignums, numerator +// and denominator. +static void BignumInitialScaledStartValues(uint64_t significand, + int exponent, + bool lower_boundary_is_closer, + int estimated_power, + bool need_boundary_deltas, + Bignum *numerator, + Bignum *denominator, + Bignum *delta_minus, + Bignum *delta_plus); + +// Multiplies numerator/denominator so that its values lies in the range 1-10. +// Returns decimal_point s.t. +// v = numerator'/denominator' * 10^(decimal_point-1) +// where numerator' and denominator' are the values of numerator and +// denominator after the call to this function. +static void BignumFixupMultiply10(int estimated_power, bool is_even, + int *decimal_point, + Bignum *numerator, Bignum *denominator, + Bignum *delta_minus, Bignum *delta_plus); + +// Generates digits from the left to the right and stops when the generated +// digits yield the shortest decimal representation of v. +static void BignumGenerateShortestDigits(Bignum *numerator, Bignum *denominator, + Bignum *delta_minus, Bignum *delta_plus, + bool is_even, + Vector *buffer, int *length); + +// Generates 'requested_digits' after the decimal point. +static void BignumToFixed(int requested_digits, int *decimal_point, + Bignum *numerator, Bignum *denominator, + Vector *buffer, int *length); + +// Generates 'count' digits of numerator/denominator. +// Once 'count' digits have been produced rounds the result depending on the +// remainder (remainders of exactly .5 round upwards). Might update the +// decimal_point when rounding up (for example for 0.9999). +static void BignumGenerateCountedDigits(int count, int *decimal_point, + Bignum *numerator, Bignum *denominator, + Vector *buffer, int *length); + +static void BignumDtoa(double v, BignumDtoaMode mode, int requested_digits, + Vector *buffer, int *length, int *decimal_point) { + DOUBLE_CONVERSION_ASSERT(v > 0); + Double t = Double_make(v); + DOUBLE_CONVERSION_ASSERT(!Double_IsSpecial(&t)); + uint64_t significand; + int exponent; + bool lower_boundary_is_closer; + if (mode == BIGNUM_DTOA_SHORTEST_SINGLE) { + float f = (float)(v); + DOUBLE_CONVERSION_ASSERT(f == v); + Single st = Single_make(f); + significand = Single_Significand(&st); + exponent = Single_Exponent(&st); + lower_boundary_is_closer = Single_LowerBoundaryIsCloser(&st); + } else { + Double ft = Double_make(v); + significand = Double_Significand(&ft); + exponent = Double_Exponent(&ft); + lower_boundary_is_closer = Double_LowerBoundaryIsCloser(&ft); + } + bool need_boundary_deltas = + (mode == BIGNUM_DTOA_SHORTEST || mode == BIGNUM_DTOA_SHORTEST_SINGLE); + + bool is_even = (significand & 1) == 0; + int normalized_exponent = BignumNormalizedExponent(significand, exponent); + // estimated_power might be too low by 1. + int estimated_power = BignumEstimatePower(normalized_exponent); + + // Shortcut for Fixed. + // The requested digits correspond to the digits after the point. If the + // number is much too small, then there is no need in trying to get any + // digits. + if (mode == BIGNUM_DTOA_FIXED && -estimated_power - 1 > requested_digits) { + buffer->start[0] = '\0'; + *length = 0; + // Set decimal-point to -requested_digits. This is what Gay does. + // Note that it should not have any effect anyways since the string is + // empty. + *decimal_point = -requested_digits; + return; + } + + Bignum numerator = { 0 }; + Bignum denominator = { 0 }; + Bignum delta_minus = { 0 }; + Bignum delta_plus = { 0 }; + // Make sure the bignum can grow large enough. The smallest double equals + // 4e-324. In this case the denominator needs fewer than 324*4 binary digits. + // The maximum double is 1.7976931348623157e308 which needs fewer than + // 308*4 binary digits. + DOUBLE_CONVERSION_ASSERT(Bignum_kMaxSignificantBits >= 324*4); + BignumInitialScaledStartValues(significand, exponent, lower_boundary_is_closer, + estimated_power, need_boundary_deltas, + &numerator, &denominator, + &delta_minus, &delta_plus); + // We now have v = (numerator / denominator) * 10^estimated_power. + BignumFixupMultiply10(estimated_power, is_even, decimal_point, + &numerator, &denominator, + &delta_minus, &delta_plus); + // We now have v = (numerator / denominator) * 10^(decimal_point-1), and + // 1 <= (numerator + delta_plus) / denominator < 10 + switch (mode) { + case BIGNUM_DTOA_SHORTEST: + case BIGNUM_DTOA_SHORTEST_SINGLE: + BignumGenerateShortestDigits(&numerator, &denominator, + &delta_minus, &delta_plus, + is_even, buffer, length); + break; + case BIGNUM_DTOA_FIXED: + BignumToFixed(requested_digits, decimal_point, + &numerator, &denominator, + buffer, length); + break; + case BIGNUM_DTOA_PRECISION: + BignumGenerateCountedDigits(requested_digits, decimal_point, + &numerator, &denominator, + buffer, length); + break; + default: + DOUBLE_CONVERSION_UNREACHABLE(); + } + buffer->start[*length] = '\0'; +} + +// The procedure starts generating digits from the left to the right and stops +// when the generated digits yield the shortest decimal representation of v. A +// decimal representation of v is a number lying closer to v than to any other +// double, so it converts to v when read. +// +// This is true if d, the decimal representation, is between m- and m+, the +// upper and lower boundaries. d must be strictly between them if !is_even. +// m- := (numerator - delta_minus) / denominator +// m+ := (numerator + delta_plus) / denominator +// +// Precondition: 0 <= (numerator+delta_plus) / denominator < 10. +// If 1 <= (numerator+delta_plus) / denominator < 10 then no leading 0 digit +// will be produced. This should be the standard precondition. +static void BignumGenerateShortestDigits(Bignum *numerator, Bignum *denominator, + Bignum *delta_minus, Bignum *delta_plus, + bool is_even, + Vector *buffer, int *length) { + // Small optimization: if delta_minus and delta_plus are the same just reuse + // one of the two bignums. + if (Bignum_Equal(delta_minus, delta_plus)) { + delta_plus = delta_minus; + } + *length = 0; + for (;;) { + uint16_t digit; + digit = Bignum_DivideModuloIntBignum(numerator, denominator); + DOUBLE_CONVERSION_ASSERT(digit <= 9); // digit is a uint16_t and therefore always positive. + // digit = numerator / denominator (integer division). + // numerator = numerator % denominator. + buffer->start[(*length)++] = (char)(digit + '0'); + + // Can we stop already? + // If the remainder of the division is less than the distance to the lower + // boundary we can stop. In this case we simply round down (discarding the + // remainder). + // Similarly we test if we can round up (using the upper boundary). + bool in_delta_room_minus; + bool in_delta_room_plus; + if (is_even) { + in_delta_room_minus = Bignum_LessEqual(numerator, delta_minus); + } else { + in_delta_room_minus = Bignum_Less(numerator, delta_minus); + } + if (is_even) { + in_delta_room_plus = + Bignum_PlusCompare(numerator, delta_plus, denominator) >= 0; + } else { + in_delta_room_plus = + Bignum_PlusCompare(numerator, delta_plus, denominator) > 0; + } + if (!in_delta_room_minus && !in_delta_room_plus) { + // Prepare for next iteration. + Bignum_Times10(numerator); + Bignum_Times10(delta_minus); + // We optimized delta_plus to be equal to delta_minus (if they share the + // same value). So don't multiply delta_plus if they point to the same + // object. + if (delta_minus != delta_plus) { + Bignum_Times10(delta_plus); + } + } else if (in_delta_room_minus && in_delta_room_plus) { + // Let's see if 2*numerator < denominator. + // If yes, then the next digit would be < 5 and we can round down. + int compare = Bignum_PlusCompare(numerator, numerator, denominator); + if (compare < 0) { + // Remaining digits are less than .5. -> Round down (== do nothing). + } else if (compare > 0) { + // Remaining digits are more than .5 of denominator. -> Round up. + // Note that the last digit could not be a '9' as otherwise the whole + // loop would have stopped earlier. + // We still have an assert here in case the preconditions were not + // satisfied. + DOUBLE_CONVERSION_ASSERT(buffer->start[(*length) - 1] != '9'); + buffer->start[(*length) - 1]++; + } else { + // Halfway case. + // TODO(floitsch): need a way to solve half-way cases. + // For now let's round towards even (since this is what Gay seems to + // do). + + if ((buffer->start[(*length) - 1] - '0') % 2 == 0) { + // Round down => Do nothing. + } else { + DOUBLE_CONVERSION_ASSERT(buffer->start[(*length) - 1] != '9'); + buffer->start[(*length) - 1]++; + } + } + return; + } else if (in_delta_room_minus) { + // Round down (== do nothing). + return; + } else { // in_delta_room_plus + // Round up. + // Note again that the last digit could not be '9' since this would have + // stopped the loop earlier. + // We still have an DOUBLE_CONVERSION_ASSERT here, in case the preconditions were not + // satisfied. + DOUBLE_CONVERSION_ASSERT(buffer->start[(*length) -1] != '9'); + buffer->start[(*length) - 1]++; + return; + } + } +} + +// Let v = numerator / denominator < 10. +// Then we generate 'count' digits of d = x.xxxxx... (without the decimal point) +// from left to right. Once 'count' digits have been produced we decide whether +// to round up or down. Remainders of exactly .5 round upwards. Numbers such +// as 9.999999 propagate a carry all the way, and change the +// exponent (decimal_point), when rounding upwards. +static void BignumGenerateCountedDigits(int count, int *decimal_point, + Bignum *numerator, Bignum *denominator, + Vector *buffer, int *length) { + DOUBLE_CONVERSION_ASSERT(count >= 0); + for (int i = 0; i < count - 1; ++i) { + uint16_t digit; + digit = Bignum_DivideModuloIntBignum(numerator, denominator); + DOUBLE_CONVERSION_ASSERT(digit <= 9); // digit is a uint16_t and therefore always positive. + // digit = numerator / denominator (integer division). + // numerator = numerator % denominator. + buffer->start[i] = (char)(digit + '0'); + // Prepare for next iteration. + Bignum_Times10(numerator); + } + // Generate the last digit. + uint16_t digit; + digit = Bignum_DivideModuloIntBignum(numerator, denominator); + if (Bignum_PlusCompare(numerator, numerator, denominator) >= 0) { + digit++; + } + DOUBLE_CONVERSION_ASSERT(digit <= 10); + buffer->start[count - 1] = (char)(digit + '0'); + // Correct bad digits (in case we had a sequence of '9's). Propagate the + // carry until we hat a non-'9' or til we reach the first digit. + for (int i = count - 1; i > 0; --i) { + if (buffer->start[i] != '0' + 10) break; + buffer->start[i] = '0'; + buffer->start[i - 1]++; + } + if (buffer->start[0] == '0' + 10) { + // Propagate a carry past the top place. + buffer->start[0] = '1'; + (*decimal_point)++; + } + *length = count; +} + +// Generates 'requested_digits' after the decimal point. It might omit +// trailing '0's. If the input number is too small then no digits at all are +// generated (ex.: 2 fixed digits for 0.00001). +// +// Input verifies: 1 <= (numerator + delta) / denominator < 10. +static void BignumToFixed(int requested_digits, int *decimal_point, + Bignum *numerator, Bignum *denominator, + Vector *buffer, int *length) { + // Note that we have to look at more than just the requested_digits, since + // a number could be rounded up. Example: v=0.5 with requested_digits=0. + // Even though the power of v equals 0 we can't just stop here. + if (-(*decimal_point) > requested_digits) { + // The number is definitively too small. + // Ex: 0.001 with requested_digits == 1. + // Set decimal-point to -requested_digits. This is what Gay does. + // Note that it should not have any effect anyways since the string is + // empty. + *decimal_point = -requested_digits; + *length = 0; + return; + } else if (-(*decimal_point) == requested_digits) { + // We only need to verify if the number rounds down or up. + // Ex: 0.04 and 0.06 with requested_digits == 1. + DOUBLE_CONVERSION_ASSERT(*decimal_point == -requested_digits); + // Initially the fraction lies in range (1, 10]. Multiply the denominator + // by 10 so that we can compare more easily. + Bignum_Times10(denominator); + if (Bignum_PlusCompare(numerator, numerator, denominator) >= 0) { + // If the fraction is >= 0.5 then we have to include the rounded + // digit. + buffer->start[0] = '1'; + *length = 1; + (*decimal_point)++; + } else { + // Note that we caught most of similar cases earlier. + *length = 0; + } + return; + } else { + // The requested digits correspond to the digits after the point. + // The variable 'needed_digits' includes the digits before the point. + int needed_digits = (*decimal_point) + requested_digits; + BignumGenerateCountedDigits(needed_digits, decimal_point, + numerator, denominator, + buffer, length); + } +} + +// Returns an estimation of k such that 10^(k-1) <= v < 10^k where +// v = f * 2^exponent and 2^52 <= f < 2^53. +// v is hence a normalized double with the given exponent. The output is an +// approximation for the exponent of the decimal approximation .digits * 10^k. +// +// The result might undershoot by 1 in which case 10^k <= v < 10^k+1. +// Note: this property holds for v's upper boundary m+ too. +// 10^k <= m+ < 10^k+1. +// (see explanation below). +// +// Examples: +// EstimatePower(0) => 16 +// EstimatePower(-52) => 0 +// +// Note: e >= 0 => EstimatedPower(e) > 0. No similar claim can be made for e<0. +static int BignumEstimatePower(int exponent) { + // This function estimates log10 of v where v = f*2^e (with e == exponent). + // Note that 10^floor(log10(v)) <= v, but v <= 10^ceil(log10(v)). + // Note that f is bounded by its container size. Let p = 53 (the double's + // significand size). Then 2^(p-1) <= f < 2^p. + // + // Given that log10(v) == log2(v)/log2(10) and e+(len(f)-1) is quite close + // to log2(v) the function is simplified to (e+(len(f)-1)/log2(10)). + // The computed number undershoots by less than 0.631 (when we compute log3 + // and not log10). + // + // Optimization: since we only need an approximated result this computation + // can be performed on 64 bit integers. On x86/x64 architecture the speedup is + // not really measurable, though. + // + // Since we want to avoid overshooting we decrement by 1e10 so that + // floating-point imprecisions don't affect us. + // + // Explanation for v's boundary m+: the computation takes advantage of + // the fact that 2^(p-1) <= f < 2^p. Boundaries still satisfy this requirement + // (even for denormals where the delta can be much more important). + + const double k1Log10 = 0.30102999566398114; // 1/lg(10) + + // For doubles len(f) == 53 (don't forget the hidden bit). + const int kSignificandSize = Double_kSignificandSize; + double estimate = fp_ceil((exponent + kSignificandSize - 1) * k1Log10 - 1e-10); + return (int)(estimate); +} + +// See comments for InitialScaledStartValues. +static void BignumInitialScaledStartValuesPositiveExponent( + uint64_t significand, int exponent, + int estimated_power, bool need_boundary_deltas, + Bignum *numerator, Bignum *denominator, + Bignum *delta_minus, Bignum *delta_plus) { + + // A positive exponent implies a positive power. + DOUBLE_CONVERSION_ASSERT(estimated_power >= 0); + // Since the estimated_power is positive we simply multiply the denominator + // by 10^estimated_power. + + // numerator = v. + Bignum_AssignUInt64(numerator, significand); + Bignum_ShiftLeft(numerator, exponent); + // denominator = 10^estimated_power. + Bignum_AssignPowerUInt16(denominator, 10, estimated_power); + + if (need_boundary_deltas) { + // Introduce a common denominator so that the deltas to the boundaries are + // integers. + Bignum_ShiftLeft(denominator, 1); + Bignum_ShiftLeft(numerator, 1); + // Let v = f * 2^e, then m+ - v = 1/2 * 2^e; With the common + // denominator (of 2) delta_plus equals 2^e. + Bignum_AssignUInt16(delta_plus, 1); + Bignum_ShiftLeft(delta_plus, exponent); + // Same for delta_minus. The adjustments if f == 2^p-1 are done later. + Bignum_AssignUInt16(delta_minus, 1); + Bignum_ShiftLeft(delta_minus, exponent); + } +} + +// See comments for InitialScaledStartValues +static void BignumInitialScaledStartValuesNegativeExponentPositivePower( + uint64_t significand, int exponent, + int estimated_power, bool need_boundary_deltas, + Bignum *numerator, Bignum *denominator, + Bignum *delta_minus, Bignum *delta_plus) { + + // v = f * 2^e with e < 0, and with estimated_power >= 0. + // This means that e is close to 0 (have a look at how estimated_power is + // computed). + + // numerator = significand + // since v = significand * 2^exponent this is equivalent to + // numerator = v * / 2^-exponent + Bignum_AssignUInt64(numerator, significand); + // denominator = 10^estimated_power * 2^-exponent (with exponent < 0) + Bignum_AssignPowerUInt16(denominator, 10, estimated_power); + Bignum_ShiftLeft(denominator, -exponent); + + if (need_boundary_deltas) { + // Introduce a common denominator so that the deltas to the boundaries are + // integers. + Bignum_ShiftLeft(denominator, 1); + Bignum_ShiftLeft(numerator, 1); + // Let v = f * 2^e, then m+ - v = 1/2 * 2^e; With the common + // denominator (of 2) delta_plus equals 2^e. + // Given that the denominator already includes v's exponent the distance + // to the boundaries is simply 1. + Bignum_AssignUInt16(delta_plus, 1); + // Same for delta_minus. The adjustments if f == 2^p-1 are done later. + Bignum_AssignUInt16(delta_minus, 1); + } +} + +// See comments for InitialScaledStartValues +static void BignumInitialScaledStartValuesNegativeExponentNegativePower( + uint64_t significand, int exponent, + int estimated_power, bool need_boundary_deltas, + Bignum *numerator, Bignum *denominator, + Bignum *delta_minus, Bignum *delta_plus) { + + // Instead of multiplying the denominator with 10^estimated_power we + // multiply all values (numerator and deltas) by 10^-estimated_power. + + // Use numerator as temporary container for power_ten. + Bignum *power_ten = numerator; + Bignum_AssignPowerUInt16(power_ten, 10, -estimated_power); + + if (need_boundary_deltas) { + // Since power_ten == numerator we must make a copy of 10^estimated_power + // before we complete the computation of the numerator. + // delta_plus = delta_minus = 10^estimated_power + Bignum_AssignBignum(delta_plus, power_ten); + Bignum_AssignBignum(delta_minus, power_ten); + } + + // numerator = significand * 2 * 10^-estimated_power + // since v = significand * 2^exponent this is equivalent to + // numerator = v * 10^-estimated_power * 2 * 2^-exponent. + // Remember: numerator has been abused as power_ten. So no need to assign it + // to itself. + DOUBLE_CONVERSION_ASSERT(numerator == power_ten); + Bignum_MultiplyByUInt64(numerator, significand); + + // denominator = 2 * 2^-exponent with exponent < 0. + Bignum_AssignUInt16(denominator, 1); + Bignum_ShiftLeft(denominator, -exponent); + + if (need_boundary_deltas) { + // Introduce a common denominator so that the deltas to the boundaries are + // integers. + Bignum_ShiftLeft(numerator, 1); + Bignum_ShiftLeft(denominator, 1); + // With this shift the boundaries have their correct value, since + // delta_plus = 10^-estimated_power, and + // delta_minus = 10^-estimated_power. + // These assignments have been done earlier. + // The adjustments if f == 2^p-1 (lower boundary is closer) are done later. + } +} + +// Let v = significand * 2^exponent. +// Computes v / 10^estimated_power exactly, as a ratio of two bignums, numerator +// and denominator. The functions GenerateShortestDigits and +// GenerateCountedDigits will then convert this ratio to its decimal +// representation d, with the required accuracy. +// Then d * 10^estimated_power is the representation of v. +// (Note: the fraction and the estimated_power might get adjusted before +// generating the decimal representation.) +// +// The initial start values consist of: +// - a scaled numerator: s.t. numerator/denominator == v / 10^estimated_power. +// - a scaled (common) denominator. +// optionally (used by GenerateShortestDigits to decide if it has the shortest +// decimal converting back to v): +// - v - m-: the distance to the lower boundary. +// - m+ - v: the distance to the upper boundary. +// +// v, m+, m-, and therefore v - m- and m+ - v all share the same denominator. +// +// Let ep == estimated_power, then the returned values will satisfy: +// v / 10^ep = numerator / denominator. +// v's boundaries m- and m+: +// m- / 10^ep == v / 10^ep - delta_minus / denominator +// m+ / 10^ep == v / 10^ep + delta_plus / denominator +// Or in other words: +// m- == v - delta_minus * 10^ep / denominator; +// m+ == v + delta_plus * 10^ep / denominator; +// +// Since 10^(k-1) <= v < 10^k (with k == estimated_power) +// or 10^k <= v < 10^(k+1) +// we then have 0.1 <= numerator/denominator < 1 +// or 1 <= numerator/denominator < 10 +// +// It is then easy to kickstart the digit-generation routine. +// +// The boundary-deltas are only filled if the mode equals BIGNUM_DTOA_SHORTEST +// or BIGNUM_DTOA_SHORTEST_SINGLE. +static void BignumInitialScaledStartValues(uint64_t significand, + int exponent, + bool lower_boundary_is_closer, + int estimated_power, + bool need_boundary_deltas, + Bignum *numerator, + Bignum *denominator, + Bignum *delta_minus, + Bignum *delta_plus) { + if (exponent >= 0) { + BignumInitialScaledStartValuesPositiveExponent( + significand, exponent, estimated_power, need_boundary_deltas, + numerator, denominator, delta_minus, delta_plus); + } else if (estimated_power >= 0) { + BignumInitialScaledStartValuesNegativeExponentPositivePower( + significand, exponent, estimated_power, need_boundary_deltas, + numerator, denominator, delta_minus, delta_plus); + } else { + BignumInitialScaledStartValuesNegativeExponentNegativePower( + significand, exponent, estimated_power, need_boundary_deltas, + numerator, denominator, delta_minus, delta_plus); + } + + if (need_boundary_deltas && lower_boundary_is_closer) { + // The lower boundary is closer at half the distance of "normal" numbers. + // Increase the common denominator and adapt all but the delta_minus. + Bignum_ShiftLeft(denominator, 1); // *2 + Bignum_ShiftLeft(numerator, 1); // *2 + Bignum_ShiftLeft(delta_plus, 1); // *2 + } +} + +// This routine multiplies numerator/denominator so that its values lies in the +// range 1-10. That is after a call to this function we have: +// 1 <= (numerator + delta_plus) /denominator < 10. +// Let numerator the input before modification and numerator' the argument +// after modification, then the output-parameter decimal_point is such that +// numerator / denominator * 10^estimated_power == +// numerator' / denominator' * 10^(decimal_point - 1) +// In some cases estimated_power was too low, and this is already the case. We +// then simply adjust the power so that 10^(k-1) <= v < 10^k (with k == +// estimated_power) but do not touch the numerator or denominator. +// Otherwise the routine multiplies the numerator and the deltas by 10. +static void BignumFixupMultiply10(int estimated_power, bool is_even, + int *decimal_point, + Bignum *numerator, Bignum *denominator, + Bignum *delta_minus, Bignum *delta_plus) { + bool in_range; + if (is_even) { + // For IEEE doubles half-way cases (in decimal system numbers ending with 5) + // are rounded to the closest floating-point number with even significand. + in_range = Bignum_PlusCompare(numerator, delta_plus, denominator) >= 0; + } else { + in_range = Bignum_PlusCompare(numerator, delta_plus, denominator) > 0; + } + if (in_range) { + // Since numerator + delta_plus >= denominator we already have + // 1 <= numerator/denominator < 10. Simply update the estimated_power. + *decimal_point = estimated_power + 1; + } else { + *decimal_point = estimated_power; + Bignum_Times10(numerator); + if (Bignum_Equal(delta_minus, delta_plus)) { + Bignum_Times10(delta_minus); + Bignum_AssignBignum(delta_plus, delta_minus); + } else { + Bignum_Times10(delta_minus); + Bignum_Times10(delta_plus); + } + } +} + + + +/// ============================================================================ +/// cached-powers.h +/// ============================================================================ + +// Not all powers of ten are cached. The decimal exponent of two neighboring +// cached numbers will differ by kDecimalExponentDistance. +static const int Cache_kDecimalExponentDistance = 8; +static const int Cache_kMinDecimalExponent = -348; +static const int Cache_kMaxDecimalExponent = 340; + +// Returns a cached power-of-ten with a binary exponent in the range +// [min_exponent; max_exponent] (boundaries included). +static void Cache_GetCachedPowerForBinaryExponentRange(int min_exponent, + int max_exponent, + DiyFp *power, + int *decimal_exponent); + +// Returns a cached power of ten x ~= 10^k such that +// k <= decimal_exponent < k + kCachedPowersDecimalDistance. +// The given decimal_exponent must satisfy +// kMinDecimalExponent <= requested_exponent, and +// requested_exponent < kMaxDecimalExponent + kDecimalExponentDistance. +static void Cache_GetCachedPowerForDecimalExponent(int requested_exponent, + DiyFp *power, + int *found_exponent); + + + +/// ============================================================================ +/// cached-powers.cc +/// ============================================================================ + +typedef struct CachedPower { + uint64_t significand; + int16_t binary_exponent; + int16_t decimal_exponent; +} CachedPower; + +static const CachedPower kCachedPowers[] = { + {DOUBLE_CONVERSION_UINT64_2PART_C(0xfa8fd5a0, 081c0288), -1220, -348}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xbaaee17f, a23ebf76), -1193, -340}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x8b16fb20, 3055ac76), -1166, -332}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xcf42894a, 5dce35ea), -1140, -324}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x9a6bb0aa, 55653b2d), -1113, -316}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xe61acf03, 3d1a45df), -1087, -308}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xab70fe17, c79ac6ca), -1060, -300}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xff77b1fc, bebcdc4f), -1034, -292}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xbe5691ef, 416bd60c), -1007, -284}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x8dd01fad, 907ffc3c), -980, -276}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xd3515c28, 31559a83), -954, -268}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x9d71ac8f, ada6c9b5), -927, -260}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xea9c2277, 23ee8bcb), -901, -252}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xaecc4991, 4078536d), -874, -244}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x823c1279, 5db6ce57), -847, -236}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xc2109436, 4dfb5637), -821, -228}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x9096ea6f, 3848984f), -794, -220}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xd77485cb, 25823ac7), -768, -212}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xa086cfcd, 97bf97f4), -741, -204}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xef340a98, 172aace5), -715, -196}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xb23867fb, 2a35b28e), -688, -188}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x84c8d4df, d2c63f3b), -661, -180}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xc5dd4427, 1ad3cdba), -635, -172}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x936b9fce, bb25c996), -608, -164}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xdbac6c24, 7d62a584), -582, -156}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xa3ab6658, 0d5fdaf6), -555, -148}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xf3e2f893, dec3f126), -529, -140}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xb5b5ada8, aaff80b8), -502, -132}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x87625f05, 6c7c4a8b), -475, -124}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xc9bcff60, 34c13053), -449, -116}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x964e858c, 91ba2655), -422, -108}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xdff97724, 70297ebd), -396, -100}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xa6dfbd9f, b8e5b88f), -369, -92}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xf8a95fcf, 88747d94), -343, -84}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xb9447093, 8fa89bcf), -316, -76}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x8a08f0f8, bf0f156b), -289, -68}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xcdb02555, 653131b6), -263, -60}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x993fe2c6, d07b7fac), -236, -52}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xe45c10c4, 2a2b3b06), -210, -44}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xaa242499, 697392d3), -183, -36}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xfd87b5f2, 8300ca0e), -157, -28}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xbce50864, 92111aeb), -130, -20}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x8cbccc09, 6f5088cc), -103, -12}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xd1b71758, e219652c), -77, -4}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x9c400000, 00000000), -50, 4}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xe8d4a510, 00000000), -24, 12}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xad78ebc5, ac620000), 3, 20}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x813f3978, f8940984), 30, 28}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xc097ce7b, c90715b3), 56, 36}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x8f7e32ce, 7bea5c70), 83, 44}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xd5d238a4, abe98068), 109, 52}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x9f4f2726, 179a2245), 136, 60}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xed63a231, d4c4fb27), 162, 68}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xb0de6538, 8cc8ada8), 189, 76}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x83c7088e, 1aab65db), 216, 84}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xc45d1df9, 42711d9a), 242, 92}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x924d692c, a61be758), 269, 100}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xda01ee64, 1a708dea), 295, 108}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xa26da399, 9aef774a), 322, 116}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xf209787b, b47d6b85), 348, 124}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xb454e4a1, 79dd1877), 375, 132}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x865b8692, 5b9bc5c2), 402, 140}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xc83553c5, c8965d3d), 428, 148}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x952ab45c, fa97a0b3), 455, 156}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xde469fbd, 99a05fe3), 481, 164}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xa59bc234, db398c25), 508, 172}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xf6c69a72, a3989f5c), 534, 180}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xb7dcbf53, 54e9bece), 561, 188}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x88fcf317, f22241e2), 588, 196}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xcc20ce9b, d35c78a5), 614, 204}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x98165af3, 7b2153df), 641, 212}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xe2a0b5dc, 971f303a), 667, 220}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xa8d9d153, 5ce3b396), 694, 228}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xfb9b7cd9, a4a7443c), 720, 236}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xbb764c4c, a7a44410), 747, 244}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x8bab8eef, b6409c1a), 774, 252}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xd01fef10, a657842c), 800, 260}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x9b10a4e5, e9913129), 827, 268}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xe7109bfb, a19c0c9d), 853, 276}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xac2820d9, 623bf429), 880, 284}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x80444b5e, 7aa7cf85), 907, 292}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xbf21e440, 03acdd2d), 933, 300}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x8e679c2f, 5e44ff8f), 960, 308}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xd433179d, 9c8cb841), 986, 316}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x9e19db92, b4e31ba9), 1013, 324}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xeb96bf6e, badf77d9), 1039, 332}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xaf87023b, 9bf0ee6b), 1066, 340}, +}; + +static const int Cache_kCachedPowersOffset = 348; // -1 * the first decimal_exponent. +static const double Cache_kD_1_LOG2_10 = 0.30102999566398114; // 1 / lg(10) + +static void Cache_GetCachedPowerForBinaryExponentRange(int min_exponent, + int max_exponent, + DiyFp *power, + int *decimal_exponent) { + int kQ = DiyFp_kSignificandSize; + double k = fp_ceil((min_exponent + kQ - 1) * Cache_kD_1_LOG2_10); + int foo = Cache_kCachedPowersOffset; + int index = (foo + (int)(k) - 1) / Cache_kDecimalExponentDistance + 1; + DOUBLE_CONVERSION_ASSERT(0 <= index && index < (int)(DOUBLE_CONVERSION_ARRAY_SIZE(kCachedPowers))); + CachedPower cached_power = kCachedPowers[index]; + DOUBLE_CONVERSION_ASSERT(min_exponent <= cached_power.binary_exponent); + (void) max_exponent; // Mark variable as used. + DOUBLE_CONVERSION_ASSERT(cached_power.binary_exponent <= max_exponent); + *decimal_exponent = cached_power.decimal_exponent; + *power = DiyFp_make(cached_power.significand, cached_power.binary_exponent); +} + +static void Cache_GetCachedPowerForDecimalExponent(int requested_exponent, + DiyFp *power, + int *found_exponent) { + DOUBLE_CONVERSION_ASSERT(Cache_kMinDecimalExponent <= requested_exponent); + DOUBLE_CONVERSION_ASSERT(requested_exponent < Cache_kMaxDecimalExponent + Cache_kDecimalExponentDistance); + int index = + (requested_exponent + Cache_kCachedPowersOffset) / Cache_kDecimalExponentDistance; + CachedPower cached_power = kCachedPowers[index]; + *power = DiyFp_make(cached_power.significand, cached_power.binary_exponent); + *found_exponent = cached_power.decimal_exponent; + DOUBLE_CONVERSION_ASSERT(*found_exponent <= requested_exponent); + DOUBLE_CONVERSION_ASSERT(requested_exponent < *found_exponent + Cache_kDecimalExponentDistance); +} + + + +/// ============================================================================ +/// fast-dtoa.h +/// ============================================================================ + +typedef enum FastDtoaMode { + // Computes the shortest representation of the given input. The returned + // result will be the most accurate number of this length. Longer + // representations might be more accurate. + FAST_DTOA_SHORTEST, + // Same as FAST_DTOA_SHORTEST but for single-precision floats. + FAST_DTOA_SHORTEST_SINGLE, + // Computes a representation where the precision (number of digits) is + // given as input. The precision is independent of the decimal point. + FAST_DTOA_PRECISION +} FastDtoaMode; + +// FastDtoa will produce at most kFastDtoaMaximalLength digits. This does not +// include the terminating '\0' character. +static const int kFastDtoaMaximalLength = 17; +// Same for single-precision numbers. +static const int kFastDtoaMaximalSingleLength = 9; + +// Provides a decimal representation of v. +// The result should be interpreted as buffer * 10^(point - length). +// +// Precondition: +// * v must be a strictly positive finite double. +// +// Returns true if it succeeds, otherwise the result can not be trusted. +// There will be *length digits inside the buffer followed by a null terminator. +// If the function returns true and mode equals +// - FAST_DTOA_SHORTEST, then +// the parameter requested_digits is ignored. +// The result satisfies +// v == (double) (buffer * 10^(point - length)). +// The digits in the buffer are the shortest representation possible. E.g. +// if 0.099999999999 and 0.1 represent the same double then "1" is returned +// with point = 0. +// The last digit will be closest to the actual v. That is, even if several +// digits might correctly yield 'v' when read again, the buffer will contain +// the one closest to v. +// - FAST_DTOA_PRECISION, then +// the buffer contains requested_digits digits. +// the difference v - (buffer * 10^(point-length)) is closest to zero for +// all possible representations of requested_digits digits. +// If there are two values that are equally close, then FastDtoa returns +// false. +// For both modes the buffer must be large enough to hold the result. +static bool FastDtoa(double d, + FastDtoaMode mode, + int requested_digits, + Vector *buffer, + int *length, + int *decimal_point); + + + +/// ============================================================================ +/// fast-dtoa.cc +/// ============================================================================ + +// The minimal and maximal target exponent define the range of w's binary +// exponent, where 'w' is the result of multiplying the input by a cached power +// of ten. +// +// A different range might be chosen on a different platform, to optimize digit +// generation, but a smaller range requires more powers of ten to be cached. +static const int FastDtoa_kMinimalTargetExponent = -60; +static const int FastDtoa_kMaximalTargetExponent = -32; + +// Adjusts the last digit of the generated number, and screens out generated +// solutions that may be inaccurate. A solution may be inaccurate if it is +// outside the safe interval, or if we cannot prove that it is closer to the +// input than a neighboring representation of the same length. +// +// Input: * buffer containing the digits of too_high / 10^kappa +// * the buffer's length +// * distance_too_high_w == (too_high - w).f() * unit +// * unsafe_interval == (too_high - too_low).f() * unit +// * rest = (too_high - buffer * 10^kappa).f() * unit +// * ten_kappa = 10^kappa * unit +// * unit = the common multiplier +// Output: returns true if the buffer is guaranteed to contain the closest +// representable number to the input. +// Modifies the generated digits in the buffer to approach (round towards) w. +static bool FastDtoa_RoundWeed(Vector *buffer, + int length, + uint64_t distance_too_high_w, + uint64_t unsafe_interval, + uint64_t rest, + uint64_t ten_kappa, + uint64_t unit) { + uint64_t small_distance = distance_too_high_w - unit; + uint64_t big_distance = distance_too_high_w + unit; + // Let w_low = too_high - big_distance, and + // w_high = too_high - small_distance. + // Note: w_low < w < w_high + // + // The real w (* unit) must lie somewhere inside the interval + // ]w_low; w_high[ (often written as "(w_low; w_high)") + + // Basically the buffer currently contains a number in the unsafe interval + // ]too_low; too_high[ with too_low < w < too_high + // + // too_high - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + // ^v 1 unit ^ ^ ^ ^ + // boundary_high --------------------- . . . . + // ^v 1 unit . . . . + // - - - - - - - - - - - - - - - - - - - + - - + - - - - - - . . + // . . ^ . . + // . big_distance . . . + // . . . . rest + // small_distance . . . . + // v . . . . + // w_high - - - - - - - - - - - - - - - - - - . . . . + // ^v 1 unit . . . . + // w ---------------------------------------- . . . . + // ^v 1 unit v . . . + // w_low - - - - - - - - - - - - - - - - - - - - - . . . + // . . v + // buffer --------------------------------------------------+-------+-------- + // . . + // safe_interval . + // v . + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . + // ^v 1 unit . + // boundary_low ------------------------- unsafe_interval + // ^v 1 unit v + // too_low - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + // + // + // Note that the value of buffer could lie anywhere inside the range too_low + // to too_high. + // + // boundary_low, boundary_high and w are approximations of the real boundaries + // and v (the input number). They are guaranteed to be precise up to one unit. + // In fact the error is guaranteed to be strictly less than one unit. + // + // Anything that lies outside the unsafe interval is guaranteed not to round + // to v when read again. + // Anything that lies inside the safe interval is guaranteed to round to v + // when read again. + // If the number inside the buffer lies inside the unsafe interval but not + // inside the safe interval then we simply do not know and bail out (returning + // false). + // + // Similarly we have to take into account the imprecision of 'w' when finding + // the closest representation of 'w'. If we have two potential + // representations, and one is closer to both w_low and w_high, then we know + // it is closer to the actual value v. + // + // By generating the digits of too_high we got the largest (closest to + // too_high) buffer that is still in the unsafe interval. In the case where + // w_high < buffer < too_high we try to decrement the buffer. + // This way the buffer approaches (rounds towards) w. + // There are 3 conditions that stop the decrementation process: + // 1) the buffer is already below w_high + // 2) decrementing the buffer would make it leave the unsafe interval + // 3) decrementing the buffer would yield a number below w_high and farther + // away than the current number. In other words: + // (buffer{-1} < w_high) && w_high - buffer{-1} > buffer - w_high + // Instead of using the buffer directly we use its distance to too_high. + // Conceptually rest ~= too_high - buffer + // We need to do the following tests in this order to avoid over- and + // underflows. + DOUBLE_CONVERSION_ASSERT(rest <= unsafe_interval); + while (rest < small_distance && // Negated condition 1 + unsafe_interval - rest >= ten_kappa && // Negated condition 2 + (rest + ten_kappa < small_distance || // buffer{-1} > w_high + small_distance - rest >= rest + ten_kappa - small_distance)) { + buffer->start[length - 1]--; + rest += ten_kappa; + } + + // We have approached w+ as much as possible. We now test if approaching w- + // would require changing the buffer. If yes, then we have two possible + // representations close to w, but we cannot decide which one is closer. + if (rest < big_distance && + unsafe_interval - rest >= ten_kappa && + (rest + ten_kappa < big_distance || + big_distance - rest > rest + ten_kappa - big_distance)) { + return false; + } + + // Weeding test. + // The safe interval is [too_low + 2 ulp; too_high - 2 ulp] + // Since too_low = too_high - unsafe_interval this is equivalent to + // [too_high - unsafe_interval + 4 ulp; too_high - 2 ulp] + // Conceptually we have: rest ~= too_high - buffer + return (2 * unit <= rest) && (rest <= unsafe_interval - 4 * unit); +} + +// Rounds the buffer upwards if the result is closer to v by possibly adding +// 1 to the buffer. If the precision of the calculation is not sufficient to +// round correctly, return false. +// The rounding might shift the whole buffer in which case the kappa is +// adjusted. For example "99", kappa = 3 might become "10", kappa = 4. +// +// If 2*rest > ten_kappa then the buffer needs to be round up. +// rest can have an error of +/- 1 unit. This function accounts for the +// imprecision and returns false, if the rounding direction cannot be +// unambiguously determined. +// +// Precondition: rest < ten_kappa. +static bool FastDtoa_RoundWeedCounted(Vector *buffer, + int length, + uint64_t rest, + uint64_t ten_kappa, + uint64_t unit, + int *kappa) { + DOUBLE_CONVERSION_ASSERT(rest < ten_kappa); + // The following tests are done in a specific order to avoid overflows. They + // will work correctly with any uint64 values of rest < ten_kappa and unit. + // + // If the unit is too big, then we don't know which way to round. For example + // a unit of 50 means that the real number lies within rest +/- 50. If + // 10^kappa == 40 then there is no way to tell which way to round. + if (unit >= ten_kappa) return false; + // Even if unit is just half the size of 10^kappa we are already completely + // lost. (And after the previous test we know that the expression will not + // over/underflow.) + if (ten_kappa - unit <= unit) return false; + // If 2 * (rest + unit) <= 10^kappa we can safely round down. + if ((ten_kappa - rest > rest) && (ten_kappa - 2 * rest >= 2 * unit)) { + return true; + } + // If 2 * (rest - unit) >= 10^kappa, then we can safely round up. + if ((rest > unit) && (ten_kappa - (rest - unit) <= (rest - unit))) { + // Increment the last digit recursively until we find a non '9' digit. + buffer->start[length - 1]++; + for (int i = length - 1; i > 0; --i) { + if (buffer->start[i] != '0' + 10) break; + buffer->start[i] = '0'; + buffer->start[i - 1]++; + } + // If the first digit is now '0'+ 10 we had a buffer with all '9's. With the + // exception of the first digit all digits are now '0'. Simply switch the + // first digit to '1' and adjust the kappa. Example: "99" becomes "10" and + // the power (the kappa) is increased. + if (buffer->start[0] == '0' + 10) { + buffer->start[0] = '1'; + (*kappa) += 1; + } + return true; + } + return false; +} + +// Returns the biggest power of ten that is less than or equal to the given +// number. We furthermore receive the maximum number of bits 'number' has. +// +// Returns power == 10^(exponent_plus_one-1) such that +// power <= number < power * 10. +// If number_bits == 0 then 0^(0-1) is returned. +// The number of bits must be <= 32. +// Precondition: number < (1 << (number_bits + 1)). + +// Inspired by the method for finding an integer log base 10 from here: +// http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog10 +static unsigned int const FastDtoa_kSmallPowersOfTen[] = + {0, 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, + 1000000000}; + +static void FastDtoa_BiggestPowerTen(uint32_t number, + int number_bits, + uint32_t *power, + int *exponent_plus_one) { + DOUBLE_CONVERSION_ASSERT(number < (1u << (number_bits + 1))); + // 1233/4096 is approximately 1/lg(10). + int exponent_plus_one_guess = ((number_bits + 1) * 1233 >> 12); + // We increment to skip over the first entry in the kPowersOf10 table. + // Note: kPowersOf10[i] == 10^(i-1). + exponent_plus_one_guess++; + // We don't have any guarantees that 2^number_bits <= number. + if (number < FastDtoa_kSmallPowersOfTen[exponent_plus_one_guess]) { + exponent_plus_one_guess--; + } + *power = FastDtoa_kSmallPowersOfTen[exponent_plus_one_guess]; + *exponent_plus_one = exponent_plus_one_guess; +} + +// Generates the digits of input number w. +// w is a floating-point number (DiyFp), consisting of a significand and an +// exponent. Its exponent is bounded by kMinimalTargetExponent and +// kMaximalTargetExponent. +// Hence -60 <= w.e() <= -32. +// +// Returns false if it fails, in which case the generated digits in the buffer +// should not be used. +// Preconditions: +// * low, w and high are correct up to 1 ulp (unit in the last place). That +// is, their error must be less than a unit of their last digits. +// * low.e() == w.e() == high.e() +// * low < w < high, and taking into account their error: low~ <= high~ +// * kMinimalTargetExponent <= w.e() <= kMaximalTargetExponent +// Postconditions: returns false if procedure fails. +// otherwise: +// * buffer is not null-terminated, but len contains the number of digits. +// * buffer contains the shortest possible decimal digit-sequence +// such that LOW < buffer * 10^kappa < HIGH, where LOW and HIGH are the +// correct values of low and high (without their error). +// * if more than one decimal representation gives the minimal number of +// decimal digits then the one closest to W (where W is the correct value +// of w) is chosen. +// Remark: this procedure takes into account the imprecision of its input +// numbers. If the precision is not enough to guarantee all the postconditions +// then false is returned. This usually happens rarely (~0.5%). +// +// Say, for the sake of example, that +// w.e() == -48, and w.f() == 0x1234567890abcdef +// w's value can be computed by w.f() * 2^w.e() +// We can obtain w's integral digits by simply shifting w.f() by -w.e(). +// -> w's integral part is 0x1234 +// w's fractional part is therefore 0x567890abcdef. +// Printing w's integral part is easy (simply print 0x1234 in decimal). +// In order to print its fraction we repeatedly multiply the fraction by 10 and +// get each digit. Example the first digit after the point would be computed by +// (0x567890abcdef * 10) >> 48. -> 3 +// The whole thing becomes slightly more complicated because we want to stop +// once we have enough digits. That is, once the digits inside the buffer +// represent 'w' we can stop. Everything inside the interval low - high +// represents w. However we have to pay attention to low, high and w's +// imprecision. +static bool FastDtoa_DigitGen(DiyFp low, + DiyFp w, + DiyFp high, + Vector *buffer, + int *length, + int *kappa) { + DOUBLE_CONVERSION_ASSERT(low.e == w.e && w.e == high.e); + DOUBLE_CONVERSION_ASSERT(low.f + 1 <= high.f - 1); + DOUBLE_CONVERSION_ASSERT(FastDtoa_kMinimalTargetExponent <= w.e && w.e <= FastDtoa_kMaximalTargetExponent); + // low, w and high are imprecise, but by less than one ulp (unit in the last + // place). + // If we remove (resp. add) 1 ulp from low (resp. high) we are certain that + // the new numbers are outside of the interval we want the final + // representation to lie in. + // Inversely adding (resp. removing) 1 ulp from low (resp. high) would yield + // numbers that are certain to lie in the interval. We will use this fact + // later on. + // We will now start by generating the digits within the uncertain + // interval. Later we will weed out representations that lie outside the safe + // interval and thus _might_ lie outside the correct interval. + uint64_t unit = 1; + DiyFp too_low = DiyFp_make(low.f - unit, low.e); + DiyFp too_high = DiyFp_make(high.f + unit, high.e); + // too_low and too_high are guaranteed to lie outside the interval we want the + // generated number in. + DiyFp unsafe_interval = DiyFp_Minus(&too_high, &too_low); + // We now cut the input number into two parts: the integral digits and the + // fractionals. We will not write any decimal separator though, but adapt + // kappa instead. + // Reminder: we are currently computing the digits (stored inside the buffer) + // such that: too_low < buffer * 10^kappa < too_high + // We use too_high for the digit_generation and stop as soon as possible. + // If we stop early we effectively round down. + DiyFp one = DiyFp_make((uint64_t)(1) << -w.e, w.e); + // Division by one is a shift. + uint32_t integrals = (uint32_t)(too_high.f >> -one.e); + // Modulo by one is an and. + uint64_t fractionals = too_high.f & (one.f - 1); + uint32_t divisor; + int divisor_exponent_plus_one; + FastDtoa_BiggestPowerTen(integrals, DiyFp_kSignificandSize - (-one.e), + &divisor, &divisor_exponent_plus_one); + *kappa = divisor_exponent_plus_one; + *length = 0; + // Loop invariant: buffer = too_high / 10^kappa (integer division) + // The invariant holds for the first iteration: kappa has been initialized + // with the divisor exponent + 1. And the divisor is the biggest power of ten + // that is smaller than integrals. + while (*kappa > 0) { + int digit = integrals / divisor; + DOUBLE_CONVERSION_ASSERT(digit <= 9); + buffer->start[*length] = (char)('0' + digit); + (*length)++; + integrals %= divisor; + (*kappa)--; + // Note that kappa now equals the exponent of the divisor and that the + // invariant thus holds again. + uint64_t rest = ((uint64_t)(integrals) << -one.e) + fractionals; + // Invariant: too_high = buffer * 10^kappa + DiyFp(rest, one.e()) + // Reminder: unsafe_interval.e() == one.e() + if (rest < unsafe_interval.f) { + // Rounding down (by not emitting the remaining digits) yields a number + // that lies within the unsafe interval. + return FastDtoa_RoundWeed(buffer, *length, DiyFp_Minus(&too_high, &w).f, + unsafe_interval.f, rest, + (uint64_t)(divisor) << -one.e, unit); + } + divisor /= 10; + } + + // The integrals have been generated. We are at the point of the decimal + // separator. In the following loop we simply multiply the remaining digits by + // 10 and divide by one. We just need to pay attention to multiply associated + // data (like the interval or 'unit'), too. + // Note that the multiplication by 10 does not overflow, because w.e >= -60 + // and thus one.e >= -60. + DOUBLE_CONVERSION_ASSERT(one.e >= -60); + DOUBLE_CONVERSION_ASSERT(fractionals < one.f); + DOUBLE_CONVERSION_ASSERT(DOUBLE_CONVERSION_UINT64_2PART_C(0xFFFFFFFF, FFFFFFFF) / 10 >= one.f); + for (;;) { + fractionals *= 10; + unit *= 10; + unsafe_interval.f = (unsafe_interval.f * 10); + // Integer division by one. + int digit = (int)(fractionals >> -one.e); + DOUBLE_CONVERSION_ASSERT(digit <= 9); + buffer->start[*length] = (char)('0' + digit); + (*length)++; + fractionals &= one.f - 1; // Modulo by one. + (*kappa)--; + if (fractionals < unsafe_interval.f) { + return FastDtoa_RoundWeed(buffer, *length, DiyFp_Minus(&too_high, &w).f * unit, + unsafe_interval.f, fractionals, one.f, unit); + } + } +} + +// Generates (at most) requested_digits digits of input number w. +// w is a floating-point number (DiyFp), consisting of a significand and an +// exponent. Its exponent is bounded by kMinimalTargetExponent and +// kMaximalTargetExponent. +// Hence -60 <= w.e() <= -32. +// +// Returns false if it fails, in which case the generated digits in the buffer +// should not be used. +// Preconditions: +// * w is correct up to 1 ulp (unit in the last place). That +// is, its error must be strictly less than a unit of its last digit. +// * kMinimalTargetExponent <= w.e() <= kMaximalTargetExponent +// +// Postconditions: returns false if procedure fails. +// otherwise: +// * buffer is not null-terminated, but length contains the number of +// digits. +// * the representation in buffer is the most precise representation of +// requested_digits digits. +// * buffer contains at most requested_digits digits of w. If there are less +// than requested_digits digits then some trailing '0's have been removed. +// * kappa is such that +// w = buffer * 10^kappa + eps with |eps| < 10^kappa / 2. +// +// Remark: This procedure takes into account the imprecision of its input +// numbers. If the precision is not enough to guarantee all the postconditions +// then false is returned. This usually happens rarely, but the failure-rate +// increases with higher requested_digits. +static bool FastDtoa_DigitGenCounted(DiyFp w, + int requested_digits, + Vector *buffer, + int *length, + int *kappa) { + DOUBLE_CONVERSION_ASSERT(FastDtoa_kMinimalTargetExponent <= w.e && w.e <= FastDtoa_kMaximalTargetExponent); + DOUBLE_CONVERSION_ASSERT(FastDtoa_kMinimalTargetExponent >= -60); + DOUBLE_CONVERSION_ASSERT(FastDtoa_kMaximalTargetExponent <= -32); + // w is assumed to have an error less than 1 unit. Whenever w is scaled we + // also scale its error. + uint64_t w_error = 1; + // We cut the input number into two parts: the integral digits and the + // fractional digits. We don't emit any decimal separator, but adapt kappa + // instead. Example: instead of writing "1.2" we put "12" into the buffer and + // increase kappa by 1. + DiyFp one = DiyFp_make((uint64_t)(1) << -w.e, w.e); + // Division by one is a shift. + uint32_t integrals = (uint32_t)(w.f >> -one.e); + // Modulo by one is an and. + uint64_t fractionals = w.f & (one.f - 1); + uint32_t divisor; + int divisor_exponent_plus_one; + FastDtoa_BiggestPowerTen(integrals, DiyFp_kSignificandSize - (-one.e), + &divisor, &divisor_exponent_plus_one); + *kappa = divisor_exponent_plus_one; + *length = 0; + + // Loop invariant: buffer = w / 10^kappa (integer division) + // The invariant holds for the first iteration: kappa has been initialized + // with the divisor exponent + 1. And the divisor is the biggest power of ten + // that is smaller than 'integrals'. + while (*kappa > 0) { + int digit = integrals / divisor; + DOUBLE_CONVERSION_ASSERT(digit <= 9); + buffer->start[*length] = (char)('0' + digit); + (*length)++; + requested_digits--; + integrals %= divisor; + (*kappa)--; + // Note that kappa now equals the exponent of the divisor and that the + // invariant thus holds again. + if (requested_digits == 0) break; + divisor /= 10; + } + + if (requested_digits == 0) { + uint64_t rest = ((uint64_t)(integrals) << -one.e) + fractionals; + return FastDtoa_RoundWeedCounted(buffer, *length, rest, + (uint64_t)(divisor) << -one.e, w_error, + kappa); + } + + // The integrals have been generated. We are at the point of the decimal + // separator. In the following loop we simply multiply the remaining digits by + // 10 and divide by one. We just need to pay attention to multiply associated + // data (the 'unit'), too. + // Note that the multiplication by 10 does not overflow, because w.e >= -60 + // and thus one.e >= -60. + DOUBLE_CONVERSION_ASSERT(one.e >= -60); + DOUBLE_CONVERSION_ASSERT(fractionals < one.f); + DOUBLE_CONVERSION_ASSERT(DOUBLE_CONVERSION_UINT64_2PART_C(0xFFFFFFFF, FFFFFFFF) / 10 >= one.f); + while (requested_digits > 0 && fractionals > w_error) { + fractionals *= 10; + w_error *= 10; + // Integer division by one. + int digit = (int)(fractionals >> -one.e); + DOUBLE_CONVERSION_ASSERT(digit <= 9); + buffer->start[*length] = (char)('0' + digit); + (*length)++; + requested_digits--; + fractionals &= one.f - 1; // Modulo by one. + (*kappa)--; + } + if (requested_digits != 0) return false; + return FastDtoa_RoundWeedCounted(buffer, *length, fractionals, one.f, w_error, kappa); +} + +// Provides a decimal representation of v. +// Returns true if it succeeds, otherwise the result cannot be trusted. +// There will be *length digits inside the buffer (not null-terminated). +// If the function returns true then +// v == (double) (buffer * 10^decimal_exponent). +// The digits in the buffer are the shortest representation possible: no +// 0.09999999999999999 instead of 0.1. The shorter representation will even be +// chosen even if the longer one would be closer to v. +// The last digit will be closest to the actual v. That is, even if several +// digits might correctly yield 'v' when read again, the closest will be +// computed. +static bool FastDtoa_Grisu3(double v, + FastDtoaMode mode, + Vector *buffer, + int *length, + int *decimal_exponent) { + Double d = Double_make(v); + DiyFp w = Double_AsNormalizedDiyFp(&d); + // boundary_minus and boundary_plus are the boundaries between v and its + // closest floating-point neighbors. Any number strictly between + // boundary_minus and boundary_plus will round to v when convert to a double. + // Grisu3 will never output representations that lie exactly on a boundary. + DiyFp boundary_minus, boundary_plus; + if (mode == FAST_DTOA_SHORTEST) { + Double_NormalizedBoundaries(&d, &boundary_minus, &boundary_plus); + } else { + DOUBLE_CONVERSION_ASSERT(mode == FAST_DTOA_SHORTEST_SINGLE); + float single_v = (float)(v); + Single s = Single_make(single_v); + Single_NormalizedBoundaries(&s, &boundary_minus, &boundary_plus); + } + DOUBLE_CONVERSION_ASSERT(boundary_plus.e == w.e); + DiyFp ten_mk = { 0 }; // Cached power of ten: 10^-k + int mk = 0; // -k + int ten_mk_minimal_binary_exponent = + FastDtoa_kMinimalTargetExponent - (w.e + DiyFp_kSignificandSize); + int ten_mk_maximal_binary_exponent = + FastDtoa_kMaximalTargetExponent - (w.e + DiyFp_kSignificandSize); + Cache_GetCachedPowerForBinaryExponentRange( + ten_mk_minimal_binary_exponent, + ten_mk_maximal_binary_exponent, + &ten_mk, &mk); + DOUBLE_CONVERSION_ASSERT((FastDtoa_kMinimalTargetExponent <= w.e + ten_mk.e + + DiyFp_kSignificandSize) && + (FastDtoa_kMaximalTargetExponent >= w.e + ten_mk.e + + DiyFp_kSignificandSize)); + // Note that ten_mk is only an approximation of 10^-k. A DiyFp only contains a + // 64 bit significand and ten_mk is thus only precise up to 64 bits. + + // The DiyFp::Times procedure rounds its result, and ten_mk is approximated + // too. The variable scaled_w (as well as scaled_boundary_minus/plus) are now + // off by a small amount. + // In fact: scaled_w - w*10^k < 1ulp (unit in the last place) of scaled_w. + // In other words: let f = scaled_w.f() and e = scaled_w.e(), then + // (f-1) * 2^e < w*10^k < (f+1) * 2^e + DiyFp scaled_w = DiyFp_Times(&w, &ten_mk); + DOUBLE_CONVERSION_ASSERT(scaled_w.e == + boundary_plus.e + ten_mk.e + DiyFp_kSignificandSize); + // In theory it would be possible to avoid some recomputations by computing + // the difference between w and boundary_minus/plus (a power of 2) and to + // compute scaled_boundary_minus/plus by subtracting/adding from + // scaled_w. However the code becomes much less readable and the speed + // enhancements are not terrific. + DiyFp scaled_boundary_minus = DiyFp_Times(&boundary_minus, &ten_mk); + DiyFp scaled_boundary_plus = DiyFp_Times(&boundary_plus, &ten_mk); + + // DigitGen will generate the digits of scaled_w. Therefore we have + // v == (double) (scaled_w * 10^-mk). + // Set decimal_exponent == -mk and pass it to DigitGen. If scaled_w is not an + // integer than it will be updated. For instance if scaled_w == 1.23 then + // the buffer will be filled with "123" and the decimal_exponent will be + // decreased by 2. + int kappa = 0; + bool result = FastDtoa_DigitGen(scaled_boundary_minus, scaled_w, scaled_boundary_plus, + buffer, length, &kappa); + *decimal_exponent = -mk + kappa; + return result; +} + +// The "counted" version of grisu3 (see above) only generates requested_digits +// number of digits. This version does not generate the shortest representation, +// and with enough requested digits 0.1 will at some point print as 0.9999999... +// Grisu3 is too imprecise for real halfway cases (1.5 will not work) and +// therefore the rounding strategy for halfway cases is irrelevant. +static bool FastDtoa_Grisu3Counted(double v, + int requested_digits, + Vector *buffer, + int *length, + int *decimal_exponent) { + Double d = Double_make(v); + DiyFp w = Double_AsNormalizedDiyFp(&d); + DiyFp ten_mk = { 0 }; // Cached power of ten: 10^-k + int mk = 0; // -k + int ten_mk_minimal_binary_exponent = + FastDtoa_kMinimalTargetExponent - (w.e + DiyFp_kSignificandSize); + int ten_mk_maximal_binary_exponent = + FastDtoa_kMaximalTargetExponent - (w.e + DiyFp_kSignificandSize); + Cache_GetCachedPowerForBinaryExponentRange( + ten_mk_minimal_binary_exponent, + ten_mk_maximal_binary_exponent, + &ten_mk, &mk); + DOUBLE_CONVERSION_ASSERT((FastDtoa_kMinimalTargetExponent <= w.e + ten_mk.e + + DiyFp_kSignificandSize) && + (FastDtoa_kMaximalTargetExponent >= w.e + ten_mk.e + + DiyFp_kSignificandSize)); + // Note that ten_mk is only an approximation of 10^-k. A DiyFp only contains a + // 64 bit significand and ten_mk is thus only precise up to 64 bits. + + // The DiyFp::Times procedure rounds its result, and ten_mk is approximated + // too. The variable scaled_w (as well as scaled_boundary_minus/plus) are now + // off by a small amount. + // In fact: scaled_w - w*10^k < 1ulp (unit in the last place) of scaled_w. + // In other words: let f = scaled_w.f() and e = scaled_w.e(), then + // (f-1) * 2^e < w*10^k < (f+1) * 2^e + DiyFp scaled_w = DiyFp_Times(&w, &ten_mk); + + // We now have (double) (scaled_w * 10^-mk). + // DigitGen will generate the first requested_digits digits of scaled_w and + // return together with a kappa such that scaled_w ~= buffer * 10^kappa. (It + // will not always be exactly the same since DigitGenCounted only produces a + // limited number of digits.) + int kappa = 0; + bool result = FastDtoa_DigitGenCounted(scaled_w, requested_digits, + buffer, length, &kappa); + *decimal_exponent = -mk + kappa; + return result; +} + +static bool FastDtoa(double v, + FastDtoaMode mode, + int requested_digits, + Vector *buffer, + int *length, + int *decimal_point) { + DOUBLE_CONVERSION_ASSERT(v > 0); + Double d = Double_make(v); + DOUBLE_CONVERSION_ASSERT(!Double_IsSpecial(&d)); + + bool result = false; + int decimal_exponent = 0; + switch (mode) { + case FAST_DTOA_SHORTEST: + case FAST_DTOA_SHORTEST_SINGLE: + result = FastDtoa_Grisu3(v, mode, buffer, length, &decimal_exponent); + break; + case FAST_DTOA_PRECISION: + result = FastDtoa_Grisu3Counted(v, requested_digits, + buffer, length, &decimal_exponent); + break; + default: + DOUBLE_CONVERSION_UNREACHABLE(); + } + if (result) { + *decimal_point = *length + decimal_exponent; + buffer->start[*length] = '\0'; + } + return result; +} + + + +/// ============================================================================ +/// fix-dtoa.h +/// ============================================================================ + +// Produces digits necessary to print a given number with +// 'fractional_count' digits after the decimal point. +// The buffer must be big enough to hold the result plus one terminating null +// character. +// +// The produced digits might be too short in which case the caller has to fill +// the gaps with '0's. +// Example: FastFixedDtoa(0.001, 5, ...) is allowed to return buffer = "1", and +// decimal_point = -2. +// Halfway cases are rounded towards +/-Infinity (away from 0). The call +// FastFixedDtoa(0.15, 2, ...) thus returns buffer = "2", decimal_point = 0. +// The returned buffer may contain digits that would be truncated from the +// shortest representation of the input. +// +// This method only works for some parameters. If it can't handle the input it +// returns false. The output is null-terminated when the function succeeds. +static bool FastFixedDtoa(double v, int fractional_count, + Vector *buffer, int *length, int *decimal_point); + + + +/// ============================================================================ +/// fix-dtoa.cc +/// ============================================================================ + +static const uint64_t UInt128_kMask32 = 0xFFFFFFFF; + +// Represents a 128bit type. This class should be replaced by a native type on +// platforms that support 128bit integers. +typedef struct UInt128 { + // Value == (high_bits_ << 64) + low_bits_ + uint64_t high_bits; + uint64_t low_bits; +} UInt128; + +static UInt128 UInt128_make(uint64_t high, uint64_t low) { + UInt128 u; + u.high_bits = high; + u.low_bits = low; + return u; +} + +static void UInt128_Multiply(UInt128 *u, uint32_t multiplicand) { + uint64_t accumulator; + + accumulator = (u->low_bits & UInt128_kMask32) * multiplicand; + uint32_t part = (uint32_t)(accumulator & UInt128_kMask32); + accumulator >>= 32; + accumulator = accumulator + (u->low_bits >> 32) * multiplicand; + u->low_bits = (accumulator << 32) + part; + accumulator >>= 32; + accumulator = accumulator + (u->high_bits & UInt128_kMask32) * multiplicand; + part = (uint32_t)(accumulator & UInt128_kMask32); + accumulator >>= 32; + accumulator = accumulator + (u->high_bits >> 32) * multiplicand; + u->high_bits = (accumulator << 32) + part; + DOUBLE_CONVERSION_ASSERT((accumulator >> 32) == 0); +} + +static void UInt128_Shift(UInt128 *u, int shift_amount) { + DOUBLE_CONVERSION_ASSERT(-64 <= shift_amount && shift_amount <= 64); + if (shift_amount == 0) { + return; + } else if (shift_amount == -64) { + u->high_bits = u->low_bits; + u->low_bits = 0; + } else if (shift_amount == 64) { + u->low_bits = u->high_bits; + u->high_bits = 0; + } else if (shift_amount <= 0) { + u->high_bits <<= -shift_amount; + u->high_bits += u->low_bits >> (64 + shift_amount); + u->low_bits <<= -shift_amount; + } else { + u->low_bits >>= shift_amount; + u->low_bits += u->high_bits << (64 - shift_amount); + u->high_bits >>= shift_amount; + } +} + + // Modifies *this to *this MOD (2^power). + // Returns *this DIV (2^power). +static int UInt128_DivModPowerOf2(UInt128 *u, int power) { + if (power >= 64) { + int result = (int)(u->high_bits >> (power - 64)); + u->high_bits -= (uint64_t)(result) << (power - 64); + return result; + } else { + uint64_t part_low = u->low_bits >> power; + uint64_t part_high = u->high_bits << (64 - power); + int result = (int)(part_low + part_high); + u->high_bits = 0; + u->low_bits -= part_low << power; + return result; + } +} + +static bool UInt128_IsZero(UInt128 *u) { + return u->high_bits == 0 && u->low_bits == 0; +} + +static int UInt128_BitAt(UInt128 *u, int position) { + if (position >= 64) { + return (int)(u->high_bits >> (position - 64)) & 1; + } else { + return (int)(u->low_bits >> position) & 1; + } +} + + + +static const int Fixed_kDoubleSignificandSize = 53; // Includes the hidden bit. + +static void Fixed_FillDigits32FixedLength(uint32_t number, int requested_length, + Vector *buffer, int *length) { + for (int i = requested_length - 1; i >= 0; --i) { + buffer->start[(*length) + i] = '0' + number % 10; + number /= 10; + } + *length += requested_length; +} + +static void Fixed_FillDigits32(uint32_t number, Vector *buffer, int*length) { + int number_length = 0; + // We fill the digits in reverse order and exchange them afterwards. + while (number != 0) { + int digit = number % 10; + number /= 10; + buffer->start[(*length) + number_length] = (char)('0' + digit); + number_length++; + } + // Exchange the digits. + int i = *length; + int j = *length + number_length - 1; + while (i < j) { + char tmp = buffer->start[i]; + buffer->start[i] = buffer->start[j]; + buffer->start[j] = tmp; + i++; + j--; + } + *length += number_length; +} + +static void Fixed_FillDigits64FixedLength(uint64_t number, + Vector *buffer, int *length) { + const uint32_t kTen7 = 10000000; + // For efficiency cut the number into 3 uint32_t parts, and print those. + uint32_t part2 = (uint32_t)(number % kTen7); + number /= kTen7; + uint32_t part1 = (uint32_t)(number % kTen7); + uint32_t part0 = (uint32_t)(number / kTen7); + + Fixed_FillDigits32FixedLength(part0, 3, buffer, length); + Fixed_FillDigits32FixedLength(part1, 7, buffer, length); + Fixed_FillDigits32FixedLength(part2, 7, buffer, length); +} + +static void Fixed_FillDigits64(uint64_t number, Vector *buffer, int *length) { + const uint32_t kTen7 = 10000000; + // For efficiency cut the number into 3 uint32_t parts, and print those. + uint32_t part2 = (uint32_t)(number % kTen7); + number /= kTen7; + uint32_t part1 = (uint32_t)(number % kTen7); + uint32_t part0 = (uint32_t)(number / kTen7); + + if (part0 != 0) { + Fixed_FillDigits32(part0, buffer, length); + Fixed_FillDigits32FixedLength(part1, 7, buffer, length); + Fixed_FillDigits32FixedLength(part2, 7, buffer, length); + } else if (part1 != 0) { + Fixed_FillDigits32(part1, buffer, length); + Fixed_FillDigits32FixedLength(part2, 7, buffer, length); + } else { + Fixed_FillDigits32(part2, buffer, length); + } +} + +static void Fixed_RoundUp(Vector *buffer, int *length, int *decimal_point) { + // An empty buffer represents 0. + if (*length == 0) { + buffer->start[0] = '1'; + *decimal_point = 1; + *length = 1; + return; + } + // Round the last digit until we either have a digit that was not '9' or until + // we reached the first digit. + buffer->start[(*length) - 1]++; + for (int i = (*length) - 1; i > 0; --i) { + if (buffer->start[i] != '0' + 10) { + return; + } + buffer->start[i] = '0'; + buffer->start[i - 1]++; + } + // If the first digit is now '0' + 10, we would need to set it to '0' and add + // a '1' in front. However we reach the first digit only if all following + // digits had been '9' before rounding up. Now all trailing digits are '0' and + // we simply switch the first digit to '1' and update the decimal-point + // (indicating that the point is now one digit to the right). + if (buffer->start[0] == '0' + 10) { + buffer->start[0] = '1'; + (*decimal_point)++; + } +} + +// The given fractionals number represents a fixed-point number with binary +// point at bit (-exponent). +// Preconditions: +// -128 <= exponent <= 0. +// 0 <= fractionals * 2^exponent < 1 +// The buffer holds the result. +// The function will round its result. During the rounding-process digits not +// generated by this function might be updated, and the decimal-point variable +// might be updated. If this function generates the digits 99 and the buffer +// already contained "199" (thus yielding a buffer of "19999") then a +// rounding-up will change the contents of the buffer to "20000". +static void Fixed_FillFractionals(uint64_t fractionals, int exponent, + int fractional_count, Vector *buffer, + int *length, int *decimal_point) { + DOUBLE_CONVERSION_ASSERT(-128 <= exponent && exponent <= 0); + // 'fractionals' is a fixed-point number, with binary point at bit + // (-exponent). Inside the function the non-converted remainder of fractionals + // is a fixed-point number, with binary point at bit 'point'. + if (-exponent <= 64) { + // One 64 bit number is sufficient. + DOUBLE_CONVERSION_ASSERT(fractionals >> 56 == 0); + int point = -exponent; + for (int i = 0; i < fractional_count; ++i) { + if (fractionals == 0) break; + // Instead of multiplying by 10 we multiply by 5 and adjust the point + // location. This way the fractionals variable will not overflow. + // Invariant at the beginning of the loop: fractionals < 2^point. + // Initially we have: point <= 64 and fractionals < 2^56 + // After each iteration the point is decremented by one. + // Note that 5^3 = 125 < 128 = 2^7. + // Therefore three iterations of this loop will not overflow fractionals + // (even without the subtraction at the end of the loop body). At this + // time point will satisfy point <= 61 and therefore fractionals < 2^point + // and any further multiplication of fractionals by 5 will not overflow. + fractionals *= 5; + point--; + int digit = (int)(fractionals >> point); + DOUBLE_CONVERSION_ASSERT(digit <= 9); + buffer->start[*length] = (char)('0' + digit); + (*length)++; + fractionals -= (uint64_t)(digit) << point; + } + // If the first bit after the point is set we have to round up. + DOUBLE_CONVERSION_ASSERT(fractionals == 0 || point - 1 >= 0); + if ((fractionals != 0) && ((fractionals >> (point - 1)) & 1) == 1) { + Fixed_RoundUp(buffer, length, decimal_point); + } + } else { // We need 128 bits. + DOUBLE_CONVERSION_ASSERT(64 < -exponent && -exponent <= 128); + UInt128 fractionals128 = UInt128_make(fractionals, 0); + UInt128_Shift(&fractionals128, -exponent - 64); + int point = 128; + for (int i = 0; i < fractional_count; ++i) { + if (UInt128_IsZero(&fractionals128)) break; + // As before: instead of multiplying by 10 we multiply by 5 and adjust the + // point location. + // This multiplication will not overflow for the same reasons as before. + UInt128_Multiply(&fractionals128, 5); + point--; + int digit = UInt128_DivModPowerOf2(&fractionals128, point); + DOUBLE_CONVERSION_ASSERT(digit <= 9); + buffer->start[*length] = (char)('0' + digit); + (*length)++; + } + if (UInt128_BitAt(&fractionals128, point - 1) == 1) { + Fixed_RoundUp(buffer, length, decimal_point); + } + } +} + +// Removes leading and trailing zeros. +// If leading zeros are removed then the decimal point position is adjusted. +static void Fixed_TrimZeros(Vector *buffer, int *length, int *decimal_point) { + while (*length > 0 && buffer->start[(*length) - 1] == '0') { + (*length)--; + } + int first_non_zero = 0; + while (first_non_zero < *length && buffer->start[first_non_zero] == '0') { + first_non_zero++; + } + if (first_non_zero != 0) { + for (int i = first_non_zero; i < *length; ++i) { + buffer->start[i - first_non_zero] = buffer->start[i]; + } + *length -= first_non_zero; + *decimal_point -= first_non_zero; + } +} + +static bool FastFixedDtoa(double v, + int fractional_count, + Vector *buffer, + int *length, + int *decimal_point) { + const uint32_t kMaxUInt32 = 0xFFFFFFFF; + Double d = Double_make(v); + uint64_t significand = Double_Significand(&d); + int exponent = Double_Exponent(&d); + // v = significand * 2^exponent (with significand a 53bit integer). + // If the exponent is larger than 20 (i.e. we may have a 73bit number) then we + // don't know how to compute the representation. 2^73 ~= 9.5*10^21. + // If necessary this limit could probably be increased, but we don't need + // more. + if (exponent > 20) return false; + if (fractional_count > 20) return false; + *length = 0; + // At most kDoubleSignificandSize bits of the significand are non-zero. + // Given a 64 bit integer we have 11 0s followed by 53 potentially non-zero + // bits: 0..11*..0xxx..53*..xx + if (exponent + Fixed_kDoubleSignificandSize > 64) { + // The exponent must be > 11. + // + // We know that v = significand * 2^exponent. + // And the exponent > 11. + // We simplify the task by dividing v by 10^17. + // The quotient delivers the first digits, and the remainder fits into a 64 + // bit number. + // Dividing by 10^17 is equivalent to dividing by 5^17*2^17. + const uint64_t kFive17 = DOUBLE_CONVERSION_UINT64_2PART_C(0xB1, A2BC2EC5); // 5^17 + uint64_t divisor = kFive17; + int divisor_power = 17; + uint64_t dividend = significand; + uint32_t quotient; + uint64_t remainder; + // Let v = f * 2^e with f == significand and e == exponent. + // Then need q (quotient) and r (remainder) as follows: + // v = q * 10^17 + r + // f * 2^e = q * 10^17 + r + // f * 2^e = q * 5^17 * 2^17 + r + // If e > 17 then + // f * 2^(e-17) = q * 5^17 + r/2^17 + // else + // f = q * 5^17 * 2^(17-e) + r/2^e + if (exponent > divisor_power) { + // We only allow exponents of up to 20 and therefore (17 - e) <= 3 + dividend <<= exponent - divisor_power; + quotient = (uint32_t)(dividend / divisor); + remainder = (dividend % divisor) << divisor_power; + } else { + divisor <<= divisor_power - exponent; + quotient = (uint32_t)(dividend / divisor); + remainder = (dividend % divisor) << exponent; + } + Fixed_FillDigits32(quotient, buffer, length); + Fixed_FillDigits64FixedLength(remainder, buffer, length); + *decimal_point = *length; + } else if (exponent >= 0) { + // 0 <= exponent <= 11 + significand <<= exponent; + Fixed_FillDigits64(significand, buffer, length); + *decimal_point = *length; + } else if (exponent > -Fixed_kDoubleSignificandSize) { + // We have to cut the number. + uint64_t integrals = significand >> -exponent; + uint64_t fractionals = significand - (integrals << -exponent); + if (integrals > kMaxUInt32) { + Fixed_FillDigits64(integrals, buffer, length); + } else { + Fixed_FillDigits32((uint32_t)(integrals), buffer, length); + } + *decimal_point = *length; + Fixed_FillFractionals(fractionals, exponent, fractional_count, + buffer, length, decimal_point); + } else if (exponent < -128) { + // This configuration (with at most 20 digits) means that all digits must be + // 0. + DOUBLE_CONVERSION_ASSERT(fractional_count <= 20); + buffer->start[0] = '\0'; + *length = 0; + *decimal_point = -fractional_count; + } else { + *decimal_point = 0; + Fixed_FillFractionals(significand, exponent, fractional_count, + buffer, length, decimal_point); + } + Fixed_TrimZeros(buffer, length, decimal_point); + buffer->start[*length] = '\0'; + if ((*length) == 0) { + // The string is empty and the decimal_point thus has no importance. Mimic + // Gay's dtoa and set it to -fractional_count. + *decimal_point = -fractional_count; + } + return true; +} + + + +/// ============================================================================ +/// strtod.h +/// ============================================================================ + +// The buffer must only contain digits in the range [0-9]. It must not +// contain a dot or a sign. It must not start with '0', and must not be empty. +static double Strtod(Vector *buffer, int exponent); + +// The buffer must only contain digits in the range [0-9]. It must not +// contain a dot or a sign. It must not start with '0', and must not be empty. +static float Strtof(Vector *buffer, int exponent); + +// Same as Strtod, but assumes that 'trimmed' is already trimmed, as if run +// through TrimAndCut. That is, 'trimmed' must have no leading or trailing +// zeros, must not be a lone zero, and must not have 'too many' digits. +static double StrtodTrimmed(Vector *trimmed, int exponent); + +// Same as Strtof, but assumes that 'trimmed' is already trimmed, as if run +// through TrimAndCut. That is, 'trimmed' must have no leading or trailing +// zeros, must not be a lone zero, and must not have 'too many' digits. +static float StrtofTrimmed(Vector *trimmed, int exponent); + +static Vector Strtod_TrimTrailingZeros(Vector *buffer) { + for (int i = buffer->length - 1; i >= 0; --i) { + if (buffer->start[i] != '0') { + return Vector_SubVector(buffer, 0, i + 1); + } + } + return Vector_make(buffer->start, 0); +} + + + +/// ============================================================================ +/// strtod.cc +/// ============================================================================ + +#if defined(DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS) +// 2^53 = 9007199254740992. +// Any integer with at most 15 decimal digits will hence fit into a double +// (which has a 53bit significand) without loss of precision. +static const int Strtod_kMaxExactDoubleIntegerDecimalDigits = 15; +#endif // #if defined(DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS) +// 2^64 = 18446744073709551616 > 10^19 +static const int Strtod_kMaxUint64DecimalDigits = 19; + +// Max double: 1.7976931348623157 x 10^308 +// Min non-zero double: 4.9406564584124654 x 10^-324 +// Any x >= 10^309 is interpreted as +infinity. +// Any x <= 10^-324 is interpreted as 0. +// Note that 2.5e-324 (despite being smaller than the min double) will be read +// as non-zero (equal to the min non-zero double). +static const int Strtod_kMaxDecimalPower = 309; +static const int Strtod_kMinDecimalPower = -324; + +// 2^64 = 18446744073709551616 +static const uint64_t Strtod_kMaxUint64 = DOUBLE_CONVERSION_UINT64_2PART_C(0xFFFFFFFF, FFFFFFFF); + +#if defined(DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS) +static const double Strtod_exact_powers_of_ten[] = { + 1.0, // 10^0 + 10.0, + 100.0, + 1000.0, + 10000.0, + 100000.0, + 1000000.0, + 10000000.0, + 100000000.0, + 1000000000.0, + 10000000000.0, // 10^10 + 100000000000.0, + 1000000000000.0, + 10000000000000.0, + 100000000000000.0, + 1000000000000000.0, + 10000000000000000.0, + 100000000000000000.0, + 1000000000000000000.0, + 10000000000000000000.0, + 100000000000000000000.0, // 10^20 + 1000000000000000000000.0, + // 10^22 = 0x21e19e0c9bab2400000 = 0x878678326eac9 * 2^22 + 10000000000000000000000.0 +}; +static const int Strtod_kExactPowersOfTenSize = DOUBLE_CONVERSION_ARRAY_SIZE(Strtod_exact_powers_of_ten); +#endif // #if defined(DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS) + +// Maximum number of significant digits in the decimal representation. +// In fact the value is 772 (see conversions.cc), but to give us some margin +// we round up to 780. +#define Strtod_kMaxSignificantDecimalDigits ((int)780) + +static Vector Strtod_TrimLeadingZeros(Vector *buffer) { + for (int i = 0; i < buffer->length; i++) { + if (buffer->start[i] != '0') { + return Vector_SubVector(buffer, i, buffer->length); + } + } + return Vector_make(buffer->start, 0); +} + +static void Strtod_CutToMaxSignificantDigits(Vector *buffer, + int exponent, + char *significant_buffer, + int *significant_exponent) { + for (int i = 0; i < Strtod_kMaxSignificantDecimalDigits - 1; ++i) { + significant_buffer[i] = buffer->start[i]; + } + // The input buffer has been trimmed. Therefore the last digit must be + // different from '0'. + DOUBLE_CONVERSION_ASSERT(buffer->start[buffer->length - 1] != '0'); + // Set the last digit to be non-zero. This is sufficient to guarantee + // correct rounding. + significant_buffer[Strtod_kMaxSignificantDecimalDigits - 1] = '1'; + *significant_exponent = + exponent + (buffer->length - Strtod_kMaxSignificantDecimalDigits); +} + +// Trims the buffer and cuts it to at most kMaxSignificantDecimalDigits. +// If possible the input-buffer is reused, but if the buffer needs to be +// modified (due to cutting), then the input needs to be copied into the +// buffer_copy_space. +static void Strtod_TrimAndCut(Vector *buffer, int exponent, + char *buffer_copy_space, int space_size, + Vector *trimmed, int *updated_exponent) { + Vector left_trimmed = Strtod_TrimLeadingZeros(buffer); + Vector right_trimmed = Strtod_TrimTrailingZeros(&left_trimmed); + exponent += left_trimmed.length - right_trimmed.length; + if (right_trimmed.length > Strtod_kMaxSignificantDecimalDigits) { + (void) space_size; // Mark variable as used. + DOUBLE_CONVERSION_ASSERT(space_size >= Strtod_kMaxSignificantDecimalDigits); + Strtod_CutToMaxSignificantDigits(&right_trimmed, exponent, + buffer_copy_space, updated_exponent); + *trimmed = Vector_make(buffer_copy_space, + Strtod_kMaxSignificantDecimalDigits); + } else { + *trimmed = right_trimmed; + *updated_exponent = exponent; + } +} + +// Reads digits from the buffer and converts them to a uint64. +// Reads in as many digits as fit into a uint64. +// When the string starts with "1844674407370955161" no further digit is read. +// Since 2^64 = 18446744073709551616 it would still be possible read another +// digit if it was less or equal than 6, but this would complicate the code. +static uint64_t Strtod_ReadUint64(Vector *buffer, + int *number_of_read_digits) { + uint64_t result = 0; + int i = 0; + while (i < buffer->length && result <= (Strtod_kMaxUint64 / 10 - 1)) { + int digit = buffer->start[i++] - '0'; + DOUBLE_CONVERSION_ASSERT(0 <= digit && digit <= 9); + result = 10 * result + digit; + } + *number_of_read_digits = i; + return result; +} + +// Reads a DiyFp from the buffer. +// The returned DiyFp is not necessarily normalized. +// If remaining_decimals is zero then the returned DiyFp is accurate. +// Otherwise it has been rounded and has error of at most 1/2 ulp. +static void Strtod_ReadDiyFp(Vector *buffer, + DiyFp *result, + int *remaining_decimals) { + int read_digits = 0; + uint64_t significand = Strtod_ReadUint64(buffer, &read_digits); + if (buffer->length == read_digits) { + *result = DiyFp_make(significand, 0); + *remaining_decimals = 0; + } else { + // Round the significand. + if (buffer->start[read_digits] >= '5') { + significand++; + } + // Compute the binary exponent. + int exponent = 0; + *result = DiyFp_make(significand, exponent); + *remaining_decimals = buffer->length - read_digits; + } +} + +static bool Strtod_DoubleStrtod(Vector *trimmed, + int exponent, + double* result) { +#if !defined(DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS) + // Avoid "unused parameter" warnings + (void) trimmed; + (void) exponent; + (void) result; + // On x86 the floating-point stack can be 64 or 80 bits wide. If it is + // 80 bits wide (as is the case on Linux) then double-rounding occurs and the + // result is not accurate. + // We know that Windows32 uses 64 bits and is therefore accurate. + return false; +#else + if (trimmed->length <= Strtod_kMaxExactDoubleIntegerDecimalDigits) { + int read_digits; + // The trimmed input fits into a double. + // If the 10^exponent (resp. 10^-exponent) fits into a double too then we + // can compute the result-double simply by multiplying (resp. dividing) the + // two numbers. + // This is possible because IEEE guarantees that floating-point operations + // return the best possible approximation. + if (exponent < 0 && -exponent < Strtod_kExactPowersOfTenSize) { + // 10^-exponent fits into a double. + *result = (double)(Strtod_ReadUint64(trimmed, &read_digits)); + DOUBLE_CONVERSION_ASSERT(read_digits == trimmed->length); + *result /= Strtod_exact_powers_of_ten[-exponent]; + return true; + } + if (0 <= exponent && exponent < Strtod_kExactPowersOfTenSize) { + // 10^exponent fits into a double. + *result = (double)(Strtod_ReadUint64(trimmed, &read_digits)); + DOUBLE_CONVERSION_ASSERT(read_digits == trimmed->length); + *result *= Strtod_exact_powers_of_ten[exponent]; + return true; + } + int remaining_digits = Strtod_kMaxExactDoubleIntegerDecimalDigits - trimmed->length; + if ((0 <= exponent) && (exponent - remaining_digits < Strtod_kExactPowersOfTenSize)) { + // The trimmed string was short and we can multiply it with + // 10^remaining_digits. As a result the remaining exponent now fits + // into a double too. + *result = (double)(Strtod_ReadUint64(trimmed, &read_digits)); + DOUBLE_CONVERSION_ASSERT(read_digits == trimmed->length); + *result *= Strtod_exact_powers_of_ten[remaining_digits]; + *result *= Strtod_exact_powers_of_ten[exponent - remaining_digits]; + return true; + } + } + return false; +#endif +} + +// Returns 10^exponent as an exact DiyFp. +// The given exponent must be in the range [1; kDecimalExponentDistance[. +static DiyFp Strtod_AdjustmentPowerOfTen(int exponent) { + DOUBLE_CONVERSION_ASSERT(0 < exponent); + DOUBLE_CONVERSION_ASSERT(exponent < Cache_kDecimalExponentDistance); + // Simply hardcode the remaining powers for the given decimal exponent + // distance. + DOUBLE_CONVERSION_ASSERT(Cache_kDecimalExponentDistance == 8); + switch (exponent) { + case 1: return DiyFp_make(DOUBLE_CONVERSION_UINT64_2PART_C(0xa0000000, 00000000), -60); + case 2: return DiyFp_make(DOUBLE_CONVERSION_UINT64_2PART_C(0xc8000000, 00000000), -57); + case 3: return DiyFp_make(DOUBLE_CONVERSION_UINT64_2PART_C(0xfa000000, 00000000), -54); + case 4: return DiyFp_make(DOUBLE_CONVERSION_UINT64_2PART_C(0x9c400000, 00000000), -50); + case 5: return DiyFp_make(DOUBLE_CONVERSION_UINT64_2PART_C(0xc3500000, 00000000), -47); + case 6: return DiyFp_make(DOUBLE_CONVERSION_UINT64_2PART_C(0xf4240000, 00000000), -44); + case 7: return DiyFp_make(DOUBLE_CONVERSION_UINT64_2PART_C(0x98968000, 00000000), -40); + default: + DOUBLE_CONVERSION_UNREACHABLE(); + } +} + +// If the function returns true then the result is the correct double. +// Otherwise it is either the correct double or the double that is just below +// the correct double. +static bool Strtod_DiyFpStrtod(Vector *buffer, + int exponent, + double *result) { + DiyFp input = { 0 }; + int remaining_decimals; + Strtod_ReadDiyFp(buffer, &input, &remaining_decimals); + // Since we may have dropped some digits the input is not accurate. + // If remaining_decimals is different than 0 than the error is at most + // .5 ulp (unit in the last place). + // We don't want to deal with fractions and therefore keep a common + // denominator. + const int kDenominatorLog = 3; + const int kDenominator = 1 << kDenominatorLog; + // Move the remaining decimals into the exponent. + exponent += remaining_decimals; + uint64_t error = (remaining_decimals == 0 ? 0 : kDenominator / 2); + + int old_e = input.e; + DiyFp_Normalize(&input); + error <<= old_e - input.e; + + DOUBLE_CONVERSION_ASSERT(exponent <= Cache_kMaxDecimalExponent); + if (exponent < Cache_kMinDecimalExponent) { + *result = 0.0; + return true; + } + DiyFp cached_power; + int cached_decimal_exponent; + Cache_GetCachedPowerForDecimalExponent(exponent, + &cached_power, + &cached_decimal_exponent); + + if (cached_decimal_exponent != exponent) { + int adjustment_exponent = exponent - cached_decimal_exponent; + DiyFp adjustment_power = Strtod_AdjustmentPowerOfTen(adjustment_exponent); + DiyFp_Multiply(&input, &adjustment_power); + if (Strtod_kMaxUint64DecimalDigits - buffer->length >= adjustment_exponent) { + // The product of input with the adjustment power fits into a 64 bit + // integer. + DOUBLE_CONVERSION_ASSERT(DiyFp_kSignificandSize == 64); + } else { + // The adjustment power is exact. There is hence only an error of 0.5. + error += kDenominator / 2; + } + } + + DiyFp_Multiply(&input, &cached_power); + // The error introduced by a multiplication of a*b equals + // error_a + error_b + error_a*error_b/2^64 + 0.5 + // Substituting a with 'input' and b with 'cached_power' we have + // error_b = 0.5 (all cached powers have an error of less than 0.5 ulp), + // error_ab = 0 or 1 / kDenominator > error_a*error_b/ 2^64 + int error_b = kDenominator / 2; + int error_ab = (error == 0 ? 0 : 1); // We round up to 1. + int fixed_error = kDenominator / 2; + error += error_b + error_ab + fixed_error; + + old_e = input.e; + DiyFp_Normalize(&input); + error <<= old_e - input.e; + + // See if the double's significand changes if we add/subtract the error. + int order_of_magnitude = DiyFp_kSignificandSize + input.e; + int effective_significand_size = + Double_SignificandSizeForOrderOfMagnitude(order_of_magnitude); + int precision_digits_count = + DiyFp_kSignificandSize - effective_significand_size; + if (precision_digits_count + kDenominatorLog >= DiyFp_kSignificandSize) { + // This can only happen for very small denormals. In this case the + // half-way multiplied by the denominator exceeds the range of an uint64. + // Simply shift everything to the right. + int shift_amount = (precision_digits_count + kDenominatorLog) - + DiyFp_kSignificandSize + 1; + input.f =(input.f >> shift_amount); + input.e = (input.e + shift_amount); + // We add 1 for the lost precision of error, and kDenominator for + // the lost precision of input.f(). + error = (error >> shift_amount) + 1 + kDenominator; + precision_digits_count -= shift_amount; + } + // We use uint64_ts now. This only works if the DiyFp uses uint64_ts too. + DOUBLE_CONVERSION_ASSERT(DiyFp_kSignificandSize == 64); + DOUBLE_CONVERSION_ASSERT(precision_digits_count < 64); + uint64_t one64 = 1; + uint64_t precision_bits_mask = (one64 << precision_digits_count) - 1; + uint64_t precision_bits = input.f & precision_bits_mask; + uint64_t half_way = one64 << (precision_digits_count - 1); + precision_bits *= kDenominator; + half_way *= kDenominator; + DiyFp rounded_input = DiyFp_make(input.f >> precision_digits_count, + input.e + precision_digits_count); + if (precision_bits >= half_way + error) { + rounded_input.f = (rounded_input.f + 1); + } + // If the last_bits are too close to the half-way case than we are too + // inaccurate and round down. In this case we return false so that we can + // fall back to a more precise algorithm. + + Double d = Double_make_diyfp(&rounded_input); + *result = Double_value(&d); + if (half_way - error < precision_bits && precision_bits < half_way + error) { + // Too imprecise. The caller will have to fall back to a slower version. + // However the returned number is guaranteed to be either the correct + // double, or the next-lower double. + return false; + } else { + return true; + } +} + +// Returns +// - -1 if buffer*10^exponent < diy_fp. +// - 0 if buffer*10^exponent == diy_fp. +// - +1 if buffer*10^exponent > diy_fp. +// Preconditions: +// buffer.length() + exponent <= kMaxDecimalPower + 1 +// buffer.length() + exponent > kMinDecimalPower +// buffer.length() <= kMaxDecimalSignificantDigits +static int Strtod_CompareBufferWithDiyFp(Vector *buffer, + int exponent, + DiyFp *diy_fp) { + DOUBLE_CONVERSION_ASSERT(buffer->length + exponent <= Strtod_kMaxDecimalPower + 1); + DOUBLE_CONVERSION_ASSERT(buffer->length + exponent > Strtod_kMinDecimalPower); + DOUBLE_CONVERSION_ASSERT(buffer->length <= Strtod_kMaxSignificantDecimalDigits); + // Make sure that the Bignum will be able to hold all our numbers. + // Our Bignum implementation has a separate field for exponents. Shifts will + // consume at most one bigit (< 64 bits). + // ln(10) == 3.3219... + DOUBLE_CONVERSION_ASSERT(((Strtod_kMaxDecimalPower + 1) * 333 / 100) < Bignum_kMaxSignificantBits); + Bignum buffer_bignum = { 0 }; + Bignum diy_fp_bignum = { 0 }; + Bignum_AssignDecimalString(& buffer_bignum, buffer); + Bignum_AssignUInt64(&diy_fp_bignum, diy_fp->f); + if (exponent >= 0) { + Bignum_MultiplyByPowerOfTen(&buffer_bignum, exponent); + } else { + Bignum_MultiplyByPowerOfTen(&diy_fp_bignum, -exponent); + } + if (diy_fp->e > 0) { + Bignum_ShiftLeft(&diy_fp_bignum, diy_fp->e); + } else { + Bignum_ShiftLeft(&buffer_bignum, -diy_fp->e); + } + return Bignum_Compare(&buffer_bignum, &diy_fp_bignum); +} + +// Returns true if the guess is the correct double. +// Returns false, when guess is either correct or the next-lower double. +static bool Strtod_ComputeGuess(Vector *trimmed, int exponent, + double *guess) { + if (trimmed->length == 0) { + *guess = 0.0; + return true; + } + if (exponent + trimmed->length - 1 >= Strtod_kMaxDecimalPower) { + *guess = Double_Infinity(); + return true; + } + if (exponent + trimmed->length <= Strtod_kMinDecimalPower) { + *guess = 0.0; + return true; + } + + if (Strtod_DoubleStrtod(trimmed, exponent, guess) || + Strtod_DiyFpStrtod(trimmed, exponent, guess)) { + return true; + } + if (*guess == Double_Infinity()) { + return true; + } + return false; +} + +static bool Strtod_IsDigit(const char d) { + return ('0' <= d) && (d <= '9'); +} + +static bool Strtod_IsNonZeroDigit(const char d) { + return ('1' <= d) && (d <= '9'); +} + +static bool Strtod_AssertTrimmedDigits(Vector *buffer) { + for(int i = 0; i < buffer->length; ++i) { + if(!Strtod_IsDigit(buffer->start[i])) { + return false; + } + } + return (buffer->length == 0) || (Strtod_IsNonZeroDigit(buffer->start[0]) && Strtod_IsNonZeroDigit(buffer->start[buffer->length-1])); +} + +static double StrtodTrimmed(Vector *trimmed, int exponent) { + DOUBLE_CONVERSION_ASSERT(trimmed->length <= Strtod_kMaxSignificantDecimalDigits); + DOUBLE_CONVERSION_ASSERT(Strtod_AssertTrimmedDigits(trimmed)); + double guess; + const bool is_correct = Strtod_ComputeGuess(trimmed, exponent, &guess); + if (is_correct) { + return guess; + } + Double dguess = Double_make(guess); + DiyFp upper_boundary = Double_UpperBoundary(&dguess); + int comparison = Strtod_CompareBufferWithDiyFp(trimmed, exponent, &upper_boundary); + if (comparison < 0) { + return guess; + } else if (comparison > 0) { + return Double_NextDouble(&dguess); + } else if ((Double_Significand(&dguess) & 1) == 0) { + // Round towards even. + return guess; + } else { + return Double_NextDouble(&dguess); + } +} + +static double Strtod(Vector *buffer, int exponent) { + char copy_buffer[Strtod_kMaxSignificantDecimalDigits]; + Vector trimmed = { 0 }; + int updated_exponent; + Strtod_TrimAndCut(buffer, exponent, copy_buffer, Strtod_kMaxSignificantDecimalDigits, + &trimmed, &updated_exponent); + return StrtodTrimmed(&trimmed, updated_exponent); +} + +static float Strtod_SanitizedDoubletof(double d) { + DOUBLE_CONVERSION_ASSERT(d >= 0.0); + // ASAN has a sanitize check that disallows casting doubles to floats if + // they are too big. + // https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html#available-checks + // The behavior should be covered by IEEE 754, but some projects use this + // flag, so work around it. + float max_finite = 3.4028234663852885981170418348451692544e+38; + // The half-way point between the max-finite and infinity value. + // Since infinity has an even significand everything equal or greater than + // this value should become infinity. + double half_max_finite_infinity = 3.40282356779733661637539395458142568448e+38; + if (d >= max_finite) { + if (d >= half_max_finite_infinity) { + return Single_Infinity(); + } else { + return max_finite; + } + } else { + return (float)(d); + } +} + +static float Strtof(Vector *buffer, int exponent) { + char copy_buffer[Strtod_kMaxSignificantDecimalDigits]; + Vector trimmed = { 0 }; + int updated_exponent; + Strtod_TrimAndCut(buffer, exponent, copy_buffer, Strtod_kMaxSignificantDecimalDigits, + &trimmed, &updated_exponent); + exponent = updated_exponent; + return StrtofTrimmed(&trimmed, exponent); +} + +static float StrtofTrimmed(Vector *trimmed, int exponent) { + DOUBLE_CONVERSION_ASSERT(trimmed->length <= Strtod_kMaxSignificantDecimalDigits); + DOUBLE_CONVERSION_ASSERT(Strtod_AssertTrimmedDigits(trimmed)); + + double double_guess = 0; + bool is_correct = Strtod_ComputeGuess(trimmed, exponent, &double_guess); + + float float_guess = Strtod_SanitizedDoubletof(double_guess); + if (float_guess == double_guess) { + // This shortcut triggers for integer values. + return float_guess; + } + + // We must catch double-rounding. Say the double has been rounded up, and is + // now a boundary of a float, and rounds up again. This is why we have to + // look at previous too. + // Example (in decimal numbers): + // input: 12349 + // high-precision (4 digits): 1235 + // low-precision (3 digits): + // when read from input: 123 + // when rounded from high precision: 124. + // To do this we simply look at the neighbors of the correct result and see + // if they would round to the same float. If the guess is not correct we have + // to look at four values (since two different doubles could be the correct + // double). + Double d = Double_make(double_guess); + double double_next = Double_NextDouble(&d); + double double_previous = Double_PreviousDouble(&d); + + float f1 = Strtod_SanitizedDoubletof(double_previous); + float f2 = float_guess; + float f3 = Strtod_SanitizedDoubletof(double_next); + float f4; + if (is_correct) { + f4 = f3; + } else { + Double d2 = Double_make(double_next); + double double_next2 = Double_NextDouble(&d2); + f4 = Strtod_SanitizedDoubletof(double_next2); + } + (void) f2; // Mark variable as used. + DOUBLE_CONVERSION_ASSERT(f1 <= f2 && f2 <= f3 && f3 <= f4); + + // If the guess doesn't lie near a single-precision boundary we can simply + // return its float-value. + if (f1 == f4) { + return float_guess; + } + + DOUBLE_CONVERSION_ASSERT((f1 != f2 && f2 == f3 && f3 == f4) || + (f1 == f2 && f2 != f3 && f3 == f4) || + (f1 == f2 && f2 == f3 && f3 != f4)); + + // guess and next are the two possible candidates (in the same way that + // double_guess was the lower candidate for a double-precision guess). + float guess = f1; + float next = f4; + DiyFp upper_boundary; + Single s3 = Single_make(guess); + if (guess == 0.0f) { + float min_float = 1e-45f; + Double d3 = Double_make((double)(min_float) / 2); + upper_boundary = Double_AsDiyFp(&d3); + } else { + upper_boundary = Single_UpperBoundary(&s3); + } + int comparison = Strtod_CompareBufferWithDiyFp(trimmed, exponent, &upper_boundary); + if (comparison < 0) { + return guess; + } else if (comparison > 0) { + return next; + } else if ((Single_Significand(&s3) & 1) == 0) { + // Round towards even. + return guess; + } else { + return next; + } +} + + + +/// ============================================================================ +/// string-to-double.h +/// ============================================================================ + +// Enumeration for allowing octals and ignoring junk when converting +// strings to numbers. +enum S2D_Flags { + S2D_NO_FLAGS = 0, + S2D_ALLOW_HEX = 1, + S2D_ALLOW_OCTALS = 2, + S2D_ALLOW_TRAILING_JUNK = 4, + S2D_ALLOW_LEADING_SPACES = 8, + S2D_ALLOW_TRAILING_SPACES = 16, + S2D_ALLOW_SPACES_AFTER_SIGN = 32, + S2D_ALLOW_CASE_INSENSITIVITY = 64, + S2D_ALLOW_CASE_INSENSIBILITY = 64, // Deprecated + S2D_ALLOW_HEX_FLOATS = 128, +}; + +typedef struct StringToDoubleConverter { + int flags; + double empty_string_value; + double junk_string_value; + const char *infinity_symbol; + const char *nan_symbol; + uc16 separator; +} StringToDoubleConverter; + +static const uc16 S2D_kNoSeparator = '\0'; + +// Flags should be a bit-or combination of the possible Flags-enum. +// - NO_FLAGS: no special flags. +// - ALLOW_HEX: recognizes the prefix "0x". Hex numbers may only be integers. +// Ex: StringToDouble("0x1234") -> 4660.0 +// In StringToDouble("0x1234.56") the characters ".56" are trailing +// junk. The result of the call is hence dependent on +// the ALLOW_TRAILING_JUNK flag and/or the junk value. +// With this flag "0x" is a junk-string. Even with ALLOW_TRAILING_JUNK, +// the string will not be parsed as "0" followed by junk. +// +// - ALLOW_OCTALS: recognizes the prefix "0" for octals: +// If a sequence of octal digits starts with '0', then the number is +// read as octal integer. Octal numbers may only be integers. +// Ex: StringToDouble("01234") -> 668.0 +// StringToDouble("012349") -> 12349.0 // Not a sequence of octal +// // digits. +// In StringToDouble("01234.56") the characters ".56" are trailing +// junk. The result of the call is hence dependent on +// the ALLOW_TRAILING_JUNK flag and/or the junk value. +// In StringToDouble("01234e56") the characters "e56" are trailing +// junk, too. +// - ALLOW_TRAILING_JUNK: ignore trailing characters that are not part of +// a double literal. +// - ALLOW_LEADING_SPACES: skip over leading whitespace, including spaces, +// new-lines, and tabs. +// - ALLOW_TRAILING_SPACES: ignore trailing whitespace. +// - ALLOW_SPACES_AFTER_SIGN: ignore whitespace after the sign. +// Ex: StringToDouble("- 123.2") -> -123.2. +// StringToDouble("+ 123.2") -> 123.2 +// - ALLOW_CASE_INSENSITIVITY: ignore case of characters for special values: +// infinity and nan. +// - ALLOW_HEX_FLOATS: allows hexadecimal float literals. +// This *must* start with "0x" and separate the exponent with "p". +// Examples: 0x1.2p3 == 9.0 +// 0x10.1p0 == 16.0625 +// ALLOW_HEX and ALLOW_HEX_FLOATS are indented. +// +// empty_string_value is returned when an empty string is given as input. +// If ALLOW_LEADING_SPACES or ALLOW_TRAILING_SPACES are set, then a string +// containing only spaces is converted to the 'empty_string_value', too. +// +// junk_string_value is returned when +// a) ALLOW_TRAILING_JUNK is not set, and a junk character (a character not +// part of a double-literal) is found. +// b) ALLOW_TRAILING_JUNK is set, but the string does not start with a +// double literal. +// +// infinity_symbol and nan_symbol are strings that are used to detect +// inputs that represent infinity and NaN. They can be null, in which case +// they are ignored. +// The conversion routine first reads any possible signs. Then it compares the +// following character of the input-string with the first character of +// the infinity, and nan-symbol. If either matches, the function assumes, that +// a match has been found, and expects the following input characters to match +// the remaining characters of the special-value symbol. +// This means that the following restrictions apply to special-value symbols: +// - they must not start with signs ('+', or '-'), +// - they must not have the same first character. +// - they must not start with digits. +// +// If the separator character is not kNoSeparator, then that specific +// character is ignored when in between two valid digits of the significant. +// It is not allowed to appear in the exponent. +// It is not allowed to lead or trail the number. +// It is not allowed to appear twice next to each other. +// +// Examples: +// flags = ALLOW_HEX | ALLOW_TRAILING_JUNK, +// empty_string_value = 0.0, +// junk_string_value = NaN, +// infinity_symbol = "infinity", +// nan_symbol = "nan": +// StringToDouble("0x1234") -> 4660.0. +// StringToDouble("0x1234K") -> 4660.0. +// StringToDouble("") -> 0.0 // empty_string_value. +// StringToDouble(" ") -> NaN // junk_string_value. +// StringToDouble(" 1") -> NaN // junk_string_value. +// StringToDouble("0x") -> NaN // junk_string_value. +// StringToDouble("-123.45") -> -123.45. +// StringToDouble("--123.45") -> NaN // junk_string_value. +// StringToDouble("123e45") -> 123e45. +// StringToDouble("123E45") -> 123e45. +// StringToDouble("123e+45") -> 123e45. +// StringToDouble("123E-45") -> 123e-45. +// StringToDouble("123e") -> 123.0 // trailing junk ignored. +// StringToDouble("123e-") -> 123.0 // trailing junk ignored. +// StringToDouble("+NaN") -> NaN // NaN string literal. +// StringToDouble("-infinity") -> -inf. // infinity literal. +// StringToDouble("Infinity") -> NaN // junk_string_value. +// +// flags = ALLOW_OCTAL | ALLOW_LEADING_SPACES, +// empty_string_value = 0.0, +// junk_string_value = NaN, +// infinity_symbol = NULL, +// nan_symbol = NULL: +// StringToDouble("0x1234") -> NaN // junk_string_value. +// StringToDouble("01234") -> 668.0. +// StringToDouble("") -> 0.0 // empty_string_value. +// StringToDouble(" ") -> 0.0 // empty_string_value. +// StringToDouble(" 1") -> 1.0 +// StringToDouble("0x") -> NaN // junk_string_value. +// StringToDouble("0123e45") -> NaN // junk_string_value. +// StringToDouble("01239E45") -> 1239e45. +// StringToDouble("-infinity") -> NaN // junk_string_value. +// StringToDouble("NaN") -> NaN // junk_string_value. +// +// flags = NO_FLAGS, +// separator = ' ': +// StringToDouble("1 2 3 4") -> 1234.0 +// StringToDouble("1 2") -> NaN // junk_string_value +// StringToDouble("1 000 000.0") -> 1000000.0 +// StringToDouble("1.000 000") -> 1.0 +// StringToDouble("1.0e1 000") -> NaN // junk_string_value +static StringToDoubleConverter StringToDoubleConverter_make(int flags, + double empty_string_value, + double junk_string_value, + const char *infinity_symbol, + const char *nan_symbol, + uc16 separator) { + StringToDoubleConverter s; + s.flags = flags; + s.empty_string_value = empty_string_value; + s.junk_string_value = junk_string_value; + s.infinity_symbol = infinity_symbol; + s.nan_symbol = nan_symbol; + s.separator = separator; + return s; +} + +// Performs the conversion. +// The output parameter 'processed_characters_count' is set to the number +// of characters that have been processed to read the number. +// Spaces than are processed with ALLOW_{LEADING|TRAILING}_SPACES are included +// in the 'processed_characters_count'. Trailing junk is never included. +static double StringToDouble(StringToDoubleConverter *conv, + const char *buffer, + int length, + int *processed_characters_count); + +// Same as StringToDouble but reads a float. +// Note that this is not equivalent to static_cast<float>(StringToDouble(...)) +// due to potential double-rounding. +static float StringToFloat(StringToDoubleConverter *conv, + const char *buffer, + int length, + int *processed_characters_count); + +static double StringToIeee(StringToDoubleConverter *conv, + Iterator start_pointer, + int length, + bool read_as_double, + int *processed_characters_count); + + + +/// ============================================================================ +/// string-to-double.cc +/// ============================================================================ + +#ifdef _MSC_VER +# if _MSC_VER >= 1900 +// Fix MSVC >= 2015 (_MSC_VER == 1900) warning +// C4244: 'argument': conversion from 'const uc16' to 'char', possible loss of data +// against Advance and friends, when instantiated with **it as char, not uc16. + __pragma(warning(disable: 4244)) +# endif +# if _MSC_VER <= 1700 // VS2012, see IsDecimalDigitForRadix warning fix, below +# define VS2012_RADIXWARN +# endif +#endif + +typedef char (*S2D_Converter)(char); + +static char S2D_ToLower(char ch) { + if ('A' <= ch && ch <= 'Z') return ch + ('a' - 'A'); + return ch; +} + +static char S2D_Pass(char ch) { + return ch; +} + +static bool S2D_ConsumeSubStringImpl(Iterator *current, + Iterator end, + const char *substring, + S2D_Converter converter) { + DOUBLE_CONVERSION_ASSERT(converter(**current) == *substring); + for (substring++; *substring != '\0'; substring++) { + ++*current; + if (*current == end || converter(**current) != *substring) { + return false; + } + } + ++*current; + return true; +} + +// Consumes the given substring from the iterator. +// Returns false, if the substring does not match. +static bool S2D_ConsumeSubString(Iterator *current, + Iterator end, + const char *substring, + bool allow_case_insensitivity) { + if (allow_case_insensitivity) { + return S2D_ConsumeSubStringImpl(current, end, substring, S2D_ToLower); + } else { + return S2D_ConsumeSubStringImpl(current, end, substring, S2D_Pass); + } +} + +// Consumes first character of the str is equal to ch +static bool S2D_ConsumeFirstCharacter(char ch, + const char *str, + bool case_insensitivity) { + return case_insensitivity ? S2D_ToLower(ch) == str[0] : ch == str[0]; +} + +// Maximum number of significant digits in decimal representation. +// The longest possible double in decimal representation is +// (2^53 - 1) * 2 ^ -1074 that is (2 ^ 53 - 1) * 5 ^ 1074 / 10 ^ 1074 +// (768 digits). If we parse a number whose first digits are equal to a +// mean of 2 adjacent doubles (that could have up to 769 digits) the result +// must be rounded to the bigger one unless the tail consists of zeros, so +// we don't need to preserve all the digits. +#define S2D_kMaxSignificantDigits ((int)772) + +static const char S2D_kWhitespaceTable7[] = { 32, 13, 10, 9, 11, 12 }; +static const int S2D_kWhitespaceTable7Length = DOUBLE_CONVERSION_ARRAY_SIZE(S2D_kWhitespaceTable7); + +static const uc16 S2D_kWhitespaceTable16[] = { + 160, 8232, 8233, 5760, 6158, 8192, 8193, 8194, 8195, + 8196, 8197, 8198, 8199, 8200, 8201, 8202, 8239, 8287, 12288, 65279 +}; +static const int S2D_kWhitespaceTable16Length = DOUBLE_CONVERSION_ARRAY_SIZE(S2D_kWhitespaceTable16); + +static bool S2D_isWhitespace(int x) { + if (x < 128) { + for (int i = 0; i < S2D_kWhitespaceTable7Length; i++) { + if (S2D_kWhitespaceTable7[i] == x) return true; + } + } else { + for (int i = 0; i < S2D_kWhitespaceTable16Length; i++) { + if (S2D_kWhitespaceTable16[i] == x) return true; + } + } + return false; +} + +// Returns true if a nonspace found and false if the end has reached. +static bool S2D_AdvanceToNonspace(Iterator *current, Iterator end) { + while (*current != end) { + if (!S2D_isWhitespace(**current)) return true; + ++*current; + } + return false; +} + +static bool S2D_isDigit(int x, int radix) { + return (x >= '0' && x <= '9' && x < '0' + radix) + || (radix > 10 && x >= 'a' && x < 'a' + radix - 10) + || (radix > 10 && x >= 'A' && x < 'A' + radix - 10); +} + +static double S2D_SignedZero(bool sign) { + return sign ? -0.0 : 0.0; +} + +// Returns true if 'c' is a decimal digit that is valid for the given radix. +// +// The function is small and could be inlined, but VS2012 emitted a warning +// because it constant-propagated the radix and concluded that the last +// condition was always true. Moving it into a separate function and +// suppressing optimisation keeps the compiler from warning. +#ifdef VS2012_RADIXWARN +#pragma optimize("",off) +static bool S2D_IsDecimalDigitForRadix(int c, int radix) { + return '0' <= c && c <= '9' && (c - '0') < radix; +} +#pragma optimize("",on) +#else +static bool inline S2D_IsDecimalDigitForRadix(int c, int radix) { + return '0' <= c && c <= '9' && (c - '0') < radix; +} +#endif + +// Returns true if 'c' is a character digit that is valid for the given radix. +// The 'a_character' should be 'a' or 'A'. +// +// The function is small and could be inlined, but VS2012 emitted a warning +// because it constant-propagated the radix and concluded that the first +// condition was always false. By moving it into a separate function the +// compiler wouldn't warn anymore. +static bool S2D_IsCharacterDigitForRadix(int c, int radix, char a_character) { + return radix > 10 && c >= a_character && c < a_character + radix - 10; +} + +// Returns true, when the iterator is equal to end. +static bool S2D_Advance(Iterator *it, uc16 separator, int base, Iterator end) { + if (separator == S2D_kNoSeparator) { + ++(*it); + return *it == end; + } + if (!S2D_isDigit(**it, base)) { + ++(*it); + return *it == end; + } + ++(*it); + if (*it == end) return true; + if (*it + 1 == end) return false; + if (**it == separator && S2D_isDigit(*(*it + 1), base)) { + ++(*it); + } + return *it == end; +} + +// Checks whether the string in the range start-end is a hex-float string. +// This function assumes that the leading '0x'/'0X' is already consumed. +// +// Hex float strings are of one of the following forms: +// - hex_digits+ 'p' ('+'|'-')? exponent_digits+ +// - hex_digits* '.' hex_digits+ 'p' ('+'|'-')? exponent_digits+ +// - hex_digits+ '.' 'p' ('+'|'-')? exponent_digits+ +static bool S2D_IsHexFloatString(Iterator start, + Iterator end, + uc16 separator, + bool allow_trailing_junk) { + DOUBLE_CONVERSION_ASSERT(start != end); + + Iterator current = start; + + bool saw_digit = false; + while (S2D_isDigit(*current, 16)) { + saw_digit = true; + if (S2D_Advance(¤t, separator, 16, end)) return false; + } + if (*current == '.') { + if (S2D_Advance(¤t, separator, 16, end)) return false; + while (S2D_isDigit(*current, 16)) { + saw_digit = true; + if (S2D_Advance(¤t, separator, 16, end)) return false; + } + } + if (!saw_digit) return false; + if (*current != 'p' && *current != 'P') return false; + if (S2D_Advance(¤t, separator, 16, end)) return false; + if (*current == '+' || *current == '-') { + if (S2D_Advance(¤t, separator, 16, end)) return false; + } + if (!S2D_isDigit(*current, 10)) return false; + if (S2D_Advance(¤t, separator, 16, end)) return true; + while (S2D_isDigit(*current, 10)) { + if (S2D_Advance(¤t, separator, 16, end)) return true; + } + return allow_trailing_junk || !S2D_AdvanceToNonspace(¤t, end); +} + +// Parsing integers with radix 2, 4, 8, 16, 32. Assumes current != end. +// +// If parse_as_hex_float is true, then the string must be a valid +// hex-float. +static double S2D_RadixStringToIeee(int radix_log_2, + Iterator *current, + Iterator end, + bool sign, + uc16 separator, + bool parse_as_hex_float, + bool allow_trailing_junk, + double junk_string_value, + bool read_as_double, + bool *result_is_junk) { + DOUBLE_CONVERSION_ASSERT(*current != end); + DOUBLE_CONVERSION_ASSERT(!parse_as_hex_float || + S2D_IsHexFloatString(*current, end, separator, allow_trailing_junk)); + + const int kDoubleSize = Double_kSignificandSize; + const int kSingleSize = Single_kSignificandSize; + const int kSignificandSize = read_as_double? kDoubleSize: kSingleSize; + + *result_is_junk = true; + + int64_t number = 0; + int exponent = 0; + const int radix = (1 << radix_log_2); + // Whether we have encountered a '.' and are parsing the decimal digits. + // Only relevant if parse_as_hex_float is true. + bool post_decimal = false; + + // Skip leading 0s. + while (**current == '0') { + if (S2D_Advance(current, separator, radix, end)) { + *result_is_junk = false; + return S2D_SignedZero(sign); + } + } + + while (true) { + int digit; + if (S2D_IsDecimalDigitForRadix(**current, radix)) { + digit = (char)(**current) - '0'; + if (post_decimal) exponent -= radix_log_2; + } else if (S2D_IsCharacterDigitForRadix(**current, radix, 'a')) { + digit = (char)(**current) - 'a' + 10; + if (post_decimal) exponent -= radix_log_2; + } else if (S2D_IsCharacterDigitForRadix(**current, radix, 'A')) { + digit = (char)(**current) - 'A' + 10; + if (post_decimal) exponent -= radix_log_2; + } else if (parse_as_hex_float && **current == '.') { + post_decimal = true; + S2D_Advance(current, separator, radix, end); + DOUBLE_CONVERSION_ASSERT(*current != end); + continue; + } else if (parse_as_hex_float && (**current == 'p' || **current == 'P')) { + break; + } else { + if (allow_trailing_junk || !S2D_AdvanceToNonspace(current, end)) { + break; + } else { + return junk_string_value; + } + } + + number = number * radix + digit; + int overflow = (int)(number >> kSignificandSize); + if (overflow != 0) { + // Overflow occurred. Need to determine which direction to round the + // result. + int overflow_bits_count = 1; + while (overflow > 1) { + overflow_bits_count++; + overflow >>= 1; + } + + int dropped_bits_mask = ((1 << overflow_bits_count) - 1); + int dropped_bits = (int)(number) & dropped_bits_mask; + number >>= overflow_bits_count; + exponent += overflow_bits_count; + + bool zero_tail = true; + for (;;) { + if (S2D_Advance(current, separator, radix, end)) break; + if (parse_as_hex_float && **current == '.') { + // Just run over the '.'. We are just trying to see whether there is + // a non-zero digit somewhere. + S2D_Advance(current, separator, radix, end); + DOUBLE_CONVERSION_ASSERT(*current != end); + post_decimal = true; + } + if (!S2D_isDigit(**current, radix)) break; + zero_tail = zero_tail && **current == '0'; + if (!post_decimal) exponent += radix_log_2; + } + + if (!parse_as_hex_float && + !allow_trailing_junk && + S2D_AdvanceToNonspace(current, end)) { + return junk_string_value; + } + + int middle_value = (1 << (overflow_bits_count - 1)); + if (dropped_bits > middle_value) { + number++; // Rounding up. + } else if (dropped_bits == middle_value) { + // Rounding to even to consistency with decimals: half-way case rounds + // up if significant part is odd and down otherwise. + if ((number & 1) != 0 || !zero_tail) { + number++; // Rounding up. + } + } + + // Rounding up may cause overflow. + if ((number & ((int64_t)1 << kSignificandSize)) != 0) { + exponent++; + number >>= 1; + } + break; + } + if (S2D_Advance(current, separator, radix, end)) break; + } + + DOUBLE_CONVERSION_ASSERT(number < ((int64_t)1 << kSignificandSize)); + DOUBLE_CONVERSION_ASSERT((int64_t)((double)(number)) == number); + + *result_is_junk = false; + + if (parse_as_hex_float) { + DOUBLE_CONVERSION_ASSERT(**current == 'p' || **current == 'P'); + S2D_Advance(current, separator, radix, end); + DOUBLE_CONVERSION_ASSERT(*current != end); + bool is_negative = false; + if (**current == '+') { + S2D_Advance(current, separator, radix, end); + DOUBLE_CONVERSION_ASSERT(*current != end); + } else if (**current == '-') { + is_negative = true; + S2D_Advance(current, separator, radix, end); + DOUBLE_CONVERSION_ASSERT(*current != end); + } + int written_exponent = 0; + while (S2D_IsDecimalDigitForRadix(**current, 10)) { + // No need to read exponents if they are too big. That could potentially overflow + // the `written_exponent` variable. + if (abs(written_exponent) <= 100 * Double_kMaxExponent) { + written_exponent = 10 * written_exponent + **current - '0'; + } + if (S2D_Advance(current, separator, radix, end)) break; + } + if (is_negative) written_exponent = -written_exponent; + exponent += written_exponent; + } + + if (exponent == 0 || number == 0) { + if (sign) { + if (number == 0) return -0.0; + number = -number; + } + return (double)(number); + } + + DOUBLE_CONVERSION_ASSERT(number != 0); + DiyFp diy = DiyFp_make(number, exponent); + Double d = Double_make_diyfp(&diy); + double result = Double_value(&d); + return sign ? -result : result; +} + +static double StringToIeee(StringToDoubleConverter *conv, + Iterator input, + int length, + bool read_as_double, + int *processed_characters_count) { + Iterator current = input; + Iterator end = input + length; + + *processed_characters_count = 0; + + const bool allow_trailing_junk = (conv->flags & S2D_ALLOW_TRAILING_JUNK) != 0; + const bool allow_leading_spaces = (conv->flags & S2D_ALLOW_LEADING_SPACES) != 0; + const bool allow_trailing_spaces = (conv->flags & S2D_ALLOW_TRAILING_SPACES) != 0; + const bool allow_spaces_after_sign = (conv->flags & S2D_ALLOW_SPACES_AFTER_SIGN) != 0; + const bool allow_case_insensitivity = (conv->flags & S2D_ALLOW_CASE_INSENSITIVITY) != 0; + + // To make sure that iterator dereferencing is valid the following + // convention is used: + // 1. Each '++current' statement is followed by check for equality to 'end'. + // 2. If AdvanceToNonspace returned false then current == end. + // 3. If 'current' becomes equal to 'end' the function returns or goes to + // 'parsing_done'. + // 4. 'current' is not dereferenced after the 'parsing_done' label. + // 5. Code before 'parsing_done' may rely on 'current != end'. + if (current == end) return conv->empty_string_value; + + if (allow_leading_spaces || allow_trailing_spaces) { + if (!S2D_AdvanceToNonspace(¤t, end)) { + *processed_characters_count = (int)(current - input); + return conv->empty_string_value; + } + if (!allow_leading_spaces && (input != current)) { + // No leading spaces allowed, but AdvanceToNonspace moved forward. + return conv->junk_string_value; + } + } + + // Exponent will be adjusted if insignificant digits of the integer part + // or insignificant leading zeros of the fractional part are dropped. + int exponent = 0; + int significant_digits = 0; + int insignificant_digits = 0; + bool nonzero_digit_dropped = false; + + bool sign = false; + + if (*current == '+' || *current == '-') { + sign = (*current == '-'); + ++current; + Iterator next_non_space = current; + // Skip following spaces (if allowed). + if (!S2D_AdvanceToNonspace(&next_non_space, end)) return conv->junk_string_value; + if (!allow_spaces_after_sign && (current != next_non_space)) { + return conv->junk_string_value; + } + current = next_non_space; + } + + if (conv->infinity_symbol != NULL) { + if (S2D_ConsumeFirstCharacter(*current, conv->infinity_symbol, allow_case_insensitivity)) { + if (!S2D_ConsumeSubString(¤t, end, conv->infinity_symbol, allow_case_insensitivity)) { + return conv->junk_string_value; + } + + if (!(allow_trailing_spaces || allow_trailing_junk) && (current != end)) { + return conv->junk_string_value; + } + if (!allow_trailing_junk && S2D_AdvanceToNonspace(¤t, end)) { + return conv->junk_string_value; + } + + *processed_characters_count = (int)(current - input); + return sign ? -Double_Infinity() : Double_Infinity(); + } + } + + if (conv->nan_symbol != NULL) { + if (S2D_ConsumeFirstCharacter(*current, conv->nan_symbol, allow_case_insensitivity)) { + if (!S2D_ConsumeSubString(¤t, end, conv->nan_symbol, allow_case_insensitivity)) { + return conv->junk_string_value; + } + + if (!(allow_trailing_spaces || allow_trailing_junk) && (current != end)) { + return conv->junk_string_value; + } + if (!allow_trailing_junk && S2D_AdvanceToNonspace(¤t, end)) { + return conv->junk_string_value; + } + + *processed_characters_count = (int)(current - input); + return sign ? -Double_NaN() : Double_NaN(); + } + } + + bool leading_zero = false; + if (*current == '0') { + if (S2D_Advance(¤t, conv->separator, 10, end)) { + *processed_characters_count = (int)(current - input); + return S2D_SignedZero(sign); + } + + leading_zero = true; + + // It could be hexadecimal value. + if (((conv->flags & S2D_ALLOW_HEX) || + (conv->flags & S2D_ALLOW_HEX_FLOATS)) && + (*current == 'x' || *current == 'X')) { + ++current; + + if (current == end) return conv->junk_string_value; // "0x" + + bool parse_as_hex_float = (conv->flags & S2D_ALLOW_HEX_FLOATS) && + S2D_IsHexFloatString(current, end, conv->separator, allow_trailing_junk); + + if (!parse_as_hex_float && !S2D_isDigit(*current, 16)) { + return conv->junk_string_value; + } + + bool result_is_junk; + double result = S2D_RadixStringToIeee(4, + ¤t, + end, + sign, + conv->separator, + parse_as_hex_float, + allow_trailing_junk, + conv->junk_string_value, + read_as_double, + &result_is_junk); + if (!result_is_junk) { + if (allow_trailing_spaces) S2D_AdvanceToNonspace(¤t, end); + *processed_characters_count = (int)(current - input); + } + return result; + } + + // Ignore leading zeros in the integer part. + while (*current == '0') { + if (S2D_Advance(¤t, conv->separator, 10, end)) { + *processed_characters_count = (int)(current - input); + return S2D_SignedZero(sign); + } + } + } + + bool octal = leading_zero && (conv->flags & S2D_ALLOW_OCTALS) != 0; + + // The longest form of simplified number is: "-<significant digits>.1eXXX\0". + const int kBufferSize = S2D_kMaxSignificantDigits + 10; + DOUBLE_CONVERSION_STACK_UNINITIALIZED char + buffer[S2D_kMaxSignificantDigits + 10 /* kBufferSize */]; + int buffer_pos = 0; + + // Copy significant digits of the integer part (if any) to the buffer. + while (*current >= '0' && *current <= '9') { + if (significant_digits < S2D_kMaxSignificantDigits) { + DOUBLE_CONVERSION_ASSERT(buffer_pos < kBufferSize); + buffer[buffer_pos++] = (char)(*current); + significant_digits++; + // Will later check if it's an octal in the buffer. + } else { + insignificant_digits++; // Move the digit into the exponential part. + nonzero_digit_dropped = nonzero_digit_dropped || *current != '0'; + } + octal = octal && *current < '8'; + if (S2D_Advance(¤t, conv->separator, 10, end)) goto parsing_done; + } + + if (significant_digits == 0) { + octal = false; + } + + if (*current == '.') { + if (octal && !allow_trailing_junk) return conv->junk_string_value; + if (octal) goto parsing_done; + + if (S2D_Advance(¤t, conv->separator, 10, end)) { + if (significant_digits == 0 && !leading_zero) { + return conv->junk_string_value; + } else { + goto parsing_done; + } + } + + if (significant_digits == 0) { + // octal = false; + // Integer part consists of 0 or is absent. Significant digits start after + // leading zeros (if any). + while (*current == '0') { + if (S2D_Advance(¤t, conv->separator, 10, end)) { + *processed_characters_count = (int)(current - input); + return S2D_SignedZero(sign); + } + exponent--; // Move this 0 into the exponent. + } + } + + // There is a fractional part. + // We don't emit a '.', but adjust the exponent instead. + while (*current >= '0' && *current <= '9') { + if (significant_digits < S2D_kMaxSignificantDigits) { + DOUBLE_CONVERSION_ASSERT(buffer_pos < kBufferSize); + buffer[buffer_pos++] = (char)(*current); + significant_digits++; + exponent--; + } else { + // Ignore insignificant digits in the fractional part. + nonzero_digit_dropped = nonzero_digit_dropped || *current != '0'; + } + if (S2D_Advance(¤t, conv->separator, 10, end)) goto parsing_done; + } + } + + if (!leading_zero && exponent == 0 && significant_digits == 0) { + // If leading_zeros is true then the string contains zeros. + // If exponent < 0 then string was [+-]\.0*... + // If significant_digits != 0 the string is not equal to 0. + // Otherwise there are no digits in the string. + return conv->junk_string_value; + } + + // Parse exponential part. + if (*current == 'e' || *current == 'E') { + if (octal && !allow_trailing_junk) return conv->junk_string_value; + if (octal) goto parsing_done; + Iterator junk_begin = current; + ++current; + if (current == end) { + if (allow_trailing_junk) { + current = junk_begin; + goto parsing_done; + } else { + return conv->junk_string_value; + } + } + char exponen_sign = '+'; + if (*current == '+' || *current == '-') { + exponen_sign = (char)(*current); + ++current; + if (current == end) { + if (allow_trailing_junk) { + current = junk_begin; + goto parsing_done; + } else { + return conv->junk_string_value; + } + } + } + + if (current == end || *current < '0' || *current > '9') { + if (allow_trailing_junk) { + current = junk_begin; + goto parsing_done; + } else { + return conv->junk_string_value; + } + } + + const int max_exponent = INT_MAX / 2; + DOUBLE_CONVERSION_ASSERT(-max_exponent / 2 <= exponent && exponent <= max_exponent / 2); + int num = 0; + do { + // Check overflow. + int digit = *current - '0'; + if (num >= max_exponent / 10 + && !(num == max_exponent / 10 && digit <= max_exponent % 10)) { + num = max_exponent; + } else { + num = num * 10 + digit; + } + ++current; + } while (current != end && *current >= '0' && *current <= '9'); + + exponent += (exponen_sign == '-' ? -num : num); + } + + if (!(allow_trailing_spaces || allow_trailing_junk) && (current != end)) { + return conv->junk_string_value; + } + if (!allow_trailing_junk && S2D_AdvanceToNonspace(¤t, end)) { + return conv->junk_string_value; + } + if (allow_trailing_spaces) { + S2D_AdvanceToNonspace(¤t, end); + } + +parsing_done: + exponent += insignificant_digits; + + if (octal) { + double result; + bool result_is_junk; + char *start = buffer; + result = S2D_RadixStringToIeee(3, + (Iterator *)&start, + buffer + buffer_pos, + sign, + conv->separator, + false, // Don't parse as hex_float. + allow_trailing_junk, + conv->junk_string_value, + read_as_double, + &result_is_junk); + DOUBLE_CONVERSION_ASSERT(!result_is_junk); + *processed_characters_count = (int)(current - input); + return result; + } + + if (nonzero_digit_dropped) { + buffer[buffer_pos++] = '1'; + exponent--; + } + + DOUBLE_CONVERSION_ASSERT(buffer_pos < kBufferSize); + buffer[buffer_pos] = '\0'; + + // Code above ensures there are no leading zeros and the buffer has fewer than + // kMaxSignificantDecimalDigits characters. Trim trailing zeros. + Vector chars = Vector_make(buffer, buffer_pos); + chars = Strtod_TrimTrailingZeros(&chars); + exponent += buffer_pos - chars.length; + + double converted; + if (read_as_double) { + converted = StrtodTrimmed(&chars, exponent); + } else { + converted = StrtofTrimmed(&chars, exponent); + } + *processed_characters_count = (int)(current - input); + return sign? -converted: converted; +} + +static double StringToDouble(StringToDoubleConverter *conv, + const char* buffer, + int length, + int *processed_characters_count) { + return StringToIeee(conv, buffer, length, true, processed_characters_count); +} + +static float StringToFloat(StringToDoubleConverter *conv, + const char *buffer, + int length, + int *processed_characters_count) { + return (float)(StringToIeee(conv, buffer, length, false, processed_characters_count)); +} + + + +/// ============================================================================ +/// double-to-string.h +/// ============================================================================ + +typedef struct DoubleToStringConverter { + int flags; + const char *infinity_symbol; + const char *nan_symbol; + char exponent_character; + int decimal_in_shortest_low; + int decimal_in_shortest_high; + int max_leading_padding_zeroes_in_precision_mode; + int max_trailing_padding_zeroes_in_precision_mode; + int min_exponent_width; +} DoubleToStringConverter; + +// When calling ToFixed with a double > 10^kMaxFixedDigitsBeforePoint +// or a requested_digits parameter > kMaxFixedDigitsAfterPoint then the +// function returns false. +#define D2S_kMaxFixedDigitsBeforePoint ((int)60) +#define D2S_kMaxFixedDigitsAfterPoint ((int)100) + +// When calling ToExponential with a requested_digits +// parameter > kMaxExponentialDigits then the function returns false. +#define D2S_kMaxExponentialDigits ((int)120) + +// When calling ToPrecision with a requested_digits +// parameter < kMinPrecisionDigits or requested_digits > kMaxPrecisionDigits +// then the function returns false. +#define D2S_kMinPrecisionDigits ((int)1) +#define D2S_kMaxPrecisionDigits ((int)120) + +// The maximal number of digits that are needed to emit a double in base 10. +// A higher precision can be achieved by using more digits, but the shortest +// accurate representation of any double will never use more digits than +// kBase10MaximalLength. +// Note that DoubleToAscii null-terminates its input. So the given buffer +// should be at least kBase10MaximalLength + 1 characters long. +#define D2S_kBase10MaximalLength ((int)17) + +// The maximal number of digits that are needed to emit a single in base 10. +// A higher precision can be achieved by using more digits, but the shortest +// accurate representation of any single will never use more digits than +// kBase10MaximalLengthSingle. +#define D2S_kBase10MaximalLengthSingle ((int)9) + +// The length of the longest string that 'ToShortest' can produce when the +// converter is instantiated with EcmaScript defaults (see +// 'EcmaScriptConverter') +// This value does not include the trailing '\0' character. +// This amount of characters is needed for negative values that hit the +// 'decimal_in_shortest_low' limit. For example: "-0.0000033333333333333333" +#define D2S_kMaxCharsEcmaScriptShortest ((int)25) + +typedef enum D2S_Flags { + D2S_NO_FLAGS = 0, + D2S_EMIT_POSITIVE_EXPONENT_SIGN = 1, + D2S_EMIT_TRAILING_DECIMAL_POINT = 2, + D2S_EMIT_TRAILING_ZERO_AFTER_POINT = 4, + D2S_UNIQUE_ZERO = 8, + D2S_NO_TRAILING_ZERO = 16, + EMIT_TRAILING_DECIMAL_POINT_IN_EXPONENTIAL = 32, + EMIT_TRAILING_ZERO_AFTER_POINT_IN_EXPONENTIAL = 64 +} D2S_Flags; + +// Flags should be a bit-or combination of the possible Flags-enum. +// - NO_FLAGS: no special flags. +// - EMIT_POSITIVE_EXPONENT_SIGN: when the number is converted into exponent +// form, emits a '+' for positive exponents. Example: 1.2e+2. +// - EMIT_TRAILING_DECIMAL_POINT: when the input number is an integer and is +// converted into decimal format then a trailing decimal point is appended. +// Example: 2345.0 is converted to "2345.". +// - EMIT_TRAILING_ZERO_AFTER_POINT: in addition to a trailing decimal point +// emits a trailing '0'-character. This flag requires the +// EMIT_TRAILING_DECIMAL_POINT flag. +// Example: 2345.0 is converted to "2345.0". +// - UNIQUE_ZERO: "-0.0" is converted to "0.0". +// - NO_TRAILING_ZERO: Trailing zeros are removed from the fractional portion +// of the result in precision mode. Matches printf's %g. +// When EMIT_TRAILING_ZERO_AFTER_POINT is also given, one trailing zero is +// preserved. +// - EMIT_TRAILING_DECIMAL_POINT_IN_EXPONENTIAL: when the input number has +// exactly one significant digit and is converted into exponent form then a +// trailing decimal point is appended to the significand in shortest mode +// or in precision mode with one requested digit. +// - EMIT_TRAILING_ZERO_AFTER_POINT_IN_EXPONENTIAL: in addition to a trailing +// decimal point emits a trailing '0'-character. This flag requires the +// EMIT_TRAILING_DECIMAL_POINT_IN_EXPONENTIAL flag. +// +// Infinity symbol and nan_symbol provide the string representation for these +// special values. If the string is NULL and the special value is encountered +// then the conversion functions return false. +// +// The exponent_character is used in exponential representations. It is +// usually 'e' or 'E'. +// +// When converting to the shortest representation the converter will +// represent input numbers in decimal format if they are in the interval +// [10^decimal_in_shortest_low; 10^decimal_in_shortest_high[ +// (lower boundary included, greater boundary excluded). +// Example: with decimal_in_shortest_low = -6 and +// decimal_in_shortest_high = 21: +// ToShortest(0.000001) -> "0.000001" +// ToShortest(0.0000001) -> "1e-7" +// ToShortest(111111111111111111111.0) -> "111111111111111110000" +// ToShortest(100000000000000000000.0) -> "100000000000000000000" +// ToShortest(1111111111111111111111.0) -> "1.1111111111111111e+21" +// +// When converting to precision mode the converter may add +// max_leading_padding_zeroes before returning the number in exponential +// format. +// Example with max_leading_padding_zeroes_in_precision_mode = 6. +// ToPrecision(0.0000012345, 2) -> "0.0000012" +// ToPrecision(0.00000012345, 2) -> "1.2e-7" +// Similarly the converter may add up to +// max_trailing_padding_zeroes_in_precision_mode in precision mode to avoid +// returning an exponential representation. A zero added by the +// EMIT_TRAILING_ZERO_AFTER_POINT flag is counted for this limit. +// Examples for max_trailing_padding_zeroes_in_precision_mode = 1: +// ToPrecision(230.0, 2) -> "230" +// ToPrecision(230.0, 2) -> "230." with EMIT_TRAILING_DECIMAL_POINT. +// ToPrecision(230.0, 2) -> "2.3e2" with EMIT_TRAILING_ZERO_AFTER_POINT. +// +// When converting numbers with exactly one significant digit to exponent +// form in shortest mode or in precision mode with one requested digit, the +// EMIT_TRAILING_DECIMAL_POINT and EMIT_TRAILING_ZERO_AFTER_POINT flags have +// no effect. Use the EMIT_TRAILING_DECIMAL_POINT_IN_EXPONENTIAL flag to +// append a decimal point in this case and the +// EMIT_TRAILING_ZERO_AFTER_POINT_IN_EXPONENTIAL flag to also append a +// '0'-character in this case. +// Example with decimal_in_shortest_low = 0: +// ToShortest(0.0009) -> "9e-4" +// with EMIT_TRAILING_DECIMAL_POINT_IN_EXPONENTIAL deactivated. +// ToShortest(0.0009) -> "9.e-4" +// with EMIT_TRAILING_DECIMAL_POINT_IN_EXPONENTIAL activated. +// ToShortest(0.0009) -> "9.0e-4" +// with EMIT_TRAILING_DECIMAL_POINT_IN_EXPONENTIAL activated and +// EMIT_TRAILING_ZERO_AFTER_POINT_IN_EXPONENTIAL activated. +// +// The min_exponent_width is used for exponential representations. +// The converter adds leading '0's to the exponent until the exponent +// is at least min_exponent_width digits long. +// The min_exponent_width is clamped to 5. +// As such, the exponent may never have more than 5 digits in total. +static DoubleToStringConverter DoubleToStringConverter_make(int flags, + const char *infinity_symbol, + const char *nan_symbol, + char exponent_character, + int decimal_in_shortest_low, + int decimal_in_shortest_high, + int max_leading_padding_zeroes_in_precision_mode, + int max_trailing_padding_zeroes_in_precision_mode, + int min_exponent_width) { + DoubleToStringConverter conv; + conv.flags = flags; + conv.infinity_symbol = infinity_symbol; + conv.nan_symbol = nan_symbol; + conv.exponent_character = exponent_character; + conv.decimal_in_shortest_low = decimal_in_shortest_low; + conv.decimal_in_shortest_high = decimal_in_shortest_high; + conv.max_leading_padding_zeroes_in_precision_mode = max_leading_padding_zeroes_in_precision_mode; + conv.max_trailing_padding_zeroes_in_precision_mode = max_trailing_padding_zeroes_in_precision_mode; + conv.min_exponent_width = min_exponent_width; + // When 'trailing zero after the point' is set, then 'trailing point' + // must be set too. + DOUBLE_CONVERSION_ASSERT(((flags & D2S_EMIT_TRAILING_DECIMAL_POINT) != 0) || + !((flags & D2S_EMIT_TRAILING_ZERO_AFTER_POINT) != 0)); + return conv; +} + +// Returns a converter following the EcmaScript specification. +// +// Flags: UNIQUE_ZERO and EMIT_POSITIVE_EXPONENT_SIGN. +// Special values: "Infinity" and "NaN". +// Lower case 'e' for exponential values. +// decimal_in_shortest_low: -6 +// decimal_in_shortest_high: 21 +// max_leading_padding_zeroes_in_precision_mode: 6 +// max_trailing_padding_zeroes_in_precision_mode: 0 +static const DoubleToStringConverter D2S_EcmaScriptConverter = { + D2S_UNIQUE_ZERO | D2S_EMIT_POSITIVE_EXPONENT_SIGN, + "Infinity", + "NaN", + 'e', + -6, 21, + 6, 0 +}; + +typedef enum DtoaMode { + // Produce the shortest correct representation. + // For example the output of 0.299999999999999988897 is (the less accurate + // but correct) 0.3. + DtoaMode_SHORTEST, + // Same as SHORTEST, but for single-precision floats. + DtoaMode_SHORTEST_SINGLE, + // Produce a fixed number of digits after the decimal point. + // For instance fixed(0.1, 4) becomes 0.1000 + // If the input number is big, the output will be big. + DtoaMode_FIXED, + // Fixed number of digits (independent of the decimal point). + DtoaMode_PRECISION +} DtoaMode; + +// Computes a decimal representation with a fixed number of digits after the +// decimal point. The last emitted digit is rounded. +// +// Examples: +// ToFixed(3.12, 1) -> "3.1" +// ToFixed(3.1415, 3) -> "3.142" +// ToFixed(1234.56789, 4) -> "1234.5679" +// ToFixed(1.23, 5) -> "1.23000" +// ToFixed(0.1, 4) -> "0.1000" +// ToFixed(1e30, 2) -> "1000000000000000019884624838656.00" +// ToFixed(0.1, 30) -> "0.100000000000000005551115123126" +// ToFixed(0.1, 17) -> "0.10000000000000001" +// +// If requested_digits equals 0, then the tail of the result depends on +// the EMIT_TRAILING_DECIMAL_POINT and EMIT_TRAILING_ZERO_AFTER_POINT. +// Examples, for requested_digits == 0, +// let EMIT_TRAILING_DECIMAL_POINT and EMIT_TRAILING_ZERO_AFTER_POINT be +// - false and false: then 123.45 -> 123 +// 0.678 -> 1 +// - true and false: then 123.45 -> 123. +// 0.678 -> 1. +// - true and true: then 123.45 -> 123.0 +// 0.678 -> 1.0 +// +// Returns true if the conversion succeeds. The conversion always succeeds +// except for the following cases: +// - the input value is special and no infinity_symbol or nan_symbol has +// been provided to the constructor, +// - 'value' > 10^kMaxFixedDigitsBeforePoint, or +// - 'requested_digits' > kMaxFixedDigitsAfterPoint. +// The last two conditions imply that the result for non-special values never +// contains more than +// 1 + kMaxFixedDigitsBeforePoint + 1 + kMaxFixedDigitsAfterPoint characters +// (one additional character for the sign, and one for the decimal point). +// In addition, the buffer must be able to hold the trailing '\0' character. +static bool D2S_ToFixed(DoubleToStringConverter *conv, + double value, + int requested_digits, + StringBuilder *result_builder); + +// Computes a representation in exponential format with requested_digits +// after the decimal point. The last emitted digit is rounded. +// If requested_digits equals -1, then the shortest exponential representation +// is computed. +// +// Examples with EMIT_POSITIVE_EXPONENT_SIGN deactivated, and +// exponent_character set to 'e'. +// ToExponential(3.12, 1) -> "3.1e0" +// ToExponential(5.0, 3) -> "5.000e0" +// ToExponential(0.001, 2) -> "1.00e-3" +// ToExponential(3.1415, -1) -> "3.1415e0" +// ToExponential(3.1415, 4) -> "3.1415e0" +// ToExponential(3.1415, 3) -> "3.142e0" +// ToExponential(123456789000000, 3) -> "1.235e14" +// ToExponential(1000000000000000019884624838656.0, -1) -> "1e30" +// ToExponential(1000000000000000019884624838656.0, 32) -> +// "1.00000000000000001988462483865600e30" +// ToExponential(1234, 0) -> "1e3" +// +// Returns true if the conversion succeeds. The conversion always succeeds +// except for the following cases: +// - the input value is special and no infinity_symbol or nan_symbol has +// been provided to the constructor, +// - 'requested_digits' > kMaxExponentialDigits. +// +// The last condition implies that the result never contains more than +// kMaxExponentialDigits + 8 characters (the sign, the digit before the +// decimal point, the decimal point, the exponent character, the +// exponent's sign, and at most 3 exponent digits). +// In addition, the buffer must be able to hold the trailing '\0' character. +static bool D2S_ToExponential(DoubleToStringConverter *conv, + double value, + int requested_digits, + StringBuilder *result_builder); + +// Computes 'precision' leading digits of the given 'value' and returns them +// either in exponential or decimal format, depending on +// max_{leading|trailing}_padding_zeroes_in_precision_mode (given to the +// constructor). +// The last computed digit is rounded. +// +// Example with max_leading_padding_zeroes_in_precision_mode = 6. +// ToPrecision(0.0000012345, 2) -> "0.0000012" +// ToPrecision(0.00000012345, 2) -> "1.2e-7" +// Similarly the converter may add up to +// max_trailing_padding_zeroes_in_precision_mode in precision mode to avoid +// returning an exponential representation. A zero added by the +// EMIT_TRAILING_ZERO_AFTER_POINT flag is counted for this limit. +// Examples for max_trailing_padding_zeroes_in_precision_mode = 1: +// ToPrecision(230.0, 2) -> "230" +// ToPrecision(230.0, 2) -> "230." with EMIT_TRAILING_DECIMAL_POINT. +// ToPrecision(230.0, 2) -> "2.3e2" with EMIT_TRAILING_ZERO_AFTER_POINT. +// Examples for max_trailing_padding_zeroes_in_precision_mode = 3, and no +// EMIT_TRAILING_ZERO_AFTER_POINT: +// ToPrecision(123450.0, 6) -> "123450" +// ToPrecision(123450.0, 5) -> "123450" +// ToPrecision(123450.0, 4) -> "123500" +// ToPrecision(123450.0, 3) -> "123000" +// ToPrecision(123450.0, 2) -> "1.2e5" +// +// Returns true if the conversion succeeds. The conversion always succeeds +// except for the following cases: +// - the input value is special and no infinity_symbol or nan_symbol has +// been provided to the constructor, +// - precision < kMinPericisionDigits +// - precision > kMaxPrecisionDigits +// +// The last condition implies that the result never contains more than +// kMaxPrecisionDigits + 7 characters (the sign, the decimal point, the +// exponent character, the exponent's sign, and at most 3 exponent digits). +// In addition, the buffer must be able to hold the trailing '\0' character. +static bool D2S_ToPrecision(DoubleToStringConverter *conv, + double value, + int precision, + StringBuilder *result_builder); + +// Converts the given double 'v' to digit characters. 'v' must not be NaN, +// +Infinity, or -Infinity. In SHORTEST_SINGLE-mode this restriction also +// applies to 'v' after it has been casted to a single-precision float. That +// is, in this mode static_cast<float>(v) must not be NaN, +Infinity or +// -Infinity. +// +// The result should be interpreted as buffer * 10^(point-length). +// +// The digits are written to the buffer in the platform's charset, which is +// often UTF-8 (with ASCII-range digits) but may be another charset, such +// as EBCDIC. +// +// The output depends on the given mode: +// - SHORTEST: produce the least amount of digits for which the internal +// identity requirement is still satisfied. If the digits are printed +// (together with the correct exponent) then reading this number will give +// 'v' again. The buffer will choose the representation that is closest to +// 'v'. If there are two at the same distance, than the one farther away +// from 0 is chosen (halfway cases - ending with 5 - are rounded up). +// In this mode the 'requested_digits' parameter is ignored. +// - SHORTEST_SINGLE: same as SHORTEST but with single-precision. +// - FIXED: produces digits necessary to print a given number with +// 'requested_digits' digits after the decimal point. The produced digits +// might be too short in which case the caller has to fill the remainder +// with '0's. +// Example: toFixed(0.001, 5) is allowed to return buffer="1", point=-2. +// Halfway cases are rounded towards +/-Infinity (away from 0). The call +// toFixed(0.15, 2) thus returns buffer="2", point=0. +// The returned buffer may contain digits that would be truncated from the +// shortest representation of the input. +// - PRECISION: produces 'requested_digits' where the first digit is not '0'. +// Even though the length of produced digits usually equals +// 'requested_digits', the function is allowed to return fewer digits, in +// which case the caller has to fill the missing digits with '0's. +// Halfway cases are again rounded away from 0. +// DoubleToAscii expects the given buffer to be big enough to hold all +// digits and a terminating null-character. In SHORTEST-mode it expects a +// buffer of at least kBase10MaximalLength + 1. In all other modes the +// requested_digits parameter and the padding-zeroes limit the size of the +// output. Don't forget the decimal point, the exponent character and the +// terminating null-character when computing the maximal output size. +// The given length is only used in debug mode to ensure the buffer is big +// enough. +static void D2S_DoubleToAscii(double v, + DtoaMode mode, + int requested_digits, + char *buffer, + int buffer_length, + bool *sign, + int *length, + int *point); + +// Implementation for ToShortest and ToShortestSingle. +static bool D2S_ToShortestIeeeNumber(DoubleToStringConverter *conv, + double value, + StringBuilder *result_builder, + DtoaMode mode); + +// If the value is a special value (NaN or Infinity) constructs the +// corresponding string using the configured infinity/nan-symbol. +// If either of them is NULL or the value is not special then the +// function returns false. +static bool D2S_HandleSpecialValues(DoubleToStringConverter *conv, + double value, StringBuilder *result_builder); + +// Constructs an exponential representation (i.e. 1.234e56). +// The given exponent assumes a decimal point after the first decimal digit. +static void D2S_CreateExponentialRepresentation(DoubleToStringConverter *conv, + const char *decimal_digits, + int length, + int exponent, + StringBuilder *result_builder); + +// Creates a decimal representation (i.e 1234.5678). +static void D2S_CreateDecimalRepresentation(DoubleToStringConverter *conv, + const char *decimal_digits, + int length, + int decimal_point, + int digits_after_point, + StringBuilder *result_builder); + +// Computes the shortest string of digits that correctly represent the input +// number. Depending on decimal_in_shortest_low and decimal_in_shortest_high +// (see constructor) it then either returns a decimal representation, or an +// exponential representation. +// Example with decimal_in_shortest_low = -6, +// decimal_in_shortest_high = 21, +// EMIT_POSITIVE_EXPONENT_SIGN activated, and +// EMIT_TRAILING_DECIMAL_POINT deactivated: +// ToShortest(0.000001) -> "0.000001" +// ToShortest(0.0000001) -> "1e-7" +// ToShortest(111111111111111111111.0) -> "111111111111111110000" +// ToShortest(100000000000000000000.0) -> "100000000000000000000" +// ToShortest(1111111111111111111111.0) -> "1.1111111111111111e+21" +// +// Note: the conversion may round the output if the returned string +// is accurate enough to uniquely identify the input-number. +// For example the most precise representation of the double 9e59 equals +// "899999999999999918767229449717619953810131273674690656206848", but +// the converter will return the shorter (but still correct) "9e59". +// +// Returns true if the conversion succeeds. The conversion always succeeds +// except when the input value is special and no infinity_symbol or +// nan_symbol has been given to the constructor. +// +// The length of the longest result is the maximum of the length of the +// following string representations (each with possible examples): +// - NaN and negative infinity: "NaN", "-Infinity", "-inf". +// - -10^(decimal_in_shortest_high - 1): +// "-100000000000000000000", "-1000000000000000.0" +// - the longest string in range [0; -10^decimal_in_shortest_low]. Generally, +// this string is 3 + kBase10MaximalLength - decimal_in_shortest_low. +// (Sign, '0', decimal point, padding zeroes for decimal_in_shortest_low, +// and the significant digits). +// "-0.0000033333333333333333", "-0.0012345678901234567" +// - the longest exponential representation. (A negative number with +// kBase10MaximalLength significant digits). +// "-1.7976931348623157e+308", "-1.7976931348623157E308" +// In addition, the buffer must be able to hold the trailing '\0' character. +static bool D2S_ToShortest(DoubleToStringConverter *conv, + double value, StringBuilder *result_builder) { + return D2S_ToShortestIeeeNumber(conv, value, result_builder, DtoaMode_SHORTEST); +} + +// Same as ToShortest, but for single-precision floats. +static bool D2S_ToShortestSingle(DoubleToStringConverter *conv, + float value, StringBuilder *result_builder) { + return D2S_ToShortestIeeeNumber(conv, value, result_builder, DtoaMode_SHORTEST_SINGLE); +} + + + +/// ============================================================================ +/// double-to-string.cc +/// ============================================================================ + +static bool D2S_HandleSpecialValues(DoubleToStringConverter *conv, + double value, + StringBuilder *sb) { + Double double_inspect = Double_make(value); + if (Double_IsInfinite(&double_inspect)) { + if (conv->infinity_symbol == DOUBLE_CONVERSION_NULLPTR) return false; + if (value < 0) { + StringBuilder_AddCharacter(sb, '-'); + } + StringBuilder_AddString(sb, conv->infinity_symbol); + return true; + } + if (Double_IsNan(&double_inspect)) { + if (conv->nan_symbol == DOUBLE_CONVERSION_NULLPTR) return false; + StringBuilder_AddString(sb, conv->nan_symbol); + return true; + } + return false; +} + +static void D2S_CreateExponentialRepresentation(DoubleToStringConverter *conv, + const char *decimal_digits, + int length, + int exponent, + StringBuilder *sb) { + DOUBLE_CONVERSION_ASSERT(length != 0); + StringBuilder_AddCharacter(sb, decimal_digits[0]); + if (length == 1) { + if ((conv->flags & EMIT_TRAILING_DECIMAL_POINT_IN_EXPONENTIAL) != 0) { + StringBuilder_AddCharacter(sb, '.'); + if ((conv->flags & EMIT_TRAILING_ZERO_AFTER_POINT_IN_EXPONENTIAL) != 0) { + StringBuilder_AddCharacter(sb, '0'); + } + } + } else { + StringBuilder_AddCharacter(sb, '.'); + StringBuilder_AddSubstring(sb, &decimal_digits[1], length-1); + } + StringBuilder_AddCharacter(sb, conv->exponent_character); + if (exponent < 0) { + StringBuilder_AddCharacter(sb, '-'); + exponent = -exponent; + } else { + if ((conv->flags & D2S_EMIT_POSITIVE_EXPONENT_SIGN) != 0) { + StringBuilder_AddCharacter(sb, '+'); + } + } + DOUBLE_CONVERSION_ASSERT(exponent < 1e4); + // Changing this constant requires updating the comment of DoubleToStringConverter constructor + const int kMaxExponentLength = 5; + char buffer[5 /* kMaxExponentLength */ + 1]; + buffer[kMaxExponentLength] = '\0'; + int first_char_pos = kMaxExponentLength; + if (exponent == 0) { + buffer[--first_char_pos] = '0'; + } else { + while (exponent > 0) { + buffer[--first_char_pos] = '0' + (exponent % 10); + exponent /= 10; + } + } + // Add prefix '0' to make exponent width >= min(min_exponent_with_, kMaxExponentLength) + // For example: convert 1e+9 -> 1e+09, if min_exponent_with_ is set to 2 + while(kMaxExponentLength - first_char_pos < MIN(conv->min_exponent_width, kMaxExponentLength)) { + buffer[--first_char_pos] = '0'; + } + StringBuilder_AddSubstring(sb, &buffer[first_char_pos], + kMaxExponentLength - first_char_pos); +} + +static void D2S_CreateDecimalRepresentation(DoubleToStringConverter *conv, + const char *decimal_digits, + int length, + int decimal_point, + int digits_after_point, + StringBuilder *sb) { + // Create a representation that is padded with zeros if needed. + if (decimal_point <= 0) { + // "0.00000decimal_rep" or "0.000decimal_rep00". + StringBuilder_AddCharacter(sb, '0'); + if (digits_after_point > 0) { + StringBuilder_AddCharacter(sb, '.'); + StringBuilder_AddPadding(sb, '0', -decimal_point); + DOUBLE_CONVERSION_ASSERT(length <= digits_after_point - (-decimal_point)); + StringBuilder_AddSubstring(sb, decimal_digits, length); + int remaining_digits = digits_after_point - (-decimal_point) - length; + StringBuilder_AddPadding(sb, '0', remaining_digits); + } + } else if (decimal_point >= length) { + // "decimal_rep0000.00000" or "decimal_rep.0000". + StringBuilder_AddSubstring(sb, decimal_digits, length); + StringBuilder_AddPadding(sb, '0', decimal_point - length); + if (digits_after_point > 0) { + StringBuilder_AddCharacter(sb, '.'); + StringBuilder_AddPadding(sb, '0', digits_after_point); + } + } else { + // "decima.l_rep000". + DOUBLE_CONVERSION_ASSERT(digits_after_point > 0); + StringBuilder_AddSubstring(sb, decimal_digits, decimal_point); + StringBuilder_AddCharacter(sb, '.'); + DOUBLE_CONVERSION_ASSERT(length - decimal_point <= digits_after_point); + StringBuilder_AddSubstring(sb, &decimal_digits[decimal_point], + length - decimal_point); + int remaining_digits = digits_after_point - (length - decimal_point); + StringBuilder_AddPadding(sb, '0', remaining_digits); + } + if (digits_after_point == 0) { + if ((conv->flags & D2S_EMIT_TRAILING_DECIMAL_POINT) != 0) { + StringBuilder_AddCharacter(sb, '.'); + } + if ((conv->flags & D2S_EMIT_TRAILING_ZERO_AFTER_POINT) != 0) { + StringBuilder_AddCharacter(sb, '0'); + } + } +} + +static bool D2S_ToShortestIeeeNumber(DoubleToStringConverter *conv, + double value, + StringBuilder *sb, + DtoaMode mode) { + DOUBLE_CONVERSION_ASSERT(mode == DtoaMode_SHORTEST || mode == DtoaMode_SHORTEST_SINGLE); + Double d = Double_make(value); + if (Double_IsSpecial(&d)) { + return D2S_HandleSpecialValues(conv, value, sb); + } + + int decimal_point; + bool sign; + const int kDecimalRepCapacity = D2S_kBase10MaximalLength + 1; + char decimal_rep[D2S_kBase10MaximalLength + 1]; // kDecimalRepCapacity + int decimal_rep_length; + + D2S_DoubleToAscii(value, mode, 0, decimal_rep, kDecimalRepCapacity, + &sign, &decimal_rep_length, &decimal_point); + + bool unique_zero = (conv->flags & D2S_UNIQUE_ZERO) != 0; + if (sign && (value != 0.0 || !unique_zero)) { + StringBuilder_AddCharacter(sb, '-'); + } + + int exponent = decimal_point - 1; + if ((conv->decimal_in_shortest_low <= exponent) && + (exponent < conv->decimal_in_shortest_high)) { + D2S_CreateDecimalRepresentation(conv, decimal_rep, decimal_rep_length, + decimal_point, + MAX(0, decimal_rep_length - decimal_point), + sb); + } else { + D2S_CreateExponentialRepresentation(conv, decimal_rep, decimal_rep_length, exponent, + sb); + } + return true; +} + +static bool D2S_ToFixed(DoubleToStringConverter *conv, + double value, + int requested_digits, + StringBuilder *sb) { + DOUBLE_CONVERSION_ASSERT(D2S_kMaxFixedDigitsBeforePoint == 60); + const double kFirstNonFixed = 1e60; + + Double d = Double_make(value); + if (Double_IsSpecial(&d)) { + return D2S_HandleSpecialValues(conv, value, sb); + } + + if (requested_digits > D2S_kMaxFixedDigitsAfterPoint) return false; + if (value >= kFirstNonFixed || value <= -kFirstNonFixed) return false; + + // Find a sufficiently precise decimal representation of n. + int decimal_point; + bool sign; + // Add space for the '\0' byte. + const int kDecimalRepCapacity = + D2S_kMaxFixedDigitsBeforePoint + D2S_kMaxFixedDigitsAfterPoint + 1; + char decimal_rep[D2S_kMaxFixedDigitsBeforePoint + D2S_kMaxFixedDigitsAfterPoint + 1]; // kDecimalRepCapacity + int decimal_rep_length; + D2S_DoubleToAscii(value, DtoaMode_FIXED, requested_digits, + decimal_rep, kDecimalRepCapacity, + &sign, &decimal_rep_length, &decimal_point); + + bool unique_zero = ((conv->flags & D2S_UNIQUE_ZERO) != 0); + if (sign && (value != 0.0 || !unique_zero)) { + StringBuilder_AddCharacter(sb, '-'); + } + + D2S_CreateDecimalRepresentation(conv, decimal_rep, decimal_rep_length, decimal_point, + requested_digits, sb); + return true; +} + +static bool D2S_ToExponential(DoubleToStringConverter *conv, + double value, + int requested_digits, + StringBuilder *sb) { + Double d = Double_make(value); + if (Double_IsSpecial(&d)) { + return D2S_HandleSpecialValues(conv, value, sb); + } + + if (requested_digits < -1) return false; + if (requested_digits > D2S_kMaxExponentialDigits) return false; + + int decimal_point; + bool sign; + // Add space for digit before the decimal point and the '\0' character. + const int kDecimalRepCapacity = D2S_kMaxExponentialDigits + 2; + DOUBLE_CONVERSION_ASSERT(kDecimalRepCapacity > D2S_kBase10MaximalLength); + char decimal_rep[D2S_kMaxExponentialDigits + 2]; // kDecimalRepCapacity +#ifndef NDEBUG + // Problem: there is an assert in StringBuilder::AddSubstring() that + // will pass this buffer to strlen(), and this buffer is not generally + // null-terminated. + memset(decimal_rep, 0, sizeof(decimal_rep)); +#endif + int decimal_rep_length; + + if (requested_digits == -1) { + D2S_DoubleToAscii(value, DtoaMode_SHORTEST, 0, + decimal_rep, kDecimalRepCapacity, + &sign, &decimal_rep_length, &decimal_point); + } else { + D2S_DoubleToAscii(value, DtoaMode_PRECISION, requested_digits + 1, + decimal_rep, kDecimalRepCapacity, + &sign, &decimal_rep_length, &decimal_point); + DOUBLE_CONVERSION_ASSERT(decimal_rep_length <= requested_digits + 1); + + for (int i = decimal_rep_length; i < requested_digits + 1; ++i) { + decimal_rep[i] = '0'; + } + decimal_rep_length = requested_digits + 1; + } + + bool unique_zero = ((conv->flags & D2S_UNIQUE_ZERO) != 0); + if (sign && (value != 0.0 || !unique_zero)) { + StringBuilder_AddCharacter(sb, '-'); + } + + int exponent = decimal_point - 1; + D2S_CreateExponentialRepresentation(conv, + decimal_rep, + decimal_rep_length, + exponent, + sb); + return true; +} + +static bool D2S_ToPrecision(DoubleToStringConverter *conv, + double value, + int precision, + StringBuilder *sb) { + Double d = Double_make(value); + if (Double_IsSpecial(&d)) { + return D2S_HandleSpecialValues(conv, value, sb); + } + + if (precision < D2S_kMinPrecisionDigits || precision > D2S_kMaxPrecisionDigits) { + return false; + } + + // Find a sufficiently precise decimal representation of n. + int decimal_point; + bool sign; + // Add one for the terminating null character. + const int kDecimalRepCapacity = D2S_kMaxPrecisionDigits + 1; + char decimal_rep[D2S_kMaxPrecisionDigits + 1]; // kDecimalRepCapacity + int decimal_rep_length; + + D2S_DoubleToAscii(value, DtoaMode_PRECISION, precision, + decimal_rep, kDecimalRepCapacity, + &sign, &decimal_rep_length, &decimal_point); + DOUBLE_CONVERSION_ASSERT(decimal_rep_length <= precision); + + bool unique_zero = ((conv->flags & D2S_UNIQUE_ZERO) != 0); + if (sign && (value != 0.0 || !unique_zero)) { + StringBuilder_AddCharacter(sb, '-'); + } + + // The exponent if we print the number as x.xxeyyy. That is with the + // decimal point after the first digit. + int exponent = decimal_point - 1; + + int extra_zero = ((conv->flags & D2S_EMIT_TRAILING_ZERO_AFTER_POINT) != 0) ? 1 : 0; + bool as_exponential = + (-decimal_point + 1 > conv->max_leading_padding_zeroes_in_precision_mode) || + (decimal_point - precision + extra_zero > + conv->max_trailing_padding_zeroes_in_precision_mode); + if ((conv->flags & D2S_NO_TRAILING_ZERO) != 0) { + // Truncate trailing zeros that occur after the decimal point (if exponential, + // that is everything after the first digit). + int stop = as_exponential ? 1 : MAX(1, decimal_point); + while (decimal_rep_length > stop && decimal_rep[decimal_rep_length - 1] == '0') { + --decimal_rep_length; + } + // Clamp precision to avoid the code below re-adding the zeros. + precision = MIN(precision, decimal_rep_length); + } + if (as_exponential) { + // Fill buffer to contain 'precision' digits. + // Usually the buffer is already at the correct length, but 'DoubleToAscii' + // is allowed to return less characters. + for (int i = decimal_rep_length; i < precision; ++i) { + decimal_rep[i] = '0'; + } + + D2S_CreateExponentialRepresentation(conv, + decimal_rep, + precision, + exponent, + sb); + } else { + D2S_CreateDecimalRepresentation(conv,decimal_rep, decimal_rep_length, decimal_point, + MAX(0, precision - decimal_point), + sb); + } + return true; +} + +static BignumDtoaMode DtoaToBignumDtoaMode(DtoaMode dtoa_mode) { + switch (dtoa_mode) { + case DtoaMode_SHORTEST: return BIGNUM_DTOA_SHORTEST; + case DtoaMode_SHORTEST_SINGLE: return BIGNUM_DTOA_SHORTEST_SINGLE; + case DtoaMode_FIXED: return BIGNUM_DTOA_FIXED; + case DtoaMode_PRECISION: return BIGNUM_DTOA_PRECISION; + default: + DOUBLE_CONVERSION_UNREACHABLE(); + } +} + +static void D2S_DoubleToAscii(double v, + DtoaMode mode, + int requested_digits, + char *buffer, + int buffer_length, + bool *sign, + int *length, + int *point) { + Vector vector = Vector_make(buffer, buffer_length); + Double d = Double_make(v); + DOUBLE_CONVERSION_ASSERT(!Double_IsSpecial(&d)); + DOUBLE_CONVERSION_ASSERT(mode == DtoaMode_SHORTEST || + mode == DtoaMode_SHORTEST_SINGLE || + requested_digits >= 0); + + if (Double_Sign(&d) < 0) { + *sign = true; + v = -v; + } else { + *sign = false; + } + + if (mode == DtoaMode_PRECISION && requested_digits == 0) { + vector.start[0] = '\0'; + *length = 0; + return; + } + + if (v == 0) { + vector.start[0] = '0'; + vector.start[1] = '\0'; + *length = 1; + *point = 1; + return; + } + + bool fast_worked; + switch (mode) { + case DtoaMode_SHORTEST: + fast_worked = FastDtoa(v, FAST_DTOA_SHORTEST, 0, &vector, length, point); + break; + case DtoaMode_SHORTEST_SINGLE: + fast_worked = FastDtoa(v, FAST_DTOA_SHORTEST_SINGLE, 0, + &vector, length, point); + break; + case DtoaMode_FIXED: + fast_worked = FastFixedDtoa(v, requested_digits, &vector, length, point); + break; + case DtoaMode_PRECISION: + fast_worked = FastDtoa(v, FAST_DTOA_PRECISION, requested_digits, + &vector, length, point); + break; + default: + fast_worked = false; + DOUBLE_CONVERSION_UNREACHABLE(); + } + if (fast_worked) return; + + // If the fast dtoa didn't succeed use the slower bignum version. + BignumDtoaMode bignum_mode = DtoaToBignumDtoaMode(mode); + BignumDtoa(v, bignum_mode, requested_digits, &vector, length, point); + vector.start[*length] = '\0'; +} + + + +/// ============================================================================ +/// C wrapper +/// ============================================================================ + +static int imp_dtoa(bool is_double, double val, goo_fmt fmt, int prec, char *buf, int len) { + if (!buf || len < 1) return 0; + StringBuilder sb = StringBuilder_make(buf, len); + + DoubleToStringConverter conv = D2S_EcmaScriptConverter; + conv.flags = D2S_EMIT_TRAILING_DECIMAL_POINT | D2S_EMIT_TRAILING_ZERO_AFTER_POINT; + if (fmt == GOO_FMT_SHORTEST) { + if (is_double) { + if (!D2S_ToShortest(&conv, val, &sb)) return 0; + } else { + if (!D2S_ToShortestSingle(&conv, (float)val, &sb)) return 0; + } + } else if (fmt == GOO_FMT_FIXED) { + if (!D2S_ToFixed(&conv, val, prec, &sb)) return 0; + } else if (fmt == GOO_FMT_PRECISION) { + if (!D2S_ToPrecision(&conv, val, prec, &sb)) return 0; + } else if (fmt == GOO_FMT_EXPONENTIAL) { + if (!D2S_ToExponential(&conv, val, prec, &sb)) return 0; + } + + int pos = sb.position; + if (pos >= len) return 0; + buf[pos] = '\0'; + return pos; +} + +double imp_strtod(bool is_double, const char *str, int len, int *proc_out) { + if (proc_out) *proc_out = 0; + if (!str || !len) return 0.0; + int proc = 0; + + StringToDoubleConverter conv; + conv.flags = + S2D_ALLOW_HEX | + S2D_ALLOW_TRAILING_JUNK | + S2D_ALLOW_LEADING_SPACES | + S2D_ALLOW_TRAILING_SPACES | + S2D_ALLOW_CASE_INSENSITIVITY | + S2D_ALLOW_HEX_FLOATS; + conv.empty_string_value = 0.0; + conv.junk_string_value = 0.0; + conv.infinity_symbol = "inf"; + conv.nan_symbol = "nan"; + conv.separator = '\0'; + + double val = StringToIeee(&conv, str, len, is_double, &proc); + if (proc == 0) { + if (proc_out) *proc_out = proc; + return 0.0; + } + + // process "infinity" literal + Double d = Double_make(val); + if (Double_IsInfinite(&d)) { + const char *cur = str; + while (S2D_isWhitespace(*cur)) cur++; + if (*cur == '-' || *cur == '+') cur++; + + const char *full = "infinity"; + int full_len = (int)strlen(full); + int full_proc = (int)(cur - str) + full_len; + if (full_proc <= len) { + bool full_match = true; + for (int i = 0; i < full_len; i++) { + if (S2D_ToLower(cur[i]) != full[i]) full_match = false; + } + if (full_match) proc = full_proc; + } + } + + // process -0.0 + if (d.d64 == 0) { + for (int i = 0; i < proc; i++) { + if (!S2D_isWhitespace(str[i])) { + if (str[i] == '-') val = -0.0; + break; + } + } + } + + if (proc_out) *proc_out = proc; + return val; +} + +int goo_dtoa(double val, goo_fmt fmt, int prec, char *buf, int len) { + return imp_dtoa(true, val, fmt, prec, buf, len); +} + +int goo_ftoa(float val, goo_fmt fmt, int prec, char *buf, int len) { + return imp_dtoa(false, val, fmt, prec, buf, len); +} + +double goo_strtod(const char *str, int len, int *proc) { + return imp_strtod(true, str, len, proc); +} + +float goo_strtof(const char *str, int len, int *proc) { + return (float)imp_strtod(false, str, len, proc); +} + + + +/// ============================================================================ +/// Compiler Hint End +/// ============================================================================ + +#if defined(__clang__) +# pragma clang diagnostic pop +#elif defined(__GNUC__) +# if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) +# pragma GCC diagnostic pop +# endif +#elif defined(_MSC_VER) +# pragma warning(pop) +#endif /* warning suppress end */ diff --git a/lib/yyjson-0.12.0/test/util/goo_double_conv.h b/lib/yyjson-0.12.0/test/util/goo_double_conv.h new file mode 100644 index 00000000000..0583d151987 --- /dev/null +++ b/lib/yyjson-0.12.0/test/util/goo_double_conv.h @@ -0,0 +1,55 @@ +#ifndef goo_double_conv_h +#define goo_double_conv_h + +/// IEEE 754 floating-point binary representation detection. +/// The functions below may produce incorrect results if `GOO_HAS_IEEE_754 == 0`. +#include <float.h> +#if defined(__STDC_IEC_559__) || defined(__STDC_IEC_60559_BFP__) +# define GOO_HAS_IEEE_754 1 +#elif FLT_RADIX == 2 && \ + FLT_MANT_DIG == 24 && FLT_DIG == 6 && \ + FLT_MIN_EXP == -125 && FLT_MAX_EXP == 128 && \ + FLT_MIN_10_EXP == -37 && FLT_MAX_10_EXP == 38 && \ + DBL_MANT_DIG == 53 && DBL_DIG == 15 && \ + DBL_MIN_EXP == -1021 && DBL_MAX_EXP == 1024 && \ + DBL_MIN_10_EXP == -307 && DBL_MAX_10_EXP == 308 +# define GOO_HAS_IEEE_754 1 +#else +# define GOO_HAS_IEEE_754 0 +#endif + +/// Number to string format. +typedef enum { + /// Shortest string, `prec` is ignored. + GOO_FMT_SHORTEST, + /// Fixed-point notation, `prec` is the number of digits after decimal point. + GOO_FMT_FIXED, + /// Precision notation, `prec` is the number of significant digits. + GOO_FMT_PRECISION, + /// Exponential notation, `prec` is the number of digits after decimal point. + GOO_FMT_EXPONENTIAL +} goo_fmt; + +/// Write double number to string (null-terminated). +/// The string format follows the ECMAScript spec with the following changes: +/// 1. Keep the negative sign of `-0.0` to preserve input information. +/// 2. Keep decimal point to indicate the number is floating point. +/// 3. Remove positive sign of exponent part. +/// @param val The double value. +/// @param fmt The output format (pass NULL for shortest format). +/// @param prec The precision value for the `fmt`. +/// @param buf The string buffer for the output. +/// @param len The string buffer length. +/// @return The output string length, or 0 if failed. +int goo_dtoa(double val, goo_fmt fmt, int prec, char *buf, int len); +int goo_ftoa(float val, goo_fmt fmt, int prec, char *buf, int len); + +/// Read double number from string. +/// @param str The string containing a double number. +/// @param len The string length. +/// @param proc The processed length, or 0 if failed (pass NULL to ignore). +/// @return The double value, or 0.0 if failed. +double goo_strtod(const char *str, int len, int *proc); +float goo_strtof(const char *str, int len, int *proc); + +#endif /* goo_double_conv_h */ diff --git a/lib/yyjson-0.12.0/test/util/yy_test_utils.c b/lib/yyjson-0.12.0/test/util/yy_test_utils.c new file mode 100644 index 00000000000..d4fec5c9b21 --- /dev/null +++ b/lib/yyjson-0.12.0/test/util/yy_test_utils.c @@ -0,0 +1,834 @@ +/*============================================================================== + * Utilities for single thread test (C99, Win/Mac/Linux). + * + * Copyright (C) 2018 YaoYuan <ibireme@gmail.com>. + * Released under the MIT license (MIT). + *============================================================================*/ + +#include "yy_test_utils.h" +#if yy_has_include(<glob.h>) && defined(__linux__) +# define YY_HAS_GLOB 1 +# include <glob.h> +#endif + + +// ============================================================================= +// Pseudo Random Number Generator (SplitMix) +// A constant seed should be used to ensure repeatability of benchmark. +// ============================================================================= + +static u64 yy_rand_seed = 0; + +void yy_rand_reset(u64 seed) { + yy_rand_seed = seed; +} + +u32 yy_rand_u32(void) { + u64 z = (yy_rand_seed += 0x9e3779b97f4a7c15ull); + z = (z ^ (z >> 33)) * 0x62a9d9ed799705f5ull; + z = (z ^ (z >> 28)) * 0xcb24d0a5c88c35b3ull; + return (u32)(z >> 32); +} + +u32 yy_rand_u32_uniform(u32 bound) { + if (yy_unlikely(bound < 2)) return 0; + while (true) { + u32 r = yy_rand_u32(); + u32 x = r % bound; + if (r - x <= (u32)(-(i32)bound)) return x; + } +} + +u32 yy_rand_u32_range(u32 min, u32 max) { + return yy_rand_u32_uniform(max - min + 1) + min; +} + +u64 yy_rand_u64(void) { + u64 z = (yy_rand_seed += 0x9e3779b97f4a7c15ull); + z = (z ^ (z >> 30)) * 0xbf58476d1ce4e5b9ull; + z = (z ^ (z >> 27)) * 0x94d049bb133111ebull; + return (z ^ (z >> 31)); +} + +u64 yy_rand_u64_uniform(u64 bound) { + if (yy_unlikely(bound < 2)) return 0; + while (true) { + u64 r = yy_rand_u64(); + u64 x = r % bound; + if (r - x <= (u64)(-(i64)bound)) return x; + } +} + +u64 yy_rand_u64_range(u64 min, u64 max) { + return yy_rand_u64_uniform(max - min + 1) + min; +} + +f32 yy_rand_f32(void) { + while (true) { + u32 r = yy_rand_u32(); + u32 x = ~(u32)0; + if (r != x) return (f32)r / (f32)x; + } +} + +f32 yy_rand_f32_range(f32 min, f32 max) { + return min + (max - min) * yy_rand_f32(); +} + +f64 yy_rand_f64(void) { + while (true) { + u64 r = yy_rand_u64(); + u64 x = ~(u64)0; + if (r != x) return (f64)r / (f64)x; + } +} + +f64 yy_rand_f64_range(f64 min, f64 max) { + return min + (max - min) * yy_rand_f64(); +} + + + +/*============================================================================== + * File Utils + *============================================================================*/ + +bool yy_path_combine(char *buf, const char *path, ...) { + if (!buf) return false; + *buf = '\0'; + if (!path) return false; + + usize len = strlen(path); + memmove(buf, path, len); + const char *hdr = buf; + buf += len; + + va_list args; + va_start(args, path); + while (true) { + const char *item = va_arg(args, const char *); + if (!item) break; + if (buf > hdr && *(buf - 1) != YY_DIR_SEPARATOR) { + *buf++ = YY_DIR_SEPARATOR; + } + len = strlen(item); + if (len && *item == YY_DIR_SEPARATOR) { + len--; + item++; + } + memmove(buf, item, len); + buf += len; + } + va_end(args); + + *buf = '\0'; + return true; +} + +bool yy_path_remove_last(char *buf, const char *path) { + usize len = path ? strlen(path) : 0; + if (!buf) return false; + *buf = '\0'; + if (len == 0) return false; + + const char *cur = path + len - 1; + if (*cur == YY_DIR_SEPARATOR) cur--; + for (; cur >= path; cur--) { + if (*cur == YY_DIR_SEPARATOR) break; + } + len = cur + 1 - path; + memmove(buf, path, len); + buf[len] = '\0'; + return len > 0; +} + +bool yy_path_get_last(char *buf, const char *path) { + usize len = path ? strlen(path) : 0; + const char *end, *cur; + if (!buf) return false; + *buf = '\0'; + if (len == 0) return false; + + end = path + len - 1; + if (*end == YY_DIR_SEPARATOR) end--; + for (cur = end; cur >= path; cur--) { + if (*cur == YY_DIR_SEPARATOR) break; + } + len = end - cur; + memmove(buf, cur + 1, len); + buf[len] = '\0'; + return len > 0; +} + +bool yy_path_append_ext(char *buf, const char *path, const char *ext) { + usize len = path ? strlen(path) : 0; + char tmp[YY_MAX_PATH]; + char *cur = tmp; + if (!buf) return false; + + memcpy(cur, path, len); + cur += len; + *cur++ = '.'; + + len = ext ? strlen(ext) : 0; + memcpy(cur, ext, len); + cur += len; + *cur++ = '\0'; + + memcpy(buf, tmp, cur - tmp); + return true; +} + +bool yy_path_remove_ext(char *buf, const char *path) { + usize len = path ? strlen(path) : 0; + if (!buf) return false; + memmove(buf, path, len + 1); + for (char *cur = buf + len; cur >= buf; cur--) { + if (*cur == YY_DIR_SEPARATOR) break; + if (*cur == '.') { + *cur = '\0'; + return true; + } + } + return false; +} + +bool yy_path_get_ext(char *buf, const char *path) { + usize len = path ? strlen(path) : 0; + if (!buf) return false; + for (const char *cur = path + len; cur >= path; cur--) { + if (*cur == YY_DIR_SEPARATOR) break; + if (*cur == '.') { + memmove(buf, cur + 1, len - (cur - path)); + return true; + } + } + *buf = '\0'; + return false; +} + + + +bool yy_path_exist(const char *path) { + if (!path || !strlen(path)) return false; +#ifdef _WIN32 + DWORD attrs = GetFileAttributesA(path); + return attrs != INVALID_FILE_ATTRIBUTES; +#else + struct stat attr; + if (stat(path, &attr) != 0) return false; + return true; +#endif +} + +bool yy_path_is_dir(const char *path) { + if (!path || !strlen(path)) return false; +#ifdef _WIN32 + DWORD attrs = GetFileAttributesA(path); + return (attrs & FILE_ATTRIBUTE_DIRECTORY) != 0; +#else + struct stat attr; + if (stat(path, &attr) != 0) return false; + return S_ISDIR(attr.st_mode); +#endif +} + + +// sort function for dir read +int yy_dir_strcmp_func(void const *a, void const *b) { + char const *astr = *(char const **)a; + char const *bstr = *(char const **)b; + return strcmp(astr, bstr); +} + +char **yy_dir_read_opts(const char *path, int *count, bool full) { +#ifdef _WIN32 + struct _finddata_t entry; + intptr_t handle; + int idx = 0, alc = 0; + char **names = NULL, **names_tmp, *search; + usize path_len = path ? strlen(path) : 0; + + if (count) *count = 0; + if (path_len == 0) return NULL; + search = malloc(path_len + 3); + if (!search) return NULL; + memcpy(search, path, path_len); + if (search[path_len - 1] == '\\') path_len--; + memcpy(search + path_len, "\\*\0", 3); + + handle = _findfirst(search, &entry); + if (handle == -1) goto fail; + + alc = 4; + names = malloc(alc * sizeof(char*)); + if (!names) goto fail; + + do { + char *name = (char *)entry.name; + if (!name || !strlen(name)) continue; + if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue; + name = yy_str_copy(name); + if (!name) goto fail; + if (idx + 1 >= alc) { + alc *= 2; + names_tmp = realloc(names, alc * sizeof(char*)); + if (!names_tmp) goto fail; + names = names_tmp; + } + if (full) { + char *fullpath = malloc(strlen(path) + strlen(name) + 4); + if (!fullpath) goto fail; + yy_path_combine(fullpath, path, name, NULL); + free(name); + if (fullpath) name = fullpath; + else break; + } + names[idx] = name; + idx++; + } while (_findnext(handle, &entry) == 0); + _findclose(handle); + + if (idx > 1) qsort(names, idx, sizeof(char *), yy_dir_strcmp_func); + names[idx] = NULL; + if (count) *count = idx; + return names; + +fail: + if (handle != -1)_findclose(handle); + if (search) free(search); + if (names) free(names); + return NULL; + +#elif defined(YY_HAS_GLOB) + // readdir() may fail for 32-bit user-static qemu on 64-bit host + // use glob() instead: https://gitlab.com/qemu-project/qemu/-/issues/263 + + if (count) *count = 0; + if (!path) return NULL; + size_t path_len = strlen(path); + if (!path_len) return NULL; + + char *patt = calloc(1, path_len * 2 + 4); + if (!patt) return NULL; + for (size_t i = 0, p = 0; i < path_len; i++, p++) { + char c = path[i]; + if (c == '*') patt[p++] = '\\'; + patt[p] = c; + if (i + 1 == path_len) { + if (patt[p] != '/') patt[++p] = '/'; + patt[++p] = '*'; + } + } + + glob_t buf = { 0 }; + int flag = 0; +#ifdef GLOB_NOESCAPE + flag |= GLOB_NOESCAPE; +#endif +#ifdef GLOB_PERIOD + flag |= GLOB_PERIOD; +#endif + if (glob(patt, flag, NULL, &buf)) { + free((void *)patt); + globfree(&buf); + return NULL; + } + free((void *)patt); + char **names = calloc(buf.gl_pathc + 1, sizeof(char *)); + if (!names) { + globfree(&buf); + return NULL; + } + + int i = 0, icount = 0; + for(; i < (int)buf.gl_pathc; i++) { + const char *one_path = buf.gl_pathv[i]; + if (!one_path) continue; + size_t one_len = strlen(one_path); + if (!one_len) continue; + const char *one_name = one_path + one_len; + while (one_name > one_path && *(one_name - 1) != '/') one_name--; + if (!strcmp(one_name, ".") || !strcmp(one_name, "..")) continue; + const char *one = full ? one_path : one_name; + one = yy_str_copy(one); + if (!one) { + for (i = 0; i < icount; i++) free((void *)names[i]); + globfree(&buf); + free((void *)names); + return NULL; + } + names[icount++] = (char *)one; + } + globfree(&buf); + + if (count) *count = icount; + return names; + +#else + DIR *dir = NULL; + struct dirent *entry; + int idx = 0, alc = 0; + char **names = NULL, **names_tmp; + + if (count) *count = 0; + if (!path || !strlen(path) || !(dir = opendir(path))) { + goto fail; + } + + alc = 4; + names = calloc(1, alc * sizeof(char *)); + if (!names) goto fail; + + while ((entry = readdir(dir))) { + char *name = (char *)entry->d_name; + if (!name || !strlen(name)) continue; + if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue; + if (idx + 1 >= alc) { + alc *= 2; + names_tmp = realloc(names, alc * sizeof(char *)); + if (!names_tmp) + goto fail; + names = names_tmp; + } + name = yy_str_copy(name); + if (!name) goto fail; + if (full) { + char *fullpath = malloc(strlen(path) + strlen(name) + 4); + if (!fullpath) goto fail; + yy_path_combine(fullpath, path, name, NULL); + free(name); + if (fullpath) name = fullpath; + else break; + } + names[idx] = name; + idx++; + } + closedir(dir); + if (idx > 1) qsort(names, idx, sizeof(char *), yy_dir_strcmp_func); + names[idx] = NULL; + if (count) *count = idx; + return names; + +fail: + if (dir) closedir(dir); + yy_dir_free(names); + return NULL; +#endif +} + +char **yy_dir_read(const char *path, int *count) { + return yy_dir_read_opts(path, count, false); +} + +char **yy_dir_read_full(const char *path, int *count) { + return yy_dir_read_opts(path, count, true); +} + +void yy_dir_free(char **names) { + if (names) { + for (int i = 0; ; i++) { + if (names[i]) free(names[i]); + else break; + } + free(names); + } +} + + + +FILE *yy_file_open(const char *path, const char *mode) { + if (!path || !mode) return false; + FILE *file = NULL; +#if _MSC_VER >= 1400 + if (fopen_s(&file, path, mode) != 0) return NULL; +#else + file = fopen(path, mode); +#endif + return file; +} + +bool yy_file_read(const char *path, u8 **dat, usize *len) { + return yy_file_read_with_padding(path, dat, len, 1); // for string +} + +bool yy_file_read_with_padding(const char *path, u8 **dat, usize *len, usize padding) { + if (!path || !strlen(path)) return false; + if (!dat || !len) return false; + + FILE *file = yy_file_open(path, "rb"); + if (file == NULL) return false; + if (fseek(file, 0, SEEK_END) != 0) { + fclose(file); + return false; + } + long file_size = ftell(file); + if (file_size < 0) { + fclose(file); + return false; + } + if (fseek(file, 0, SEEK_SET) != 0) { + fclose(file); + return false; + } + void *buf = malloc((usize)file_size + padding); + if (buf == NULL) { + fclose(file); + return false; + } + + if (file_size > 0) { +#if _MSC_VER >= 1400 + if (fread_s(buf, file_size, file_size, 1, file) != 1) { + free(buf); + fclose(file); + return false; + } +#else + if (fread(buf, file_size, 1, file) != 1) { + free(buf); + fclose(file); + return false; + } +#endif + } + fclose(file); + + memset((char *)buf + file_size, 0, padding); + *dat = (u8 *)buf; + *len = (usize)file_size; + return true; +} + +bool yy_file_write(const char *path, u8 *dat, usize len) { + if (!path || !strlen(path)) return false; + if (len && !dat) return false; + + FILE *file = NULL; +#if _MSC_VER >= 1400 + if (fopen_s(&file, path, "wb") != 0) return false; +#else + file = fopen(path, "wb"); +#endif + if (file == NULL) return false; + if (fwrite(dat, len, 1, file) != 1) { + fclose(file); + return false; + } + if (fclose(file) != 0) { + file = NULL; + return false; + } + return true; +} + +bool yy_file_delete(const char *path) { + if (!path || !*path) return false; + return remove(path) == 0; +} + + + +/*============================================================================== + * String Utils + *============================================================================*/ + +static char to_lower(char c) { + return ('A' <= c && c <= 'Z') ? c + ('a' - 'A') : c; +} + +char *yy_str_copy(const char *str) { + if (!str) return NULL; + usize len = strlen(str) + 1; + char *dup = malloc(len); + if (dup) memcpy(dup, str, len); + return dup; +} + +int yy_str_cmp(const char *str1, const char *str2, bool ignore_case) { + if (str1 == str2) return 0; + if (!str1) return -1; + if (!str2) return +1; + if (!ignore_case) { + return strcmp(str1, str2); + } + const unsigned char *s1 = (const unsigned char *)str1; + const unsigned char *s2 = (const unsigned char *)str2; + int result; + while ((result = to_lower(*s1) - to_lower(*s2++)) == 0) { + if (*s1++ == '\0') break; + } + return result; +} + +bool yy_str_contains(const char *str, const char *search) { + if (!str || !search) return false; + return strstr(str, search) != NULL; +} + +bool yy_str_has_prefix(const char *str, const char *prefix) { + if (!str || !prefix) return false; + usize len1 = strlen(str); + usize len2 = strlen(prefix); + if (len2 > len1) return false; + return memcmp(str, prefix, len2) == 0; +} + +bool yy_str_has_suffix(const char *str, const char *suffix) { + if (!str || !suffix) return false; + usize len1 = strlen(str); + usize len2 = strlen(suffix); + if (len2 > len1) return false; + return memcmp(str + (len1 - len2), suffix, len2) == 0; +} + +bool yy_str_is_utf8(const char *str, size_t len) { + // https://en.wikipedia.org/wiki/UTF-8 + const uint8_t *cur = (const uint8_t *)str; + const uint8_t *end = cur + len; + uint32_t u; + if (!str) return false; + while (cur < end) { + // Range: [U+0000, U+007F] Bytes: 0xxxxxxx + if ((cur[0] & 0x80) == 0) { + cur++; + continue; + } + // Range: [U+0080, U+07FF] Bytes: 110xxxxx 10xxxxxx + if ((cur[0] & 0xE0) == 0xC0) { + if (end - cur < 2) return false; + if ((cur[1] & 0xC0) != 0x80) return false; + u = ((uint32_t)(cur[1] & 0x3F) << 0) | + ((uint32_t)(cur[0] & 0x1F) << 6); + if (u < 0x80 || u > 0x7FF) return false; + cur += 2; + continue; + } + // Range: [U+0800, U+FFFF] Bytes: 1110xxxx 10xxxxxx 10xxxxxx + if ((cur[0] & 0xF0) == 0xE0) { + if (end - cur < 3) return false; + if ((cur[1] & 0xC0) != 0x80) return false; + if ((cur[2] & 0xC0) != 0x80) return false; + u = ((uint32_t)(cur[2] & 0x3F) << 0) | + ((uint32_t)(cur[1] & 0x3F) << 6) | + ((uint32_t)(cur[0] & 0x0F) << 12); + if (u < 0x800 || u > 0xFFFF) return false; + // Surrogate halves: U+D800 through U+DFFF + if (0xD800 <= u && u <= 0xDFFF) return false; + cur += 3; + continue; + } + // Range: [U+10000, U+10FFFF] Bytes: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + if ((cur[0] & 0xF8) == 0xF0) { + if (end - cur < 4) return false; + if ((cur[1] & 0xC0) != 0x80) return false; + if ((cur[2] & 0xC0) != 0x80) return false; + if ((cur[3] & 0xC0) != 0x80) return false; + u = ((uint32_t)(cur[3] & 0x3F) << 0) | + ((uint32_t)(cur[2] & 0x3F) << 6) | + ((uint32_t)(cur[1] & 0x3F) << 12) | + ((uint32_t)(cur[0] & 0x07) << 18); + if (u < 0x10000 || u > 0x10FFFF) return false; + cur += 4; + continue; + } + return false; + } + return true; +} + + + +/*============================================================================== + * Memory Buffer + *============================================================================*/ + +bool yy_buf_init(yy_buf *buf, usize len) { + if (!buf) return false; + if (len < 16) len = 16; + memset(buf, 0, sizeof(yy_buf)); + buf->hdr = malloc(len); + if (!buf->hdr) return false; + buf->cur = buf->hdr; + buf->end = buf->hdr + len; + buf->need_free = true; + return true; +} + +void yy_buf_release(yy_buf *buf) { + if (!buf || !buf->hdr) return; + if (buf->need_free) free(buf->hdr); + memset(buf, 0, sizeof(yy_buf)); +} + +usize yy_buf_len(yy_buf *buf) { + if (!buf) return 0; + return buf->cur - buf->hdr; +} + +bool yy_buf_grow(yy_buf *buf, usize len) { + if (!buf) return false; + if ((usize)(buf->end - buf->cur) >= len) return true; + if (!buf->hdr) return yy_buf_init(buf, len); + + usize use = buf->cur - buf->hdr; + usize alc = buf->end - buf->hdr; + do { + if (alc * 2 < alc) return false; /* overflow */ + alc *= 2; + } while (alc - use < len); + u8 *tmp = (u8 *)realloc(buf->hdr, alc); + if (!tmp) return false; + + buf->cur = tmp + (buf->cur - buf->hdr); + buf->hdr = tmp; + buf->end = tmp + alc; + return true; +} + +bool yy_buf_append(yy_buf *buf, u8 *dat, usize len) { + if (!buf) return false; + if (len == 0) return true; + if (!dat) return false; + if (!yy_buf_grow(buf, len)) return false; + memcpy(buf->cur, dat, len); + buf->cur += len; + return true; +} + + + +/*============================================================================== + * Data Reader + *============================================================================*/ + +bool yy_dat_init_with_file(yy_dat *dat, const char *path) { + u8 *mem; + usize len; + if (!dat) return false; + memset(dat, 0, sizeof(yy_dat)); + if (!yy_file_read(path, &mem, &len)) return false; + dat->hdr = mem; + dat->cur = mem; + dat->end = mem + len; + dat->need_free = true; + return true; +} + +bool yy_dat_init_with_mem(yy_dat *dat, u8 *mem, usize len) { + if (!dat) return false; + if (len && !mem) return false; + dat->hdr = mem; + dat->cur = mem; + dat->end = mem + len; + dat->need_free = false; + return true; +} + +void yy_dat_release(yy_dat *dat) { + yy_buf_release(dat); +} + +void yy_dat_reset(yy_dat *dat) { + if (dat) dat->cur = dat->hdr; +} + +char *yy_dat_read_line(yy_dat *dat, usize *len) { + if (len) *len = 0; + if (!dat || dat->cur >= dat->end) return NULL; + + u8 *str = dat->cur; + u8 *cur = dat->cur; + u8 *end = dat->end; + while (cur < end && *cur != '\r' && *cur != '\n' && *cur != '\0') cur++; + if (len) *len = cur - str; + if (cur < end) { + if (cur + 1 < end && *cur == '\r' && cur[1] == '\n') cur += 2; + else if (*cur == '\r' || *cur == '\n' || *cur == '\0') cur++; + } + dat->cur = cur; + return (char *)str; +} + +char *yy_dat_copy_line(yy_dat *dat, usize *len) { + if (len) *len = 0; + usize _len; + char *_str = yy_dat_read_line(dat, &_len); + if (!_str) return NULL; + char *str = malloc(_len + 1); + if (!str) return NULL; + memcpy(str, _str, _len); + str[_len] = '\0'; + if (len) *len = _len; + return str; +} + + + +/*============================================================================== + * Time Utils + *============================================================================*/ + +#ifdef __APPLE__ +#include <mach/mach_time.h> +#endif + +double yy_get_time(void) { +#if defined(_WIN32) + // Available since Windows 2000. + // precision: 1e-6 seconds (1us) + LARGE_INTEGER counter; + LARGE_INTEGER freq; + QueryPerformanceCounter(&counter); + QueryPerformanceFrequency(&freq); + return (double)counter.QuadPart / (double)freq.QuadPart; + +#elif defined(__APPLE__) + // mach_timebase_info is stable + static mach_timebase_info_data_t clock_timebase = { 0 }; + if (!clock_timebase.denom) { + mach_timebase_info(&clock_timebase); + } + uint64_t t = mach_absolute_time(); + return ((double)t * clock_timebase.numer) / clock_timebase.denom / 1e9; + +#else +# if defined(CLOCK_MONOTONIC) + // Elapsed wall-clock time, monotonic. + // https://man7.org/linux/man-pages/man2/clock_gettime.2.html + // https://man.freebsd.org/cgi/man.cgi?query=clock_gettime + struct timespec ts; + if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0) { // Linux/BSD + return (double)ts.tv_sec + ts.tv_nsec / 1e9; + } +# endif + // fallback... + // Available since POSIX Issue 4, <sys/time.h>. + // precision: 1e-6 seconds (1us) + struct timeval now; + if (gettimeofday(&now, NULL) == -1) return 0; + return (double)now.tv_sec + (double)now.tv_usec * 1e-6; +#endif +} + +double yy_get_timestamp(void) { +#ifdef _WIN32 + // Available since Windows 2000. + // precision: 1e-3 seconds (1ms) + FILETIME ft; + GetSystemTimeAsFileTime(&ft); + + ULARGE_INTEGER ui; + ui.LowPart = ft.dwLowDateTime; + ui.HighPart = ft.dwHighDateTime; + + long long t = ui.QuadPart; + return (double)t * 1e-7 - 11644473600.0; +#else + // Available since POSIX Issue 4, <sys/time.h>. + // precision: 1e-6 seconds (1us) + struct timeval now; + if (gettimeofday(&now, NULL) == -1) return 0; + return (double)now.tv_sec + (double)now.tv_usec * 1e-6; +#endif +} diff --git a/lib/yyjson-0.12.0/test/util/yy_test_utils.h b/lib/yyjson-0.12.0/test/util/yy_test_utils.h new file mode 100644 index 00000000000..cc13bc69477 --- /dev/null +++ b/lib/yyjson-0.12.0/test/util/yy_test_utils.h @@ -0,0 +1,426 @@ +/*============================================================================== + * Utilities for single thread test (C99, Win/Mac/Linux). + * + * Copyright (C) 2018 YaoYuan <ibireme@gmail.com>. + * Released under the MIT license (MIT). + *============================================================================*/ + +#ifndef yy_test_utils_h +#define yy_test_utils_h + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <float.h> +#include <math.h> +#include <stdint.h> +#include <stdbool.h> +#include <stdarg.h> + +#ifdef _WIN32 +# include <windows.h> +# include <io.h> +#else +# include <dirent.h> +# include <unistd.h> +# include <sys/stat.h> +# include <sys/time.h> +#endif + +/* warning suppress for tests */ +#if defined(__clang__) +# pragma clang diagnostic ignored "-Wunused-function" +# pragma clang diagnostic ignored "-Wunused-parameter" +# pragma clang diagnostic ignored "-Wunused-variable" +#elif defined(__GNUC__) +# pragma GCC diagnostic ignored "-Wunused-function" +# pragma GCC diagnostic ignored "-Wunused-parameter" +# pragma GCC diagnostic ignored "-Wunused-variable" +#elif defined(_MSC_VER) +# pragma warning(disable:4101) /* unused-parameter */ +# pragma warning(disable:4100) /* unused-variable */ +#endif + +/* compiler builtin check (clang) */ +#ifndef yy_has_builtin +# ifdef __has_builtin +# define yy_has_builtin(x) __has_builtin(x) +# else +# define yy_has_builtin(x) 0 +# endif +#endif + +/* compiler attribute check (gcc/clang) */ +#ifndef yy_has_attribute +# ifdef __has_attribute +# define yy_has_attribute(x) __has_attribute(x) +# else +# define yy_has_attribute(x) 0 +# endif +#endif + +/* include check (gcc/clang) */ +#ifndef yy_has_include +# ifdef __has_include +# define yy_has_include(x) __has_include(x) +# else +# define yy_has_include(x) 0 +# endif +#endif + +/* inline */ +#ifndef yy_inline +# if _MSC_VER >= 1200 +# define yy_inline __forceinline +# elif defined(_MSC_VER) +# define yy_inline __inline +# elif yy_has_attribute(always_inline) || __GNUC__ >= 4 +# define yy_inline __inline__ __attribute__((always_inline)) +# elif defined(__clang__) || defined(__GNUC__) +# define yy_inline __inline__ +# elif defined(__cplusplus) || (__STDC__ >= 1 && __STDC_VERSION__ >= 199901L) +# define yy_inline inline +# else +# define yy_inline +# endif +#endif + +/* noinline */ +#ifndef yy_noinline +# if _MSC_VER >= 1200 +# define yy_noinline __declspec(noinline) +# elif yy_has_attribute(noinline) || __GNUC__ >= 4 +# define yy_noinline __attribute__((noinline)) +# else +# define yy_noinline +# endif +#endif + +/* likely */ +#ifndef yy_likely +# if yy_has_builtin(__builtin_expect) || __GNUC__ >= 4 +# define yy_likely(expr) __builtin_expect(!!(expr), 1) +# else +# define yy_likely(expr) (expr) +# endif +#endif + +/* unlikely */ +#ifndef yy_unlikely +# if yy_has_builtin(__builtin_expect) || __GNUC__ >= 4 +# define yy_unlikely(expr) __builtin_expect(!!(expr), 0) +# else +# define yy_unlikely(expr) (expr) +# endif +#endif + +/* assert */ +#define yy_assert(expr) do { \ + if (!(expr)) { \ + fprintf(stderr, "Assertion failed: %s (%s: %d)\n", #expr, __FILE__, __LINE__); \ + abort(); \ + }; \ +} while(false) + +#define yy_assertf(expr, ...) do { \ + if (!(expr)) { \ + fprintf(stderr, "Assertion failed: %s (%s: %d)\n", #expr, __FILE__, __LINE__); \ + fprintf(stderr, __VA_ARGS__); \ + fprintf(stderr, "\n"); \ + abort(); \ + }; \ +} while(false) + +/* test */ +#if yy_has_include("yy_xctest.h") +# include "yy_xctest.h" +# define yy_test_case(name) \ + void name(void) +#else +# define yy_test_case(name) \ + void name(void); \ + int main(int argc, const char * argv[]) { \ + name(); \ + return 0; \ + } \ + void name(void) +#endif + +/* snprintf and vsnprintf before Visual Studio 2015 (14.0) */ +#ifdef _MSC_VER +# if _MSC_VER < 1900 +# ifndef vsnprintf +# define vsnprintf yy_msvc_vsnprintf +# endif +# ifndef snprintf +# define snprintf yy_msvc_snprintf +# endif +static yy_inline int yy_msvc_vsnprintf(char *buf, size_t size, + const char *format, va_list vlist) { + int count = -1; + if (size != 0) count = _vsnprintf_s(buf, size, _TRUNCATE, format, vlist); + if (count == -1) count = _vscprintf(format, vlist); + return count; +} +static yy_inline int yy_msvc_snprintf(char *buf, size_t size, + const char *format, ...) { + int count; + va_list vlist; + va_start(vlist, format); + count = yy_msvc_vsnprintf(buf, size, format, vlist); + va_end(vlist); + return count; +} +# endif +#endif + +/* number of elements in c array */ +#define yy_nelems(x) (sizeof(x) / sizeof((x)[0])) + +/* minimum */ +#define yy_min(a, b) ((a) < (b) ? (a) : (b)) + +/* maximum */ +#define yy_max(a, b) ((a) > (b) ? (a) : (b)) + + + +#ifdef __cplusplus +extern "C" { +#endif + + + +/*============================================================================== + * Type Defines + *============================================================================*/ + +typedef float f32; +typedef double f64; +typedef int8_t i8; +typedef uint8_t u8; +typedef int16_t i16; +typedef uint16_t u16; +typedef int32_t i32; +typedef uint32_t u32; +typedef int64_t i64; +typedef uint64_t u64; +typedef size_t usize; + + + +// ============================================================================= +// Pseudo Random Number Generator +// ============================================================================= + +/// Reset the random number generator with a seed (default 0). +void yy_rand_reset(u64 seed); + +/// Generate a uniformly distributed 32-bit random integer. +u32 yy_rand_u32(void); +/// Generate a uniformly distributed 32-bit integer, where 0 <= r < bound. +u32 yy_rand_u32_uniform(u32 bound); +/// Generate a uniformly distributed 32-bit integer, where min <= r <= max. +u32 yy_rand_u32_range(u32 min, u32 max); + +/// Generate a uniformly distributed 64-bit integer number. +u64 yy_rand_u64(void); +/// Generate a uniformly distributed 64-bit integer, where 0 <= r < bound. +u64 yy_rand_u64_uniform(u64 bound); +/// Generate a uniformly distributed 64-bit integer, where min <= r <= max. +u64 yy_rand_u64_range(u64 min, u64 max); + +/// Generate a uniformly distributed random float, where 0.0 <= r < 1.0. +f32 yy_rand_f32(void); +/// Generate a uniformly distributed float number, where min <= r < max. +f32 yy_rand_f32_range(f32 min, f32 max); + +/// Generate a uniformly distributed random double, where 0.0 <= r < 1.0. +f64 yy_rand_f64(void); +/// Generate a uniformly distributed number, where min <= r < max. +f64 yy_rand_f64_range(f64 min, f64 max); + + + +/*============================================================================== + * File Utils + *============================================================================*/ + +#ifdef _WIN32 +#define YY_DIR_SEPARATOR '\\' +#else +#define YY_DIR_SEPARATOR '/' +#endif + +#define YY_MAX_PATH 4096 + + + +/** Combine multiple component into a path, store the result to the buffer. + The input parameter list should end with NULL. + Return false if input is NULL. */ +#if yy_has_attribute(sentinel) +__attribute__((sentinel)) +#endif +bool yy_path_combine(char *buf, const char *path, ...); + +/** Remove the last component of path, copy the result to the buffer. + Return false if input is NULL or no last component. */ +bool yy_path_remove_last(char *buf, const char *path); + +/** Get the last component of path, copy it to the buffer. + Return false if input is NULL or no last component. */ +bool yy_path_get_last(char *buf, const char *path); + +/** Append a file extension to the path, copy the result to the buffer. + Return false if input is NULL. */ +bool yy_path_append_ext(char *buf, const char *path, const char *ext); + +/** Remove the file extension, copy the result to the buffer. + Return false if input is NULL or no extension. */ +bool yy_path_remove_ext(char *buf, const char *path); + +/** Get the file extension, copy it to the buffer. + Return false if input is NULL or no extension. */ +bool yy_path_get_ext(char *buf, const char *path); + + + +/** Returns whether a path exist. */ +bool yy_path_exist(const char *path); + +/** Returns whether a path is directory. */ +bool yy_path_is_dir(const char *path); + + + +/** Returns content file names of a dir. Returns NULL on error. + The result should be released by yy_dir_free() */ +char **yy_dir_read(const char *path, int *count); + +/** Returns content file full paths of a dir. Returns NULL on error. + The result should be released by yy_dir_free() */ +char **yy_dir_read_full(const char *path, int *count); + +/** Free the return value of yy_dir_read(). */ +void yy_dir_free(char **names); + + +/** Open a file pointer. */ +FILE *yy_file_open(const char *path, const char *mode); + +/** Read a file to memory, dat should be release with free(). */ +bool yy_file_read(const char *path, u8 **dat, usize *len); + +/** Read a file to memory with zero padding, dat should be release with free(). */ +bool yy_file_read_with_padding(const char *path, u8 **dat, usize *len, usize padding); + +/** Write data to file, overwrite if exist. */ +bool yy_file_write(const char *path, u8 *dat, usize len); + +/** Delete a file, returns true if success. */ +bool yy_file_delete(const char *path); + + + +/*============================================================================== + * String Utils + *============================================================================*/ + +/** Copy a string, same as strdup(). */ +char *yy_str_copy(const char *str); + +/** Compares the C string str1 to the C string str2, similar to strcmp(). */ +int yy_str_cmp(const char *str1, const char *str2, bool ignore_case); + +/** Returns whether the string contains a given string. */ +bool yy_str_contains(const char *str, const char *search); + +/** Returns whether the string begins with a prefix. */ +bool yy_str_has_prefix(const char *str, const char *prefix); + +/** Returns whether the string ends with a suffix. */ +bool yy_str_has_suffix(const char *str, const char *suffix); + +/** Returns whether the string is valid UTF-8. */ +bool yy_str_is_utf8(const char *str, size_t len); + + + +/*============================================================================== + * Memory Buffer + *============================================================================*/ + +/** A memory buffer s*/ +typedef struct yy_buf { + u8 *cur; /* cursor between hdr and end */ + u8 *hdr; /* head of the buffer */ + u8 *end; /* tail of the buffer */ + bool need_free; +} yy_buf; + +/** Initialize a memory buffer with length. */ +bool yy_buf_init(yy_buf *buf, usize len); + +/** Release the memory in buffer. */ +void yy_buf_release(yy_buf *buf); + +/** Returns the used length of buffer (cur - hdr). */ +usize yy_buf_len(yy_buf *buf); + +/** Increase memory buffer and let (end - cur >= len). */ +bool yy_buf_grow(yy_buf *buf, usize len); + +/** Append data to buffer and move cursor. */ +bool yy_buf_append(yy_buf *buf, u8 *dat, usize len); + + + +/*============================================================================== + * Data Reader + *============================================================================*/ + +/** A data reader */ +typedef struct yy_buf yy_dat; + +/** Initialize a data reader with file. */ +bool yy_dat_init_with_file(yy_dat *dat, const char *path); + +/** Initialize a data reader with memory (no copy). */ +bool yy_dat_init_with_mem(yy_dat *dat, u8 *mem, usize len); + +/** Release the data reader. */ +void yy_dat_release(yy_dat *dat); + +/** Reset the cursor of data reader. */ +void yy_dat_reset(yy_dat *dat); + +/** Read a line from data reader (NULL on end or error). + The cursor will moved to next line. + The string is not null-terminated. */ +char *yy_dat_read_line(yy_dat *dat, usize *len); + +/** Read and copy a line from data reader (NULL on end or error). + The cursor will moved to next line. + The return value should be release with free(). */ +char *yy_dat_copy_line(yy_dat *dat, usize *len); + + + +/*============================================================================== + * Time Utils + *============================================================================*/ + +/**Get monotonic time in seconds (used to measure elapsed time). */ +double yy_get_time(void); + +/** Get UNIX timestamp in seconds since 1970 (system's wall clock). */ +double yy_get_timestamp(void); + + + +#ifdef __cplusplus +} +#endif + +#endif /* yy_test_utils_h */ diff --git a/lib/yyjson-0.12.0/test/xctest/Info.plist b/lib/yyjson-0.12.0/test/xctest/Info.plist new file mode 100644 index 00000000000..64d65ca4957 --- /dev/null +++ b/lib/yyjson-0.12.0/test/xctest/Info.plist @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>$(DEVELOPMENT_LANGUAGE)</string> + <key>CFBundleExecutable</key> + <string>$(EXECUTABLE_NAME)</string> + <key>CFBundleIdentifier</key> + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>$(PRODUCT_NAME)</string> + <key>CFBundlePackageType</key> + <string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleVersion</key> + <string>1</string> +</dict> +</plist> diff --git a/lib/yyjson-0.12.0/test/xctest/yy_xctest.h b/lib/yyjson-0.12.0/test/xctest/yy_xctest.h new file mode 100644 index 00000000000..025d4b778ac --- /dev/null +++ b/lib/yyjson-0.12.0/test/xctest/yy_xctest.h @@ -0,0 +1,9 @@ +#ifndef xctest_h +#define xctest_h + +#ifndef YYJSON_TEST_DATA_PATH +extern const char *yyjson_test_data_path(void); +#define YYJSON_TEST_DATA_PATH yyjson_test_data_path() +#endif + +#endif diff --git a/lib/yyjson-0.12.0/test/xctest/yy_xctest.m b/lib/yyjson-0.12.0/test/xctest/yy_xctest.m new file mode 100644 index 00000000000..12c05a93688 --- /dev/null +++ b/lib/yyjson-0.12.0/test/xctest/yy_xctest.m @@ -0,0 +1,84 @@ +#import <XCTest/XCTest.h> +#include "yyjson.h" +#include "yy_test_utils.h" + +@interface YYTestCase : XCTestCase +@end + +@implementation YYTestCase + +// Code generated by cmake: + +- (void)test_allocator { + extern void test_allocator(void); + test_allocator(); +} + +- (void)test_err_code { + extern void test_err_code(void); + test_err_code(); +} + +- (void)test_json_merge_patch { + extern void test_json_merge_patch(void); + test_json_merge_patch(); +} + +- (void)test_json_mut_val { + extern void test_json_mut_val(void); + test_json_mut_val(); +} + +- (void)test_json_patch { + extern void test_json_patch(void); + test_json_patch(); +} + +- (void)test_json_pointer { + extern void test_json_pointer(void); + test_json_pointer(); +} + +- (void)test_json_reader { + extern void test_json_reader(void); + test_json_reader(); +} + +- (void)test_json_val { + extern void test_json_val(void); + test_json_val(); +} + +- (void)test_json_writer { + extern void test_json_writer(void); + test_json_writer(); +} + +- (void)test_number { + extern void test_number(void); + test_number(); +} + +- (void)test_roundtrip { + extern void test_roundtrip(void); + test_roundtrip(); +} + +- (void)test_string { + extern void test_string(void); + test_string(); +} + + + +@end + +const char *yyjson_test_data_path(void) { + static const char *path; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSString *dataPath = [[NSBundle bundleForClass:YYTestCase.class] resourcePath]; + path = strdup(dataPath.UTF8String); + }); + return path; +} diff --git a/lib/yyjson-0.12.0/test/xctest/yy_xctest.m.in b/lib/yyjson-0.12.0/test/xctest/yy_xctest.m.in new file mode 100644 index 00000000000..8bd6a20ff89 --- /dev/null +++ b/lib/yyjson-0.12.0/test/xctest/yy_xctest.m.in @@ -0,0 +1,24 @@ +#import <XCTest/XCTest.h> +#include "yyjson.h" +#include "yy_test_utils.h" + +@interface YYTestCase : XCTestCase +@end + +@implementation YYTestCase + +// Code generated by cmake: + +@YYJSON_TEST_LINES@ + +@end + +const char *yyjson_test_data_path(void) { + static const char *path; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSString *dataPath = [[NSBundle bundleForClass:YYTestCase.class] resourcePath]; + path = strdup(dataPath.UTF8String); + }); + return path; +} diff --git a/lib/yyjson-0.12.0/yyjson.pc.in b/lib/yyjson-0.12.0/yyjson.pc.in new file mode 100644 index 00000000000..beecb7b6e22 --- /dev/null +++ b/lib/yyjson-0.12.0/yyjson.pc.in @@ -0,0 +1,10 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=@CMAKE_INSTALL_PREFIX@ +libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@ +includedir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@ + +Name: yyjson +Description: Fastest JSON library in C +Version: @PROJECT_VERSION@ +Libs: -L${libdir} -lyyjson +Cflags: -I${includedir} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 45bc41b63bb..b26eaba5d3a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -16,6 +16,7 @@ set(src flb_hash_table.c flb_help.c flb_pack.c + flb_pack_json.c flb_pack_gelf.c flb_sds.c flb_sds_list.c @@ -396,6 +397,7 @@ set(FLB_DEPS ctraces-static mk_core jsmn + yyjson ${MSGPACK_LIBRARIES} mpack-static chunkio-static diff --git a/src/flb_pack.c b/src/flb_pack.c index df1f9c196dc..9d7ae1ee573 100644 --- a/src/flb_pack.c +++ b/src/flb_pack.c @@ -41,6 +41,7 @@ #include <msgpack.h> #include <math.h> #include <jsmn/jsmn.h> +#include <yyjson.h> #define try_to_write_str flb_utils_write_str @@ -186,6 +187,200 @@ static inline int pack_string_token(struct flb_pack_state *state, return out_len; } +/* Convert a yyjson value to msgpack */ +static void yyjson_val_to_msgpack(yyjson_val *val, msgpack_packer *pck) +{ + size_t idx, max; + yyjson_val *key; + yyjson_val *tmp; + const char *k; + size_t klen; + + switch (yyjson_get_type(val)) { + case YYJSON_TYPE_OBJ: + msgpack_pack_map(pck, yyjson_obj_size(val)); + yyjson_obj_foreach(val, idx, max, key, tmp) { + k = yyjson_get_str(key); + klen = yyjson_get_len(key); + msgpack_pack_str(pck, klen); + msgpack_pack_str_body(pck, k, klen); + yyjson_val_to_msgpack(tmp, pck); + } + break; + case YYJSON_TYPE_ARR: + msgpack_pack_array(pck, yyjson_arr_size(val)); + yyjson_arr_foreach(val, idx, max, tmp) { + yyjson_val_to_msgpack(tmp, pck); + } + break; + case YYJSON_TYPE_STR: + msgpack_pack_str(pck, yyjson_get_len(val)); + msgpack_pack_str_body(pck, yyjson_get_str(val), yyjson_get_len(val)); + break; + case YYJSON_TYPE_BOOL: + if (yyjson_get_bool(val)) { + msgpack_pack_true(pck); + } + else { + msgpack_pack_false(pck); + } + break; + case YYJSON_TYPE_NULL: + msgpack_pack_nil(pck); + break; + case YYJSON_TYPE_NUM: + if (yyjson_is_int(val)) { + if (yyjson_is_sint(val)) { + msgpack_pack_int64(pck, yyjson_get_sint(val)); + } + else { + msgpack_pack_uint64(pck, yyjson_get_uint(val)); + } + } + else { + msgpack_pack_double(pck, yyjson_get_real(val)); + } + break; + default: + msgpack_pack_nil(pck); + } +} + +static inline int yyjson_root_type(yyjson_val *val) +{ + switch (yyjson_get_type(val)) { + case YYJSON_TYPE_OBJ: + return JSMN_OBJECT; + case YYJSON_TYPE_ARR: + return JSMN_ARRAY; + case YYJSON_TYPE_STR: + return JSMN_STRING; + default: + return JSMN_PRIMITIVE; + } +} + +static int pack_json_to_msgpack_yyjson(const char *js, size_t len, char **buffer, + size_t *size, int *root_type, int *records, + size_t *consumed) +{ + int count_records = 0; + size_t read_bytes; + yyjson_read_err err; + yyjson_doc *doc = NULL; + yyjson_val *root; + msgpack_sbuffer sbuf; + msgpack_packer pck; + char *start, *end, *insitu_buf; + + if (!js || !buffer || !size) { + return -1; + } + + /* + * This is the tricky part, if we want to take advantage of SIMD we need to add + * padding to the buffer (INSITU), otherwise trusting the caller it's a bit risky. + * + * An extra optimization would be to provide a specific API for callers who are aware about + * padding and buffer states, or use a pool allocator. While this is a good optimization, + * it's not a priority for now, we are already gaining around 50% perf improvement with this + * implementation compared to the previous one. + */ + insitu_buf = flb_malloc(len + YYJSON_PADDING_SIZE); + if (!insitu_buf) { + flb_errno(); + return -1; + } + memcpy(insitu_buf, js, len); + memset(insitu_buf + len, 0, YYJSON_PADDING_SIZE); + + start = insitu_buf; + end = insitu_buf + len; + + msgpack_sbuffer_init(&sbuf); + msgpack_packer_init(&pck, &sbuf, msgpack_sbuffer_write); + + while (start < end) { + /* Skip leading whitespace/newlines between JSON values */ + while (start < end && (*start == ' ' || *start == '\t' || + *start == '\n' || *start == '\r')) { + start++; + } + if (start >= end) { + /* only whitespace remains */ + break; + } + + doc = yyjson_read_opts(start, (size_t)(end - start), + YYJSON_READ_STOP_WHEN_DONE | YYJSON_READ_INSITU | + YYJSON_READ_ALLOW_INVALID_UNICODE | YYJSON_READ_REPLACE_INVALID_UNICODE, + NULL, &err); + if (!doc) { + /* If we already parsed something, treat trailing junk/whitespace as done */ + if (count_records > 0) { + break; + } + flb_debug("[yyjson->msgpack] read error code=%d msg=%s pos=%zu", + err.code, err.msg, err.pos); + msgpack_sbuffer_clear(&sbuf); + msgpack_sbuffer_destroy(&sbuf); + flb_free(insitu_buf); + return -1; + } + + read_bytes = yyjson_doc_get_read_size(doc); + if (read_bytes == 0) { + yyjson_doc_free(doc); + doc = NULL; + /* No progress; if nothing parsed yet, error; else stop */ + if (count_records == 0) { + msgpack_sbuffer_clear(&sbuf); + msgpack_sbuffer_destroy(&sbuf); + flb_free(insitu_buf); + return -1; + } + break; + } + + root = yyjson_doc_get_root(doc); + if (!root) { + yyjson_doc_free(doc); + doc = NULL; + msgpack_sbuffer_clear(&sbuf); + msgpack_sbuffer_destroy(&sbuf); + flb_free(insitu_buf); + return -1; + } + + yyjson_val_to_msgpack(root, &pck); + + if (root_type && count_records == 0) { + *root_type = yyjson_root_type(root); + } + + yyjson_doc_free(doc); + doc = NULL; + count_records++; + + /* Move to the next value in the stream */ + start += read_bytes; + } + + if (records) { + *records = count_records; + } + if (consumed) { + *consumed = (size_t) (start - insitu_buf); + } + + /* caller owns and must free with the same allocator */ + *buffer = sbuf.data; + *size = sbuf.size; + + flb_free(insitu_buf); + return 0; +} + /* Receive a tokenized JSON message and convert it to MsgPack */ static char *tokens_to_msgpack(struct flb_pack_state *state, const char *js, @@ -333,7 +528,6 @@ int flb_pack_json(const char *js, size_t len, char **buffer, size_t *size, int *root_type, size_t *consumed) { int records; - return pack_json_to_msgpack(js, len, buffer, size, root_type, &records, consumed); } @@ -347,6 +541,21 @@ int flb_pack_json_recs(const char *js, size_t len, char **buffer, size_t *size, return pack_json_to_msgpack(js, len, buffer, size, root_type, out_records, consumed); } +/* Pack a JSON message using yyjson */ +int flb_pack_json_yyjson(const char *js, size_t len, char **buffer, size_t *size, + int *root_type, size_t *consumed) +{ + int records; + + return pack_json_to_msgpack_yyjson(js, len, buffer, size, root_type, &records, consumed); +} + +int flb_pack_json_recs_yyjson(const char *js, size_t len, char **buffer, size_t *size, + int *root_type, int *out_records, size_t *consumed) +{ + return pack_json_to_msgpack_yyjson(js, len, buffer, size, root_type, out_records, consumed); +} + /* Initialize a JSON packer state */ int flb_pack_state_init(struct flb_pack_state *s) { diff --git a/src/flb_pack_json.c b/src/flb_pack_json.c new file mode 100644 index 00000000000..b529cc813ba --- /dev/null +++ b/src/flb_pack_json.c @@ -0,0 +1,64 @@ +/*-*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* Fluent Bit + * ========== + * Copyright (C) 2015-2024 The Fluent Bit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <fluent-bit.h> +#include <fluent-bit/flb_pack_json.h> + +int flb_pack_json_ext(const char *json, size_t len, + char **out_buf, size_t *out_size, + int *out_root_type, + struct flb_pack_opts *opts) +{ + int backend; + struct flb_pack_state *state = NULL; + + if (!opts) { + backend = FLB_PACK_JSON_BACKEND_YYJSON; + } + else { + backend = opts->backend; + state = opts->state; + } + + if (backend != FLB_PACK_JSON_BACKEND_JSMN && + backend != FLB_PACK_JSON_BACKEND_YYJSON) { + return -1; + } + + if (backend == FLB_PACK_JSON_BACKEND_JSMN) { + /* jsmn */ + if (state) { + /* state for incremental reads */ + return flb_pack_json_state(json, len, out_buf, out_size, state); + } + else { + /* jsmn (no state) */ + return flb_pack_json(json, len, out_buf, out_size, + out_root_type, NULL); + } + } + else if (backend == FLB_PACK_JSON_BACKEND_YYJSON) { + /* yyjson */ + return flb_pack_json_yyjson(json, len, out_buf, out_size, + out_root_type, NULL); + } + + /* unknown backend */ + return -1; +} diff --git a/tests/internal/mp.c b/tests/internal/mp.c index 627d063d72e..a868ddf9652 100644 --- a/tests/internal/mp.c +++ b/tests/internal/mp.c @@ -101,12 +101,12 @@ void test_accessor_keys_remove() " {\"a\": false, " " \"annotations\": { " " \"fluentbit.io/tag\": \"thetag\"," - " \"extra\": false\"" + " \"extra\": false" "}}]}"; /* Convert to msgpack */ len = strlen(json); - ret = flb_pack_json(json, len, &buf, &size, &type, NULL); + ret = flb_pack_json_yyjson(json, len, &buf, &size, &type, NULL); TEST_CHECK(ret == 0); if (ret == -1) { exit(EXIT_FAILURE); @@ -173,12 +173,12 @@ void test_keys_remove_subkey_key() " {\"a\": false, " " \"annotations\": { " " \"fluentbit.io/tag\": \"thetag\"," - " \"extra\": false\"" + " \"extra\": false" "}}]}"; /* Convert to msgpack */ len = strlen(json); - ret = flb_pack_json(json, len, &buf, &size, &type, NULL); + ret = flb_pack_json_yyjson(json, len, &buf, &size, &type, NULL); TEST_CHECK(ret == 0); if (ret == -1) { exit(EXIT_FAILURE); @@ -267,7 +267,7 @@ void test_remove_sibling_subkeys() /* Convert to msgpack */ len = strlen(json); - ret = flb_pack_json(json, len, &buf, &size, &type, NULL); + ret = flb_pack_json_yyjson(json, len, &buf, &size, &type, NULL); TEST_CHECK(ret == 0); if (ret == -1) { exit(EXIT_FAILURE); @@ -362,12 +362,12 @@ void remove_subkey_keys(char *list[], int list_size, int index_start) " {\"a\": false, " " \"annotations\": { " " \"fluentbit.io/tag\": \"thetag\"," - " \"extra\": false\"" + " \"extra\": false" "}}]}"; /* Convert to msgpack */ len = strlen(json); - ret = flb_pack_json(json, len, &buf, &size, &type, NULL); + ret = flb_pack_json_yyjson(json, len, &buf, &size, &type, NULL); TEST_CHECK(ret == 0); if (ret == -1) { exit(EXIT_FAILURE); @@ -478,12 +478,12 @@ void test_object_to_cfl_to_msgpack() " {\"a\": false, " " \"annotations\": { " " \"fluentbit.io/tag\": \"thetag\"," - " \"extra\": false\"" + " \"extra\": false" "}}]}"; /* Convert to msgpack */ len = strlen(json); - ret = flb_pack_json(json, len, &buf, &size, &type, NULL); + ret = flb_pack_json_yyjson(json, len, &buf, &size, &type, NULL); TEST_CHECK(ret == 0); if (ret == -1) { exit(EXIT_FAILURE);